ai 5 сар өмнө
parent
commit
9478306962

+ 191 - 195
app/JsonRpc/OrderService.php

@@ -6,13 +6,9 @@ use App\Model\Order;
 use App\Model\OrderAd;
 use App\Model\Website;
 use App\Tools\Result;
+use Carbon\Carbon;
 use Hyperf\DbConnection\Db;
 use Hyperf\RpcServer\Annotation\RpcService;
-use Carbon\Carbon;
-use Hamcrest\Arrays\IsArray;
-use DateTime;
-use DateInterval;
-
 
 #[RpcService(name: "OrderService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
 class OrderService implements OrderServiceInterface
@@ -26,73 +22,73 @@ class OrderService implements OrderServiceInterface
     public function getAD(array $data): array
     {
         $where = [
- 
+
             'ad_place.width' => $data['width'],
-            'ad_place.height' => $data['height']
+            'ad_place.height' => $data['height'],
         ];
-        $start=Carbon::parse($data['starttime']);
-        $end=Carbon::parse($data['endtime']);
+        $start = Carbon::parse($data['starttime']);
+        $end = Carbon::parse($data['endtime']);
         $status = [
-            0=>'1',
-            1=>'4',
-            2=>'6'
+            0 => '1',
+            1 => '4',
+            2 => '6',
         ];
-        $ads = Ad::where('fromtime','<=',$start)->where('totime','>=',$end)->select('pid')->get()->all();
-        $orderads = OrderAd::where('fromtime','<=',$start)->where('totime','>=',$end)->whereIn('status',$status)->select('pid')->get()->all();
+        $ads = Ad::where('fromtime', '<=', $start)->where('totime', '>=', $end)->select('pid')->get()->all();
+        $orderads = OrderAd::where('fromtime', '<=', $start)->where('totime', '>=', $end)->whereIn('status', $status)->select('pid')->get()->all();
         $pids = array_merge($ads, $orderads);
         $ad_pids = array_unique($pids);
         // $ad_pid = [1,2,3];
-        if(!empty($ad_pids)){
+        if (!empty($ad_pids)) {
             $pid = [];
-            foreach($ad_pids as $val){
-                array_push($pid,$val['pid']);
+            foreach ($ad_pids as $val) {
+                array_push($pid, $val['pid']);
             }
-            $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id')->get()->all();  
+            $placeids = AdPlace::whereNotIn('id', $pid)->where($where)->select('id')->get()->all();
             // 符合用户条件的空广告位
             $place_id = [];
-            foreach($placeids as $val){
-                array_push($place_id,$val['id']);
+            foreach ($placeids as $val) {
+                array_push($place_id, $val['id']);
             }
-            $rep = AdPlace::whereIn('ad_place.id',$place_id)
-            ->leftJoin('website','ad_place.website_id','website.id')
-            ->select('ad_place.*','website.website_name','website.id')
-            ->selectSub('website.id', 'webid')
-            ->selectSub('ad_place.id', 'pid')
-            ->orderBy("website.id","asc") 
-            ->limit($data['pageSize'])
-            ->offset(($data['page']-1)*$data['pageSize'])
-            ->get();
-        }else{
+            $rep = AdPlace::whereIn('ad_place.id', $place_id)
+                ->leftJoin('website', 'ad_place.website_id', 'website.id')
+                ->select('ad_place.*', 'website.website_name', 'website.id')
+                ->selectSub('website.id', 'webid')
+                ->selectSub('ad_place.id', 'pid')
+                ->orderBy("website.id", "asc")
+                ->limit($data['pageSize'])
+                ->offset(($data['page'] - 1) * $data['pageSize'])
+                ->get();
+        } else {
             $rep = AdPlace::where($where)
-            ->leftJoin('website','ad_place.website_id','website.id')
-            ->select('ad_place.*','website.website_name','website.id')
-            ->selectSub('website.id', 'webid')
-            ->selectSub('ad_place.id', 'pid')
-            ->orderBy("website.id","asc") 
-            ->limit($data['pageSize'])
-            ->offset(($data['page']-1)*$data['pageSize'])
-            ->get();
+                ->leftJoin('website', 'ad_place.website_id', 'website.id')
+                ->select('ad_place.*', 'website.website_name', 'website.id')
+                ->selectSub('website.id', 'webid')
+                ->selectSub('ad_place.id', 'pid')
+                ->orderBy("website.id", "asc")
+                ->limit($data['pageSize'])
+                ->offset(($data['page'] - 1) * $data['pageSize'])
+                ->get();
         }
-        $startTime = strtotime($data['starttime']); 
-        $endTime = strtotime($data['endtime']); 
-        $time = ($endTime - $startTime)/(24 * 60 * 60);
+        $startTime = strtotime($data['starttime']);
+        $endTime = strtotime($data['endtime']);
+        $time = ($endTime - $startTime) / (24 * 60 * 60);
         $roundedValue = round($time, 2);
-        $days = number_format($roundedValue, 2, '.', ''); 
+        $days = number_format($roundedValue, 2, '.', '');
         $count = count($rep);
         $data = [
-            'rows'=>$rep->toArray(),
-            'count'=>$count,
-            'days' => $days 
+            'rows' => $rep->toArray(),
+            'count' => $count,
+            'days' => $days,
         ];
-        
-        if(empty($rep)){
+
+        if (empty($rep)) {
             return Result::error("暂时没有符合您条件的广告位");
- 
+
         }
         return Result::success($data);
     }
     /**
-   * 添加订单
+     * 添加订单
      * @param
      * @return void
      */
@@ -226,14 +222,14 @@ class OrderService implements OrderServiceInterface
         Db::beginTransaction();
         try {
             $order->status = 2; //订单状态:1:通过;2:驳回;3:撤回;4:修改;5:过期;6:待审核;7:结束
-            $order->ad_status = 2; 
+            $order->ad_status = 2;
             $order->reason = $data['reason'];
             $order->bhtime = date('Y-m-d H:i:s');
             $order->save();
-            
+
             OrderAd::where('order_id', $data['id'])
                 ->update(['status' => 2]);
-            
+
             Db::commit();
         } catch (\Exception $e) {
             Db::rollBack();
@@ -263,10 +259,10 @@ class OrderService implements OrderServiceInterface
             // 获取 order_ad 表中的记录
             $orderAds = OrderAd::where('order_id', $data['id'])
                 ->update(['status' => 7]);
-               
-                // 在ad表中删除相同pid的数据
-            Ad::where('order_id',$data['id'])->delete();
-                        
+
+            // 在ad表中删除相同pid的数据
+            Ad::where('order_id', $data['id'])->delete();
+
             Db::commit();
         } catch (\Exception $e) {
             Db::rollBack();
@@ -292,7 +288,7 @@ class OrderService implements OrderServiceInterface
             // 获取 order_ad 表中的记录
             OrderAd::where('order_id', $data['id'])->delete();
             // 删除 ad 表中的记录
-           Ad::where('order_id', $order['id'])->delete();)
+            Ad::where('order_id', $order['id'])->delete();
             // 提交事务
             Db::commit();
         } catch (\Exception $e) {
@@ -321,7 +317,7 @@ class OrderService implements OrderServiceInterface
         try {
             $order->status = 1;
             //判断是否在周期范围内
-            $ad_status = 8;// 待生效
+            $ad_status = 8; // 待生效
             if ($order->starttime < date('Y-m-d H:i:s') && date('Y-m-d H:i:s') < $order->endtime) {
                 // 条件满足时的逻辑
                 $ad_status = 1;
@@ -329,12 +325,12 @@ class OrderService implements OrderServiceInterface
             $order->ad_status = 1;
             $order->shtime = date('Y-m-d H:i:s');
             $order->save();
-            // 批量更新 order_ad 表中的状态 
+            // 批量更新 order_ad 表中的状态
             OrderAd::where('order_id', $data['id'])
-            ->where('status', 6)
-            ->update(['status' => 1]);
- 
-           //判断的当前时间是否在订单的开始时间之后,并且小于等于订单的结束时间
+                ->where('status', 6)
+                ->update(['status' => 1]);
+
+            //判断的当前时间是否在订单的开始时间之后,并且小于等于订单的结束时间
             if (time() >= strtotime($order->sttime) && time() < strtotime($order->edtime)) {
                 $ad_status = 1; //审核生效
             } else {
@@ -380,115 +376,115 @@ class OrderService implements OrderServiceInterface
      * 根据用户条件及网站搜索没有广告的广告位
      * @param
      * @return void
-    */
+     */
     public function getWebsiteAd(array $data): array
     {
         $where = [
             'ad_place.width' => $data['width'],
-            'ad_place.height' => $data['height']
+            'ad_place.height' => $data['height'],
         ];
-        $start=Carbon::parse($data['starttime']);
-        $end=Carbon::parse($data['endtime']);
+        $start = Carbon::parse($data['starttime']);
+        $end = Carbon::parse($data['endtime']);
         $status = [
-            0=>'1',
-            1=>'4',
-            2=>'6'
+            0 => '1',
+            1 => '4',
+            2 => '6',
         ];
-        $ads = Ad::where('fromtime','<=',$start)->where('totime','>=',$end)->select('pid')->get()->all();
-        $orderads = OrderAd::where('fromtime','<=',$start)->where('totime','>=',$end)->whereIn('status',$status)->select('pid')->get()->all();
+        $ads = Ad::where('fromtime', '<=', $start)->where('totime', '>=', $end)->select('pid')->get()->all();
+        $orderads = OrderAd::where('fromtime', '<=', $start)->where('totime', '>=', $end)->whereIn('status', $status)->select('pid')->get()->all();
         $pids = array_merge($ads, $orderads);
         $ad_pids = array_unique($pids);
-        if(!empty($ad_pids)){
+        if (!empty($ad_pids)) {
             $pid = [];
-            foreach($ad_pids as $val){
-                array_push($pid,$val['pid']);
+            foreach ($ad_pids as $val) {
+                array_push($pid, $val['pid']);
             }
-            $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id','website_id')->get()->all();  
-            
-            if(!isset($data['website_id'])){
+            $placeids = AdPlace::whereNotIn('id', $pid)->where($where)->select('id', 'website_id')->get()->all();
+
+            if (!isset($data['website_id'])) {
                 $website_id = [];
-                foreach($placeids as $v){
-                    array_push($website_id,$v['website_id']);
+                foreach ($placeids as $v) {
+                    array_push($website_id, $v['website_id']);
                 }
-                $result = Website::whereIn('id',$website_id)->get();
-            }else{
+                $result = Website::whereIn('id', $website_id)->get();
+            } else {
                 $place_id = [];
-                foreach($placeids as $val){
-                    array_push($place_id,$val['id']);
+                foreach ($placeids as $val) {
+                    array_push($place_id, $val['id']);
                 }
                 $rep = AdPlace::where($where)
-                ->whereIn('ad_place.id',$place_id)
-                ->where('ad_place.website_id',$data['website_id'])
-                ->leftJoin('website','ad_place.website_id','website.id')
-                ->select('ad_place.*','website.website_name','website.id')
-                ->selectSub('website.id', 'webid')
-                ->selectSub('ad_place.id', 'pid')
-                ->orderBy("website.id","asc") 
-                ->limit($data['pageSize'])
-                ->offset(($data['page']-1)*$data['pageSize'])
-                ->get();
+                    ->whereIn('ad_place.id', $place_id)
+                    ->where('ad_place.website_id', $data['website_id'])
+                    ->leftJoin('website', 'ad_place.website_id', 'website.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->selectSub('website.id', 'webid')
+                    ->selectSub('ad_place.id', 'pid')
+                    ->orderBy("website.id", "asc")
+                    ->limit($data['pageSize'])
+                    ->offset(($data['page'] - 1) * $data['pageSize'])
+                    ->get();
                 $count = count($rep);
                 $result = [
-                    'rows'=>$rep->toArray(),
-                    'count'=>$count 
+                    'rows' => $rep->toArray(),
+                    'count' => $count,
                 ];
             }
-        }else{
-            if(isset($data['website_id'])){
+        } else {
+            if (isset($data['website_id'])) {
                 $rep = AdPlace::where($where)
-                ->where('ad_place.website_id',$data['website_id'])
-                ->leftJoin('website','ad_place.website_id','website.id')
-                ->select('ad_place.*','website.website_name','website.id')
-                ->selectSub('website.id', 'webid')
-                ->selectSub('ad_place.id', 'pid')
-                ->orderBy("website.id","asc") 
-                ->limit($data['pageSize'])
-                ->offset(($data['page']-1)*$data['pageSize'])
-                ->get();
+                    ->where('ad_place.website_id', $data['website_id'])
+                    ->leftJoin('website', 'ad_place.website_id', 'website.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->selectSub('website.id', 'webid')
+                    ->selectSub('ad_place.id', 'pid')
+                    ->orderBy("website.id", "asc")
+                    ->limit($data['pageSize'])
+                    ->offset(($data['page'] - 1) * $data['pageSize'])
+                    ->get();
                 $count = count($rep);
                 $result = [
-                    'rows'=>$rep->toArray(),
-                    'count'=>$count 
+                    'rows' => $rep->toArray(),
+                    'count' => $count,
                 ];
-            }else{
+            } else {
                 $place_all = AdPlace::where($where)->select('website_id')->get()->all();
                 $place_allads = [];
-                foreach($place_all as $v){
-                    array_push($place_allads,$v['website_id']);
+                foreach ($place_all as $v) {
+                    array_push($place_allads, $v['website_id']);
                 }
-                $result = Website::whereIn('id',$place_allads)->get();
-                
+                $result = Website::whereIn('id', $place_allads)->get();
+
             }
         }
-        if(empty($data)){
+        if (empty($data)) {
             return Result::error("暂时没有符合您条件的广告位");
         }
-        $startTime = strtotime($data['starttime']); 
-        $endTime = strtotime($data['endtime']); 
-        $time = ($endTime - $startTime)/(24 * 60 * 60);
+        $startTime = strtotime($data['starttime']);
+        $endTime = strtotime($data['endtime']);
+        $time = ($endTime - $startTime) / (24 * 60 * 60);
         $roundedValue = round($time, 2);
-        $days = number_format($roundedValue, 2, '.', ''); 
+        $days = number_format($roundedValue, 2, '.', '');
         $count = count($rep);
         $result['days'] = $days;
         return Result::success($result);
-   }
-   /**
+    }
+    /**
      * 添加广告订单
      * @param
      * @return void
-    */
+     */
     public function addAD(array $data): array
-    { 
+    {
         date_default_timezone_set('Asia/Shanghai');
-        $time = time(); 
-        $startTime = strtotime($data['starttime']); 
-        $endTime = strtotime($data['endtime']); 
-        $con_time = ($endTime - $startTime)/(24 * 60 * 60); 
+        $time = time();
+        $startTime = strtotime($data['starttime']);
+        $endTime = strtotime($data['endtime']);
+        $con_time = ($endTime - $startTime) / (24 * 60 * 60);
         $roundedValue = round($con_time, 2);
-        $days = number_format($roundedValue, 2, '.', ''); 
-        $timestamp = date('YmdHis',$time);
-        $catetime = date('Y-m-d H:i:s',$time);
-        $randomNumber = mt_rand(1000, 9999); 
+        $days = number_format($roundedValue, 2, '.', '');
+        $timestamp = date('YmdHis', $time);
+        $catetime = date('Y-m-d H:i:s', $time);
+        $randomNumber = mt_rand(1000, 9999);
         $ordernum = $randomNumber . $timestamp; // 时间戳与随机数拼接
         // var_dump(($time));
         $order = [
@@ -499,15 +495,15 @@ class OrderService implements OrderServiceInterface
             'cttime' => $catetime,
             'height' => $data['height'],
             'width' => $data['width'],
-            'days' => $days
+            'days' => $days,
 
         ];
         $orderid = Order::insertGetId($order);
         $adplace = $data['pid'];
-        if(is_array($data['pid'])){
-            $adplace = AdPlace::whereIn('id',$data['pid'])->select('website_id','id')->get();
-            foreach($adplace as $key => $ads){ 
-                $order_ad[$key] =  [
+        if (is_array($data['pid'])) {
+            $adplace = AdPlace::whereIn('id', $data['pid'])->select('website_id', 'id')->get();
+            foreach ($adplace as $key => $ads) {
+                $order_ad[$key] = [
                     'order_id' => $orderid,
                     'order_num' => $ordernum,
                     'name' => $data['name'],
@@ -516,8 +512,8 @@ class OrderService implements OrderServiceInterface
                     'image_src' => $data['imgsrc'],
                     'image_url' => $data['imgurl'],
                     'pid' => $ads['id'],
-                    'website_id' => $ads['website_id']
-                ]; 
+                    'website_id' => $ads['website_id'],
+                ];
                 // $log = [
                 //     'order_id' => $orderid,
                 //     'user_id' => $data['user_id'],
@@ -525,11 +521,11 @@ class OrderService implements OrderServiceInterface
                 //     'website_id' => $ads['website_id'],
                 //     'action' => '添加',
                 //     'time' => $catetime
-                // ];      
+                // ];
             }
-        }else{
-            
-            $order_ad =  [
+        } else {
+
+            $order_ad = [
                 'order_id' => $orderid,
                 'order_num' => $ordernum,
                 'name' => $data['name'],
@@ -538,8 +534,8 @@ class OrderService implements OrderServiceInterface
                 'totime' => $data['endtime'],
                 'image_src' => $data['imgsrc'],
                 'image_url' => $data['imgurl'],
-                'pid' => $adplace
-            ]; 
+                'pid' => $adplace,
+            ];
             // $log = [
             //     'order_id' => $orderid,
             //     'user_id' => $data['user_id'],
@@ -547,12 +543,12 @@ class OrderService implements OrderServiceInterface
             //     'website_id' => $ads['website_id'],
             //     'action' => '添加',
             //     'time' => $catetime
-            // ];          
+            // ];
         }
         $orderad_id = OrderAd::insert($order_ad);
-       
+
         // $log = AdLog::insert($log);
-        if(empty($orderid) || !$orderad_id){
+        if (empty($orderid) || !$orderad_id) {
             return Result::error("添加失败");
         }
         $result = [
@@ -567,29 +563,29 @@ class OrderService implements OrderServiceInterface
      * 获取订单列表
      * @param
      * @return void
-    */
+     */
     public function getOrderList(array $data): array
     {
         $where = [
             'user_id' => $data['user_id'],
-            'user_del' => 2
+            'user_del' => 2,
         ];
-        if(isset($data['status'])){
+        if (isset($data['status'])) {
             $where['status'] = $data['status'];
         }
         $orders = Order::where($where)
-        ->orderBy("id","asc") 
-        ->limit($data['pageSize'])
-        ->offset(($data['page']-1)*$data['pageSize'])
-        ->get();
-       
-        if(empty($orders)){
+            ->orderBy("id", "asc")
+            ->limit($data['pageSize'])
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->get();
+
+        if (empty($orders)) {
             return Result::error("您暂时还没有下单");
-        }else{
+        } else {
             $count = count($orders);
             $data = [
-                'rows'=>$orders->toArray(),
-                'count'=>$count
+                'rows' => $orders->toArray(),
+                'count' => $count,
             ];
         }
         return Result::success($data);
@@ -598,25 +594,25 @@ class OrderService implements OrderServiceInterface
      * 获取订单详情
      * @param
      * @return void
-    */
+     */
     public function getOrderDetail(array $data): array
-    {   
-        $order = Order::where('id',$data['order_id'])->first();
-        $orderads = OrderAd::where('order_ad.order_id',$data['order_id'])
-        ->leftJoin('website','order_ad.website_id','website.id')
-        ->select('order_ad.*','website.website_name','website.id')
-        ->selectSub('website.id', 'webid')
-        ->selectSub('order_ad.id', 'oid')
-        ->orderBy("website.id","asc") 
-        ->limit($data['pageSize'])
-        ->offset(($data['page']-1)*$data['pageSize'])
-        ->get();
-        if(empty($order)){
+    {
+        $order = Order::where('id', $data['order_id'])->first();
+        $orderads = OrderAd::where('order_ad.order_id', $data['order_id'])
+            ->leftJoin('website', 'order_ad.website_id', 'website.id')
+            ->select('order_ad.*', 'website.website_name', 'website.id')
+            ->selectSub('website.id', 'webid')
+            ->selectSub('order_ad.id', 'oid')
+            ->orderBy("website.id", "asc")
+            ->limit($data['pageSize'])
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->get();
+        if (empty($order)) {
             return Result::error("订单id错误");
         }
         $result = [
             'order' => $order,
-            'orderads' => $orderads
+            'orderads' => $orderads,
         ];
         return Result::success($result);
     }
@@ -624,53 +620,53 @@ class OrderService implements OrderServiceInterface
      * 撤回订单
      * @param
      * @return void
-    */
+     */
     public function cancelOrder(array $data): array
-    {   
+    {
         date_default_timezone_set('Asia/Shanghai');
-        $time = time(); 
-        $timestamp = date('YmdHis',$time);
-        $order = Order::where('id',$data['order_id'])->where('status',6)->where('edtime','>=',$timestamp)->update(['status' => 3,'ad_status'=>'3']);
-        $ads = OrderAd::where('order_id',$data['order_id'])->where('status',6)->where('totime','>=',$timestamp)->update(['status' => 3]);
-        if(!$order || !$ads){
+        $time = time();
+        $timestamp = date('YmdHis', $time);
+        $order = Order::where('id', $data['order_id'])->where('status', 6)->where('edtime', '>=', $timestamp)->update(['status' => 3, 'ad_status' => '3']);
+        $ads = OrderAd::where('order_id', $data['order_id'])->where('status', 6)->where('totime', '>=', $timestamp)->update(['status' => 3]);
+        if (!$order || !$ads) {
             return Result::error("订单id错误");
         }
         $result = [
             'order' => $order,
-            'ads' => $ads
+            'ads' => $ads,
         ];
         return Result::success($result);
     }
-     /**
+    /**
      * 删除订单
      * @param
      * @return void
-    */
+     */
     public function delOrderAD(array $data): array
-    {   
+    {
         $data['status'] = [
             0 => 2,
             1 => 3,
             2 => 5,
-            3 => 7
+            3 => 7,
         ];
         date_default_timezone_set('Asia/Shanghai');
-        $time = time(); 
-        $timestamp = date('YmdHis',$time);
+        $time = time();
+        $timestamp = date('YmdHis', $time);
         $where = [
-            ['user_id','=',$data['user_id']],
-            ['id','=',$data['order_id']]
+            ['user_id', '=', $data['user_id']],
+            ['id', '=', $data['order_id']],
         ];
-        $time = [['edtime','<=',$timestamp]];
+        $time = [['edtime', '<=', $timestamp]];
         $order = Order::where($where)->where($time)->update(['user_del' => 1]);
-        if(empty($order)){
-           $order = Order::where($where)->whereIn('status',$data['status'])->update(['user_del' => 1]); 
+        if (empty($order)) {
+            $order = Order::where($where)->whereIn('status', $data['status'])->update(['user_del' => 1]);
         }
-        // 
-        if($order == 0){
+        //
+        if ($order == 0) {
             return Result::error("订单id错误");
         }
         return Result::success($order);
     }
- 
+
 }

+ 1 - 1
config/autoload/server.php

@@ -20,7 +20,7 @@ return [
             'name' => 'jsonrpc-http',
             'type' => Server::SERVER_HTTP,
             'host' => '0.0.0.0',
-            'port' => 9510,
+            'port' => 9508,
             'sock_type' => SWOOLE_SOCK_TCP,
             'callbacks' => [
                 // Event::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],