input('page_index'); $page_size=$request->input('page_size'); $num=$page_size*($page_index-1); $admin_id=Auth::user()->id; $admin=Admin::where('id',$admin_id)->first(); if($admin && in_array($admin->role_id,[22,24])){//超级管理员 $data=Order::with(['user','store','address','cancel'=>function($query){$query->where('using',1);}]); }else{ $warea_ids=DwbsWarea::where('admin_id',$admin_id)->pluck('id'); $agent_ids=DwbsUser::whereIn('warea_id',$warea_ids)->pluck('id'); $store_ids=Store::whereIn('user_id',$agent_ids)->pluck('id'); $data=Order::whereIn('store_id',$store_ids) ->with(['user','store','address','cancel'=>function($query){$query->where('using',1);}]); } //筛选订单号 if($request->has('order_no') && !empty($request->input('order_no'))){ $data->where('order_no',"like","%".$request->input('order_no')."%"); } //店铺名称手机号筛选 if($request->has('agent_phone') && !empty($request->input('agent_phone'))){ $store_ids=Store::where('phone','like',"%".$request->input('agent_phone')."%") ->orWhere('name','like',"%".$request->input('agent_phone')."%")->pluck('id'); $data->whereIn('store_id',$store_ids); } //客户信息筛选 if($request->has('user_phone') && !empty($request->input('user_phone'))){ $user_ids=User::where('phone','like',"%".$request->input('user_phone')."%") ->orWhere('nickname','like',"%".$request->input('user_phone')."%")->pluck('id'); $data->whereIn('user_id',$user_ids); } //状态筛选 if($request->input('status')!='all'){ if(!empty($request->input('status')) || $request->input('status')==0){ $data->where('status',$request->input('status')); } } //筛选订单类型 if($request->has('type') && !empty($request->input('type'))){ switch($request->input('type')){ case 1: $data->where('is_pay',1); $data->where('is_help',1); $data->where('self_pay',1); break; case 2: $data->where('is_pay',1); $data->where('is_help',1); $data->where('self_pay',0); break; case 3: $data->where('is_pay',1); $data->where('is_help',0); $data->where('self_pay',0); break; case 4: $data->where('is_pay',1); $data->where('is_help',0); $data->where('self_pay',1); break; default: $data->where([]); } } //日期时间筛选 if($request->input('start_time') && $request->input('end_time')){ $data->whereBetween('created_at',[$request->input('start_time'),$request->input('end_time')]); } $count=$data->count(); $list=$data->orderBy('id','desc')->skip($num)->limit($page_size)->get(); $wareas=DwbsWarea::pluck('name','id'); $user_ids=Store::pluck('user_id'); $store_user_ids=Store::pluck('user_id','id'); $warea_user_ids=DwbsUser::withTrashed()->whereIn('id',$user_ids)->pluck('warea_id','id'); foreach($list as $key=>$val){ $user_id=$store_user_ids[$val->store_id]; $warea_id=$warea_user_ids[$user_id]; $list[$key]->warea=$wareas[$warea_id]; } return $this->success_list($list,'成功',$count); } public function export(Request $request){ ini_set('memory_limit', '4096M'); // $list=Order::orderBy('id','desc') // ->select('id','order_no','created_at','user_id','store_id','status','account','total','self_receive','express_receive_time','remark') //// ->limit(1000) // ->get(); //return $this->success($list); $admin_id=Auth::user()->id; $admin=Admin::where('id',$admin_id)->first(); if($admin && in_array($admin->role_id,[22,24])) {//超级管理员 $data=Order::with(['user','store','address','cancel'=>function($query){$query->where('using',1);}]); }else{ $warea_ids=DwbsWarea::where('admin_id',$admin_id)->pluck('id'); $agent_ids=DwbsUser::whereIn('warea_id',$warea_ids)->pluck('id'); $store_ids=Store::whereIn('user_id',$agent_ids)->pluck('id'); $data=Order::whereIn('store_id',$store_ids) ->with(['user:id,nickname,phone','store:id,name,phone','address:id,name,phone,province,city,area,address','cancel'=>function($query){$query->where('using',1);}]); } //筛选订单号 if($request->has('order_no') && !empty($request->input('order_no'))){ $data->where('order_no',$request->input('order_no')); } //代理手机号筛选 if($request->has('agent_phone') && !empty($request->input('agent_phone'))){ $agent=DwbsUser::where('mobile',$request->input('agent_phone'))->first(); if($agent){ $store=Store::where('user_id',$agent->id)->first(); if($store){ $data->where('store_id',$store->id); }else{ return $this->error('450001','代理店铺不存在'); } }else{ return $this->error('450001','代理手机号不存在'); } } //用户信息筛选 if($request->has('user_phone') && !empty($request->input('user_phone'))){ $user=User::where('phone',$request->input('user_phone'))->first(); if(empty($user)){ return $this->error('450001','用户手机号不存在'); } $data->where('user_id',$user->id); } //状态筛选 if(!empty($request->input('status'))){ $data->where('status',$request->input('status')); } //筛选订单类型 if($request->has('type') && !empty($request->input('type'))){ switch($request->input('type')){ case 1: $data->where('is_pay',1); $data->where('is_help',1); $data->where('self_pay',1); break; case 2: $data->where('is_pay',1); $data->where('is_help',1); $data->where('self_pay',0); break; case 3: $data->where('is_pay',1); $data->where('is_help',0); $data->where('self_pay',0); break; case 4: $data->where('is_pay',1); $data->where('is_help',0); $data->where('self_pay',1); break; default: $data->where([]); } } //日期时间筛选 $start_time=$request->input('start_time'); $end_time=$request->input('end_time'); if($start_time && $end_time){ $data->whereBetween('created_at',[$start_time,$end_time]); } $list=$data->orderBy('id','desc') ->select('id','order_no','created_at','user_id','store_id','status','account','total','self_receive','express_receive_time','remark') ->get(); $wareas=DwbsWarea::pluck('name','id'); $user_ids=Store::withTrashed()->where('is_failure',0)->pluck('user_id'); $store_user_ids=Store::withTrashed()->where('is_failure',0)->pluck('user_id','id'); $warea_user_ids=DwbsUser::withTrashed()->whereIn('id',$user_ids)->pluck('warea_id','id'); foreach($list as $key=>$val){ $user_id=$store_user_ids[$val->store_id]; $warea_id=$warea_user_ids[$user_id]; $list[$key]->warea=$wareas[$warea_id]; } return $this->success($list); } //获取订单详情 public function getOrderDetail(Request $request){ $order_no=$request->input('order_no'); $goods_ids = OrderDetail::where('order_no', $order_no)->groupBy('goods_id')->pluck('goods_id'); $goods = []; foreach ($goods_ids as $key => $val) { $goods[$key] = Goods::where('id', $val)->first(); $goods[$key]->sku = OrderDetail::where('order_no', $order_no)->where('goods_id', $val)->get(); } $list['goods']=$goods; $order=Order::where('order_no',$order_no)->first(); if($order->apply_cancel > 1){ $order_cancel=OrderCancel::where('order_id',$order->id)->OrderBy('created_at')->get(); $list['cancel']=$order_cancel; } if($order->is_refund > 0){ $refund=OrderRefund::where('order_no',$order->order_no)->OrderBy('created_at')->get(); $list['refund']=$refund; } return $this->success($goods); } //获取订单详情 public function getOrderDetails(Request $request){ $order_no=$request->input('order_no'); $goods_ids = OrderDetail::where('order_no', $order_no)->groupBy('goods_id')->pluck('goods_id'); $goods = []; foreach ($goods_ids as $key => $val) { $goods[$key] = Goods::where('id', $val)->first(); $goods[$key]->sku = OrderDetail::where('order_no', $order_no)->where('goods_id', $val)->get(); } $list['goods']=$goods; $order=Order::with('refund:id,order_no')->where('order_no',$order_no)->first(); if($order->apply_cancel > 1){ $order_cancel=OrderCancel::where('order_id',$order->id)->OrderBy('created_at')->get(); $list['cancel']=$order_cancel; } if(count($order->refund) >= 1){ $refund=OrderRefund::where('order_no',$order->order_no)->OrderBy('created_at')->get(); $list['refund']=$refund; } return $this->success($list); } //获取门店、订单日销售额对比 public function getOrderDailySales(Request $request){ $store_id=$request->input('store_id'); $startdate=$request->input('startdate'); $enddate=$request->input('enddate'); $where=$wheres=[]; if($store_id){ $where['store_id']=$store_id; } if($startdate && $enddate){ $start=date("Y-m-d",strtotime($startdate)); $end=date("Y-m-d",strtotime($enddate)); }else{ $start=date("Y-m-d",strtotime('-7 days')); $end=date("Y-m-d"); } $dates=$this->getDateFromRange($start,$end); $list=[]; foreach($dates as $key=>$val){ $list[$val]=Order::whereDate('created_at',$val)->where($where) ->select(DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as money')) ->where('is_pay',1)->where('apply_cancel',[0,1,3])->where('is_refund',[0,1])->first(); } return $this->success($list); } function getDateFromRange($startdate, $enddate){ $stimestamp = strtotime($startdate); $etimestamp = strtotime($enddate); // 计算日期段内有多少天 $days = ($etimestamp-$stimestamp)/86400+1; // 保存每天日期 $date = array(); for($i=0; $i<$days; $i++){ $date[] = date('Y-m-d', $stimestamp+(86400*$i)); } return $date; } //获取店铺销售额前10 public function getStoreTop10(){ $list=Order::with('store:id,name')->select('store_id',DB::raw('sum(account) as money')) ->where('is_pay',1)->groupBy('store_id') ->orderByDesc('money')->limit(10)->get(); return $this->success($list); } //查询订单物流信息 public function getOrderExpress(Request $request){ $order_no=$request->input('order_no'); $order=Order::with('address')->where('order_no',$order_no)->first(); if(empty($order)){ return $this->error('450001','订单信息有误'); } if($order->express_state==3){ //已签收 $express=json_decode($order->express_info,true); }else{ //未签收 $express=new ExpressHandler(); $CustomerName = null; if($order->express_code=='SF'){ $CustomerName = substr($order->express_phone,-4); } $express=$express->getExpress($order->express_no, $order->express_code, $order->order_no, $CustomerName); } $data['express']=$express; $data['express_state']=$order->express_state; $data['express_company']=$order->express_company; $data['express_no']=$order->express_no; $data['express_time']=$order->express_time; return $this->success($data); } }