dddmo 5 maanden geleden
bovenliggende
commit
f2e60cc466
2 gewijzigde bestanden met toevoegingen van 106 en 22 verwijderingen
  1. 101 22
      app/JsonRpc/OrderService.php
  2. 5 0
      app/JsonRpc/OrderServiceInterface.php

+ 101 - 22
app/JsonRpc/OrderService.php

@@ -25,8 +25,6 @@ class OrderService implements OrderServiceInterface
     */
     public function getAD(array $data): array
     {
-        // $ads = [];
-        // $orderads = [];
         $where = [
             'ad_place.width' => $data['width'],
             'ad_place.height' => $data['height']
@@ -50,26 +48,19 @@ class OrderService implements OrderServiceInterface
             }
             $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id')->get()->all();  
             // 符合用户条件的空广告位
-            $website_name = Website::whereIn('id',$placeids)->get();
-            if(!isset($data['website_id'])){
-                $place_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{
-
+            $place_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::where($where)
             ->leftJoin('website','ad_place.website_id','website.id')
@@ -93,7 +84,95 @@ class OrderService implements OrderServiceInterface
         }
         return Result::success($data);
     }
-    
+    /**
+     * 根据用户条件及网站搜索没有广告的广告位
+     * @param
+     * @return void
+    */
+    public function getWebsiteAd(array $data): array
+    {
+        $where = [
+            'ad_place.width' => $data['width'],
+            'ad_place.height' => $data['height']
+        ];
+        $start=Carbon::parse($data['starttime']);
+        $end=Carbon::parse($data['endtime']);
+        $status = [
+            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();
+        $pids = array_merge($ads, $orderads);
+        $ad_pids = array_unique($pids);
+        if(!empty($ad_pids)){
+            $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'])){
+                $website_id = [];
+                foreach($placeids as $v){
+                    array_push($website_id,$v['website_id']);
+                }
+                $result = Website::whereIn('id',$website_id)->get();
+            }else{
+                $place_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();
+                $count = count($rep);
+                $result = [
+                    'rows'=>$rep->toArray(),
+                    'count'=>$count 
+                ];
+            }
+        }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();
+                $count = count($rep);
+                $result = [
+                    'rows'=>$rep->toArray(),
+                    'count'=>$count 
+                ];
+            }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']);
+                }
+                $result = Website::whereIn('id',$place_allads)->get();
+                
+            }
+        }
+        if(empty($data)){
+            return Result::error("暂时没有符合您条件的广告位");
+        }
+        return Result::success($result);
+   }
    /**
      * 添加广告订单
      * @param

+ 5 - 0
app/JsonRpc/OrderServiceInterface.php

@@ -8,6 +8,11 @@ interface OrderServiceInterface
      *  @return array
      */
     public function getAD(array $data): array;
+     /**
+     * @param array $data
+     *  @return array
+     */
+    public function getWebsiteAd(array $data): array;
     /**
      * @param array $data
      *  @return array