$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); // $ad_pid = [1,2,3]; if(!empty($ad_pids)){ $pid = []; foreach($ad_pids as $val){ array_push($pid,$val['pid']); } $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id')->get()->all(); $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') ->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); $data = [ 'rows'=>$rep->toArray(), 'count'=>$count ]; if(empty($rep)){ return Result::error("暂时没有符合您条件的广告位"); } return Result::success($rep); } /**  * 添加广告订单  * @param  * @return void */ public function addAD(array $data): array { date_default_timezone_set('Asia/Shanghai'); $time = time(); $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 = [ 'order_num' => $ordernum, 'sttime' => $data['starttime'], 'edtime' => $data['endtime'], 'user_id' => $data['user_id'], 'cttime' => $catetime, 'height' => $data['height'], 'width' => $data['width'] ]; $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] = [ 'order_id' => $orderid, 'order_num' => $ordernum, 'name' => $data['name'], 'fromtime' => $data['starttime'], 'totime' => $data['endtime'], 'image_src' => $data['imgsrc'], 'image_url' => $data['imgurl'], 'pid' => $ads['id'], 'website_id' => $ads['website_id'] ]; // $log = [ // 'order_id' => $orderid, // 'user_id' => $data['user_id'], // 'pid' => $ads['id'], // 'website_id' => $ads['website_id'], // 'action' => '添加', // 'time' => $catetime // ]; } }else{ $order_ad = [ 'order_id' => $orderid, 'order_num' => $ordernum, 'name' => $data['name'], 'website_id' => $adplace['website_id'], 'fromtime' => $data['starttime'], 'totime' => $data['endtime'], 'image_src' => $data['imgsrc'], 'image_url' => $data['imgurl'], 'pid' => $adplace ]; // $log = [ // 'order_id' => $orderid, // 'user_id' => $data['user_id'], // 'pid' => $ads['id'], // 'website_id' => $ads['website_id'], // 'action' => '添加', // 'time' => $catetime // ]; } $orderad_id = OrderAd::insert($order_ad); // $log = AdLog::insert($log); if(empty($orderid) || !$orderad_id){ return Result::error("添加失败"); } $result = [ 'order_id' => $orderid, 'orderad_id' => $orderad_id, 'name' => $data['name'], 'name' => $data['name'], ]; return Result::success($result); } /**  * 获取订单列表  * @param  * @return void */ public function getOrderList(array $data): array { $where = [ 'user_id' => $data['user_id'], 'user_del' => 2 ]; 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)){ return Result::error("您暂时还没有下单"); }else{ foreach($orders as $key => $order){ $startTime = strtotime($order['sttime']); $endTime = strtotime($order['edtime']); $days = ($endTime - $startTime)/(24 * 60 * 60); $orders[$key]['days'] = $days; } $count = count($orders); $data = [ 'rows'=>$orders->toArray(), 'count'=>$count ]; } return Result::success($data); } /**  * 获取订单详情  * @param  * @return void */ public function getOrderDetail(array $data): array { $order = Order::where('id',$data['order_id'])->first(); $startTime = strtotime($order['sttime']); $endTime = strtotime($order['edtime']); $days = ($endTime - $startTime)/(24 * 60 * 60); $order['days'] = $days; $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 ]; return Result::success($result); } /**  * 撤回订单  * @param  * @return void */ public function cancelOrder(array $data): array { date_default_timezone_set('Asia/Shanghai'); $time = time(); $timestamp = date('YmdHis',$time); $time = ['edtime','>=',$timestamp]; $order = Order::where('id',$data['order_id'])->where('status',6)->where('edtime','<=',$timestamp)->update(['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 ]; return Result::success($result); } /**  * 删除订单  * @param  * @return void */ public function delOrderAD(array $data): array { $data['status'] = [ 0 => 2, 1 => 3 ]; date_default_timezone_set('Asia/Shanghai'); $time = time(); $timestamp = date('YmdHis',$time); $where = [ ['user_id','=',$data['user_id']], ['id','=',$data['order_id']] ]; $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($order == 0){ return Result::error("订单id错误"); } return Result::success($order); } }