|
@@ -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
|