all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; DB::enableQueryLog(); $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id')->withTrashed(); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:nickname,id,mobile']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','name','realname'); }); } if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $user_ids = User::whereIn('warea_id',$warea_ids)->pluck('id'); $num_1=Ordertest::whereIn('is_deleted',[0,1])->whereIn('user_id',$user_ids)->count(); $num_3=Ordertest::where('is_deleted',0)->where('status', 0)->whereIn('user_id',$user_ids)->count(); $num_4=Ordertest::where('is_deleted',0)->where('status', 1)->whereIn('user_id',$user_ids)->count(); $num_5=Ordertest::where('is_deleted',0)->where('status', 2)->whereIn('user_id',$user_ids)->count(); $num_6=Ordertest::where('is_deleted',0)->where('status', 3)->whereIn('user_id',$user_ids)->count(); $num_7=Ordertest::where('is_deleted',0)->where('status', 4)->whereIn('user_id',$user_ids)->count(); $num_8=Ordertest::where('is_deleted',1)->whereIn('user_id',$user_ids)->count(); $num_2=Ordertest::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->whereIn('user_id',$user_ids)->count(); }else{ $num_1=Ordertest::whereIn('is_deleted',[0,1])->count(); $num_3=Ordertest::where('is_deleted',0)->where('status', 0)->count(); $num_4=Ordertest::where('is_deleted',0)->where('status', 1)->count(); $num_5=Ordertest::where('is_deleted',0)->where('status', 2)->count(); $num_6=Ordertest::where('is_deleted',0)->where('status', 3)->count(); $num_7=Ordertest::where('is_deleted',0)->where('status', 4)->count(); $num_8=Ordertest::where('is_deleted',1)->count(); $num_2=Ordertest::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->count(); } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->getUserIdss($search_name); $data->whereIn('user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } $count = $data->count(); if ($order_status==-1){ $num_1=$count; }elseif($order_status==0){ $num_3=$count; }elseif($order_status==1){ $num_4=$count; }elseif($order_status==2){ $num_5=$count; }elseif($order_status==3){ $num_6=$count; }elseif($order_status==4){ $num_7=$count; }elseif($order_status==5){ $num_8=$count; }elseif($order_status==6){ $num_2=$count; } if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); // dd(DB::getQueryLog()); foreach ($list as $key => $val) { $list[$key]['remark'] = $this->getOrderRemark($val['id']); if ($val['is_deleted']==1){ if ($val['remark']==''){ $list[$key]['remark']=$val['destroy_cause']; } } if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } // $hard=Orderdetail::where('order_id',$val['id'])->where('goods_unit','套')->sum('num'); // $old=Orderdetail::where('order_id',$val['id'])->where('goods_unit','件')->sum('num'); // $num_hard=$hard/12; // if($hard%12>0){ // $num_hard=$hard/12+1; // } // // $num_old=$old/6; // if($old%6>0){ // $num_old=$old/6+1; // } // $x_num=count($this->DelNum($val['id']))+$num_hard+$num_old; // $list[$key]['x_num']=$x_num; $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['套'])){ $num_hard=ceil($good_unit['套']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); $x_num=count($pei)+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei), 'peijians'=>$pei, 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } $all=[ 'total'=>$count, 'num_1'=>$num_1, 'num_2'=>$num_2, 'num_3'=>$num_3, 'num_4'=>$num_4, 'num_5'=>$num_5, 'num_6'=>$num_6, 'num_7'=>$num_7, 'num_8'=>$num_8, 'list'=>$list, ]; return $this->success($all,'获取数据成功'); } //获取活动列表 public function getActivityInfo() { $list = Activity::where('disabled', 0)->get(); if ($list) { return $this->success($list); } return $this->error(); } public function DelNum($id){ $data=Orderdetail::where('order_id',$id)->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->get(); $order=Ordertest::where('id',$id)->value('created_at'); $activity_id=Activity::where('start_time','<',$order)->where('end_time','>',$order)->value('id'); $gift_sh=Gifts::where('activity_id',$activity_id)->where('name','like',"%手环")->first(); $gift_xl=Gifts::where('activity_id',$activity_id)->where('name','like',"%项链")->first(); // $gift_sj=Gifts::where('activity_id',$activity_id)->where('name','like',"%丝巾")->first(); $gift_wz=Gifts::where('activity_id',$activity_id)->where('name','like',"%袜子")->first(); // $gift=OrderGift::where('order_id',$id)->first(); $shou_num=0; $fei_num=0; $zao_num=0; $re=[]; foreach ($data as $k=>$v){ if ($v->goods_unit=='套'){ $shou_num+=$v->total; $m=floor($v->total/12); $n=$v->total%12; if ($n<=4){ $n=0; }elseif($n>4 && $n<=8){ $n=1; }else{ $n=2; } $fei_num=$m*2+$n; $zao_num+=$v->total; }elseif ($v->goods_unit=='件'){ $shou_num+=$v->total*4; } } $str=''; if (floor($shou_num/250)>0){ for ($i=0;$i0){ $str.='袋'.$n.'+'; } }else{ $n=$shou_num%250; if ($n>0){ $str.='袋'.$n.'+'; } } if (floor($zao_num/120)>0){ for ($i=0;$i0){ $str.='皂'.$n.'+'; } $m='肥皂'.floor($zao_num/120).'箱'; }else{ $n=$zao_num%120; if ($n>0){ $str.='皂'.$n.'+'; } } if (floor($fei_num/130)>0){ for ($i=0;$i0){ $str.='盒'.$n; } }else{ $n=$fei_num%130; if ($n>0){ $str.='盒'.$n; } } if ($gift_sh){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_sh->id)->first(); if ($gift){ if (floor($gift->num/900)>0){ for ($i=0;$inum/900);$i++){ $re[]='手环900(1箱)'; } $n=$gift->num%900; if ($n>0){ $str.='+手环'.$n; } }else{ $n=$gift->num%900; if ($n>0){ $str.='+手环'.$n; } } } } if ($gift_xl){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_xl->id)->first(); if ($gift){ if (floor($gift->num/500)>0){ for ($i=0;$inum/500);$i++){ $re[]='项链500(1箱)'; } $n=$gift->num%500; if ($n>0){ $str.='+项链'.$n; } }else{ $n=$gift->num%500; if ($n>0){ $str.='+项链'.$n; } } } } // if ($gift_sj){ // $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_sj->id)->first(); // if ($gift){ // if (floor($gift->num/300)>0){ // for ($i=0;$inum/300);$i++){ // $re[]='丝巾300(1箱)'; // } // $n=$gift->num%300; // if ($n>0){ // $str.='+丝巾'.$n; // } // }else{ // $n=$gift->num%300; // if ($n>0){ // $str.='+丝巾'.$n; // } // } // } // // } if ($gift_wz){ $gift=OrderGift::where('order_id',$id)->where('gift_id',$gift_wz->id)->first(); if ($gift){ if (floor($gift->num/300)>0){ for ($i=0;$inum/300);$i++){ $re[]='袜子300(1箱)'; } $n=$gift->num%300; if ($n>0){ $str.='+袜子'.$n; } }else{ $n=$gift->num%300; if ($n>0){ $str.='+袜子'.$n; } } } } // if ($gift){ // if (floor($gift->num/900)>0){ // for ($i=0;$inum/900);$i++){ // $re[]='手环900(1箱)'; // } // $n=$gift->num%900; // if ($n>0){ // $str.='+手环'.$n; // } // }else{ // $n=$gift->num%900; // if ($n>0){ // $str.='+手环'.$n; // } // } // } // if (floor($zao_num/180)>0){ // $n=$shou_num%180; // if ($n>0){ // // $str.='错误皂'.($n-($zao_num%180)).'+'; // } // } $re[]=$str; return $re; } public function order_list_down(Request $request) { $input = $request->all(); if (!$request->has('id')) {//多条件搜索导出 $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name=[]; if ($request->has('search_name')){ $search_name = $input['search_name']; }else{ if ($request->has('user_name')){ $search_name=$input['user_name']; } } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } if ($request->has('receive_info')){ $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; $order_type=$input['order_type']; }else{ $receive_info=[]; $goods_info=[]; $province=[]; $city=[]; $town=[]; $order_type=[]; } $activity_id = $input['activity_id']; DB::enableQueryLog(); $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id')->withTrashed(); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','name','realname'); }); } if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if (is_array($order_status)){ $data->where('is_deleted', 0)->whereIn('status', $order_status); }else{ if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } // if ($order_status) { // if (!in_array('-1', $order_status)) { // if (!in_array('5', $order_status)) { // $data->whereIn('status', $order_status)->where('is_deleted', 0); // } else { // $data->where('is_deleted', 1) // ->orWhere(function ($query) use ($order_status) { // $query->where('is_deleted', 0) // ->whereIn('status', $order_status); // }); // } // } // } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if ($order_type){ if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } } // dd(DB::getQueryLog()); }else{ $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id')->withTrashed(); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']) ->whereIn('id',$request->id); } $list = $data->orderBy('id', 'desc')->get(); foreach ($list as $key => $val) { $list[$key]['remark'] = $this->getOrderRemark($val['id']); if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['套'])){ $num_hard=ceil($good_unit['套']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); $x_num=count($pei)+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei), 'peijians'=>$pei, 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } $all=[ 'list'=>$list, ]; return $this->success($all,'获取数据成功'); } //多条件查询订单列表 public function getConditionsOrderList(Request $request) { $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $activity_id=$input['activity_id']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','warea_id','remark_name as name'); },'get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town'])->with(['get_store:name,id']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','realname'); }); } if ($order_no) { $data->where('order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); Log::error($address_ids); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('status', $order_status)->where('is_deleted', 0); } else { $data->where('is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('is_deleted', 0) ->whereIn('status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } $count = $data->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); $exp = 1; if ($exp == 1) { foreach ($list as $key => $val) { // $list[$key]['remarks'] = $this->getOrderRemark($val['id']); $good_unit=Orderdetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit'); $num_hard=0; if (isset($good_unit['套'])){ $num_hard=ceil($good_unit['套']/12); } $num_old=0; if (isset($good_unit['件'])){ $num_old=ceil($good_unit['件']/6); } $pei=$this->DelNum($val['id']); $x_num=count($pei)+$num_hard+$num_old; $list[$key]['x_arr']=[ 'peijian'=>array_count_values($pei), 'peijians'=>$pei, 'good'=>['hard'=>$num_hard,'other'=>$num_old], 'num'=>$x_num ]; } } return $this->success_list($list, '获取数据成功', $count); } /**标记为专车**/ public function IsCar(Request $request){ Ordertest::where('id',$request->input('id'))->update(['is_car'=>$request->input('status')]); return $this->success([]); } public function order_store_list_down(Request $request) { $input = $request->all(); if (!$request->has('id')) {//多条件搜索导出 $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; $store_id = $input['store_id']; DB::enableQueryLog(); $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','warea_id')->withTrashed(); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids)->select('id','nickname','realname'); }); } if ($store_id){ $data->where('store_id',$store_id); } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } }else{ $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','warea_id')->withTrashed(); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->with(['belong_user:realname,id,mobile']) ->whereIn('id',$request->id); } $data->whereNotNull('store_id'); $list = $data->orderBy('id', 'desc')->get(); foreach ($list as $key => $val) { $list[$key]['remark'] = $this->getOrderRemark($val['id']); if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } } $all=[ 'list'=>$list, ]; return $this->success($all,'获取数据成功'); } //获取活动起止时间 public function getActivityTime($activity_id){ return Activity::where('id',$activity_id)->select('start_time','end_time')->first(); } //获取订单备注 private function getOrderRemark($order_id) { $remark = OrderRemark::where('order_id', $order_id) ->select('remark', 'name')->get(); $str_remark = ''; if ($remark) { foreach ($remark as $k => $v) { $str_remark .= '【' . $v->remark . '/---/' . $v->name . '】'; } } return $str_remark; } /* * 获取用户信息 * */ public function getgoodsinfo(Request $request){ $user=User::where('mobile',$request->mobile)->first(); if (!$user){ return $this->error(40013,'查无此人'); } if ($user->level!=3){ return $this->error(40013,'当前用户不是代理公司'); } $good=Goodtest::where('is_deleted',0)->whereIn('is_show',[2,3])->get(); $data['good']=$good; $data['user']=$user; return $this->success($data); } //获取省Ids public function getProvinceIds($province){ return Address::where('province',$province)->pluck('id'); } //获取市Ids public function getCityIds($city){ return Address::where('city',$city)->pluck('id'); } //获取区Ids public function getTownIds($town){ return Address::where('town',$town)->pluck('id'); } //获取代理Ids public function getUserIds($search=null){ return User::where(function($query) use ($search){ $query->where('nickname','like','%'.$search.'%') ->orwhere('realname','like','%'.$search.'%') ->orwhere('remark_name','like','%'.$search.'%') ->orwhere('mobile',$search); })->withTrashed()->pluck('id'); } //获取代理Ids public function getUserIdss($search=null){ return User::where(function($query) use ($search){ $query->where('realname','like','%'.$search.'%') ->orwhere('remark_name','like','%'.$search.'%') ->orwhere('mobile',$search); })->withTrashed()->pluck('id'); } //根据名称查询代理信息 public function getUserNameIds($search = null) { return User::where(function($query) use ($search){ $query->where('nickname','like','%'.$search.'%') ->orwhere('realname','like','%'.$search.'%') ->orwhere('mobile',$search); })->pluck('id'); } //根据等级查询代理信息 public function getUserLevelIds($search = null) { return User::where('level', $search) ->pluck('id'); } //根据物流查询代理信息 public function getReceiveAddressIds($search = null) { return Address::where('username', 'like', '%' . $search . '%') ->orWhere('mobile', $search) ->pluck('id'); } //根据商品名称获取订单id public function getGoodsOrderIds($search = null) { return Orderdetail::where('goods_name', 'like', '%' . $search . '%') ->pluck('order_id'); } /* * 订单审核 * */ public function order_pass(Request $request) { $orders = Ordertest::where('order_num', $request->order_num)->first(); if (!$orders) { return $this->error(40013, '查无订单,请重试'); } DB::beginTransaction(); try { $order = Ordertest::find($orders->id); $order->status = $request->status; if (!$order->save()) { throw new \Exception('1'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; // Log::error(Auth::user()->name); // Log::error(Auth::user()->role); $orderlog->log_name = Auth::user()->name; $orderlog->log_text = '审核通过'; if (!$orderlog->save()) { throw new \Exception('2'); } DB::commit(); return $this->success([], '审核成功'); } catch (\Exception $exception) { DB::rollBack(); return $this->error(40014, '订单审核失败'); } } public function order_reject(Request $request) { $order = Ordertest::where('order_num', $request->order_num)->first(); if (!$order) { return $this->error(40013, '查无订单,请重试'); } DB::beginTransaction(); try { $order->status = $request->status; if (!$order->save()) { throw new \Exception('1'); } $orderlog = new orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->op_name = Auth::user()->name; $orderlog->log_text = Auth::user()->role . '人员审核驳回'; if (!$orderlog->save()) { throw new \Exception('2'); } DB::commit(); return $this->success([], '审核成功'); } catch (\Exception $exception) { DB::rollBack(); return $this->error(40014, '订单审核失败'); } } /* * download * */ public function down_load(Request $request) { ini_set('memory_limit', '1024M'); $input = $request->all(); if ($request->has('provice')){ Log::error('下载测试'); $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $activity_id = $input['activity_id']; $end_time = $input['end_time']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province=$input['provice']; $city=$input['city']; $town=$input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','name','warea_id','mobile'); },'get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['belong_user:id,realname,mobile']) ->with(['get_store:name,id']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids); }); } if ($order_no) { $data->where('order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } // if($activity_id){ // $data->where('activity_id',$activity_id); // } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('address_id', $address_ids); } if($province && $province!='省'){ $province_ids=$this->getProvinceIds($province); $data->whereIn('address_id', $province_ids); } if($city && $city!='市'){ $city_ids=$this->getCityIds($city); $data->whereIn('address_id', $city_ids); } if($town && $town!='区'){ $town_ids=$this->getTownIds($town); $data->whereIn('address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('status', $order_status)->where('is_deleted', 0); } else { $data->where('is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('is_deleted', 0) ->whereIn('status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_type', $order_type); } $list = $data->orderBy('id', 'desc')->get(); }else{ if ($request->has('id')) { $list = Ordertest:: with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id','mobile'); },'get_order_gift']) // with(['get_user:id,nickname,mobile,realname','get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['belong_user:id,realname,mobile']) ->with(['get_store:name,id'])->whereIn('id', $request->id)->get(); } else { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $search_name = $input['search_name']; $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id','mobile'); },'get_order_gift']) ->with(['belong_user:id,realname,mobile']) ->with(['get_address:id,username,mobile,address,province,city,town']); $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $data->whereHas('get_user', function($query) use ($warea_ids){ $query->whereIn('warea_id',$warea_ids); }); } if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } $count = $data->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->get(); } } $i = 0; $re = []; foreach ($list as $k => $v) { $order_detail = Orderdetail::where('order_id', $v->id)->get(); foreach ($order_detail as $keys => $values) { // $order_detail = Orderdetail::where('order_id', $v->id)->where('goods_name', $values->goods_name)->get(); $re[$i]['订单编号'] = $v->order_num; $re[$i]['下单时间'] = $v->created_at->toDateTimeString(); if ($v->get_user->warea){ $re[$i]['所属政委'] = $v->get_user->warea->admin_name; }else{ $re[$i]['所属政委'] =''; } if ($v->is_deleted==1){ $re[$i]['订单状态'] = $this->judge_status(5); }else{ $re[$i]['订单状态'] = $this->judge_status($v->status); } $re[$i]['支付状态'] = $this->judge_pay_status($v->pay_status); $re[$i]['体验店或专车']=''; if ($v->get_store){ $re[$i]['体验店或专车'] =$v->get_store->name; }else{ if ($v->is_car){ $re[$i]['体验店或专车'] ='专车'; } } $re[$i]['备注昵称'] = $v->get_user->name; $re[$i]['下单人手机号'] = $v->get_user->mobile; $re[$i]['下单人姓名'] = $v->get_user->realname; $re[$i]['商品名称'] = $values->goods_name; $re[$i]['产品规格'] = '尺码:' . $values->goods_size; $re[$i]['产品数量'] = $values->num; $re[$i]['商品价格'] = $values->goods_price; $re[$i]['金额小计'] = $values->money; $re[$i]['收货人姓名'] = $v->get_address->username; $re[$i]['收货人联系方式'] = $v->get_address->mobile; $re[$i]['收货人省份'] = $v->get_address->province; $re[$i]['收货人城市'] = $v->get_address->city; $re[$i]['收货人地区'] = $v->get_address->town; $re[$i]['收货人地址'] = $v->get_address->address; $re[$i]['物流单号'] = $v->track_number == null ? '' : $v->track_company; $re[$i]['物流公司'] = $v->track_company == null ? '' : $v->track_company; $re[$i]['物流备注'] = $v->track_remark == null ? '' : $v->track_remark; $re[$i]['发货时间'] = $v->track_time == null ? '' : $v->track_time; $re[$i]['订单备注'] = $this->getOrderRemark($v->id); if ($v->is_deleted==1){ if ($v->destroy_cause){ $re[$i]['订单备注'] =$v->destroy_cause; } } $re[$i]['赠品信息'] = ''; if ($v->belong_user){ $re[$i]['所属'] = '('.$v->belong_user->realname.','.$v->belong_user->mobile.')'; }else{ $re[$i]['所属'] = ''; } if(count($v->get_order_gift)>0){ foreach($v->get_order_gift as $key =>$val){ if($val->pivot->num>0){ if(empty($re[$i]['赠品信息'])){ $re[$i]['赠品信息'] .=$val->name.$val->pivot->num; }else{ $re[$i]['赠品信息'] .=','.$val->name.$val->pivot->num; } } } // $re[$i]['赠品信息'] = json_encode($order_gift,JSON_UNESCAPED_UNICODE); } // else{ // $re[$i]['赠品信息'] = ''; // } // $re[$i]['收货时间'] = $v->receive_time==null?'':$v->receive_time; // foreach ($order_detail as $key => $value) { // // foreach ($data as $ke => $va) { // if ($value->goods_size == $va->size) { // $re[$i]['尺码:'.$va->size] = $value->num; // } else { // $re[$i]['尺码:'.$va->size] = 0; // } // } // } $i++; } //<<<<<<< HEAD // if($i==100){ // return $re; // } // //======= //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab } return $this->success_list($re); } public function judge_status($status) { if ($status == 0) { $text = '待订单审核'; } elseif ($status == 1) { $text = '待财务审核'; } elseif ($status == 2) { $text = '待发货审核'; } elseif ($status == 3) { $text = '待收货'; } elseif ($status == 4) { $text = '已完成'; }elseif ($status == 5) { $text = '已作废'; } return $text; } public function judge_pay_status($status) { if ($status == 0) { $text = '未付款'; } elseif ($status == 1) { $text = '部分付款'; } elseif ($status == 2) { $text = '已付款'; } elseif ($status == 3) { $text = '待退款'; } return $text; } public function send_order(Request $request){ ini_set('memory_limit', '4096M'); $time=Carbon::now()->toDateTimeString(); $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } // if( $file->getClientOriginalExtension() != 'xlsx' && $file->getClientOriginalExtension() != 'xls' ) { // return $this->error( 450001 , '上传文件类型错误,文件后缀为 xlsx 或 xls' ); // } // $aa=Excel::import(new ExpressImport, request()->file('file')); $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $newArr=[]; $one = array_shift($array[0]); $express_num_keys=array_search('快递单号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递单号'字段"); } $order_num_keys=array_search('订单编号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'订单编号'字段"); } $express_total=array_search('数据求和',$one); if(!$express_total){ return $this->error('450001',"表头无'数据求和'字段"); } $express_com_keys=array_search('快递公司',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递公司'字段"); } $express_status_keys=array_search('发货状态',$one); if(!$express_status_keys){ return $this->error('450001',"表头无'发货状态'字段"); } $remark_keys=array_search('备注',$one); if(!$remark_keys){ return $this->error('450001',"表头无'备注'字段"); } $F_XL_SIZE=array_search('女4XL',$one); if(!$F_XL_SIZE){ $l_keys=array_search('L',$one); $xl_keys=array_search('XL',$one); $xxl_keys=array_search('XXL',$one); $xxxl_keys=array_search('XXXL',$one); $vm_keys=array_search('女M',$one); $vl_keys=array_search('女L',$one); $vxl_keys=array_search('女XL',$one); $vxxl_keys=array_search('女XXL',$one); $vxxxl_keys=array_search('女XXXL',$one); $wxl_keys=array_search('5XL',$one); $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$vxxxl_keys,$wxl_keys]; }else{ $vxxxl_keys=array_search('4XL',$one); $wxl_keys=array_search('5XL',$one); $vxl_keys=array_search('女3XL',$one); $vxxl_keys=array_search('女4XL',$one); $keys=[$vxxxl_keys,$wxl_keys,$vxl_keys,$vxxl_keys]; } $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政'=>'EMS','韵达快递'=>'YD','京东快递'=>'JD','京东物流'=>'JDKY']; $arres=[]; $o=0; $new_arr=[]; $z=0; foreach ($array[0] as $k=>$v){ $st=''; if ($v[$express_com_keys]!='中通快运'){ $arres[$o]=$v; if ($v[$express_com_keys]=='中通快递'){ $patterns = "/\d+/"; preg_match_all($patterns,$v[$express_num_keys],$aa); foreach ($aa[0] as $kee=>$vaa){ $st.=$vaa; } $new_arr[$z]=$st; }else{ $new_arr[$z]=$v[$express_num_keys]; } $z++; } } $res=Express::whereIn('express_number',$new_arr)->pluck('express_number')->toArray(); if (count($res)>0){ $ar_r=array_intersect($new_arr,$res); $que_express_str=implode(',',$ar_r); return $this->error('450001','快递单号:'.$que_express_str.'已经上传',$ar_r); } // foreach ($array[0] as $k=>$v){ // if ($v[$express_com_keys]!='中通快运'){ // $new_arr[$z]=$v[$express_num_keys]; // $z++; // } // } $express_nums=array_column($arres,$express_num_keys); $unique_express_nums=array_unique($express_nums); $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums); if(count($que_express_nums)>0){ $que_express_str=implode(',',$que_express_nums); return $this->error('450001','快递单号'.$que_express_str.'重复出现'); } $statusArr=[];$arr=[]; $area_list=[]; $order_num=[]; foreach ($array[0] as $key => $value) { $order_num[]=$value[0]; $area_list[$value[0]][] = $value; } $order_num=array_values(array_unique($order_num)); $order=Ordertest::whereIn('order_num',$order_num)->whereNotIn('status',[0,1])->pluck('order_num')->toArray(); if (count($order_num)!=count($order)){ $arrss=array_values(array_diff($order_num,$order)); if ($arrss){ return $this->error(200154,'订单编号为:'.implode(',',$arrss).'的订单状态不正确'); } } $is=0; foreach ($area_list as $k=>$v){ $arr_order[$is]['order_num']=$k; $arr_order[$is]['express_code']=$v[0][$express_num_keys]; $arr_order[$is]['express_com']=$v[0][$express_com_keys]; $is++; } DB::beginTransaction(); try { foreach ($array[0] as $key => $val) { $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys]; $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]); if (count($arr[$val[$order_num_keys]]) > 1) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致'); } if (empty($val[$order_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空'); } // $order = Ordertest::where('order_num', $val[$order_num_keys])->first(); // if (empty($order)) { // return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在'); // } // if ($order->status == 0 || $order->status == 1) { // return $this->error(450001, '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '的订单处于待订单审核或者待财务审核状态中'); // } if (empty($val[$express_total])) { return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空'); } if (empty($val[$express_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空'); } if (empty($val[$express_com_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空'); } if (empty($express_code[$val[$express_com_keys]])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误'); } if ($express_com_keys=='中通快运' || $express_com_keys=='京东物流'){ $express = Express::where('express_number', $val[$express_num_keys])->where('created_at','<',$time)->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } }else{ $express = Express::where('express_number', $val[$express_num_keys])->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } } } // foreach ($arr as $k => $v) { // Ordertest::where('order_num', $k)->update(['track_status' => $v[0]]); // } $i=0; $ks=0; $d=[]; foreach ($area_list as $ke=>$va){ $order=Ordertest::where('order_num',$ke)->first(); $number=Express::where('order_id',$order->id)->where('is_gift',0)->groupBy('number')->get()->count(); $count=Express::where('order_id',$order->id)->where('is_gift',0)->count(); $total=Express::where('order_id',$order->id)->where('is_gift',0)->sum('total'); foreach ($va as $key=>$val){ $total_new=0; $exp=new Express(); if (!empty($newArr[$i]['note'])) { $exp->note = $newArr[$i]['note'] . ','; } else { $exp->note = ''; } $exp->order_id = $order->id; $exp->user_id = $order->user_id; if ($val[$express_com_keys]=='中通快递'){ $patterns = "/\d+/"; $st=''; preg_match_all($patterns,$val[$express_num_keys],$aa); foreach ($aa[0] as $kee=>$vaa){ $st.=$vaa; } $exp->express_number=$st; }else{ $exp->express_number = $val[$express_num_keys]; } if ($val[$express_com_keys]=='邮政'){ $exp->express_com = $val[$express_com_keys].'EMS'; }else{ $exp->express_com = $val[$express_com_keys]; } $exp->express_code = $express_code[$val[$express_com_keys]]; $exp->remark = $val[$remark_keys]; $data = ''; $datas=[]; $l=0; foreach ($keys as $k => $v) { if (!empty($val[$v])) { if (empty($data)) { $data .= $one[$v] . ':' . $val[$v]; } else { $data .= '+' . $one[$v] . ':' . $val[$v]; } $nums=mb_strlen($val[$v]); if ($nums==2){ $re=mb_strstr($val[$v],'精'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='精装版'; $ku=0; }else{ $re=mb_strstr($val[$v],'简'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='简约版'; $ku=1; }else{ $re=mb_strstr($val[$v],'棉'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='棉老版'; $ku=3; }else{ $re=mb_strstr($val[$v],'高'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='高腰版'; $ku=2; }else{ $re=mb_strstr($val[$v],'青'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='青春版'; $ku=4; }else{ return $this->error(50021,'尺码不对',''); } } } } } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku]; $total+=$num; $total_new+=$num; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku]; $total+=$num; $total_new+=$num; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku]; $total+=$num; $total_new+=$num; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku]; $total+=$num; $total_new+=$num; } } $l++; $count++; }else{ if ($nums%2!=0){ $re_1=mb_strstr($val[$v],'精'); if ($re_1){ $numss=mb_strlen($re_1); $aa=mb_substr($val[$v],$nums-$numss-2,2); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量0',[$val[$v]]); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } }else{ $re_1=mb_strstr($val[$v],'精'); if ($re_1){ $numss=mb_strlen($re_1); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量1'); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } } $re_2=mb_strstr($val[$v],'简'); if ($re_2){ $numss=mb_strlen($re_2); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量2'.$aa); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } $re_3=mb_strstr($val[$v],'高'); if ($re_3){ $numss=mb_strlen($re_3); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量3'.$val[$v]); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'高腰版','ku'=>2]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'高腰版','ku'=>2]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'高腰版','ku'=>2]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'高腰版','ku'=>2]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } $re_4=mb_strstr($val[$v],'棉'); if ($re_4){ $numss=mb_strlen($re_4); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量4'); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } $re_5=mb_strstr($val[$v],'青'); if ($re_5){ $numss=mb_strlen($re_5); $aa=mb_substr($val[$v],$nums-$numss-1,1); if (!is_numeric($aa)){ return $this->error(500024,'尺码对应的数量不对,请核对数量4'); } if (!$F_XL_SIZE){ if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'青春版','ku'=>4]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'青春版','ku'=>4]; $total+=$aa; $total_new+=$aa; } }else{ if ($k<=1){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'青春版','ku'=>4]; $total+=$aa; $total_new+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'青春版','ku'=>4]; $total+=$aa; $total_new+=$aa; } } $l++; $count++; } if (!$re_1&&!$re_2&&!$re_3&&!$re_4 && !$re_5){ return $this->error(522201,'尺码对应的数量信息不正确'.$val[$v],[$v]); } } } } $exp->note .= $data; $exp->notes = json_encode($datas); $exp->status = 0; $exp->number = $number+1; $exp->count = $key+1; $exp->total = $total_new; if (!$exp->save()){ throw new \Exception(1); } foreach ($datas as $kes=>$vals){ $es=new ExpressStorage(); $str_count=substr_count($vals['size'],'X'); if ($str_count>=2){ $vals['size']=$str_count.'XL'; } $es->user_id=$order->good_user_id; $es->express_id=$exp->id; $es->sex=$vals['sexs']; $es->size=$vals['size']; $es->num=$vals['num']; $es->type=$vals['ku']; if (!$es->save()){ throw new \Exception(1); } } } if ($total==$order->total){ $order->track_status=2; }elseif ($total<$order->total){ $order->track_status=1; }else{ return $this->error(52201,$ke.'数量出错了'); } $order->number+=$count; $order->save(); } // Log::error($newArr); // Express::insert($newArr); DB::commit(); SendMessageOrderSendJob::dispatch($arr_order); return $this->success([]); }catch(Exception $e){ DB::rollBack(); Log::error($e); return $this->error(); } } /* * 上传物流单号 * */ public function send_orders(Request $request) { $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } // if( $file->getClientOriginalExtension() != 'xlsx' && $file->getClientOriginalExtension() != 'xls' ) { // return $this->error( 450001 , '上传文件类型错误,文件后缀为 xlsx 或 xls' ); // } // $aa=Excel::import(new ExpressImport, request()->file('file')); $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $newArr=[]; $one = array_shift($array[0]); $express_num_keys=array_search('快递单号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递单号'字段"); } $order_num_keys=array_search('订单编号',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'订单编号'字段"); } $express_total=array_search('数据求和',$one); if(!$express_total){ return $this->error('450001',"表头无'数据求和'字段"); } $express_com_keys=array_search('快递公司',$one); if(!$express_num_keys){ return $this->error('450001',"表头无'快递公司'字段"); } $express_status_keys=array_search('发货状态',$one); if(!$express_status_keys){ return $this->error('450001',"表头无'发货状态'字段"); } $remark_keys=array_search('备注',$one); if(!$remark_keys){ return $this->error('450001',"表头无'备注'字段"); } $l_keys=array_search('L',$one); $xl_keys=array_search('XL',$one); $xxl_keys=array_search('XXL',$one); $xxxl_keys=array_search('XXXL',$one); $vm_keys=array_search('女M',$one); $vl_keys=array_search('女L',$one); $vxl_keys=array_search('女XL',$one); $vxxl_keys=array_search('女XXL',$one); $vxxxl_keys=array_search('女XXXL',$one); $wxl_keys=array_search('5XL',$one); $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$vxxxl_keys,$wxl_keys]; $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政EMS'=>'EMS','京东快递'=>'JD','京东物流'=>'JDKY']; $express_nums=array_column($array[0],$express_num_keys); $unique_express_nums=array_unique($express_nums); $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums); if(count($que_express_nums)>0){ $que_express_str=implode(',',$que_express_nums); return $this->error('450001','快递单号'.$que_express_str.'重复出现'); } $statusArr=[];$arr=[]; $area_list=[]; foreach ($array[0] as $key => $value) { $area_list[$value[0]][] = $value; } DB::beginTransaction(); try { foreach ($array[0] as $key => $val) { $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys]; $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]); if (count($arr[$val[$order_num_keys]]) > 1) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致'); } if (empty($val[$order_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空'); } $order = Ordertest::where('order_num', $val[$order_num_keys])->first(); if (empty($order)) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在'); } if ($order->status == 0 || $order->status == 1) { return $this->error(450001, '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '的订单处于待订单审核或者待财务审核状态中'); } if (empty($val[$express_total])) { return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空'); } if (empty($val[$express_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空'); } if (empty($val[$express_com_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空'); } if (empty($express_code[$val[$express_com_keys]])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误'); } $express = Express::where('express_number', $val[$express_num_keys])->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } } foreach ($arr as $k => $v) { Ordertest::where('order_num', $k)->update(['track_status' => $v[0]]); } $i=0; $ks=0; $d=[]; foreach ($area_list as $ke=>$va){ $order=Ordertest::where('order_num',$ke)->first(); $number=Express::where('order_id',$order->id)->groupBy('number')->get()->count(); $count=Express::where('order_id',$order->id)->count(); $total=Express::where('order_id',$order->id)->sum('total'); foreach ($va as $key=>$val){ $exp=new Express(); if (!empty($newArr[$i]['note'])) { $exp->note = $newArr[$i]['note'] . ','; } else { $exp->note = ''; } $exp->order_id = $order->id; if ($express_code[$val[$express_com_keys]]=='ZTO'){ if (mb_substr($val[$express_num_keys],0,1)!=7){ return $this->error(500231,$val[$express_num_keys].'快递单号与快递公司不符合'); } } if ($express_code[$val[$express_com_keys]]=='DBL'){ if (mb_substr($val[$express_num_keys],0,1)!='D'){ return $this->error(500231,$val[$express_num_keys].'快递单号与快递公司不符合'); } } if ($express_code[$val[$express_com_keys]]=='ZTOKY'){ if (mb_substr($val[$express_num_keys],0,1)!=2){ return $this->error(500231,$val[$express_num_keys].'快递单号与快递公司不符合'); } } $exp->express_number = $val[$express_num_keys]; $exp->express_com = $val[$express_com_keys]; $exp->remark = $val[$remark_keys]; $exp->express_code = $express_code[$val[$express_com_keys]]; $data = ''; $datas=[]; $l=0; foreach ($keys as $k => $v) { if (!empty($val[$v])) { if (empty($data)) { $data .= $one[$v] . ':' . $val[$v]; } else { $data .= '+' . $one[$v] . ':' . $val[$v]; } $re=mb_strstr($val[$v],'精'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='精装版'; $ku=0; }else{ $re=mb_strstr($val[$v],'简'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='简约版'; $ku=1; }else{ $re=mb_strstr($val[$v],'棉老'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-2); $kuan='棉老版'; $ku=3; }else{ $re=mb_strstr($val[$v],'高'); if ($re){ $n=mb_strlen($val[$v]); $num=mb_substr($val[$v],0,$n-1); $kuan='高腰版'; $ku=2; } } } } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku]; $total+=$num; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku]; $total+=$num; } $l++; $count++; } } $exp->note .= $data; $exp->notes = json_encode($datas); $exp->status = 0; $exp->number = $number+1; $exp->count = $key+1; $exp->total = $val[$express_total]; if (!$exp->save()){ throw new \Exception(1); } foreach ($datas as $kes=>$vals){ $es=new ExpressStorage(); $str_count=substr_count($vals['size'],'X'); if ($str_count>=2){ $vals['size']=$str_count.'XL'; } $es->user_id=$order->good_user_id; $es->express_id=$exp->id; $es->sex=$vals['sexs']; $es->size=$vals['size']; $es->num=$vals['num']; $es->type=$vals['ku']; if (!$es->save()){ throw new \Exception(1); } } } if ($total==$order->total){ $order->track_status=2; }elseif ($total<$order->total){ $order->track_status=1; }else{ return $this->error(52201,$ke.'数量出错了'); } $order->number+=$count; $order->save(); } DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error(); } } /* *修改订单地址 */ public function update_address(Request $request) { $address = Address::find($request->address_id); $add=Address::where('province',$request->province) ->where('user_id',$address->user_id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if(!empty($add) && $add->id!=$request->address_id){ return $this->error('450001','当前地址信息已存在'); } $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->mobile = $request->mobile; $address->username = $request->name; $row=$address->save(); if($row){ return $this->success([]); }else{ return $this->error(); } } /* * 订单详情 * */ public function order_detail(Request $request) { $order_num = $request->order_num; $order = Ordertest::where('order_num', $order_num)->with(['get_order_log'=>function($q){ $q->orderByDesc('created_at'); }, 'get_address', 'get_order_remark', 'get_user', 'get_order_gift'])->with(['belong_user:nickname,id,mobile,realname'])->first()->toArray(); $order_detail = Orderdetail::where('order_id', $order['id'])->orderByDesc('created_at')->get(); $data = []; foreach ($order_detail as $k => $v) { $good = Goodtest::find($v->goods_id); $data['goods_detail'][$k]['name'] = $good->name; $data['goods_detail'][$k]['main_img'] = $good->main_img; $data['goods_detail'][$k]['size'] = $good->size; $data['goods_detail'][$k]['unit'] = $good->unit; $data['goods_detail'][$k]['money'] = $v->money; $data['goods_detail'][$k]['num'] = $v->num; $data['goods_detail'][$k]['id'] = $v->goods_id; $data['goods_detail'][$k]['detail_id'] = $v->id; $data['goods_detail'][$k]['goods_price'] = $v->goods_price; $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all = array_merge($order, $data); return $this->success($all); } /* * 订单的修改 * */ public function order_update(Request $request) { $rule = [ 'order_id' => 'required', 'size_id' => 'required', 'num' => 'required', 'total' => 'required', 'money' => 'required', 'type' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'order_id' => '订单id', 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money' => '商品金额', ]; $vali = Validator::make($request->all(), $rule, $message, $attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}' . $vali->errors()->first()); return $this->error('40010', '', $vali->errors()->first()); } $input = $request->all(); $sizes=[]; $nums=[]; /* * 提前处理 * **/ foreach ($input['size_id'] as $k=>$v){ if (Cache::has('dwbs_good_num'.$v)){ $order_re=Orderdetail::where('order_id',$input['order_id'])->where('goods_id',$v)->first(); if (!$order_re){ if ($input['num'][$k]>Cache::get('dwbs_good_num'.$v)){ $data=Goodtest::find($v); return $this->error(50021,$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量'); } }else{ if ($order_re->num<$input['num'][$k]){ $numss=$input['num'][$k]-$order_re->num; if ($numss>Cache::get('dwbs_good_num'.$v)){ $data=Goodtest::find($v); return $this->error(50021,$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量'); } } } } } foreach ($input['size_id'] as $k=>$v){ if (Cache::has('dwbs_good_num'.$v)){ $order_re=Orderdetail::where('order_id',$input['order_id'])->where('goods_id',$v)->first(); if (!$order_re){ Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]); }else{ $numss=$input['num'][$k]-$order_re->num; if ($numss<0){ Cache::increment('dwbs_good_num'.$v,-$numss); }elseif ($numss>0){ Cache::decrement('dwbs_good_num'.$v,$numss); } } } } if ($input['del_id']){ foreach ($input['del_id'] as $k=>$v){ if (Cache::has('dwbs_good_num'.$v)){ $order_re=Orderdetail::where('order_id',$input['order_id'])->where('goods_id',$v)->first(); Cache::increment('dwbs_good_num'.$v,$order_re->num); } } } DB::beginTransaction(); try { $order = Ordertest::find($input['order_id']); if(isset($input['activity_id']) && !empty($input['activity_id'])){ $activity=Activity::where('id',$input['activity_id'])->first(); if($order->created_at < $activity->start_time || $order->created_at > $activity->end_time){ $order->created_at = date("Y-m-d H:i:s",strtotime($activity->end_time.'- 2 hours')); $order->save(); } } $num_gift=0;$mes_info=null; foreach ($input['size_id'] as $k => $v) { $orderdetail = Orderdetail::where('order_id', $order->id)->where('goods_id', $v)->first(); $good = Goodtest::find($v); if ($orderdetail) { if ($orderdetail->num != $input['num'][$k]) { $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单商品数量'; $orderlog->log_text = '商品' . $orderdetail->goods_name . ' 的' . $orderdetail->goods_size . '款式原数量为' . $orderdetail->num . '更改后的数量为' . $input['num'][$k]; if(empty($mes_info)){ $mes_info='修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k]; }else{ if(mb_strlen($mes_info) < 100){ $mes_info.=';修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k]; } } if (!$orderlog->save()) { throw new \Exception('1'); } $count = $input['num'][$k] - $orderdetail->num; // if ($count > $good->storage) { // return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足'); // } $nums[]=$count; $sizes[]=$input['size_id'][$k]; $goods = Goodtest::find($v); $goods->storage = Cache::get('dwbs_good_num'.$v); // $goods->storage = $goods->storage - $input['num'][$k] + $orderdetail->num; $goods->sold_num = $goods->sold_num + $input['num'][$k] - $orderdetail->num; if (!$goods->save()) { throw new \Exception('1'); } $orderdetail->num = $input['num'][$k]; $orderdetail->money = $input['num'][$k] * $good->money; // if($good->main_attr=='大卫博士精装版'){ // $num_gift+=$input['num'][$k]; // } // if($good->main_attr=='大卫博士简约版' || $good->main_attr=='大卫博士老人版'){ // $num_gift+=$input['num'][$k]*2; // } if($good->unit=='套'){ $num_gift+=$input['num'][$k]; } if($good->unit=='件'){ $num_gift+=$input['num'][$k]*2; } if (!$orderdetail->save()) { throw new \Exception('1'); } }else{ if($good->unit=='套'){ $num_gift+=$input['num'][$k]; } if($good->unit=='件'){ $num_gift+=$input['num'][$k]*2; } } } else { $nums[]=$input['num'][$k]; $sizes[]=$input['size_id'][$k]; $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '添加了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $input['num'][$k]; if(empty($mes_info)){ $mes_info='添加'.$good->name.'-'.$good->size.'数量:'.$input['num'][$k]; }else { if (mb_strlen($mes_info) < 100) { $mes_info .= ';添加' . $good->name . '-' . $good->size . '数量:' . $input['num'][$k]; } } if (!$orderlog->save()) { throw new \Exception('1'); } $goods = Goodtest::find($v); // $goods->storage=$goods->storage-$input['num'][$k]+$orderdetail->num; $goods->storage =Cache::get('dwbs_good_num'.$v); $goods->sold_num = $goods->sold_num + $input['num'][$k]; if (!$goods->save()) { throw new \Exception('1'); } $orderdetail = new Orderdetail(); $orderdetail->goods_name = $good->name; $orderdetail->goods_size = $good->size; $orderdetail->goods_price= $good->money; $orderdetail->goods_unit= $good->unit; $orderdetail->order_id = $order->id; $orderdetail->goods_id = $v; $orderdetail->num = $input['num'][$k]; $orderdetail->money = $input['num'][$k] * $good->money; // if($good->main_attr=='大卫博士精装版'){ // $num_gift+=$input['num'][$k]; // } // if($good->main_attr=='大卫博士简约版' || $good->main_attr=='大卫博士老人版'){ // $num_gift+=$input['num'][$k]*2; // } if($good->unit=='套'){ $num_gift+=$input['num'][$k]; } if($good->unit=='件'){ $num_gift+=$input['num'][$k]*2; } if (!$orderdetail->save()) { throw new \Exception('1'); } $count = $input['num'][$k]; // if ($count > $good->storage) { // return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足'); // } } } $order_gift=OrderGift::where('order_id',$input['order_id'])->get(); if($order_gift){ OrderGift::where('order_id',$input['order_id'])->delete(); } $activity_id=$input['activity_id']; if($activity_id){ $gift=Gifts::where('activity_id',$activity_id)->get(); if($gift){ foreach($gift as $k => $v){ if($num_gift >= $v->limit_num) { OrderGift::create([ 'gift_id' => $v->id, 'order_id' => $input['order_id'], 'activity_id' => $activity_id, 'num' => floor($num_gift / $v->num), ]); } } } } foreach ($input['del_id'] as $k => $v) { $orderdetail = Orderdetail::where('order_id', $order->id)->where('goods_id', $v)->first(); $good = Goodtest::find($v); $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '删除了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $orderdetail->num; if ($order->arr_json){ $nums[]='-'.$orderdetail->num; $sizes[]=$v; } if(empty( $mes_info)){ $mes_info='删除'.$good->name.'-'.$good->size.'数量:'.$orderdetail->num; }else { if (mb_strlen($mes_info) < 100) { $mes_info .= ';删除' . $good->name . '-' . $good->size . '数量:' . $orderdetail->num; } } if (!$orderlog->save()) { throw new \Exception('1'); } $goods = Goodtest::find($v); $goods->storage =Cache::get('dwbs_good_num'.$v); $goods->sold_num = $goods->sold_num - $orderdetail->num; if (!$goods->save()) { throw new \Exception('1'); } if (!$orderdetail->delete()) { throw new \Exception('1'); } } if ($order->arr_json){ $ress=$this->DealOrder($sizes,$nums); $arrs=json_decode($order->arr_json); $ar=array_merge($arrs,$ress); $order->arr_json=json_encode($ar); } $money_old = $order->money; $total_old = $order->total; $type_old = $order->type; $pay_money_old = $order->pay_money; $mo_money_old = $order->no_pay_money; $total = $input['total']; $money = $input['money']; $type = $input['type']; if ($money > $pay_money_old) { if ($pay_money_old == 0) { $order->pay_status = 0; } else { $order->pay_status = 1; } $order->no_pay_money = $money - $pay_money_old; $order->wait_back_money=0; } elseif ($money < $pay_money_old) { $order->pay_status = 3; $order->no_pay_money=0; $order->wait_back_money = $pay_money_old - $money; } elseif ($money == $pay_money_old){ $order->pay_status = 2; $order->wait_back_money=0; $order->no_pay_money=0; } $order->money = $money; $order->total = $total; $order->type = $type; if (!$order->save()) { throw new \Exception('s'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '原订单总金额为' . $money_old . ',商品数量为' . $total_old . ',商品种类为' . $type_old . '。新订单金额为' . $money . ',商品数量为' . $total . ',种类为' . $type; if (!$orderlog->save()) { throw new \Exception('1'); } $user=User::where('id',$order->user_id)->first(); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$order->order_num.'修改成功', 'keyword1' => $mes_info, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); $activities=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activities->start_time; $end_time=$activities->end_time; $user_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('money'); $user_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('pay_money'); $user_no_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('no_pay_money'); $me['openid']=$user->openid; $me['data']=[ 'first' => '您在本次活动中提交的订单未支付完成,请及时付款', 'keyword1' => number_format($user_money,2), 'keyword2' => number_format($user_pay_money,2), 'keyword3' => number_format($user_no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new NPI($me)); } DB::commit(); // event(new ChangeBigGiftBagEvent(['order_id'=>$order->id,'type'=>'edit','n'=>'2'])); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单修改的错误信息为' . $exception); return $this->error(40013, '订单修改出错'); } } /* * 代下单 * */ public function submit_order(Request $request) { // return $this->error(50052,'','该功能暂时关闭'); // Log::error(json_encode($request->all())); $rule = [ 'user_id' => 'required', 'address_id' => 'required', 'size_id' => 'required|array', 'num' => 'required|array', 'total' => 'required', 'type' => 'required', 'money' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'user_id' => '用户id', 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money' => '商品金额', 'address_id' => '地址', ]; $vali = Validator::make($request->all(), $rule, $message, $attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}' . $vali->errors()->first()); return $this->error('40010', '', $vali->errors()->first()); } $input = $request->all(); foreach ($input['size_id'] as $k=>$v){ if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){ $data=Goodtest::find($v); return $this->error(300,$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量'); } } foreach ($input['size_id'] as $k=>$v){ Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]); } foreach ($input['size_id'] as $k=>$v){ $data=Goodtest::find($v); if (!$data){ return $this->error(40013,'购物车有未知商品,请清空购物车'); } $now=Carbon::now()->timestamp; if ($data->off_time!=null){ if (strtotime($data->off_time)<$now){ return $this->error(300,'商品'.$data->name.'的'.$data->size.'尺码已经下架'); } } if($data->is_show==4){ return $this->error(300,'商品'.$data->name.'的'.$data->size.'尺码已经下架'); } } DB::beginTransaction(); try { $address=Address::find($input['address_id']); if (!$address->belong_id){ return $this->error(50023,'当前地址没有绑定所属者'); } $order = new Ordertest(); $user = User::find($input['user_id']); //标识体验店订单 $address=Address::where('id',$request->input('address_id'))->select('id','province','city','town','belong_id')->first(); $area=$address->province.$address->city.$address->town; if ($area=='山东省临沂市临沭县'){ $store_id = 17; }else{ $store_id = null; } $order->store_id = $store_id; $order->user_id = $input['user_id']; $order->order_num = $this->order_num($user->auth_code); $order->total = $input['total']; $order->type = $input['type']; $order->money = $input['money']; $order->order_type = 1; $order->no_pay_money = $input['money']; $order->address_id = $input['address_id']; $order->good_user_id=$address->belong_id; if(isset($input['activity_id']) && !empty($input['activity_id'])){ $activity=Activity::where('id',$input['activity_id'])->first(); $time=Carbon::now()->toDateTimeString(); if($time < $activity->start_time ||$time > $activity->end_time) { $order->created_at =Carbon::parse($activity->end_time)->addHours(-1); Log::error($order->created_at); } } if (!empty($input['remark'])) { $orderremark = new OrderRemark(); $orderremark->order_id = $order->id; $orderremark->name = Auth::user()->name; $orderremark->level = $user->level; $orderremark->type = 0; $orderremark->remark = $input['remark']; if (!$orderremark->save()) { throw new \Exception('2'); } } $activity_id=$input['activity_id']; // if ($activity_id){ $or=$this->DealOrder($input['size_id'],$input['num']); $order->arr_json=json_encode($or); // } if (!$order->save()) { Log::error('{-----订单保存出错-----}' . $user->id); throw new \Exception('订单保存出错'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '创建新订单'; $orderlog->log_text = '代下单成功'; if (!$orderlog->save()) { throw new \Exception('1'); } $num_gift=0; foreach ($input['size_id'] as $k => $v) { $data = Goodtest::find($v); // if($data->main_attr=='大卫博士精装版'){ // $num_gift+=$input['num'][$k]; // } // if($data->main_attr=='大卫博士简约版' || $data->main_attr=='大卫博士老人版'){ // $num_gift+=$input['num'][$k]*2; // } if($data->unit=='套'){ $num_gift+=$input['num'][$k]; } if($data->unit=='件'){ $num_gift+=$input['num'][$k]*2; } $now = Carbon::now()->timestamp; if ($data->show_time != null) { if (strtotime($data->off_time) < $now) { return $this->error(40013, '商品' . $data->name . '的' . $data->size . '尺码已经下架'); } } $order_detail = new OrderDetail(); $order_detail->order_id = $order->id; $order_detail->goods_id = $data->id; // if ($data->storage < $input['num'][$k]) { // return $this->error(40013, $data->name . '的' . $data->size . '尺码数量不足,请重新选择数量'); // } $order_detail->num = $input['num'][$k]; $order_detail->money = $input['num'][$k] * $data->money; $order_detail->goods_name = $data->name; $order_detail->goods_size = $data->size; $order_detail->goods_price = $data->money; $order_detail->goods_unit = $data->unit; if (!$order_detail->save()) { Log::error('{-----订单详情保存出错-----}' . $user->id); throw new \Exception('订单详情出错'); } $data->sold_num = $data->sold_num + $input['num'][$k]; $data->storage = Cache::get('dwbs_good_num'.$data->id); if (!$data->save()) { throw new \Exception('3'); } } // $activity=Activity::where('id',$activity_id)->first(); // $activity=Activity::where('start_time','=<',$time)->where('end_time','>',$time)->first(); if($activity_id){ $gifts = Gifts::where('activity_id',$activity_id)->get(); if($gifts){ foreach($gifts as $key => $val){ if($num_gift >= $val->limit_num) { $dda = new OrderGift(); $dda->gift_id = $val->id; $dda->order_id = $order->id; $dda->activity_id = $activity_id; $dda->num = floor($num_gift / $val->num); $dda->save(); } } } } if($user->openid){ $goodsInfo=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单已提交成功 (后台系统代下单)', 'keyword1' => $goodsInfo, 'keyword2' => $order->order_num, 'keyword3' => number_format($input['money'], 2), 'remark' => '点击链接进入系统,查看详情', ]; event(new SubmitOrderInfo($mes)); $activities=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activities->start_time; $end_time=$activities->end_time; $user_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('money'); $user_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('pay_money'); $user_no_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('no_pay_money'); $me['openid']=$user->openid; $me['data']=[ 'first' => '您在本次活动中提交的订单未支付完成,请及时付款', 'keyword1' => number_format($user_money,2), 'keyword2' => number_format($user_pay_money,2), 'keyword3' => number_format($user_no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new NPI($me)); } DB::commit(); return $this->success(['order_id' => $order->id, 'order_num' => $order->order_num]); } catch (\Exception $exception) { DB::rollBack(); Log::info('错误信息' . $exception); return $this->error($exception->getMessage()); return $this->error('40011', '', '订单出错'); } } /*生成订单编号*/ public function order_num($user_code) { $number = mb_substr($user_code, 0, 4) . '-' . date('Ymd', time()) . mb_substr(time(), 7, 10) . '-' . rand(1111, 9999); $num = Ordertest::where('order_num', $number)->count(); if ($num > 0) { $number = $this->order_num($user_code); return $number; } return $number; } /*地址管理---展示地址*/ public function show_address(Request $request) { $id = $request->user_id; $address = Address::where('user_id', $id)->with(['belong_user'])->where('is_deleted',0)->get(); $data = []; foreach ($address as $k => $v) { $data[$k]["id"] = $v->id; $data[$k]["con_name"] = $v->username == null ? '' : $v->username; $data[$k]["con_mobile"] = $v->mobile; $data[$k]["provice"] = $v->province; $data[$k]["city"] = $v->city; $data[$k]["area"] = $v->town; $data[$k]["address"] = $v->address; $data[$k]["belong_user"]=$v->belong_user; } // Log::error(json_encode($data)); return $this->success_list($data); } //审核订单 public function audit_order(Request $request) { $input = $request->all(); $order_id = $input['order_id'];//订单id $type = $input['type'];//通过|回退 1通过 2回退 $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $order = Ordertest::where('id', $order_id)->first(); if ($status != $order->status) { return $this->error('450001', '订单状态已变更,请重试!'); } $activity=Activity::where('is_ing',1)->first(); $name = Auth::user()->name; $remark = $input['remark']; DB::beginTransaction(); try { Log::info($order_id . '***' . $order . '***' . $name); if ($type == 1) {//通过 if ($status == 0) {//订单审核 Order::order_audit($order_id, $order, $name); } elseif ($status == 1) {//财务审核 Order::financial_audit($order_id, $order, $name); } elseif ($status == 2) {//发货审核 Order::send_audit($order_id, $order, $name); if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); if ($re){ $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); if ($res){ $res->order_money+=$order->money; }else{ $res=new StudioUser(); $res->studio_id=$re->id; $res->user_id=$order->user_id; $res->activity_id=$activity->id; $res->order_money=$order->money; } $money=$res->order_money; $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); $reward=[]; foreach ($data as $k=>$v){ $re=$v->values; $arr=explode('/',$re); $reward[$v->keys]=$arr; } if ($money<$reward['studio_first_reward'][0]*10000){ $bonus=0; }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ $bonus=$money*$reward['studio_second_reward'][1]*0.01; }elseif ($money>$reward['studio_third_reward'][0]*10000){ $bonus=$money*$reward['studio_third_reward'][1]*0.01; } $res->bonus=$bonus; if (!$res->save()){ throw new \Exception('1'); } } } } else { throw new Exception("订单状态有误!"); } } else {//回退 if ($status == 0) {//订单回退 throw new Exception("订单审核不能回退!"); } elseif ($status == 1) {//财务回退 Order::financial_back($order_id, $order, $name, $remark); } elseif ($status == 2) {//发货回退 Order::send_back($order_id, $order, $name, $remark); } elseif ($status == 3) {//发货后回退 Order::receive_back($order_id, $order, $name, $remark); if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); if ($re){ $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); if ($res){ $res->order_money-=$order->money; $money=$res->order_money; $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); $reward=[]; foreach ($data as $k=>$v){ $re=$v->values; $arr=explode('/',$re); $reward[$v->keys]=$arr; } if ($money<$reward['studio_first_reward'][0]*10000){ $bonus=0; }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ $bonus=$money*$reward['studio_second_reward'][1]*0.01; }elseif ($money>$reward['studio_third_reward'][0]*10000){ $bonus=$money*$reward['studio_third_reward'][1]*0.01; } $res->bonus=$bonus; if (!$res->save()){ throw new \Exception('1'); } } } } } else { throw new Exception("订单状态有误!"); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', $e->getMessage()); } } //校验审核 public function checkOrderStatus(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $count = Ordertest::whereIn('id', $data)->where('status', $status)->count(); return $count; } //批量审核 public function many_audit_order(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $name = Auth::user()->name; $activity=Activity::where('is_ing',1)->first(); DB::beginTransaction(); try { if ($status == 0) { foreach ($data as $key => $val) { $order = Ordertest::where('id', $val)->first(); if ($order->status == 0) { Order::order_audit($val, $order, $name); } } } elseif ($status == 1) { foreach ($data as $key => $val) { $order = Ordertest::where('id', $val)->first(); if ($order->status == 1) { Order::financial_audit($val, $order, $name); } } } elseif ($status == 2) { foreach ($data as $key => $val) { $order = Ordertest::where('id', $val)->first(); if ($order->status == 2) { Order::send_audit($val, $order, $name); if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ Log::error('批量审核'); $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); if ($re){ $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); if ($res){ $res->order_money+=$order->money; }else{ $res=new StudioUser(); $res->studio_id=$re->id; $res->user_id=$order->user_id; $res->activity_id=$activity->id; $res->order_money=$order->money; } $money=$res->order_money; $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); $reward=[]; foreach ($data as $k=>$v){ $re=$v->values; $arr=explode('/',$re); $reward[$v->keys]=$arr; } if ($money<$reward['studio_first_reward'][0]*10000){ $bonus=0; }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ $bonus=$money*$reward['studio_second_reward'][1]*0.01; }elseif ($money>$reward['studio_third_reward'][0]*10000){ $bonus=$money*$reward['studio_third_reward'][1]*0.01; } $res->bonus=$bonus; if (!$res->save()){ throw new \Exception('1'); } } } } } } else { throw new Exception("订单状态有误!"); } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollback(); return $this->error('450001', $e->getMessage()); } } //获取账户余额 public function getUserMoney(Request $request) { $input = $request->all(); $order_id = $input['order_id']; $order = Ordertest::where('id', $order_id)->first(); $userMoney = 0; if ($order) { $userMoney = User::where('id', $order->user_id)->value('money'); } return $this->success($userMoney); } //添加收款记录 public function addIncomeLog(Request $request) { $input = $request->all(); $rules = [ 'order_id' => 'required', 'money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/', 'p_money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/' ]; $messages = [ 'order_id.required' => '无订单信息.', 'money.required' => '余额付款金额不能为空.', 'money.regex' => '余额付款金额格式有误.', 'p_money.required' => '线下付款金额不能为空.', 'p_money.regex' => '线下付款金额格式有误.' ]; $validator = Validator::make($input, $rules, $messages); if ($validator->fails()) { return $this->error('400013', $validator->errors()->first()); } $order_id = $input['order_id']; $money = $input['money']; $p_money = $input['p_money']; $remark = $input['remark']; $name = Auth::user()->name; $order = Ordertest::where('id', $order_id)->first(); if ($money + $p_money <= 0 || $money < 0 || $p_money < 0) { return $this->error('450001', '支付金额必须大于0元'); } if ($money + $p_money > $order->no_pay_money) { return $this->error('450001', '支付金额超出订单未支付金额'); } $user_id = $order->user_id; $user = User::where('id', $user_id)->first(); $before_money = $user->money; if ($before_money < $money) { return $this->error('450001', '代理账户余额不足'); } DB::beginTransaction(); try { //余额支付 if ($money > 0) { $user->money = $before_money - $money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $money, 'op_name' => $name, 'type' => 1, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } if ($p_money > 0) { //后台充值 Userpay::create([ 'user_id' => $user_id, 'pay_money' => $p_money, 'op_name' => $name, 'type' => 0, 'remark' => $remark, 'order_num' => '', 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money + $p_money, ]); //后台支付 Userpay::create([ 'user_id' => $user_id, 'pay_money' => $p_money, 'op_name' => $name, 'type' => 1, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money ]); } $order->pay_money = $order->pay_money + $money + $p_money; $order->no_pay_money = $order->money - $order->pay_money; if ($order->pay_money == $order->money) { $order->pay_status = '2';//全部支付 } elseif ($order->pay_money > 0 && $order->pay_money < $order->money) { $order->pay_status = '1';//部分支付 } elseif ($order->pay_money == 0) { $order->pay_status = '0';//未支付 } elseif ($order->pay_money > $order->money) { $order->pay_status = '3';//需部分退款 $order->wait_back_money = $order->pay_money - $order->money; } $order->save(); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '后台人工操作扣款成功,账户余额支付:'.$money.',线下付款:'.$p_money, 'keyword1' => '-'.number_format($money+$p_money, 2), 'keyword2' => number_format($user->money, 2), 'keyword3' => date("Y-m-d H:i"), 'keyword4' => '人工扣款', 'remark' => $input['remark'].PHP_EOL.'点击链接进入系统,查看详情', ]; event(new OrderPay($mes)); } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error(); } } //部分退款 public function partBackMoney(Request $request) { $input = $request->all(); $rules = [ 'order_id' => 'required', 'money' => 'required|regex:/^[0-9]+(.[0-9]{1,2})?$/' ]; $messages = [ 'order_id.required' => '无订单信息.', 'money.required' => '退款金额不能为空.', 'money.regex' => '退款金额格式有误.' ]; $validator = Validator::make($input, $rules, $messages); if ($validator->fails()) { return $this->error('400013', $validator->errors()->first()); } $order_id = $input['order_id']; $money = $input['money']; $remark = $input['remark']; $order = Ordertest::where('id', $order_id)->first(); $user_id = $order->user_id; $user = User::where('id', $user_id)->first(); if (!$order) { return $this->error('450001', '订单不存在'); } if ($money <= 0) { return $this->error('450001', '退款金额必须大于0元'); } if ($order->is_deleted == 1) { if ($order->pay_status != 3) { return $this->error('450001', '订单信息有误不能退款'); } if ($order->pay_money < $money) { return $this->error('450001', '退款金额不能大于已支付金额'); } } else { if ($order->pay_status != 3 || $order->pay_money <= $order->money) { return $this->error('450001', '订单信息有误不能退款'); } if (bccomp($order->pay_money - $order->money , $money,2)<0) { return $this->error('450001', '退款金额不能大于待退款金额'); } } DB::beginTransaction(); try { $order->pay_money -= $money; if ($order->is_deleted == 1) { $order->wait_back_money = $order->pay_money; } else { $order->wait_back_money = $order->pay_money - $order->money; } if ($order->pay_money == 0 && $order->money > 0) { $order->no_pay_money = $order->money; } elseif ($order->money > $order->pay_money && $order->pay_money > 0) { $order->no_pay_money = $order->money - $order->pay_money; } elseif ($order->pay_money >= $order->money) { $order->no_pay_money = 0; } if ($order->wait_back_money > 0) { $order->pay_status = 3; } elseif ($order->wait_back_money == 0) { if ($order->pay_money == 0 && $order->money > 0) { $order->pay_status = 0; } elseif ($order->money > $order->pay_money) { $order->pay_status = 1; } elseif ($order->pay_money == $order->money) { $order->pay_status = 2; } } else { throw new Exception("订单信息有误不能退款"); } $order->save(); $user->money += $money; $user->save(); Userpay::create([ 'user_id' => $order->user_id, 'pay_money' => $money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); if($user->openid){ if ($order->is_deleted==0){ $me="订单编号为".$order->order_num.'修改了商品数量产生的退款'; }else{ $me="订单编号为".$order->order_num.'作废产生的退款'; } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您有一笔退款,已经退至您的账户之中', 'keyword1' => $money, 'keyword2' => $me, 'keyword3' => date('Y-m-d',time()), 'keyword4' => '系统账户', 'keyword5' => "该退款已打至您的账户之中,有疑问请联系客服", 'remark' => '点击链接进入系统,查看详情', ]; event(new RefundEvent($mes)); } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error(); } } public function getCollectMoneyLog(Request $request) { $input = $request->all(); $order_num = $input['order_num']; $list = Userpay::where('order_num', $order_num)->orderby('id', 'desc')->get(); if ($list) { return $this->success($list); } else { return $this->error(); } } /*地址管理-----新增地址*/ public function add_address(Request $request, Address $address) { $id = $request->user_id; $add=Address::where('province',$request->province) ->where('user_id',$id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if($add){ return $this->error('450001','当前地址信息已存在'); } $address->user_id = $id; $address->username = $request->name; $address->mobile = $request->mobile; $user=User::where('mobile',$request->mobile)->first(); if ($user){ $address->belong_id=$user->id; } $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->save(); return $this->success(['id' => $address->id]); } /*地址管理----编辑地址*/ // public function update_address(Request $request){ // $address=Address::find($request->address_id); // $address->username=$request->con_name; // $address->mobile=$request->con_mobile; // $address->provice=$request->provice; // $address->city=$request->city; // $address->town=$request->area; // $address->address=$request->address; // $address->save(); // return $this->success([]); // } /*---修改订单地址-----*/ public function order_address(Request $request) { $order = Ordertest::find($request->order_id); $order->address_id = $request->address_id; $address=Address::find($request->address_id); $order->good_user_id = $address->belong_id; $order->save(); return $this->success([]); } //支付单号 public function pay_num($user_id) { $num = date('Ymd', time()) . '100000' . str_pad($user_id, 6, 0, STR_PAD_LEFT) . rand(11111, 99999); $count = UserPay::where('pay_num', $num)->count(); if ($count > 0) { $num = $this->pay_num($user_id); return $num; } return $num; } public function add_order_log(Request $request) { $orderlog = new OrderRemark(); $orderlog->order_id = $request->order_id; $orderlog->remark = $request->remark; $orderlog->name = Auth::user()->name; $orderlog->type = 2; $orderlog->save(); return $this->success([]); } public function add_order_detail_log(Request $request) { $orderlog = Orderdetail::find($request->detail_id); $orderlog->remark = $request->remark; $orderlog->save(); return $this->success([]); } /** *notes:订单作废 *author:kele *time:times */ public function destory_order(Request $request) { $rules = [ 'order_num' => 'required', 'remark' => 'required' ]; $message = [ 'order_num.required' => '订单id是必填项', 'remark.required' => '订单备注是必填项' ]; $vali = Validator::make($request->all(), $rules, $message); if ($vali->fails()) { return $this->error(40016, '', $vali->errors()->first()); } $order = Ordertest::where('order_num', $request->order_num)->first(); if (!$order) { return $this->error(300, '', '查无此订单,请重试'); } /* * 先增加在减少 * ***/ $orderdetail = OrderDetail::where('order_id', $order->id)->get(); foreach ($orderdetail as $k => $v) { if (Cache::has('dwbs_good_num'.$v->goods_id)){ Cache::increment('dwbs_good_num'.$v->goods_id,$v->num); } } DB::beginTransaction(); try { $order->is_deleted = 1; if ($order->pay_money == 0) { $order->pay_status = 0; } else { $order->pay_status = 3; $order->wait_back_money = $order->pay_money; } if (!$order->save()) { throw new \Exception('1'); } // $user = User::find($order->user_id); // $user->money = $user->money + $order->pay_money; // if (!$user->save()) { // throw new \Exception('2'); // } //作废备注 OrderRemark::create([ 'order_id' => $order->id, 'name' => Auth::user()->name, 'level' => '', 'type' => '0', 'remark' => $request->remark ]); // $user_log = new UserPay(); // $user_log->user_id = $order->user_id; // $user_log->pay_money = $order->money; // $user_log->op_name = $user->nickname; // $user_log->order_num = $order->order_num; // $user_log->pay_num = $this->pay_num($order->user_id); // $user_log->type = 2; // $user_log->remark = '订单作废退回'; // if (!$user_log->save()) { // throw new \Exception('3'); // } // $orderdetail = OrderDetail::where('order_id', $order->id)->get(); foreach ($orderdetail as $k => $v) { $good = Goodtest::find($v->goods_id); $good->sold_num = $good->sold_num - $v->num; if (Cache::has('dwbs_good_num'.$v->goods_id)){ $good->storage = Cache::get('dwbs_good_num'.$v->goods_id); }else{ $good->storage = $good->storage + $v->num; } if (!$good->save()) { throw new \Exception('2'); } } try { $user=User::find($order->user_id); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单已作废', 'keyword1' => $request->order_num, 'keyword2' => $request->remark, 'remark' => '点击链接进入系统,查看详情', ]; event(new DestoryOrder($mes)); } }catch (\Exception $exception){ } DB::commit(); // event(new ChangeBigGiftBagEvent(['order_id'=>$order->id,'type'=>'cancel'])); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); foreach ($orderdetail as $k => $v) { $good = Goodtest::find($v->goods_id); $good->sold_num = $good->sold_num - $v->num; if (Cache::has('dwbs_good_num'.$v->goods_id)){ Cache::decrement('dwbs_good_num'.$v->goods_id,$v->num); } } Log::info('订单作废错误信息' . $exception); return $this->error('40018', '', '订单作废失败,请重试'); } } public function destory_order_all(Request $request) { $rules = [ 'order_num' => 'required', 'remark' => 'required' ]; $message = [ 'order_num.required' => '订单id是必填项', 'remark.required' => '订单备注是必填项' ]; $vali = Validator::make($request->all(), $rules, $message); if ($vali->fails()) { return $this->error(40016, '', $vali->errors()->first()); } $orders = Ordertest::whereIn('order_num', $request->order_num)->where('is_deleted','=',0)->get(); foreach ($orders as $ke=>$va){ /* ` * 先增加在减`少 **/ $orderdetail = OrderDetail::where('order_id', $va->id)->get(); foreach ($orderdetail as $k => $v) { if (Cache::has('dwbs_good_num'.$v->goods_id)){ Cache::increment('dwbs_good_num'.$v->goods_id,$v->num); } } $order = Ordertest::where('id', $v->id)->first(); DB::beginTransaction(); try { $order->is_deleted = 1; if ($order->pay_money == 0) { $order->pay_status = 0; } else { $order->pay_status = 3; $order->wait_back_money = $order->pay_money; } if (!$order->save()) { throw new \Exception('1'); } //作废备注 OrderRemark::create([ 'order_id' => $order->id, 'name' => Auth::user()->name, 'level' => '', 'type' => '0', 'remark' => $request->remark ]); foreach ($orderdetail as $k => $v) { $good = Goodtest::find($v->goods_id); $good->sold_num = $good->sold_num - $v->num; if (Cache::has('dwbs_good_num'.$v->goods_id)){ $good->storage = Cache::get('dwbs_good_num'.$v->goods_id); }else{ $good->storage = $good->storage + $v->num; } if (!$good->save()) { throw new \Exception('2'); } } try { $user=User::find($order->user_id); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单已作废', 'keyword1' => $request->order_num, 'keyword2' => $request->remark, 'remark' => '点击链接进入系统,查看详情', ]; event(new DestoryOrder($mes)); } }catch (\Exception $exception){ } DB::commit(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); foreach ($orderdetail as $k => $v) { $good = Goodtest::find($v->goods_id); $good->sold_num = $good->sold_num - $v->num; if (Cache::has('dwbs_good_num'.$v->goods_id)){ Cache::decrement('dwbs_good_num'.$v->goods_id,$v->num); } } Log::info('订单作废错误信息' . $exception); } } } public function get_crown() { $data = User::where('level', 3)->get(); $re=[]; $i=0; foreach ($data as $k => $v) { if ($v->mobile){ $re[$i]['name'] = $v->name . '--' . $v->mobile.'--'.$v->realname; $re[$i]['id'] = $v->id; $re[$i]['mobile'] =$v->mobile; $i++; } } return $this->success_list($re); } /* * 物流追踪 * */ public function express($name, $url) { return 'https://www.kuaidi100.com/chaxun?com=' . $name . '&nu=' . $url; } /*添加体验店*/ public function add_store(Request $request){ $order=Ordertest::find($request->order_id); $order->store_id=$request->store_id; $order->save(); return $this->success([],'添加体验店成功'); } /*取消体验店*/ public function cancel_store(Request $request){ $order=Ordertest::find($request->order_id); if(empty($order->store_id)){ return $this->error('450001','该订单非体验店订单'); } $order->store_id=null; $row=$order->save(); if($row){ return $this->success([]); }else{ return $this->error(); } } /*获取体验店*/ public function get_storename(){ return $this->success_list(Store::where('type',2)->get()); } /*体验店订单*/ public function order_store(Request $request){ $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; // $activity_id = ''; $data = Ordertest::with(['get_user:id,nickname,name,realname']) ->where('is_deleted',0) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']); if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } if ($order_no) { $data->where('order_num', 'like','%'.$order_no.'%'); } if ($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($request->store_id){ $data->where('store_id',$request->store_id); } $data->whereNotNull('store_id'); $count = $data->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); foreach ($list as $key => $val) { if (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } } return $this->success_list($list, '获取数据成功', $count); } /**体验店订单导出**/ public function order_store_excel(Request $request){ $input = $request->all(); if (isset($input['id'])){ $data=Ordertest::with(['get_user:id,nickname,realname,name,mobile','get_order_gift']) ->where('is_deleted',0) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']) ->whereIn('id',$request->id); }else{ $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; $data = Ordertest::with(['get_user:id,nickname,realname,name,mobile','get_order_gift']) ->where('is_deleted',0) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']); if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } if ($order_no) { $data->where('order_num', 'like','%'.$order_no.'%'); } if ($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); } //<<<<<<< HEAD if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($request->store_id){ $data->where('store_id',$request->store_id); } } $data->whereNotNull('store_id'); $list = $data->orderBy('id', 'desc')->get(); $i = 0; $re = []; foreach ($list as $k => $v) { $order_detail = Orderdetail::where('order_id', $v->id)->get(); foreach ($order_detail as $keys => $values) { // $order_detail = Orderdetail::where('order_id', $v->id)->where('goods_name', $values->goods_name)->get(); $re[$i]['订单编号'] = $v->order_num; if ($v->is_deleted==1){ $re[$i]['订单状态'] = $this->judge_status(5); }else{ $re[$i]['订单状态'] = $this->judge_status($v->status); } $re[$i]['支付状态'] = $this->judge_pay_status($v->pay_status); $re[$i]['体验店订单'] = $v->get_store==null?'':$v->get_store->name; $re[$i]['备注昵称'] = $v->get_user->name; $re[$i]['下单人手机号'] = $v->get_user->mobile; $re[$i]['下单人姓名'] = $v->get_user->realname; $re[$i]['商品名称'] = $values->goods_name; $re[$i]['产品规格'] = '尺码:' . $values->goods_size; $re[$i]['产品数量'] = $values->num; $re[$i]['商品价格'] = $values->goods_price; $re[$i]['金额小计'] = $values->money; $re[$i]['收货人姓名'] = $v->get_address->username; $re[$i]['收货人联系方式'] = $v->get_address->mobile; $re[$i]['收货人省份'] = $v->get_address->province; $re[$i]['收货人城市'] = $v->get_address->city; $re[$i]['收货人地区'] = $v->get_address->town; $re[$i]['收货人地址'] = $v->get_address->address; $re[$i]['订单备注'] = $this->getOrderRemark($v->id); $re[$i]['物流单号'] = $v->track_number == null ? '' : $v->track_company; $re[$i]['物流公司'] = $v->track_company == null ? '' : $v->track_company; $re[$i]['物流备注'] = $v->track_remark == null ? '' : $v->track_remark; $re[$i]['发货时间'] = $v->track_time == null ? '' : $v->track_time; $re[$i]['赠品信息'] = ''; if(count($v->get_order_gift)>0){ foreach($v->get_order_gift as $key =>$val){ if($val->pivot->num>0){ if(empty($re[$i]['赠品信息'])){ $re[$i]['赠品信息'] .=$val->name.$val->pivot->num; }else{ $re[$i]['赠品信息'] .=','.$val->name.$val->pivot->num; } } } } $i++; } } return $this->success_list($re); } //需要批量退款代理信息 public function getManyBackMoneyUser(Request $request) { $input = $request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order = Ordertest::where('pay_status', 3)->with(['get_user:id,nickname,mobile']); $count = $order->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $order->orderBy('id', 'desc')->skip($num)->take($page_size)->get(); return $this->success_list($list, '获取数据成功', $count); } //批量退款 public function manyBackMoney(Request $request) { $input = $request->all(); $data = $input['data']; $remark = ''; DB::beginTransaction(); try { foreach ($data as $key => $val) { $order = Ordertest::where('id', $val)->where('pay_status', 3)->first(); if (!$order) { return $this->error('450001', '第' . ($key + 1) . '个订单状态有误'); } $user_id = $order->user_id; if ($order->is_deleted == 1) { $pay_money = $order->pay_money; if ($order->pay_money > 0) { $order->pay_money = 0; $order->no_pay_money = $order->money; $order->wait_back_money = 0; $order->pay_status = 0; $order->save(); $user = User::where('id', $user_id)->first(); $user->money += $pay_money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $pay_money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } else { return $this->error('450001', $order->order_num . '订单退款信息有误'); } } elseif ($order->is_deleted == 0) { $pay_money = $order->pay_money - $order->money; if (bccomp($order->pay_money - $order->money ,$order->wait_back_money,2)==0 && $order->wait_back_money > 0) { $order->pay_money = $order->money; $order->no_pay_money = 0; $order->wait_back_money = 0; $order->pay_status = 2; $order->save(); $user = User::where('id', $user_id)->first(); $user->money += $pay_money; $user->save(); Userpay::create([ 'user_id' => $user_id, 'pay_money' => $pay_money, 'op_name' => Auth::user()->name, 'type' => 2, 'remark' => $remark, 'order_num' => $order->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); } else { return $this->error('450001', $order->order_num . '订单退款信息有误'); } }else{ return $this->error('450001','订单作废状态码有误'); } if($user->openid){ if ($order->is_deleted==0){ $me="订单编号为".$order->order_num.'修改了商品数量产生的退款'; }else{ $me="订单编号为".$order->order_num.'作废产生的退款'; } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您有一笔退款,已经退至您的账户之中', 'keyword1' => $pay_money, 'keyword2' => $me, 'keyword3' => date('Y-m-d',time()), 'keyword4' => '系统账户', 'keyword5' => "该退款已打至您的账户之中,有疑问请联系客服", 'remark' => '点击链接进入系统,查看详情', ]; event(new RefundEvent($mes)); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', '退款失败'); } } public function GetActivityLimit(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $re=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->get(); $data=[]; foreach ($re as $k=>$v){ $data[$k]['account']=$v->account; $data[$k]['title']=$v->title; } return $this->success($data); } public function getBAgentGiftBag(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $activity_id=$input['activity_id']; $search_name=$input['search_name']; $tag=$input['tag']; // $big_gift='38500'; $where=[]; $wheres=[]; $big_gift=Activity::where('id',$activity_id)->value('big_gift'); if($activity_id>17){ $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','=','大礼包B-c')->value('account'); $big_gift_3=ActivityLimit::where('activity_id',$activity_id)->where('title','=','大礼包B-d')->value('account'); }else{ $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','=','大礼包C')->value('account'); $big_gift_3=ActivityLimit::where('activity_id',$activity_id)->where('title','=','大礼包D')->value('account'); } $big_gift=$big_gift_2?$big_gift_2:$big_gift; if(empty($big_gift)){ return $this->error('450001','本此活动未开放大礼包名单'); } $gift_id=$big_gift_2; $max_status=false; if ($big_gift_3){ $max_status=true; } $max=0; // if (isset($input['gift_id'])){ // $dd=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->where('account','>',$big_gift_2)->orderBy('account')->limit(1)->first(); // if ($dd){ // $max=$dd->account; // $max_status=true; // } // $gift_id=$input['gift_id']; // } $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; $user_ids=ListTag::where('type',1)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $user=User::select('users.id','users.remark_name as nickname','users.realname','users.remark_name as name', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'),'gift_user_img.url','gift_user_img.user_img','gift_user_img.id as gift_id') ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id'); // ->leftJoin('list_tag',function ($join) use ($activity_id){ // $join->on('users.id','=','list_tag.user_id') // ->where('list_tag.activity_id',$activity_id) // ->where('list_tag.type',1); // }) // ->leftJoin('list_tag','users.id','=','list_tag.user_id') // ->where('list_tag.activity_id',$activity_id) // ->where('list_tag.type',1) if (is_numeric($tag)){ if ($tag==1){ $user->whereIn('users.id',$user_ids); }else{ $user->whereNotIn('users.id',$user_ids); } }else{ $user->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',1); })->orderBy('list_tag.type'); } $user->leftJoin('gift_user_img',function ($join) use ($activity_id){ $join->on('users.id','=','gift_user_img.user_id') ->where('gift_user_img.activity_id',$activity_id) // ->where('gift_user_img.img_type',1) ->where('gift_user_img.type',1); }); if ($search_name){ $wheress=function ($q)use ($search_name){ $q->where('users.name','like',"%$search_name%")->orwhere('users.nickname','like',"%$search_name%")->orwhere('users.realname','like',"%$search_name%")->orwhere('users.mobile','like',"%$search_name%"); }; $user->where($wheress); } $user->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$gift_id) ->when($max_status,function ($q)use($big_gift_3){ $q->having('account','<',$big_gift_3); }) ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$user->skip($num)->take($page_size)->get(); foreach($list as $key=>$val){ $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $list[$key]->no_pay_account=$no_pay_account; }else{ $list[$key]->no_pay_account=0; } if(in_array($val->id,$user_ids)){ $list[$key]->tag=1; }else{ $list[$key]->tag=0; } } return $this->success_list($list,'获取数据成功',$count); } public function getBAgentGiftBag_d(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $activity_id=$input['activity_id']; $search_name=$input['search_name']; $tag=$input['tag']; // $big_gift='38500'; $where=[]; $wheres=[]; $big_gift=Activity::where('id',$activity_id)->value('big_gift'); if($activity_id){ $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包B-d')->value('account'); }else{ $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包D')->value('account'); } if (!$big_gift_2){ return $this->success_list([]); } $big_gift=$big_gift_2?$big_gift_2:$big_gift; if(empty($big_gift)){ return $this->error('450001','本此活动未开放大礼包名单'); } $gift_id=$big_gift_2; $max_status=false; $max=0; if (isset($input['gift_id'])){ $dd=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->where('account','>',$input['gift_id'])->orderBy('account')->limit(1)->first(); if ($dd){ $max=$dd->account; $max_status=true; } $gift_id=$input['gift_id']; } $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; $user_ids=ListTag::where('type',1)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $user=User::select('users.id','users.remark_name as nickname','users.realname','users.remark_name as name', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'),'gift_user_img.url','gift_user_img.user_img','gift_user_img.id as gift_id') ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id'); if (is_numeric($tag)){ if ($tag==1){ $user->whereIn('users.id',$user_ids); }else{ $user->whereNotIn('users.id',$user_ids); } }else{ $user->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',1); })->orderBy('list_tag.type'); } $user->leftJoin('gift_user_img',function ($join) use ($activity_id){ $join->on('users.id','=','gift_user_img.user_id') ->where('gift_user_img.activity_id',$activity_id) // ->where('gift_user_img.img_type',1) ->where('gift_user_img.type',3); }); if ($search_name){ $wheress=function ($q)use ($search_name){ $q->where('users.name','like',"%$search_name%")->orwhere('users.nickname','like',"%$search_name%")->orwhere('users.realname','like',"%$search_name%")->orwhere('users.mobile','like',"%$search_name%"); }; $user->where($wheress); } $user->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$gift_id) ->when($max_status,function ($q)use($max){ $q->having('account','<',$max); }) ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$user->skip($num)->take($page_size)->get(); foreach($list as $key=>$val){ $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $list[$key]->no_pay_account=$no_pay_account; }else{ $list[$key]->no_pay_account=0; } if(in_array($val->id,$user_ids)){ $list[$key]->tag=1; }else{ $list[$key]->tag=0; } } return $this->success_list($list,'获取数据成功',$count); } public function getHonorWall(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $activity_id=$input['activity_id']; // $activity_id=''; // $honor_wall='91500'; $where=[]; $wheres=[]; if($activity_id){ $honor_wall=Activity::where('id',$activity_id)->value('honor_wall'); $honor_wall_2=ActivityLimit::where('activity_id',$activity_id)->where('title','荣誉墙')->value('account'); // $honor_wall=$honor_wall?$honor_wall:$honor_wall_2; $honor_wall=$honor_wall_2?$honor_wall_2:$honor_wall; if(empty($honor_wall)){ return $this->error('450001','本此活动未开放荣誉墙名单'); } // $where['order_test.activity_id']=$activity_id; $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $user=User::select('users.id','list_tag.type as type','users.nickname','users.remark_name as name','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id') ->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',2); }) ->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$honor_wall) ->orderBy('type','asc') ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count=$user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $user_ids=ListTag::where('type',2)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $users=$user->get(); $no_list=[]; foreach($users as $key=>$val){ if(!in_array($val->id,$user_ids)){ $no_list[$key]=$val; $no_list[$key]['tag']=0; } } $list=$user->skip($num)->take($page_size)->get(); foreach($list as $key=>$val){ $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $list[$key]->no_pay_account=$no_pay_account; }else{ $list[$key]->no_pay_account=0; } if(in_array($val->id,$user_ids)){ $list[$key]->tag=1; }else{ $list[$key]->tag=0; } } return $this->success_list($list,'获取数据成功',$count); } public function getTravel(Request $request){ ini_set('memory_limit', '1280M'); $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $activity_id=$input['activity_id']; $where=[]; $wheres=[]; if($activity_id){ $travel=ActivityLimit::where('activity_id',$activity_id)->where('title','旅游')->value('account'); if(empty($travel)){ return $this->error('450001','本此活动未开放旅游名单'); } // $where['order_test.activity_id']=$activity_id; $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $user=User::select('users.id','list_tag.type as type','users.nickname','users.remark_name as name','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id') ->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',3); }) ->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$travel) ->orderBy('type','asc') ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count=$user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $user_ids=ListTag::where('type',3)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $users=$user->get(); $no_list=[]; foreach($users as $key=>$val){ if(!in_array($val->id,$user_ids)){ $no_list[$key]=$val; $no_list[$key]['tag']=0; } } $list=$user->skip($num)->take($page_size)->get(); foreach($list as $key=>$val){ $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $list[$key]->no_pay_account=$no_pay_account; }else{ $list[$key]->no_pay_account=0; } if(in_array($val->id,$user_ids)){ $list[$key]->tag=1; }else{ $list[$key]->tag=0; } } return $this->success_list($list,'获取数据成功',$count); } //标记 public function addListTag(Request $request) { $input=$request->all(); $user_id=$input['user_id']; $money=$input['money']; $type=$input['type']; $activity_id=$input['activity_id']; $user=ListTag::where('user_id',$user_id)->where('activity_id',$activity_id)->where('type',$type)->first(); if($user){ return $this->error('450001','该用户信息已标记'); } $row=ListTag::create([ 'user_id'=>$user_id, 'money'=>$money, 'type'=>$type, 'activity_id'=>$activity_id ]); if($row){ return $this->success([]); } return $this->error(); } //<<<<<<< HEAD /* * 导出活动大礼包 */ public function exportList(Request $request){ $input=$request->all(); $type=$input['type']; $activity_id=$input['activity_id']; $search_name=$input['search_name']; $tag=$input['tag']; $where=[]; $wheres=[]; $max_status=false; $max=0; if($type==1){ $big_gift=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包C')->value('account'); $big_gift=$big_gift_2?$big_gift_2:$big_gift; if(empty($big_gift)){ return $this->error('450001','本此活动未开放大礼包名单'); } }elseif($type==2){ $honor_wall=Activity::where('id',$activity_id)->value('honor_wall'); $honor_wall_2=ActivityLimit::where('activity_id',$activity_id)->where('title','荣誉墙')->value('account'); $honor_wall=$honor_wall_2?$honor_wall_2:$honor_wall; if(empty($honor_wall)){ return $this->error('450001','本此活动未开放荣誉墙名单'); } }else{ $travel=ActivityLimit::where('activity_id',$activity_id)->where('title','旅游')->value('account'); if(empty($travel)){ return $this->error('450001','本此活动未开放旅游名单'); } } $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; if($type==1){ // $money=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包C%')->min('account'); $money=$big_gift_2; $max_status=false; $max=0; // if (isset($input['gift_id'])){ $dd=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->where('account','>',$big_gift_2)->orderBy('account')->limit(1)->first(); if ($dd){ $max=$dd->account; $max_status=true; } // $money=$input['gift_id']; // } }elseif($type==2){ $money = Activity::where('id', $activity_id)->value('honor_wall'); $honor_wall_2 = ActivityLimit::where('activity_id', $activity_id)->where('title', '荣誉墙')->value('account'); $money = $honor_wall_2 ? $honor_wall_2 : $money; } else { $money=ActivityLimit::where('activity_id',$activity_id)->where('title','旅游')->value('account'); } $user_ids=ListTag::where('type',$type)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $list=User::select('users.id','users.nickname','users.remark_name','users.realname','users.mobile', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'),'gift_user_img.province','gift_user_img.city','gift_user_img.area','gift_user_img.address','gift_user_img.phone','gift_user_img.car_name') ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id'); if (is_numeric($tag)){ if ($tag==1){ $list->whereIn('users.id',$user_ids); }else{ $list->whereNotIn('users.id',$user_ids); } }else{ $list->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',1); })->orderBy('list_tag.type'); } if ($search_name){ $wheress=function ($q)use ($search_name){ $q->where('users.name','like',"$search_name")->orwhere('users.nickname','like',"$search_name")->orwhere('users.realname','like',"$search_name")->orwhere('users.mobile','like',"$search_name"); }; $list->where($wheress); }; // ->leftJoin('list_tag',function ($join) use ($type,$activity_id){ // $join->on('users.id','=','list_tag.user_id') // ->where('list_tag.activity_id',$activity_id) // ->where('list_tag.type',$type); // }) $list->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->leftJoin('gift_user_img',function ($join) use ($activity_id){ $join->on('users.id','=','gift_user_img.user_id') ->where('gift_user_img.type',1) ->where('gift_user_img.img_type',1) ->whereNotNull('gift_user_img.province') ->orderByDesc('gift_user_img.id')->limit(1); }) ->groupBy('users.id') ->having('account','>=',$money) ->when($max_status,function ($q)use ($max){ $q->having('account','<',$max); }) ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count=$list->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$list->get(); $ll=[]; foreach($list as $key=>$val){ $ll[$key]['备注昵称']=$val->remark_name; $ll[$key]['代理姓名']=$val->realname; $ll[$key]['订货金额']=$val->account; $ll[$key]['已付款金额']=$val->pay_account; $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $ll[$key]['未付款金额']=$no_pay_account; }else{ $ll[$key]['未付款金额']=0; } if(in_array($val->id,$user_ids)){ $ll[$key]['标记']='已标记'; }else{ $ll[$key]['标记']='未标记'; } $ll[$key]['收货人']=$val->car_name==null?$val->realname:$val->car_name; $ll[$key]['电话']=$val->phone==null?$val->mobile:$val->phone; $ll[$key]['省份']=$val->province; $ll[$key]['城市']=$val->city; $ll[$key]['地区']=$val->area; $ll[$key]['详细地址']=$val->address; } return $this->success($ll); } /* * 导出活动大礼包D * */ public function exportList_d(Request $request){ $input=$request->all(); $type=$input['type']; $activity_id=$input['activity_id']; $search_name=$input['search_name']; $tag=$input['tag']; $where=[]; $wheres=[]; $max_status=false; $max=0; if($type==1){ $big_gift=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包D')->value('account'); $big_gift=$big_gift_2?$big_gift_2:$big_gift; if(empty($big_gift)){ return $this->error('450001','本此活动未开放大礼包名单'); } }elseif($type==2){ $honor_wall=Activity::where('id',$activity_id)->value('honor_wall'); $honor_wall_2=ActivityLimit::where('activity_id',$activity_id)->where('title','荣誉墙')->value('account'); $honor_wall=$honor_wall_2?$honor_wall_2:$honor_wall; if(empty($honor_wall)){ return $this->error('450001','本此活动未开放荣誉墙名单'); } }else{ $travel=ActivityLimit::where('activity_id',$activity_id)->where('title','旅游')->value('account'); if(empty($travel)){ return $this->error('450001','本此活动未开放旅游名单'); } } $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; if($type==1){ // $money=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包D')->value('account'); $money=$big_gift_2; $max_status=false; $max=0; // if (isset($input['gift_id'])){ $dd=ActivityLimit::where('activity_id',$activity_id)->where('title','like','%大礼包%')->where('account','>',$big_gift_2)->orderBy('account')->limit(1)->first(); if ($dd){ $max=$dd->account; $max_status=true; } // $money=$input['gift_id']; // } }elseif($type==2){ $money = Activity::where('id', $activity_id)->value('honor_wall'); $honor_wall_2 = ActivityLimit::where('activity_id', $activity_id)->where('title', '荣誉墙')->value('account'); $money = $honor_wall_2 ? $honor_wall_2 : $money; } else { $money=ActivityLimit::where('activity_id',$activity_id)->where('title','旅游')->value('account'); } $user_ids=ListTag::where('type',$type)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $list=User::select('users.id','users.nickname','users.remark_name','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id'); if (is_numeric($tag)){ if ($tag==1){ $list->whereIn('users.id',$user_ids); }else{ $list->whereNotIn('users.id',$user_ids); } }else{ $list->leftJoin('list_tag',function ($join) use ($activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',1); })->orderBy('list_tag.type'); } if ($search_name){ $wheress=function ($q)use ($search_name){ $q->where('users.name','like',"$search_name")->orwhere('users.nickname','like',"$search_name")->orwhere('users.realname','like',"$search_name")->orwhere('users.mobile','like',"$search_name"); }; $list->where($wheress); }; // ->leftJoin('list_tag',function ($join) use ($type,$activity_id){ // $join->on('users.id','=','list_tag.user_id') // ->where('list_tag.activity_id',$activity_id) // ->where('list_tag.type',$type); // }) $list->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$money) ->when($max_status,function ($q)use ($max){ $q->having('account','<',$max); }) ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count=$list->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$list->get(); $ll=[]; foreach($list as $key=>$val){ $ll[$key]['备注昵称']=$val->remark_name; $ll[$key]['代理姓名']=$val->realname; $ll[$key]['订货金额']=$val->account; $ll[$key]['已付款金额']=$val->pay_account; $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $ll[$key]['未付款金额']=$no_pay_account; }else{ $ll[$key]['未付款金额']=0; } if(in_array($val->id,$user_ids)){ $ll[$key]['标记']='已标记'; }else{ $ll[$key]['标记']='未标记'; } } return $this->success($ll); } public function getLikeBAgentGiftBag(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } $json_data=[]; if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; $time=Carbon::now()->timestamp; if ($time>(strtotime($actice->end_time)+30*24*3600)){ if (!$search_name && !$end_time && !$start_time){ $re=ActivityData::where('activity_id',$activity_id)->first(); if (!$re){ $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user=User::select('users.id','users.mobile','users.nickname','users.remark_name as name','users.money','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'), DB::raw('SUM(order_test.money-order_test.pay_money) as no_pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id','gt.main_attr') ->orderBy('users.id','desc') ->get(); foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['nickname']=$val->name; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $ll[$key]['pay_account']=round($val->pay_account?$val->pay_account:0,2); $mm=$val->no_pay_account?$val->no_pay_account:0; $ll[$key]['no_pay_account']=round($mm,2); } $json_data=$ll; $dats=json_encode($ll); $re=new ActivityData(); $re->activity_id=$activity_id; $re->data=$dats; $re->type=0; $re->save(); }else{ $json_data=json_decode($re->data,true); } } } } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $money=User::where('level',3)->sum('money'); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user_total=User::select(DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'), DB::raw('SUM(order_test.money-order_test.pay_money) as no_pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->where('users.name','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->get(); $ll=[]; $count=count($json_data); if ($json_data){ $dd=[ 'list'=>$json_data, 'all_money'=>$money, 'total'=>$user_total, ]; return $this->success_list($dd,'获取数据成功',$count); } $user=User::select('users.id','users.mobile','users.nickname','users.remark_name as name','users.money','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'), DB::raw('SUM(order_test.money-order_test.pay_money) as no_pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $count=0; $list=$user->get(); foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) ->withTrashed() ->groupBy('gt.main_attr') ->orderBy('users.id','desc') ->get(); foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['nickname']=$val->name; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $nn=$val->pay_account?$val->pay_account:0; $ll[$key]['pay_account']=round($nn,2); $n=$val->no_pay_account?$val->no_pay_account:0; $ll[$key]['no_pay_account']=round($n,2); } $user_total[0]['pay_account']=round($user_total[0]['pay_account'],2); $user_total[0]['no_pay_account']=round($user_total[0]['no_pay_account'],2); $dd=[ 'list'=>$ll, 'all_money'=>$money, 'total'=>$user_total, ]; return $this->success_list($dd,'获取数据成功',$count); } //导出类大礼包 public function exportLikeBAgentGiftBag(Request $request){ $input=$request->all(); $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[]; $wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user=User::select('users.id','users.nickname','users.remark_name as name','users.money','users.mobile','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) // ->leftJoin('agent_operation_log', // function($join){ // $join->on('agent_operation_log.user_id', '=', 'users.id') // ->where('agent_operation_log.type','=','2') // ->where('agent_operation_log.log','=','(升级)变更前等级:销售经理,变更后等级:代理公司'); // }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','users.nickname','users.remark_name as name','users.realname','gt.main_attr', DB::raw('SUM(od.num) as num')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->where('users.id',$user_id) ->withTrashed() ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.name','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->groupBy('users.id','gt.main_attr') ->orderBy('users.id','desc') ->get(); $ll[$key]['备注昵称']=$val->name; $ll[$key]['代理姓名']=$val->realname; $ll[$key]['手机号']=$val->mobile; $ll[$key]['精装版']=0; $ll[$key]['简约版']=0; $ll[$key]['高腰版']=0; $ll[$key]['纯棉老人版']=0; $ll[$key]['青春版']=0; foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['订货金额']=$val->account?$val->account:0; $ll[$key]['已付款金额']=$val->pay_account?$val->pay_account:0; $no_pay_account=round($val->account-$val->pay_account,2); if($no_pay_account>0){ $ll[$key]['未支付']=$no_pay_account; }else{ $ll[$key]['未支付']=0; } $ll[$key]['账户余额']=$val->money; $time=AgentOperationLog::where('type',2) ->where('log',"(升级)变更前等级:销售经理,变更后等级:代理公司") ->where('user_id',$user_id) ->orderByDesc('id')->limit(1)->value('created_at'); $ll[$key]['升级代理公司时间']=$time==null?'':$time->toDateTimeString(); } return $this->success($ll); } //自动付款 public function autoPayment(){ $orders=Ordertest::whereIn('pay_status',[0,1])->where('is_deleted',0)->get(); DB::beginTransaction(); try{ foreach($orders as $key=>$val){ $user_id=$val->user_id; $user=User::where('id',$user_id)->first(); if($val->money-$val->pay_money==$val->no_pay_money){ $no_pay_money=$val->no_pay_money; }else{ $no_pay_money=$val->money-$val->pay_money; } if ($user->money >= $no_pay_money) { $user->money = $user->money - $no_pay_money; $user->save(); //支付日志 $remark=''; Userpay::create([ 'user_id' => $user_id, 'pay_money' => $no_pay_money, 'op_name' => Auth::user()->name, 'type' => 1,//支付 'remark' => $remark, 'order_num' => $val->order_num, 'pay_num' => $this->pay_num($user_id), 'user_money' => $user->money, ]); //订单变更 $order=Ordertest::where('id',$val->id)->first(); $order->pay_money=$no_pay_money; $order->no_pay_money=$order->money-$order->pay_money; if ($order->pay_money == $order->money) { $order->pay_status = '2';//全部支付 } elseif ($order->pay_money > 0 && $order->pay_money < $order->money) { $order->pay_status = '1';//部分支付 } elseif ($order->pay_money == 0) { $order->pay_status = '0';//未支付 } elseif ($order->pay_money > $order->money) { $order->pay_status = '3';//需部分退款 $order->wait_back_money = $order->pay_money - $order->money; } $order->save(); } } DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error(); } } public function getNoPassList(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $activity_id=$input['activity_id']; $level=$input['level']; $where=[]; if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); $where=function($query) use ($activity){ $query->whereBetween('order_test.created_at',[$activity->start_time,$activity->end_time]); }; } $data=User::leftJoin('warea','warea.id','=','users.warea_id') ->leftJoin('order_test',function($join) use ($where){ $join->on('users.id','=','order_test.user_id') ->whereIn('order_test.status',[3,4]) ->where($where); }) ->select('users.id','users.nickname','users.mobile','users.level','warea.name as warea_name', DB::raw("sum(ifNull(order_test.money,0)) as account")) ->groupBy('users.id'); if($level){ $data->where('users.level',$level); } if($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('users.id', $ids); } if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); $ids=DownGrade::where('season',$activity_id)->where('type',2)->pluck('user_id'); if($activity){ $data->whereNotIn('users.id',$ids); if($level==2){ $grade=$activity->top_down??0; $data->having('account','<',$grade); } if($level==3){ $grade=$activity->crown_down??0; $data->having('account','<',$grade); } } } $count=$data->get()->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('account', 'desc')->skip($num)->take($page_size)->get(); return $this->success_list($list, '获取数据成功', $count); } public function sureOrderInfo(Request $request){ $input=$request->all(); $uuu = new User(); $user=User::find($input['user_id']); $user_level=$user->level; $activity_id=$input['activity_id']; $admin=Auth::user(); $data=OrderTest::leftJoin('users','users.id','=','order_test.user_id') ->leftJoin('warea','warea.id','=','users.warea_id') ->select('users.id','users.nickname','users.mobile','users.level','warea.name as warea_name',DB::raw("sum(ifNull(order_test.money,0)) as account")) ->where('users.id',$user->id) ->whereIn('order_test.status',[3,4]); if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); $start_time = $activity->start_time; $end_time = $activity->end_time; $data->whereBetween('order_test.created_at',[$start_time,$end_time]); } $userinfo=$data->first(); if($user->level==2){ $down_money=Activity::where('id',$activity_id)->value('top_down'); }elseif($user->level==3){ $down_money=Activity::where('id',$activity_id)->value('crown_down'); }else{ $down_money=0; } if($userinfo->account>=$down_money){ $this->error('450001','用户已达到门槛无需审核,请刷新重试'); } DB::beginTransaction(); try{ if($user_level>1){ $uuu->changeAgentLevel($user, $user_level-1); DownGrade::create([ 'admin_id'=>$admin->id, 'admin_name'=>$admin->name, 'user_id'=>$user->id, 'type'=>1, 'money'=>$userinfo->account, 'season'=>$activity_id, 'down_money'=>$down_money ]); $store_ids=StoreUser::where('user_id',$user->id)->pluck('store_id'); foreach($store_ids as $key => $val){ $user_ids=StoreUser::where('store_id',$val)->pluck('user_id')->toArray(); if(count($user_ids)==1){//一个人删店 StoreUser::where('store_id',$val)->whereIn('user_id',$user_ids)->delete(); Store::where('id',$val)->delete(); } if(count($user_ids)>1){//大于一个人转移管理员 StoreUser::where('store_id',$val)->where('user_id',$user->id)->delete(); $user_ids = array_diff($user_ids, [$user->id]); Store::where('id',$val)->update([ 'man_id'=>array_shift($user_ids) ]); } } } if ($user_level == 1) { $before = '销售主管'; } elseif ($user_level == 2) { $before = '销售经理'; } elseif ($user_level == 3) { $before = '代理公司'; } else { $before = '无效等级'; } if ($user_level-1 == 1) { $after = '销售主管'; } elseif ($user_level-1 == 2) { $after = '销售经理'; } elseif ($user_level-1 == 3) { $after = '代理公司'; } else { $after = '无效等级'; } $remark = '降级审核'; $log = '降级前等级:' . $before . ',降级后等级:' . $after; $result=User::find($input['user_id']); $result->before=$user_level; event(new ChangeUserLevel($result)); $this->addAgentOperationLog('2', $user->id, $remark, $log); DB::commit(); return $this->success([], '审核成功'); }catch(\Exception $e){ return $e->getMessage(); DB::rollBack(); return $this->error(); } } public function noSureOrderInfo(Request $request){ $input=$request->all(); $user=User::find($input['user_id']); $activity_id=$input['activity_id']; $admin=Auth::user(); $data=OrderTest::leftJoin('users','users.id','=','order_test.user_id') ->leftJoin('warea','warea.id','=','users.warea_id') ->select('users.id','users.nickname','users.mobile','users.level','warea.name as warea_name',DB::raw("sum(ifNull(order_test.money,0)) as account")) ->where('users.id',$user->id) ->whereIn('order_test.status',[3,4]); if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); $start_time = $activity->start_time; $end_time = $activity->end_time; $data->whereBetween('order_test.created_at',[$start_time,$end_time]); } $userinfo=$data->first(); if($user->level==2){ $down_money=Activity::where('id',$activity_id)->value('top_down'); }elseif($user->level==3){ $down_money=Activity::where('id',$activity_id)->value('crown_down'); }else{ $down_money=0; } if($userinfo->account>=$down_money){ $this->error('450001','用户已达到门槛无需审核,请刷新重试'); } $row=DownGrade::create([ 'admin_id'=>$admin->id, 'admin_name'=>$admin->name, 'user_id'=>$user->id, 'type'=>2, 'money'=>$userinfo->account, 'season'=>$activity_id, 'down_money'=>$down_money ]); if($row){ return $this->success([]); }else{ return $this->error(); } } //添加代理操作日志 public function addAgentOperationLog($type, $user_id, $remark = null, $log = null) { return AgentOperationLog::create([ 'type' => $type, 'admin_name' => Auth::user()->name, 'admin_id' => Auth::user()->id, 'user_id' => $user_id, 'remark' => $remark, 'log' => $log, ]); } public function send_express(Request $request) { $input=$request->all(); $row=Ordertest::where('order_num',$input['order_num'])->update([ 'status'=>3, 'is_back'=>0, 'track_time'=>$input['track_time'], 'receive_time'=>date("Y-m-d H:i:s",strtotime($input['track_time']." + ". $input['day'] ." days")), ]); $activity=Activity::where('is_ing',1)->first(); $order=Ordertest::where('order_num',$input['order_num'])->first(); if ($order->created_at>=$activity->start_time&&$order->created_at<=$activity->end_time){ $re=Studio::where('user_id',$order->user_id)->where('status',0)->first(); if ($re){ $res=StudioUser::where('user_id',$order->user_id)->where('studio_id',$re->id)->where('activity_id',$activity->id)->first(); if ($res){ $res->order_money+=$order->money; }else{ $res=new StudioUser(); $res->studio_id=$re->id; $res->user_id=$order->user_id; $res->activity_id=$activity->id; $res->order_money=$order->money; } $money=$res->order_money; $data=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->get(); $reward=[]; foreach ($data as $k=>$v){ $re=$v->values; $arr=explode('/',$re); $reward[$v->keys]=$arr; } if ($money<$reward['studio_first_reward'][0]*10000){ $bonus=0; }elseif ($money>=$reward['studio_first_reward'][0]*10000&&$money<=$reward['studio_second_reward'][0]*10000){ $bonus=$money*$reward['studio_second_reward'][1]*0.01; }elseif ($money>$reward['studio_third_reward'][0]*10000){ $bonus=$money*$reward['studio_third_reward'][1]*0.01; } $res->bonus=$bonus; $res->save(); } } if($row){ return $this->success([]); }else{ return $this->error(); } } public function get_no_pass_list(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $activity_id=$input['activity_id']; $level=$input['level']; $where=[]; if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); $where=function($query) use ($activity){ $query->whereBetween('order_test.created_at',[$activity->start_time,$activity->end_time]); }; } $data=User::leftJoin('warea','warea.id','=','users.warea_id') ->leftJoin('order_test',function($join) use ($where){ $join->on('users.id','=','order_test.user_id') ->whereIn('order_test.status',[3,4]) ->where($where); }) ->select('users.id','users.nickname','users.mobile','users.level','warea.name as warea_name', DB::raw("sum(ifNull(order_test.money,0)) as account")) ->groupBy('users.id'); if($level){ $data->where('users.id',$input['uid']); // $data->where('users.level',$level); } if($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('users.id', $ids); } if($activity_id){ $activity=Activity::where('id',$activity_id)->first(); // $ids=DownGrade::where('season',$activity_id)->where('type',2)->pluck('user_id'); if($activity){ // $data->whereNotIn('users.id',$ids); if($level==2){ $grade=$activity->top_down??0; $data->having('account','<',$grade); } if($level==3){ $grade=$activity->crown_down??0; // $data->having('account','<',$grade); } } } $count=$data->get()->count(); if ($count <= 0) { $this->error('450001', '暂无信息'); } $list = $data->orderBy('account', 'desc')->skip($num)->take($page_size)->get(); return $this->success_list($list, '获取数据成功', $count); } //手动合并订单 public function mergeOrder(Request $request){ $input=$request->all(); if($input['master_num']==$input['main']){ $master_num=$input['master_num']; $slave_num=$input['slave_num']; }else{ $master_num=$input['slave_num']; $slave_num=$input['master_num']; } $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $activity_id=$activity->id; $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Ordertest::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); $slave_order=Ordertest::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); /**非活动期间订单合并*/ if (empty($master_order) && empty($slave_order)){ $master_orders=Ordertest::where('order_num',$master_num)->where('is_deleted',0)->first(); $slave_orders=Ordertest::where('order_num',$slave_num)->where('is_deleted',0)->first(); if(!in_array($master_orders->status,[0,1,2])){ return $this->error('450001','主订单状态不符,不能合并'); } if(!in_array($slave_orders->status,[0,1,2])){ return $this->error('450001','非主订单状态不符,不能合并'); } if($master_orders->user_id!=$slave_orders->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } //原订单金额和数量 $origin_money=$master_orders->money; $origin_total=$master_orders->total; $master_orders->total+=$slave_orders->total; $master_orders->money+=$slave_orders->money; $master_orders->pay_money+=$slave_orders->pay_money; $master_orders->no_pay_money+=$slave_orders->no_pay_money; $master_orders->wait_back_money+=$slave_orders->wait_back_money; if($master_orders->money==$master_orders->pay_money){ $master_orders->pay_status=2; }elseif($master_orders->money>$master_orders->pay_money){ if($master_orders->pay_money==0){ $master_orders->pay_status=0; }else{ $master_orders->pay_status=1; } }elseif($master_orders->money<$master_orders->pay_money){ $master_orders->pay_status=3; } $master_orders->is_merge=1; $master_orders->status=0; //合并订单2详情 $slave_detail=Orderdetail::where('order_id',$slave_orders->id)->get(); DB::beginTransaction(); try{ $goods_log=''; foreach($slave_detail as $key=>$val){ if(empty($goods_log)){ $goods_log='商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; }else{ $goods_log.=',商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; } $master_detail=Orderdetail::where('order_id',$master_orders->id) ->where('goods_id',$val->goods_id) ->where('goods_size',$val->goods_size)->first(); if($master_detail){ $master_detail->num+=$val->num; $master_detail->money+=$val->money; $master_detail->save(); }else{ Orderdetail::create([ 'order_id'=>$master_orders->id, 'goods_id'=>$val->goods_id, 'num'=>$val->num, 'money'=>$val->money, 'remark'=>$val->remark, 'goods_name'=>$val->goods_name, 'goods_size'=>$val->goods_size, 'goods_price'=>$val->goods_price, 'goods_unit'=>$val->goods_unit ]); } } $master_detail_after=Orderdetail::where('order_id',$master_orders->id)->get(); $master_orders->type=count($master_detail_after); $master_orders->save(); //支付记录转移到主订单 Userpay::where('order_num',$slave_num)->update([ 'order_num'=>$master_num ]); if($master_orders->address_id!=$slave_orders->address_id){ Address::where('id',$slave_orders->address_id)->update(['is_deleted'=>1]); } // Ordertest::where('order_num',$slave_num)->delete(); Ordertest::where('order_num',$slave_num)->update(['is_deleted'=>1]); $log_text='后台合并了订单,原订单总金额为'.$origin_money.',商品数量为'.$origin_total.'。合并后订单金额为'.$master_orders->money.',合并后商品数量为'.$master_orders->total.',添加订单包含:'.$goods_log; OrderLog::create([ 'order_id'=>$master_orders->id, 'user_id'=>$master_orders->user_id, 'log_name'=>Auth::user()->name, 'log_title'=>'合并订单', 'log_text'=>$log_text ]); if (!empty($input['remark'])){ OrderRemark::create([ 'order_id' => $master_orders->id, 'name' =>Auth::user()->name, 'level' => null, 'type' => 0, 'remark' => $input['remark'] ]); } $num_gift=0; foreach($master_detail_after as $key=>$val){ if($val->goods_unit=='套'){ $num_gift+=$val['num']; } if($val->goods_unit=='件'){ $num_gift+=$val['num']*2; } } $user=User::where('id',$master_orders->user_id)->first(); if($user->openid){ $goodsInfo=''; foreach($slave_detail as $key => $val){ if($key<=2){ if(empty($goodsInfo)){ $goodsInfo='添加'.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; }else{ $goodsInfo.=','.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; } }elseif($key==3){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$master_num.'与'.$slave_num.'合并成功,保留订单:'.$master_num.'作废订单:'.$slave_num, 'keyword1' => $goodsInfo, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); } /* * 处理订单 * **/ $arr=Orderdetail::where('order_id',$slave_orders->id)->pluck('num','goods_id')->toArray(); $sizes_arr=array_keys($arr); $nums_arr=array_values($arr); $arr_one=$this->DealOrder($sizes_arr,$nums_arr); /* * 处理订单 * **/ $mas_arr=Orderdetail::where('order_id',$master_orders->id)->pluck('num','goods_id')->toArray(); $mas_size_arr=array_keys($mas_arr); $mas_nums_arr=array_values($mas_arr); // $arr_two=$this->DealOrder($mas_size_arr,$mas_nums_arr); $order=Ordertest::find($master_orders->id); $all_arr=array_merge(json_decode($order->arr_json),$arr_one); $order->arr_json=json_encode($all_arr); if (!$order->save()){ throw new \Exception('1'); } DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } } if(empty($master_order)){ return $this->error('450001','主订单信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','主订单状态不符,不能合并'); } if(empty($slave_order)){ return $this->error('450001','非主订单信息有误,请核对后再合并'); } if(!in_array($slave_order->status,[0,1,2])){ return $this->error('450001','非主订单状态不符,不能合并'); } if($master_order->user_id!=$slave_order->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } //原订单金额和数量 $origin_money=$master_order->money; $origin_total=$master_order->total; $master_order->total+=$slave_order->total; $master_order->money+=$slave_order->money; $master_order->pay_money+=$slave_order->pay_money; $master_order->no_pay_money+=$slave_order->no_pay_money; $master_order->wait_back_money+=$slave_order->wait_back_money; if($master_order->money==$master_order->pay_money){ $master_order->pay_status=2; }elseif($master_order->money>$master_order->pay_money){ if($master_order->pay_money==0){ $master_order->pay_status=0; }else{ $master_order->pay_status=1; } }elseif($master_order->money<$master_order->pay_money){ $master_order->pay_status=3; } $master_order->is_merge=1; $master_order->status=0; //合并订单2详情 $slave_detail=Orderdetail::where('order_id',$slave_order->id)->get(); DB::beginTransaction(); try{ $goods_log=''; foreach($slave_detail as $key=>$val){ if(empty($goods_log)){ $goods_log='商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; }else{ $goods_log.=',商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; } $master_detail=Orderdetail::where('order_id',$master_order->id) ->where('goods_id',$val->goods_id) ->where('goods_size',$val->goods_size)->first(); if($master_detail){ $master_detail->num+=$val->num; $master_detail->money+=$val->money; $master_detail->save(); }else{ Orderdetail::create([ 'order_id'=>$master_order->id, 'goods_id'=>$val->goods_id, 'num'=>$val->num, 'money'=>$val->money, 'remark'=>$val->remark, 'goods_name'=>$val->goods_name, 'goods_size'=>$val->goods_size, 'goods_price'=>$val->goods_price, 'goods_unit'=>$val->goods_unit ]); } } $master_detail_after=Orderdetail::where('order_id',$master_order->id)->get(); $master_order->type=count($master_detail_after); $master_order->save(); //支付记录转移到主订单 Userpay::where('order_num',$slave_num)->update([ 'order_num'=>$master_num ]); if($master_order->address_id!=$slave_order->address_id){ Address::where('id',$slave_order->address_id)->update(['is_deleted'=>1]); } // Ordertest::where('order_num',$slave_num)->delete(); Ordertest::where('order_num',$slave_num)->update(['is_deleted'=>1]); $log_text='后台合并了订单,原订单总金额为'.$origin_money.',商品数量为'.$origin_total.'。合并后订单金额为'.$master_order->money.',合并后商品数量为'.$master_order->total.',添加订单包含:'.$goods_log; OrderLog::create([ 'order_id'=>$master_order->id, 'user_id'=>$master_order->user_id, 'log_name'=>Auth::user()->name, 'log_title'=>'合并订单', 'log_text'=>$log_text ]); if (!empty($input['remark'])){ OrderRemark::create([ 'order_id' => $master_order->id, 'name' =>Auth::user()->name, 'level' => null, 'type' => 0, 'remark' => $input['remark'] ]); } $num_gift=0; foreach($master_detail_after as $key=>$val){ if($val->goods_unit=='套'){ $num_gift+=$val['num']; } if($val->goods_unit=='件'){ $num_gift+=$val['num']*2; } } $order_gift=OrderGift::where('order_id',$master_order->id)->first(); if($order_gift){ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val){ $og=OrderGift::where('gift_id',$val->id)->where('order_id',$master_order->id)->first(); if($og){ if($num_gift >= $val->limit_num){ $og->num=floor($num_gift/$val->num); $og->save(); }else{ $og->delete(); } }else{ if($num_gift >= $val->limit_num) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } } }else{ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } $user=User::where('id',$master_order->user_id)->first(); if($user->openid){ $goodsInfo=''; foreach($slave_detail as $key => $val){ if($key<=2){ if(empty($goodsInfo)){ $goodsInfo='添加'.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; }else{ $goodsInfo.=','.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; } }elseif($key==3){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$master_num.'与'.$slave_num.'合并成功,保留订单:'.$master_num.'作废订单:'.$slave_num, 'keyword1' => $goodsInfo, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); $user_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('money'); $user_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('pay_money'); $user_no_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('no_pay_money'); $me['openid']=$user->openid; $me['data']=[ 'first' => '您在本次活动中提交的订单未支付完成,请及时付款', 'keyword1' => number_format($user_money,2), 'keyword2' => number_format($user_pay_money,2), 'keyword3' => number_format($user_no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new NPI($me)); } /* * 处理订单 * **/ $arr=Orderdetail::where('order_id',$slave_order->id)->pluck('num','goods_id')->toArray(); $sizes_arr=array_keys($arr); $nums_arr=array_values($arr); $arr_one=$this->DealOrder($sizes_arr,$nums_arr); /* * 处理订单 * **/ $mas_arr=Orderdetail::where('order_id',$master_order->id)->pluck('num','goods_id')->toArray(); $mas_size_arr=array_keys($mas_arr); $mas_nums_arr=array_values($mas_arr); // $arr_two=$this->DealOrder($mas_size_arr,$mas_nums_arr); $order=Ordertest::find($master_order->id); $all_arr=array_merge(json_decode($order->arr_json),$arr_one); $order->arr_json=json_encode($all_arr); if (!$order->save()){ throw new \Exception('1'); } DB::commit(); // event(new ChangeBigGiftBagEvent(['order_id'=>$master_order->id,'type'=>'edit','n'=>'1'])); // event(new ChangeBigGiftBagEvent(['order_id'=>$slave_order->id,'type'=>'cancel'])); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } } public function mergeOrderDetail(Request $request) { $input=$request->all(); $master_num=$input['master_num']; $slave_num=$input['slave_num']; $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Ordertest::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); $slave_order=Ordertest::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); if (empty($master_order) && empty($slave_order)){ $master_orders=Ordertest::where('order_num',$master_num)->where('is_deleted',0)->first(); $slave_orders=Ordertest::where('order_num',$slave_num)->where('is_deleted',0)->first(); if(!in_array($master_orders->status,[0,1,2])){ return $this->error('450001','订单1状态不符,不能合并'); } if(!in_array($slave_orders->status,[0,1,2])){ return $this->error('450001','订单2状态不符,不能合并'); } if($master_orders->user_id!=$slave_orders->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } $order_num1 = $master_num; $order_num2 = $slave_num; $order1 = Ordertest::where('order_num', $order_num1) ->with(['get_address','get_user'])->first()->toArray(); $order_detail1 = Orderdetail::where('order_id', $order1['id'])->get(); $data1 = []; foreach ($order_detail1 as $k => $v) { $good1 = Goodtest::find($v->goods_id); $data1['goods_detail'][$k]['name'] = $good1->name; $data1['goods_detail'][$k]['main_img'] = $good1->main_img; $data1['goods_detail'][$k]['size'] = $good1->size; $data1['goods_detail'][$k]['unit'] = $good1->unit; $data1['goods_detail'][$k]['money'] = $v->money; $data1['goods_detail'][$k]['num'] = $v->num; $data1['goods_detail'][$k]['id'] = $v->goods_id; $data1['goods_detail'][$k]['detail_id'] = $v->id; $data1['goods_detail'][$k]['goods_price'] = $v->goods_price; $data1['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $order2 = Ordertest::where('order_num', $order_num2) ->with(['get_address','get_user'])->first()->toArray(); $order_detail2 = Orderdetail::where('order_id', $order2['id'])->get(); $data2 = []; foreach ($order_detail2 as $k => $v) { $good2 = Goodtest::find($v->goods_id); $data2['goods_detail'][$k]['name'] = $good2->name; $data2['goods_detail'][$k]['main_img'] = $good2->main_img; $data2['goods_detail'][$k]['size'] = $good2->size; $data2['goods_detail'][$k]['unit'] = $good2->unit; $data2['goods_detail'][$k]['money'] = $v->money; $data2['goods_detail'][$k]['num'] = $v->num; $data2['goods_detail'][$k]['id'] = $v->goods_id; $data2['goods_detail'][$k]['detail_id'] = $v->id; $data2['goods_detail'][$k]['goods_price'] = $v->goods_price; $data2['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all['order_master'] = array_merge($order1, $data1); $all['order_slave'] = array_merge($order2, $data2); return $this->success($all); } if(empty($master_order)){ return $this->error('450001','订单1信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','订单1状态不符,不能合并'); } if(empty($slave_order)){ return $this->error('450001','订单2信息有误,请核对后再合并'); } if(!in_array($slave_order->status,[0,1,2])){ return $this->error('450001','订单2状态不符,不能合并'); } if($master_order->user_id!=$slave_order->user_id){ return $this->error('450001','下单人信息不一致,不能合并'); } $order_num1 = $master_num; $order_num2 = $slave_num; $order1 = Ordertest::where('order_num', $order_num1) ->with(['get_address','get_user'])->first()->toArray(); $order_detail1 = Orderdetail::where('order_id', $order1['id'])->get(); $data1 = []; foreach ($order_detail1 as $k => $v) { $good1 = Goodtest::find($v->goods_id); $data1['goods_detail'][$k]['name'] = $good1->name; $data1['goods_detail'][$k]['main_img'] = $good1->main_img; $data1['goods_detail'][$k]['size'] = $good1->size; $data1['goods_detail'][$k]['unit'] = $good1->unit; $data1['goods_detail'][$k]['money'] = $v->money; $data1['goods_detail'][$k]['num'] = $v->num; $data1['goods_detail'][$k]['id'] = $v->goods_id; $data1['goods_detail'][$k]['detail_id'] = $v->id; $data1['goods_detail'][$k]['goods_price'] = $v->goods_price; $data1['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $order2 = Ordertest::where('order_num', $order_num2) ->with(['get_address','get_user'])->first()->toArray(); $order_detail2 = Orderdetail::where('order_id', $order2['id'])->get(); $data2 = []; foreach ($order_detail2 as $k => $v) { $good2 = Goodtest::find($v->goods_id); $data2['goods_detail'][$k]['name'] = $good2->name; $data2['goods_detail'][$k]['main_img'] = $good2->main_img; $data2['goods_detail'][$k]['size'] = $good2->size; $data2['goods_detail'][$k]['unit'] = $good2->unit; $data2['goods_detail'][$k]['money'] = $v->money; $data2['goods_detail'][$k]['num'] = $v->num; $data2['goods_detail'][$k]['id'] = $v->goods_id; $data2['goods_detail'][$k]['detail_id'] = $v->id; $data2['goods_detail'][$k]['goods_price'] = $v->goods_price; $data2['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all['order_master'] = array_merge($order1, $data1); $all['order_slave'] = array_merge($order2, $data2); return $this->success($all); } //删除地址 public function destroyOrderAddress(Request $request){ $input=$request->all(); $row=Address::where('id',$input['id'])->update(['is_deleted'=>1]); if($row){ return $this->success([]); } return $this->error(); } //未支付订单 public function getNoPayOrders(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $num=$page_size*($page_index-1); $activity=Activity::where('is_ing',1)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; $count=Ordertest::with(['get_user:id,nickname,mobile,name']) ->where('is_deleted',0) ->whereBetween('created_at',[$start_time,$end_time]) ->groupBy('user_id')->select('user_id',DB::raw('sum(money) as money'),DB::raw('sum(pay_money) as pay_money'),DB::raw('sum(no_pay_money) as no_pay_money')) ->having('no_pay_money','>',0) ->get()->count(); $list=Ordertest::with(['get_user'=>function($query)use($activity){ $query->with(['nopayinfo'=>function($q)use($activity){ $q->where('activity_id',$activity->id); }])->select('id','nickname','mobile','name'); }]) ->where('is_deleted',0) ->whereBetween('created_at',[$start_time,$end_time]) // ->where('no_pay_money','>',0) ->groupBy('user_id')->select('user_id',DB::raw('sum(money) as money'),DB::raw('sum(pay_money) as pay_money'),DB::raw('sum(no_pay_money) as no_pay_money'),DB::raw('sum(no_pay_money) as no_pay_moneys')) ->having('no_pay_money','>',0) ->orderByDesc('money') ->orderByDesc('pay_money') ->orderByDesc('no_pay_money') ->skip($num)->take($page_size) ->get(); return $this->success_list($list,'成功',$count); } public function send_all_nopayinfo(Request $request){ $activity=Activity::where('is_ing',1)->first(); $user=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])->select(DB::raw('SUM(money) as accounts'),DB::raw('SUM(pay_money) as pay_accounts'),DB::raw('SUM(no_pay_money) as accounts'),DB::raw('SUM(wait_back_money) as wait_back_accounts'),'order_test.*')->with(['get_user'])->where('is_deleted',0)->groupBy('user_id')->get(); $data=[ 'user'=>$user, 'activity'=>$activity ]; SendOrderMoneyMessageJob::dispatch($data); return $this->success([]); } //发送未支付通知 public function sendNoPayInfo(Request $request){ $input=$request->all(); $user_ids=$input['ids']; $activity=Activity::where('is_ing',1)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; foreach($user_ids as $key=>$val){ $user_id=$val; // $info=Ordertest::with(['get_user'=>function($query)use($user_id){ // $query->where('id',$user_id) // ->select('id','nickname','mobile'); // }]) // ->where('is_deleted',0)->whereIn('pay_status',[0,1]) // ->whereBetween('created_at',[$start_time,$end_time]) // ->groupBy('user_id')->select('user_id',DB::raw('sum(money) as money'),DB::raw('sum(pay_money) as pay_money'),DB::raw('sum(no_pay_money) as no_pay_money')) // ->first(); $info=User::with(['orders'=>function($query)use($start_time,$end_time){ $query->where('is_deleted',0)->whereIn('pay_status',[0,1])->whereBetween('created_at',[$start_time,$end_time]) ->groupBy('user_id')->select('user_id',DB::raw('sum(money) as money'),DB::raw('sum(pay_money) as pay_money'),DB::raw('sum(no_pay_money) as no_pay_money')); }])->where('id',$user_id)->first(); try { NoPayInfo::create([ 'user_id'=>$user_id, 'activity_id'=>$activity->id, 'money'=>$info->orders[0]->money, 'pay_money'=>$info->orders[0]->pay_money, 'no_pay_money'=>$info->orders[0]->no_pay_money, ]); $user=User::where('id',$user_id)->first(); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您在本次活动中下的订单未全部支付,请及时付款', 'keyword1' => number_format($info->orders[0]->money,2), 'keyword2' => number_format($info->orders[0]->pay_money,2), 'keyword3' => number_format($info->orders[0]->no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new NPI($mes)); } }catch (\Exception $exception){ } } return $this->success([]); } public function openAutoPay(Request $request){ DB::beginTransaction(); try{ $open_auto_pay=Activity::where('is_ing',1)->where('disabled',0)->first(); $set_log=new SetPayLog(); $set_log->name=Auth::user()->name; if ($request->type==0){ if ($open_auto_pay->open_auto_pay==0){ return $this->error(50024,'自动支付已经关闭'); } $set_log->remark='关闭了自动支付'; $open_auto_pay->open_auto_pay=0; }elseif ($request->type==1){ if ($open_auto_pay->open_auto_pay==1 || $open_auto_pay->open_auto_pay==2){ return $this->error(50024,'自动支付已经开启'); } $set_log->remark='开启了自动支付'; $open_auto_pay->open_auto_pay=1; } if (!$set_log->save()){ throw new \Exception('1'); } if (!$open_auto_pay->save()){ throw new \Exception(1); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50024,'操作失败'.$exception); } } public function getAutoPayStatus(){ $open_auto_pay = Activity::where('is_ing',1)->where('disabled',0)->value('open_auto_pay'); if ($open_auto_pay){ $data['pay_status']=true; }else{ $data['pay_status']=false; } $re=Ordertest::where('pay_status','<>',2)->where('is_deleted',0)->count(); if ($re){ $data['status']=false; }else{ $data['status']=true; } return $this->success($data); } public function getCancelWhy() { return $this->success(OrderCancelWhy::get()); } public function addCancelWhy(Request $request) { $input=$request->all(); $res= OrderCancelWhy::create([ 'content'=>$input['content'] ]); if($res){ return $this->success([]); }else{ return $this->error(); } } public function GetRelation($id){ $u=User::find($id); $da['belong_user']=$id; $da['belong_level']=$u->level; $da['agent_user']=''; $da['agent_level']=''; $da['top_user']=''; $da['time']=Carbon::now()->toDateTimeString(); if ($u->level==1){ $uu=User::find($u->agent_id); if ($uu->level==3){ $da['top_user']=$uu->id; $da['top_level']=3; }else{ $da['agent_user']=$uu->id; $da['agent_level']=$uu->level; $da['top_user']=$uu->agent_id; } }elseif ($u->level==2){ $da['top_user']=$u->agent_id; $da['top_level']=3; } return $da; } public function UpdateBelongId(Request $request){ DB::beginTransaction(); try{ $users=User::where('id',$request->id)->first(); $order=Ordertest::where('order_num',$request->order_num)->with(['get_user'])->first(); $user_old=$order->get_user; $order->good_user_id=$users->id; $order->relation=json_encode($this->GetRelation($users->id)); if (!$order->save()){ throw new \Exception('1'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '修改订单所属者。原订单所属者id为:'.$user_old->id.',昵称为:'.$user_old->nickname.',手机号为:'.$user_old->mobile.'。修改后,订单所属者id为:'.$users->id.',昵称为:'.$users->nickname.',手机号为:'.$users->mobile; if (!$orderlog->save()) { throw new \Exception('1'); } DB::commit(); return $this->success([]); }catch (\Exception $exception){ Log::error('修改订单所属者出错:'.$exception); DB::rollBack(); return $this->error(50024,'修改订单所属者出错'); } } /**查找代理**/ public function GetUser(Request $request){ $input=$request->all(); $order=Ordertest::where('order_num',$input['order_num'])->first(); $id=$order->user_id; $ids=[$id]; $user_id=User::where('agent_id',$id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $user_ids=User::whereIn('agent_id',$user_id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $all_ids=array_merge($ids,array_merge($user_id,$user_ids)); $search_name=$input['search_name']; $where=[]; if ($search_name){ $where=function ($q)use($search_name){ $q->where('mobile','like','%'.$search_name.'%')->orwhere('nickname','like','%'.$search_name.'%'); }; } $user=User::whereIn('id',$all_ids)->where($where)->select('id','mobile','level','nickname','realname','headimgurl'); $count=$user->get()->count(); $re=$user->take(30)->skip(($request->page-1)*30)->get(); return $this->success_list($re,'',$count); } public function UpAddress(Request $request){ $address=Address::find($request->id); $address->belong_id=$request->belong_id; $address->save(); return $this->success([]); } /**查找代理**/ public function GetUserId(Request $request){ $input=$request->all(); $id=$input['user_id']; $ids=[$id]; $user_id=User::where('agent_id',$id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $user_ids=User::whereIn('agent_id',$user_id)->whereIn('cert_status',[3,6])->pluck('id')->toArray(); $all_ids=array_merge($ids,array_merge($user_id,$user_ids)); $search_name=$input['search_name']; $where=[]; if ($search_name){ $where=function ($q)use($search_name){ $q->where('mobile','like','%'.$search_name.'%')->orwhere('nickname','like','%'.$search_name.'%'); }; } $user=User::whereIn('id',$all_ids)->where($where)->select('id','mobile','level','nickname','realname','headimgurl'); $count=$user->get()->count(); $re=$user->take($input['page_size'])->skip(($request->page_index-1)*$input['page_size'])->get(); return $this->success_list($re,'',$count); } /* * 更新物流单号 * **/ public function UpdateExpress(Request $request){ ini_set('memory_limit', '4096M'); $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } $array = Excel::toArray(new ExpressImport, request()->file('file')); $one = array_shift($array[0]); $old_express_keys=array_search('旧物流单号',$one); if(!$old_express_keys){ return $this->error('450001',"表头无'旧物流单号'字段"); } $new_express_keys=array_search('新物流单号',$one); if(!$new_express_keys){ return $this->error('450001',"表头无'新物流单号'字段"); } $express_com_code=array_search('快递公司代码',$one); if(!$express_com_code){ return $this->error('450001',"表头无'快递公司代码'字段"); } $express_com=array_search('快递公司',$one); if(!is_numeric($express_com)){ return $this->error('450001',"表头无'快递公司'字段"); } $arres=[]; $arr_old=[]; $arr_new=[]; $o=0; $old_codes=array_column($array[0],$old_express_keys); if (count($old_codes)!=count(array_unique($old_codes))){ return $this->error(50021,'表格中有重复的“旧”快递单号',[$old_codes]); } foreach ($array[0] as $k=>$v){ if ($v[$express_com]!='中通快运' && $v[$express_com]!='德邦快运'&& $v[$express_com]!='德邦物流' && $v[$express_com]!='京东物流'){ $arres[$o]=$v; $o++; } $arr_old[$v[$new_express_keys]]=$v[$old_express_keys]; } if (count(array_intersect(array_keys($arr_old),array_values($arr_old)))>0){ return $this->error(50026,'数据中新旧快递单号有重叠'); } // return $this->success($arres); $express_nums=array_column($arres,$new_express_keys); $unique_express_nums=array_unique($express_nums); $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums); if(count($que_express_nums)>0){ $que_express_str=implode(',',$que_express_nums); return $this->error('450001','快递单号'.$que_express_str.'重复出现'); } $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','德邦快运'=>'DBL','邮政'=>'EMS','京东快递'=>'JD','京东物流'=>'JDKY','韵达快递'=>'YD']; foreach ($array[0] as $key => $val) { if (empty($val[$old_express_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,旧快递单号为空'); } if (empty($val[$new_express_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,新快递单号为空'); } if (empty($val[$express_com])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空'); } if (empty($express_code[$val[$express_com]])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误'); } if (!in_array($val[$express_com_code],$express_code)){ return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司代码有误'); } if ($express_com=='中通快运' || $express_com=='德邦快运' || $express_com=='德邦物流' || $express_com=='京东物流'){ // $express = Express::where('express_number', $val[$new_express_keys])->where('created_at','<',Carbon::now()->toDateTimeString())->first(); // if ($express) { // return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$new_express_keys] . '物流信息已存在'); // } }else{ $express = Express::where('express_number', $val[$new_express_keys])->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$new_express_keys] . '物流信息已存在'); } } } // $ids = implode(',', array_values($arr_old)); // $sql = "UPDATE express SET express_number = CASE express_number "; // foreach ($arr_old as $id => $ordinal) { // $sql .= sprintf("WHEN %d THEN %d ", $ordinal, $id); // } // $sql .= "END WHERE id IN ($ids)"; // DB::select($sql); DB::beginTransaction(); try{ foreach ($array[0] as $k=>$v){ $countss=Express::where('express_number',$v[$old_express_keys])->count(); if ($countss==1){ $re=Express::where('express_number',$v[$old_express_keys])->first(); if ($v[$express_com]=='德邦快运' || $v[$express_com]=='德邦物流'){ $re->express_com='德邦快递'; }else{ $re->express_com=$v[$express_com]; } $re->express_code=$v[$express_com_code]; $re->express_number=$v[$new_express_keys]; $re->save(); }else{ $re=Express::where('express_number',$v[$old_express_keys])->first(); if (!$re){ return $this->error(500214,'没有找到快递单号为:'.$v[$old_express_keys].'的记录,请查看是否包含了标点符号'); } Express::where('express_number',$v[$old_express_keys])->update(['express_number'=>$v[$new_express_keys],'express_code'=>$v[$express_com_code]]); } } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(); } } /*所属者订单排名**/ public function GetBelongOrderRank(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('good_user_id')->pluck('good_user_id')->toArray(); // $money=User::where('level',3)->sum('money'); $user_ids=$order_user_ids; $user=User::select('users.id','users.level','users.mobile','users.nickname','users.money','users.realname','order_test.user_id', DB::raw('SUM(order_test.money) as account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.good_user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('users.id','desc'); $count=0; $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $u_info=User::where('id',$val->user_id)->select('mobile','nickname','level')->first(); // $uu=User::select('users.id','users.level','users.nickname','users.realname','gt.main_attr', // DB::raw('SUM(od.num) as num')) // ->leftJoin('order_test', // function($join) use ($start_time,$end_time,$where,$wheres){ // $join->on('order_test.good_user_id', '=', 'users.id') // ->where('order_test.is_deleted','=','0') // ->where($where) // ->where($wheres); // }) // ->leftJoin('order_detail as od','od.order_id','=','order_test.id') // ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') // ->where('users.id',$user_id) // ->withTrashed() // ->where('users.id',$user_id) // ->where(function ($q)use($search_name){ // $q->where('users.nickname','like','%'.$search_name.'%') // ->orwhere('users.mobile','like','%'.$search_name.'%') // ->orwhere('users.realname','like','%'.$search_name.'%'); // }) // ->groupBy('users.id','gt.main_attr') // ->orderBy('users.id','desc') // ->get(); $uu=Ordertest::where($where)->where($wheres)->where('order_test.is_deleted','=','0') ->select('gt.main_attr', DB::raw('SUM(od.num) as num')) ->where('good_user_id',$user_id) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->groupBy('order_test.good_user_id','gt.main_attr') ->orderBy('order_test.good_user_id','desc') ->get(); // return $this->success($uu); foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['nickname']=$val->nickname; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; if ($val->level==1){ $ll[$key]['level']='销售主管'; }elseif ($val->level==2){ $ll[$key]['level']='销售经理'; }else{ $ll[$key]['level']='代理公司'; } $ll[$key]['mobile']=$val->mobile; $ll[$key]['u_mobile']=$u_info->mobile; $ll[$key]['u_nickname']=$u_info->nickname; // $ll[$key]['u_level']=$u_info->mobile; if ($val->u_level==1){ $ll[$key]['u_level']='销售主管'; }elseif ($val->u_level==2){ $ll[$key]['u_level']='销售经理'; }else{ $ll[$key]['u_level']='代理公司'; } $ll[$key]['no_pay_account']=$val->no_pay_account?$val->no_pay_account:0; } $dd=[ 'list'=>$ll, ]; return $this->success_list($dd,'获取数据成功',$count); } /*所属者订单排名**/ public function GetBelongOrderRanks(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $sort='desc'; if ($request->has('sort')){ if ($request->sort){ $sort='asc'; }else{ $sort='desc'; } } $s='精装版'; if ($request->has('type')){ if ($request->type){ $s=$request->type; } } $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('good_user_id')->pluck('good_user_id')->toArray(); // $money=User::where('level',3)->sum('money'); $user_ids=$order_user_ids; $count=count($user_ids); $good_id=Goodtest::where('main_attr','like','%'.$s)->pluck('id'); $user=User::select('users.id','users.level','users.mobile','users.nickname','users.money','users.realname','order_test.user_id', DB::raw('SUM(order_test.money) as account'),DB::raw('ifnull(sum(od.num),0) as g_num')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.good_user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) // ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftJoin('order_detail as od',function ($q)use($good_id){ $q->on('od.order_id','=','order_test.id')->whereIn('od.goods_id',$good_id); }) ->groupBy('users.id') ->orderBy('g_num',$sort) ->orderBy('users.id','desc'); // $count=$user->count(); $list=$user->take($page_size)->skip($num)->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $u_info=User::where('id',$val->user_id)->select('mobile','nickname','level')->first(); $uu=Ordertest::where($where)->where($wheres)->where('order_test.is_deleted','=','0') ->select('gt.main_attr', DB::raw('SUM(od.num) as num')) ->where('good_user_id',$user_id) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->groupBy('order_test.good_user_id','gt.main_attr') ->orderBy('order_test.good_user_id','desc') ->get(); // return $this->success($uu); foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['nickname']=$val->nickname; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; if ($val->level==1){ $ll[$key]['level']='销售主管'; }elseif ($val->level==2){ $ll[$key]['level']='销售经理'; }else{ $ll[$key]['level']='代理公司'; } $ll[$key]['mobile']=$val->mobile; $ll[$key]['u_mobile']=$u_info->mobile; $ll[$key]['u_nickname']=$u_info->nickname; if ($val->u_level==1){ $ll[$key]['u_level']='销售主管'; }elseif ($val->u_level==2){ $ll[$key]['u_level']='销售经理'; }else{ $ll[$key]['u_level']='代理公司'; } $ll[$key]['no_pay_account']=$val->no_pay_account?$val->no_pay_account:0; } $dd=[ 'list'=>$ll, ]; return $this->success_list($dd,'获取数据成功',$count); } public function GetBelongUser(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('good_user_id')->pluck('good_user_id')->toArray(); // Ordertest::leftJoin('order_detail') } //导出所属者订单信息 public function ExportBelongOrderRank(Request $request){ $input=$request->all(); $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $sort='desc'; if ($request->has('sort')){ if ($request->sort){ $sort='asc'; }else{ $sort='desc'; } } $s='精装版'; if ($request->has('type')){ if ($request->type){ $s=$request->type; } } $where=[];$wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::where($where)->where($wheres)->where('is_deleted',0)->groupBy('good_user_id')->pluck('good_user_id')->toArray(); // $money=User::where('level',3)->sum('money'); $user_ids=$order_user_ids; $count=count($user_ids); $good_id=Goodtest::where('main_attr','like','%'.$s)->pluck('id'); $user=User::select('users.id','users.level','users.mobile','users.nickname','users.money','users.realname','order_test.user_id', DB::raw('SUM(order_test.money) as account'),DB::raw('ifnull(sum(od.num),0) as g_num')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.good_user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->withTrashed() ->whereIn('users.id',$user_ids) ->where(function ($q)use($search_name){ $q->where('users.nickname','like','%'.$search_name.'%') ->orwhere('users.mobile','like','%'.$search_name.'%') ->orwhere('users.realname','like','%'.$search_name.'%'); }) // ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftJoin('order_detail as od',function ($q)use($good_id){ $q->on('od.order_id','=','order_test.id')->whereIn('od.goods_id',$good_id); }) ->groupBy('users.id') ->orderBy('g_num',$sort) ->orderBy('users.id','desc'); // $count=$user->count(); $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $u_info=User::where('id',$val->user_id)->select('mobile','nickname','level')->first(); $uu=Ordertest::where($where)->where($wheres)->where('order_test.is_deleted','=','0') ->select('gt.main_attr', DB::raw('SUM(od.num) as num')) ->where('good_user_id',$user_id) ->leftJoin('order_detail as od','od.order_id','=','order_test.id') ->leftjoin('goods_test as gt','gt.id','=','od.goods_id') ->groupBy('order_test.good_user_id','gt.main_attr') ->orderBy('order_test.good_user_id','desc') ->get(); // return $this->success($uu); foreach($uu as $k => $v){ if($v->main_attr=="大卫博士高腰版"){ $ll[$key]['高腰版']=$v->num; }elseif($v->main_attr=="大卫博士精装版"){ $ll[$key]['精装版']=$v->num; }elseif($v->main_attr=="大卫博士简约版"){ $ll[$key]['简约版']=$v->num; }elseif($v->main_attr=="大卫博士纯棉老人版"){ $ll[$key]['纯棉老人版']=$v->num; }elseif($v->main_attr=="大卫博士青春版"){ $ll[$key]['青春版']=$v->num; } } $ll[$key]['nickname']=$val->nickname; $ll[$key]['money']=$val->money; $ll[$key]['realname']=$val->realname; if ($val->level==1){ $ll[$key]['level']='销售主管'; }elseif ($val->level==2){ $ll[$key]['level']='销售经理'; }else{ $ll[$key]['level']='代理公司'; } $ll[$key]['mobile']=$val->mobile; $ll[$key]['u_mobile']=$u_info->mobile; $ll[$key]['u_nickname']=$u_info->nickname; if ($val->u_level==1){ $ll[$key]['u_level']='销售主管'; }elseif ($val->u_level==2){ $ll[$key]['u_level']='销售经理'; }else{ $ll[$key]['u_level']='代理公司'; } $ll[$key]['no_pay_account']=$val->no_pay_account?$val->no_pay_account:0; } return $this->success($ll); } public function GetExceptionOrder(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $page_index=$input['page_index']; $page_size=$input['page_size']; $re=Ordertest::wherehas('belong_user',function($q){ $q->where('level',3); })->with(['belong_user','get_user'=>function($q){ $q->with(['warea'])->select('nickname','id','name','realname','mobile','warea_id'); }])->with(['get_store'])->whereColumn('user_id','<>','good_user_id')->where('is_deleted',0); if ($activity_id){ $activity=Activity::find($activity_id); $re->whereBetween('created_at',[$activity->start_time,$activity->end_time]); } $count=$re->count(); $data=$re->take($page_size)->skip(($page_index-1)*$page_size)->get(); return $this->success_list($data,'',$count); } public function GetExceptionOrders(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $page_index=$input['page_index']; $page_size=$input['page_size']; $order=Ordertest::where('is_deleted',0); if ($activity_id){ $activity=Activity::find($activity_id); $order->whereBetween('created_at',[$activity->start_time,$activity->end_time]); } $address_ids=$order->pluck('address_id'); $address=Address::whereIn('id',$address_ids)->groupBy('user_id')->get(); $data=[]; foreach ($address as $k=>$v){ $ids=[]; $agent_id=User::where('agent_id',$v->user_id)->whereNull('deleted_at')->pluck('id')->toArray(); $agnet_ids=User::whereIn('agent_id',$agent_id)->whereNull('deleted_at')->pluck('id')->toArray(); $ids=array_merge($agnet_ids,$agent_id,[$v->user_id]); $addresss=Address::where('user_id',$v->user_id)->whereIn('id',$address_ids)->get(); foreach ($addresss as $ke=>$va){ if (!in_array($va->belong_id,$ids)){ $data[]=$va->id; } } } $datas=[]; $datas=array_merge($data,$datas); $order_test=Ordertest::whereIn('order_test.address_id',$datas); if ($activity_id){ $activity=Activity::find($activity_id); $order_test=$order_test->whereBetween('order_test.created_at',[$activity->start_time,$activity->end_time]); } $idss=$order_test->pluck('order_test.id')->toArray(); $id_all=$idss; $order_tests=Ordertest::whereIn('id',$id_all); $count=$order_tests->count(); $d=$order_tests->take($page_size)->skip(($page_index-1)*$page_size)->get(); $dd=[]; foreach ($d as $k=>$v){ $status=true; $u=User::where('id',$v->good_user_id)->first(); if (!$u){ $status=false; }else{ if ($u->deleted_at){ $status=false; } } $o=Ordertest::where('id',$v->id)->with(['belong_user','get_user'=>function($q){ $q->with(['warea'])->select('nickname','id','name','realname','mobile','warea_id'); }])->with(['get_store'])->first(); $dd[$k]=$o; $dd[$k]->or_status=$status; } return $this->success_list($dd,'',$count); } public function ExportExceptionOrders(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $order=Ordertest::where('is_deleted',0); if ($activity_id){ $activity=Activity::find($activity_id); $order->whereBetween('created_at',[$activity->start_time,$activity->end_time]); } $address_ids=$order->pluck('address_id'); $address=Address::whereIn('id',$address_ids)->groupBy('user_id')->get(); $data=[]; foreach ($address as $k=>$v){ $ids=[]; $agent_id=User::where('agent_id',$v->user_id)->whereNull('deleted_at')->pluck('id')->toArray(); $agnet_ids=User::whereIn('agent_id',$agent_id)->whereNull('deleted_at')->pluck('id')->toArray(); $ids=array_merge($agnet_ids,$agent_id,[$v->user_id]); $addresss=Address::where('user_id',$v->user_id)->whereIn('id',$address_ids)->get(); foreach ($addresss as $ke=>$va){ if (!in_array($va->belong_id,$ids)){ $data[]=$va->id; } } } $datas=[]; $datas=array_merge($data,$datas); $order_test=Ordertest::whereIn('order_test.address_id',$datas); if ($activity_id){ $activity=Activity::find($activity_id); $order_test=$order_test->whereBetween('order_test.created_at',[$activity->start_time,$activity->end_time]); } $idss=$order_test->pluck('order_test.id')->toArray(); $id_all=$idss; $order_tests=Ordertest::whereIn('id',$id_all)->get(); $dd=[]; foreach ($order_tests as $k=>$v){ $status=true; $u=User::where('id',$v->good_user_id)->first(); if (!$u){ $status=false; }else{ if ($u->deleted_at){ $status=false; } } $o=Ordertest::where('id',$v->id)->with(['belong_user','get_user'=>function($q){ $q->with(['warea'])->select('nickname','id','name','realname','mobile','warea_id'); }])->with(['get_store'])->first(); $dd[$k]=$o; $dd[$k]->or_status=$status; } return $this->success($dd); } public function ExportExceptionOrder(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $re=Ordertest::wherehas('belong_user',function($q){ $q->where('level',3); })->with(['belong_user','get_user'=>function($q){ $q->with(['warea']); }])->whereColumn('user_id','<>','good_user_id')->where('is_deleted',0); if ($activity_id){ $activity=Activity::find($activity_id); $re->whereBetween('created_at',[$activity->start_time,$activity->end_time]); } $data=$re->get(); return $this->success($data); } /* * 处理每次订单数据 * **/ public function DealOrder($size=[],$num=[]){ $nums=[]; $sizes=[]; foreach ($size as $k=>$v){ $re=Goodtest::find($v); $s=strpos($re->main_attr,'精'); if (is_numeric($s)){ $sizes[]='精-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'简'); if (is_numeric($s)){ $sizes[]='简-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'纯棉'); if (is_numeric($s)){ $sizes[]='纯棉-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'高'); if (is_numeric($s)){ $sizes[]='高-'.$re->size; $nums[]=$num[$k]; }else{ $s=strpos($re->main_attr,'青'); if (is_numeric($s)){ $sizes[]='青-'.$re->size; $nums[]=$num[$k]; } } } } } } return [$sizes,$nums]; } public function GetOrderDetail(Request $request){ $order=Ordertest::where('id',$request->id)->first(); if (!$order){ return $this->error(50021); } $arrs=Cache::get('DLS_GOOD_ARRS'); if (!$arrs){ $arrs=$this->GetGoodArr(); } if ($order->arr_json){ $order_de=OrderDetail::where('order_id',$request->id)->get(); $arrss=[]; foreach ($order_de as $k=>$v){ $s=strpos($v->goods_name,'精'); if (is_numeric($s)){ $z='精-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'简'); if (is_numeric($s)){ $z='简-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'纯棉'); if (is_numeric($s)){ $z='纯棉-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'青'); if (is_numeric($s)){ $z='青-'.$v->goods_size; }else{ $s=strpos($v->goods_name,'高'); if (is_numeric($s)){ $z='高-'.$v->goods_size; } } } } } $arrss[$z]=$v->num; } $re=json_decode($order->arr_json); $data=[]; foreach ($re as $k=>$v){ if ($k%2==0){ $data=array_merge($v,$data); } } $data=array_unique($data); $arr=[]; foreach ($re as $k=>$v){ if ($k%2==0){ $num=[]; foreach ($data as $ke=>$va){ $s=array_search($va,$v); if (is_numeric($s)){ $num[$va]=$re[$k+1][$s]; }else{ $num[$va]=0; } } $arr[]=$num; } } $key=array_keys($arr[0]); $arr=array_merge($arr,[$arrss]); $a=array_intersect($arrs,$key); $array=[$a]; foreach ($arr as $k=>$v){ $arrr=[]; foreach ($a as $ke=>$va){ if (isset($v[$va])){ $arrr[$ke]=$v[$va]; }else{ $arrr[$ke]=0; } } $array[]=$arrr; } return $this->success($array); }else{ return $this->error(50023,'','该订单不能查看合并信息'); } } public function GetGoodArr(){ $good=Goodtest::where('is_deleted',0)->orderBy('sort')->orderBy('id')->get(); $arrs=[]; foreach ($good as $k=>$v){ $s=strpos($v->main_attr,'精'); if (is_numeric($s)){ $z='精-'.$v->size; }else{ $s=strpos($v->main_attr,'简'); if (is_numeric($s)){ $z='简-'.$v->size; }else{ $s=strpos($v->main_attr,'纯棉'); if (is_numeric($s)){ $z='纯棉-'.$v->size; }else{ $s=strpos($v->main_attr,'高'); if (is_numeric($s)){ $z='高-'.$v->size; }else{ $s=strpos($v->main_attr,'青'); if (is_numeric($s)){ $z='青-'.$v->size; } } } } } $arrs[$k]=$z; } $arrs=Cache::remember('DLS_GOOD_ARRS',Carbon::now()->addYears(1),function ()use($arrs){ return $arrs; }); return $arrs; } /*** * 上传赠品 */ public function UploadOrderGift(Request $request){ ini_set('memory_limit', '2048M'); $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $one = array_shift($array[0]); $order_num_key=array_search('订单编号',$one); if (!is_numeric($order_num_key)){ return $this->error(50024,'表格中不含有 “订单编号”这个表头'); } $express_com_key=array_search('快递公司',$one); if (!is_numeric($express_com_key)){ return $this->error(50024,'表格中不含有 “快递公司”这个表头'); } $express_num_key=array_search('快递单号',$one); if (!is_numeric($express_num_key)){ return $this->error(50024,'表格中不含有 “快递单号”这个表头'); } $express_code_key=array_search('快递公司代码',$one); if (!is_numeric($express_code_key)){ return $this->error(50024,'表格中不含有 “快递公司代码”这个表头'); } $remark_key=array_search('备注',$one); if (!is_numeric($remark_key)){ return $this->error(50024,'表格中不含有 “备注”这个表头'); } $order_num_arr=array_column($array[0],$order_num_key); $express_com_arr=array_column($array[0],$express_com_key); $express_num_arr=array_column($array[0],$express_num_key); $express_code_arr=array_column($array[0],$express_code_key); $remark_arr=array_column($array[0],$remark_key); if (is_numeric(array_search("",$order_num_arr))||is_numeric(array_search("",$express_com_arr))||is_numeric(array_search("",$express_num_arr))||is_numeric(array_search("",$express_code_arr))){ return $this->error(50024,'表格中含有空值,请检查表格数据'); } // $express_new_num_arr=array_unique($express_num_arr); // if (count($express_num_arr)!=count($express_new_num_arr)){ // return $this->error(50027,'快递单号有重复,请自行检查'); // } // $re=Express::whereIn('express_number',$express_num_arr)->first(); // if ($re){ // return $this->error(50026,'快递单号:'.$re->express_number.'已存在'); // } // $arr=array_slice($one,$remark_key+1); // $gift_arr=[]; // $activity_id=Activity::where('is_ing',1)->value('id'); // foreach ($arr as $k=>$v){ // $gift_img=Gifts::where('activity_id',$activity_id)->where('name','=',$v)->value('img'); // if (!$gift_img){ // return $this->error(50026,'不存在礼品'.$v); // } // $gift_arr[]=$gift_img; // } DB::beginTransaction(); try{ foreach ($array[0] as $k=>$v){ $re=Ordertest::where('order_num',$v[$order_num_key])->first(); if (!$re){ return $this->error(50024,'不存在订单编号为:'.$v[$order_num_key].'的订单'); } $res=Express::where('order_id',$re->id)->orderByDesc('id')->limit(1)->first(); if ($res){ $number=$res->number; $count=$res->count+1; }else{ $number=1; $count=1; } $ex=new Express(); $ex->order_id=$re->id; $ex->total=0; $ex->status=0; $ex->number=$number; $ex->count=$count; $ex->is_gift=1; $ex->remark=$v[$remark_key]; if ($v[$express_code_key]=='ZTO'){ $patterns = "/\d+/"; $st=''; preg_match_all($patterns,$v[$express_num_key],$aa); foreach ($aa[0] as $kee=>$vaa){ $st.=$vaa; } $v[$express_num_key]=$st; if (mb_substr($v[$express_num_key],0,1)!=7){ return $this->error(500231,$v[$express_num_key].'快递单号与快递公司不符合'); } } if ($v[$express_code_key]=='DBL'){ if (mb_substr($v[$express_num_key],0,1)!='D'){ return $this->error(500231,$v[$express_num_key].'快递单号与快递公司不符合'); } } if ($v[$express_code_key]=='ZTOKY'){ if (mb_substr($v[$express_num_key],0,1)!=2){ return $this->error(500231,$v[$express_num_key].'快递单号与快递公司不符合'); } } $ex->express_com=$v[$express_com_key]; $ex->express_code=$v[$express_code_key]; $ex->express_number=$v[$express_num_key]; // $gift_a=[]; // $i=0; // foreach ($gift_arr as $ke=>$va){ // if ($v[$remark_key+1+$ke]){ // $gift_a[$i]['imgurl']=$va; // $gift_a[$i]['name']=$one[$remark_key+1+$ke]; // $gift_a[$i]['nums']=$v[$remark_key+1+$ke]; // $i++; // } // } $ex->user_id=$re->user_id; $gift_a=[['imgurl'=>'','name'=>$v[$remark_key],'']]; $ex->notes=json_encode($gift_a); if (!$ex->save()){ throw new \Exception('1'); } } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50028,$exception->getMessage()); } } /**查看货物**/ public function look_good(Request $request){ $id=$request->id; $re=Express::where('order_id',$id)->with(['get_express'=>function($q)use($id){ $q->where('order_id',$id); },'get_order'])->orderByDesc('number')->groupBy('number')->get(); $count=Express::where('order_id',$id)->where('is_gift',0)->sum('total'); return $this->success_list($re,'',$count); } /* * 货物详情 * **/ public function good_detail(Request $request){ $re=ExpressStorage::where('express_id',$request->id)->groupBy('type')->get(); $datas=Goodtest::where('is_deleted',0)->where('id','>',57)->groupBy('main_attr')->get(); foreach ($datas as $k=>$v){ $r[$v->main_attr]=$v->main_img; } $data=[ 'hard'=>['spec'=>[],'imgurl'=>$r['大卫博士精装版'],'name'=>'大卫博士精装版'], 'simple'=>['spec'=>[],'imgurl'=>$r['大卫博士简约版'],'name'=>'大卫博士简约版'], 'old'=>['spec'=>[],'imgurl'=>$r['大卫博士高腰版'],'name'=>'大卫博士高腰版'], 'new_old'=>['spec'=>[],'imgurl'=>$r['大卫博士纯棉老人版'],'name'=>'大卫博士纯棉老人版'], 'youth'=>['spec'=>[],'imgurl'=>$r['大卫博士青春版'],'name'=>'大卫博士青春版'], ]; foreach ($re as $k=>$v){ $res=ExpressStorage::where('express_id',$request->id)->where('type',$v->type)->select('size','sex','type','num')->get()->toArray(); if ($v->type==0){ $data['hard']['spec']=$res; }elseif ($v->type==1){ $data['simple']['spec']=$res; }elseif ($v->type==2){ $data['old']['spec']=$res; }elseif(($v->type==3)){ $data['new_old']['spec']=$res; }elseif(($v->type==4)){ $data['youth']['spec']=$res; } } return $this->success($data); } /*** * 上传赠品 */ public function UploadOrderGifts(Request $request){ $file = $request->file('file'); if ( !$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $one = array_shift($array[0]); $order_num_key=array_search('订单编号',$one); if (!is_numeric($order_num_key)){ return $this->error(50024,'表格中不含有 “订单编号”这个表头'); } $express_com_key=array_search('快递公司',$one); if (!is_numeric($express_com_key)){ return $this->error(50024,'表格中不含有 “快递公司”这个表头'); } $express_num_key=array_search('快递单号',$one); if (!is_numeric($express_num_key)){ return $this->error(50024,'表格中不含有 “快递单号”这个表头'); } $express_code_key=array_search('快递公司代码',$one); if (!is_numeric($express_code_key)){ return $this->error(50024,'表格中不含有 “快递公司代码”这个表头'); } $remark_key=array_search('备注',$one); if (!is_numeric($remark_key)){ return $this->error(50024,'表格中不含有 “备注”这个表头'); } $order_num_arr=array_column($array[0],$order_num_key); $express_com_arr=array_column($array[0],$express_com_key); $express_num_arr=array_column($array[0],$express_num_key); $express_code_arr=array_column($array[0],$express_code_key); $remark_arr=array_column($array[0],$remark_key); if (is_numeric(array_search("",$order_num_arr))||is_numeric(array_search("",$express_com_arr))||is_numeric(array_search("",$express_num_arr))||is_numeric(array_search("",$express_code_arr))){ return $this->error(50024,'表格中含有空值,请检查表格数据'); } $arr=array_slice($one,$remark_key+1); $gift_arr=[]; $activity_id=Activity::where('is_ing',1)->value('id'); foreach ($arr as $k=>$v){ $gift_img=Gifts::where('activity_id',$activity_id)->where('name','=',$v)->value('img'); if (!$gift_img){ return $this->error(50026,'不存在礼品'.$v); } $gift_arr[]=$gift_img; } DB::beginTransaction(); try{ foreach ($array[0] as $k=>$v){ $re=Ordertest::where('order_num',$v[$order_num_key])->first(); if (!$re){ return $this->error(50024,'不存在订单编号为:'.$v[$order_num_key].'的订单'); } $res=Express::where('express_number',$v[$express_num_key])->where('is_gift',1)->first(); if ($res){ $res->remark=$v[$remark_key]; $res->express_com=$v[$express_com_key]; $res->express_code=$v[$express_code_key]; $res->express_number=$v[$express_num_key]; $gift_a=[]; $i=0; foreach ($gift_arr as $ke=>$va){ if ($v[$remark_key+1+$ke]){ $gift_a[$i]['imgurl']=$va; $gift_a[$i]['name']=$one[$remark_key+1+$ke]; $gift_a[$i]['nums']=$v[$remark_key+1+$ke]; $i++; } } $res->notes=json_encode($gift_a); if (!$res->save()){ throw new \Exception(1); } }else{ $res=Express::where('order_id',$re->id)->orderByDesc('id')->limit(1)->first(); if ($res){ $number=$res->number; $count=$res->count+1; }else{ $number=1; $count=1; } $ex=new Express(); $ex->order_id=$re->id; $ex->total=0; $ex->status=0; $ex->number=$number; $ex->count=$count; $ex->is_gift=1; $ex->express_com=$v[$express_com_key]; $ex->express_code=$v[$express_code_key]; $ex->express_number=$v[$express_num_key]; $ex->remark=$v[$remark_key]; $gift_a=[]; $i=0; foreach ($gift_arr as $ke=>$va){ if ($v[$remark_key+1+$ke]){ $gift_a[$i]['imgurl']=$va; $gift_a[$i]['name']=$one[$remark_key+1+$ke]; $gift_a[$i]['nums']=$v[$remark_key+1+$ke]; $i++; } } $ex->user_id=$re->user_id; $ex->notes=json_encode($gift_a); if (!$ex->save()){ throw new \Exception('1'); } } } DB::commit(); return $this->success([]); }catch (\Exception $exception){ DB::rollBack(); return $this->error(50028,$exception->getMessage()); } } /**获取物流轨迹**/ public function ExpressSearch(Request $request,ExpressHandler $expressHandler){ $express=Express::find($request->id); if (!$express){ return $this->error(40011,'','该物流订单不存在'); } if ($express->status==1){ return $this->success(json_decode($express->data)); }else{ $re=$expressHandler->search($express->express_number,$express->express_code); $re=(array)$re; if ($re['State']==3){ DB::beginTransaction(); try{ $express->data=json_encode($re); $express->status=1; $express->save(); DB::commit(); }catch (\Exception $exception){ Log::error('-------物流信息保存出错--------'.$exception); DB::rollBack(); } } return $this->success($re); } } /**删除未发货的快递信息*/ public function DelExpressInfo(Request $request){ $id=$request->input('id',[]); dd($id); if (!count($id)){ return $this->error(); } foreach ($id as $k=>$v){ $express=Express::find($v); $counts=Express::where('order_id',$express->order_id)->where('id','<>',$v)->sum('total'); if ($counts>0){ Ordertest::where('id',$express->order_id)->update(['track_status'=>1]); }elseif ($counts==0){ Ordertest::where('id',$express->order_id)->update(['track_status'=>0]); } $expresss=Express::where('order_id',$express->order_id)->orderBy('id')->groupBy('number')->get(); foreach ($expresss as $ke=>$va){ $re=Express::where('order_id',$express->order_id)->where('number',$va->number)->orderBy('id')->get(); foreach ($re as $key=>$val){ Express::where('id',$val->id)->update(['count'=>$key+1]); } Express::where('order_id',$express->order_id)->where('number',$va->number)->update(['number'=>$ke+1]); } Express::destroy ($v); } return $this->success([]); } /**获取被删除的信快递息**/ public function GetDelExpressInfo(Request $request,ExpressImport $expressImport){ // $re=$request->input('type',2); $file = $request->file('file'); if (!$file->isValid()) { //判断文件是否有效 return redirect() ->back() ->withErrors('文件上传失败,请重新上传'); } $array = Excel::toArray(new ExpressImport, request()->file('file')); if(count($array)>5001){ return $this->error('450001',"单次最多导入5000条数据"); } $one = array_shift($array[0]); $express_num_key=array_search('快递单号',$one); if (!is_numeric($express_num_key)){ return $this->error(50024,'表格中不含有 “快递单号”这个表头'); } $arr=$array[0]; $data=[]; foreach ($arr as $k=>$v){ $re=Express::where('express_number',$v[0])->with(['get_order'])->get(); $data[$k]=$re; } return $this->success($data); } public function GetApplyOrder(Request $request) { $page_index=$request->input('page_index')??1; $page_size=$request->input('page_size')??20; $search_name=$request->input('search_name')??null; $apply_status=$request->input('apply_status',-1)??-1; $destroy_status=$request->input('destroy_status',-1)??-1; // $start_time=$request->input('start_time',null); // $end_time=$request->input('end_time',null); $activity_id=$request->input('activity_id',-1)??-1; $order=Ordertest::query(); if ($search_name){ $uids=User::where('level',3)->where('nickname','like',"%$search_name%")->orwhere('realname','like',"$search_name")->orwhere('mobile','like',"%$search_name%")->pluck('id'); $order->whereIn('user_id',$uids); } if ($activity_id>=0){ $activity=Activity::find($activity_id); $start_time=$activity->start_time; $end_time=$activity->end_time; if ($start_time){ $order->where('created_at','>=',$start_time); } if ($end_time){ $order->where('created_at','<=',$end_time); } } if ($apply_status>=0){ if ($apply_status==2){ $order->where('apply_status',1)->where('is_deleted',1); }else{ $order->where('apply_status',$apply_status)->where('is_deleted',0); } }else{ $order->whereNotNull('apply_status'); } if ($destroy_status>=0){ $order->where('destroy_status',$destroy_status); }else{ $order->whereNotNull('destroy_status'); } $count=$order->count(); $list=$order->with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','remark_name as nickname','realname','warea_id'); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id'])->orderByDesc('apply_time')->take($page_size)->skip(($page_index-1)*$page_size)->get(); return $this->success_list($list,'',$count); } /***审核通过**/ public function UpdateApplyStatus(Request $request) { $status=$request->input('status',0); $id=$request->input('id',0); if (!$status){ return $this->error('500214','状态不正确'); } $order=Ordertest::find($id); //没有通过审核 if ($status==2){ $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; $order_count=Ordertest::where('address_id',$order->address_id)->where('is_deleted',0)->where('id','<>',$id)->whereBetween('created_at',[$start_time,$end_time])->count(); if ($order_count==1){ $order_new=Ordertest::where('address_id',$order->address_id)->where('is_deleted',0)->where('id','<>',$id)->whereBetween('created_at',[$start_time,$end_time])->first(); $main=$order->order_num; $master_num=$order->order_num; $slave_num=$order_new->order_num; $remark='申请作废订单未通过,已和订单编号为'.$order_new->order_num.'的订单进行合并'; // return $this->error(); $re=$this->mergeOrderNew($main, $master_num, $slave_num, $remark); if ($re=='success'){ $order->apply_status=0; $order->destroy_status=2; $order->reject_cause=$request->input('reject_cause',''); $order->save(); return $this->success([]); }else{ return $this->error(50214,$re); } }elseif ($order_count==0){ $order->apply_status=0; $order->destroy_status=2; $order->reject_cause=$request->input('reject_cause',''); $order->save(); return $this->success([]); }else{ return $this->error('50021','订单数量不对,请联系开发人员',$order_count); } }else{ $order->destroy_status=1; $order->save(); return $this->success([]); } } public function mergeOrderNew($main, $master_num, $slave_num, $remark){ if($master_num!=$main){ $master_num=$slave_num; $slave_num=$master_num; } $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $activity_id=$activity->id; $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Ordertest::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); if(empty($master_order)){ return '主订单信息有误,请核对后再合并'; } if(!in_array($master_order->status,[0,1,2])){ return '主订单状态不符,不能合并'; } $slave_order=Ordertest::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); // dd($slave_order); if(empty($slave_order)){ return '非主订单信息有误,请核对后再合并'; } if(!in_array($slave_order->status,[0,1,2])){ return '非主订单状态不符,不能合并'; } if($master_order->user_id!=$slave_order->user_id){ return '下单人信息不一致,不能合并'; } //原订单金额和数量 $origin_money=$master_order->money; $origin_total=$master_order->total; $master_order->total+=$slave_order->total; $master_order->money+=$slave_order->money; $master_order->pay_money+=$slave_order->pay_money; $master_order->no_pay_money+=$slave_order->no_pay_money; $master_order->wait_back_money+=$slave_order->wait_back_money; if($master_order->money==$master_order->pay_money){ $master_order->pay_status=2; }elseif($master_order->money>$master_order->pay_money){ if($master_order->pay_money==0){ $master_order->pay_status=0; }else{ $master_order->pay_status=1; } }elseif($master_order->money<$master_order->pay_money){ $master_order->pay_status=3; } $master_order->is_merge=1; $master_order->status=0; //合并订单2详情 $slave_detail=Orderdetail::where('order_id',$slave_order->id)->get(); DB::beginTransaction(); try{ $goods_log=''; foreach($slave_detail as $key=>$val){ if(empty($goods_log)){ $goods_log='商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; }else{ $goods_log.=',商品'.$val->goods_name.'('.$val->goods_size.'),数量为'.$val->num; } $master_detail=Orderdetail::where('order_id',$master_order->id) ->where('goods_id',$val->goods_id) ->where('goods_size',$val->goods_size)->first(); if($master_detail){ $master_detail->num+=$val->num; $master_detail->money+=$val->money; $master_detail->save(); }else{ Orderdetail::create([ 'order_id'=>$master_order->id, 'goods_id'=>$val->goods_id, 'num'=>$val->num, 'money'=>$val->money, 'remark'=>$val->remark, 'goods_name'=>$val->goods_name, 'goods_size'=>$val->goods_size, 'goods_price'=>$val->goods_price, 'goods_unit'=>$val->goods_unit ]); } } $master_detail_after=Orderdetail::where('order_id',$master_order->id)->get(); $master_order->type=count($master_detail_after); $master_order->save(); //支付记录转移到主订单 Userpay::where('order_num',$slave_num)->update([ 'order_num'=>$master_num ]); if($master_order->address_id!=$slave_order->address_id){ Address::where('id',$slave_order->address_id)->update(['is_deleted'=>1]); } // Ordertest::where('order_num',$slave_num)->delete(); Ordertest::where('order_num',$slave_num)->update(['is_deleted'=>1]); $log_text='后台合并了订单,原订单总金额为'.$origin_money.',商品数量为'.$origin_total.'。合并后订单金额为'.$master_order->money.',合并后商品数量为'.$master_order->total.',添加订单包含:'.$goods_log; OrderLog::create([ 'order_id'=>$master_order->id, 'user_id'=>$master_order->user_id, 'log_name'=>'test123', 'log_title'=>'合并订单', 'log_text'=>$log_text ]); if (!empty($remark)){ OrderRemark::create([ 'order_id' => $master_order->id, 'name' =>'test123', 'level' => null, 'type' => 0, 'remark' => $remark ]); } $num_gift=0; foreach($master_detail_after as $key=>$val){ if($val->goods_unit=='套'){ $num_gift+=$val['num']; } if($val->goods_unit=='件'){ $num_gift+=$val['num']*2; } } $order_gift=OrderGift::where('order_id',$master_order->id)->first(); if($order_gift){ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val){ $og=OrderGift::where('gift_id',$val->id)->where('order_id',$master_order->id)->first(); if($og){ if($num_gift >= $val->limit_num){ $og->num=floor($num_gift/$val->num); $og->save(); }else{ $og->delete(); } }else{ if($num_gift >= $val->limit_num) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } } }else{ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val) { if($num_gift >= $val->limit_num) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } } $user=User::where('id',$master_order->user_id)->first(); if($user->openid){ $goodsInfo=''; foreach($slave_detail as $key => $val){ if($key<=2){ if(empty($goodsInfo)){ $goodsInfo='添加'.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; }else{ $goodsInfo.=','.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; } }elseif($key==3){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$master_num.'与'.$slave_num.'合并成功,保留订单:'.$master_num.'作废订单:'.$slave_num, 'keyword1' => $goodsInfo, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); $user_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('money'); $user_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('pay_money'); $user_no_pay_money=Ordertest::where('user_id',$user->id)->whereBetween('created_at',[$start_time,$end_time])->whereIn('pay_status',[0,1,2,3])->where('is_deleted',0)->where('is_back',0)->sum('no_pay_money'); $me['openid']=$user->openid; $me['data']=[ 'first' => '您在本次活动中提交的订单未支付完成,请及时付款', 'keyword1' => number_format($user_money,2), 'keyword2' => number_format($user_pay_money,2), 'keyword3' => number_format($user_no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new NPI($me)); } /* * 处理订单 * **/ $arr=Orderdetail::where('order_id',$slave_order->id)->pluck('num','goods_id')->toArray(); $sizes_arr=array_keys($arr); $nums_arr=array_values($arr); $arr_one=$this->DealOrder($sizes_arr,$nums_arr); /* * 处理订单 * **/ $mas_arr=Orderdetail::where('order_id',$master_order->id)->pluck('num','goods_id')->toArray(); $mas_size_arr=array_keys($mas_arr); $mas_nums_arr=array_values($mas_arr); // $arr_two=$this->DealOrder($mas_size_arr,$mas_nums_arr); $order=Ordertest::find($master_order->id); $all_arr=array_merge(json_decode($order->arr_json),$arr_one); $order->arr_json=json_encode($all_arr); $order->save(); DB::commit(); return 'success'; }catch(Exception $e){ DB::rollBack(); Log::error($e); return $e->getMessage(); } } public function GetApplyCount(){ $active=Activity::where('is_ing',1)->first(); $count=Ordertest::where('is_deleted',0)->whereBetween('created_at',[$active->start_time,$active->end_time])->where('destroy_status',0)->count(); return $this->success(['count'=>$count]); } /**批量标记*/ public function BatchAddTag(Request $request){ $input=$request->all(); $user_id=$input['user_id']; $money=$input['money']; $type=$input['type']; $activity_id=$input['activity_id']; foreach ($money as $k=>$v){ $user=ListTag::where('user_id',$user_id[$k])->where('activity_id',$activity_id)->where('type',$type)->first(); if(!$user){ ListTag::create([ 'user_id'=>$user_id[$k], 'money'=>$v, 'type'=>$type, 'activity_id'=>$activity_id ]); } } return $this->success([]); } public function Getarr(Request $request){ $user=User::select('users.id','users.remark_name as nickname','users.realname','users.remark_name as name', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', 'order_test.user_id', '=', 'users.id'); $activity_id=17; // $user->leftJoin('gift_user_img',function ($join) use ($activity_id){ // $join->on('users.id','=','gift_user_img.user_id') // ->where('gift_user_img.activity_id',$activity_id) //// ->where('gift_user_img.img_type',1) // ->where('gift_user_img.type',1); // }); $user->where('order_test.is_deleted',0) ->where('order_test.user_id',24676) ->where('order_test.created_at','>','2021-12-27 22:00:00') ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $list=$user->get(); return $this->success($list); } //订单拆分快递单(非活动拆单) public function orderBreakUpCourier(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if ($request->has('provice')) { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province = $input['provice']; $city = $input['city']; $town = $input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','users.warea_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname','users.remark_name as u_name', 'users.mobile as u_mobile', 'users.realname as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { // $data->where('order_test.activity_id', $activity_id); $actice=Activity::find($activity_id); $data->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('order_test.user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('order_test.address_id', $address_ids); } if ($province && $province != '省') { $province_ids = $this->getProvinceIds($province); $data->whereIn('order_test.address_id', $province_ids); } if ($city && $city != '市') { $city_ids = $this->getCityIds($city); $data->whereIn('order_test.address_id', $city_ids); } if ($town && $town != '区') { $town_ids = $this->getAreaIds($town); $data->whereIn('order_test.address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('order_test.id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('order_test.status', $order_status)->where('order_test.is_deleted', 0); } else { $data->where('order_test.is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('order_test.is_deleted', 0) ->whereIn('order_test.status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('order_test.pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_test.order_type', $order_type); } $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('id')) { $list = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at','order_test.good_user_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts') ->whereIn('order_test.id', $request->id) ->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('order_no')) { $order_no = $input['order_no']; } else { $order_no = ''; } $start_time = $input['start_time'] ?? ''; $end_time = $input['end_time'] ?? ''; $activity_id = $input['activity_id'] ?? ''; $search_name = $input['search_name'] ?? ''; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','order_test.id','users.warea_id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('order_test.is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('order_test.is_deleted', 1); } elseif ($order_status == 0) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 1) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 2) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 3) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 4) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('order_test.pay_status', [0, 1])->where('order_test.order_test.is_deleted', 0); } } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_test.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('order_test.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('order_test.created_at', [$actice->start_time, $actice->end_time]); } // $list = $data->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } } $re=collect($list) ->groupBy('order_num') ->map(function ($item) { return $item->toArray(); }); $dd=[]; foreach ($re as $k=>$v){ $last_names = array_column($v,'rank'); $last_namess = array_column($v,'sorts'); array_multisort($last_names,SORT_ASC,$last_namess,SORT_ASC,$v); $dd[$k]=$v; } // return $this->success($arrs); // $newArr = []; // $arr=[]; // foreach ($list as $k => $val) { //数据根据日期分组 // $newArr[$val['order_num']][] = $val; // } // return $this->success_list($newArr,'','',$arr); // $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $info['u_nickname'] = $val[0]['u_name']; $info['u_name'] = $val[0]['u_realname']; $info['u_mobile'] = $val[0]['u_mobile']; $info['username'] = $val[0]['username']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['pay_status'] = $val[0]['pay_status']; $info['status'] = $val[0]['status']; $info['is_deleted'] = $val[0]['is_deleted']; if ($val[0]['is_deleted']==1){ $info['status'] = $this->judge_status(5); }else{ $info['status'] = $this->judge_status($val[0]['status']); } $info['pay_status'] = $this->judge_pay_status($val[0]['pay_status']); $info['store']=''; if ( $val[0]['store_id']){ $info['store'] ='体验店订单'; }else{ if ( $val[0]['is_car']){ $info['store'] ='专车'; } }; $info['peijian']=$this->DelNum($val[0]['id']); // if ($val[0]['good_user_id']){ // $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','realname')->first(); // if ($gooduser){ // $info['belong']='('.$gooduser->realname.mb_substr($gooduser->mobile,7,4).')'; // }else{ // $info['belong']=''; // } // // }else{ $info['belong']=''; // } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data'] = $info; $d[$key]['精装'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['普通混合'] = []; $x1 = 0; $y1 = [];//精装 $x = 0; $y = [];//普通 foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精装版'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 12 > 0) { $t1 = $v['total'] % 12; if ($x1 + $t1 >= 12) { $x1 = $x1 + $t1 - 12; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $t1 - $x1; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); $z1 = []; array_push($d[$key]['精装混合'], $y1); $y1 = []; if ($x1 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $x1; array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } else { $x1 += $t1; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $v['total'] % 12; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; } elseif($v['main_attr']=='大卫博士纯棉老人版') { $main_attr = '棉'; }else{ $main_attr='青春'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; array_push($d[$key]['普通'], $cc); } if ($v['total'] % 6 > 0) { $t = $v['total'] % 6; if ($x + $t >= 6) { $x = $x + $t - 6; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $t - $x; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); $z = []; array_push($d[$key]['普通混合'], $y); $y = []; if ($x > 0) { $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $x; array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } else { $x += $t; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total'] % 6; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } } } } return $this->success($d); } //活动拆单 public function chaidan(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if ($request->has('provice')) { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province = $input['provice']; $city = $input['city']; $town = $input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','users.warea_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname','users.remark_name as u_name', 'users.mobile as u_mobile', 'users.realname as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { // $data->where('order_test.activity_id', $activity_id); $actice=Activity::find($activity_id); $data->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('order_test.user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('order_test.address_id', $address_ids); } if ($province && $province != '省') { $province_ids = $this->getProvinceIds($province); $data->whereIn('order_test.address_id', $province_ids); } if ($city && $city != '市') { $city_ids = $this->getCityIds($city); $data->whereIn('order_test.address_id', $city_ids); } if ($town && $town != '区') { $town_ids = $this->getAreaIds($town); $data->whereIn('order_test.address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('order_test.id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('order_test.status', $order_status)->where('order_test.is_deleted', 0); } else { $data->where('order_test.is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('order_test.is_deleted', 0) ->whereIn('order_test.status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('order_test.pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_test.order_type', $order_type); } $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('id')) { $list = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at','order_test.good_user_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts') ->whereIn('order_test.id', $request->id) ->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('order_no')) { $order_no = $input['order_no']; } else { $order_no = ''; } $start_time = $input['start_time'] ?? ''; $end_time = $input['end_time'] ?? ''; $activity_id = $input['activity_id'] ?? ''; $search_name = $input['search_name'] ?? ''; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','order_test.id','users.warea_id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('order_test.is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('order_test.is_deleted', 1); } elseif ($order_status == 0) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 1) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 2) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 3) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 4) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('order_test.pay_status', [0, 1])->where('order_test.order_test.is_deleted', 0); } } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_test.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('order_test.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('order_test.created_at', [$actice->start_time, $actice->end_time]); } // $list = $data->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } } $re=collect($list) ->groupBy('order_num') ->map(function ($item) { return $item->toArray(); }); $dd=[]; foreach ($re as $k=>$v){ $last_names = array_column($v,'rank'); $last_namess = array_column($v,'sorts'); array_multisort($last_names,SORT_ASC,$last_namess,SORT_ASC,$v); $dd[$k]=$v; } // return $this->success($arrs); // $newArr = []; // $arr=[]; // foreach ($list as $k => $val) { //数据根据日期分组 // $newArr[$val['order_num']][] = $val; // } // return $this->success_list($newArr,'','',$arr); // $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $info['u_nickname'] = $val[0]['u_name']; $info['u_name'] = $val[0]['u_realname']; $info['u_mobile'] = $val[0]['u_mobile']; $info['username'] = $val[0]['username']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['pay_status'] = $val[0]['pay_status']; $info['status'] = $val[0]['status']; $info['is_deleted'] = $val[0]['is_deleted']; if ($val[0]['is_deleted']==1){ $info['status'] = $this->judge_status(5); }else{ $info['status'] = $this->judge_status($val[0]['status']); } $info['pay_status'] = $this->judge_pay_status($val[0]['pay_status']); $info['store']=''; if ( $val[0]['store_id']){ $info['store'] ='体验店订单'; }else{ if ( $val[0]['is_car']){ $info['store'] ='专车'; } }; $info['peijian']=$this->DelNum($val[0]['id']); // if ($val[0]['good_user_id']){ // $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','realname')->first(); // if ($gooduser){ // $info['belong']='('.$gooduser->realname.mb_substr($gooduser->mobile,7,4).')'; // }else{ // $info['belong']=''; // } // // }else{ $info['belong']=''; // } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data'] = $info; $d[$key]['精装'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['普通混合'] = []; $x1 = 0; $y1 = [];//精装 $x = 0; $y = [];//普通 // return $this->success($val); foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精装版'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 12 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] =$v['total'] % 12; array_push($d[$key]['精装'], $z1); } } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; } elseif($v['main_attr']=='大卫博士纯棉老人版') { $main_attr = '棉'; }else{ $main_attr='青春'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; array_push($d[$key]['普通'], $cc); } if ($v['total'] % 6 > 0) { $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total'] % 6; array_push($d[$key]['普通'], $z); } } } } return $this->success($d); } //活动拆单(新) public function chaidans(Request $request) { ini_set('memory_limit', '4096M'); $input = $request->all(); if ($request->has('provice')) { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $user_name = $input['user_name']; $receive_info = $input['receive_info']; $goods_info = $input['goods_info']; $province = $input['provice']; $city = $input['city']; $town = $input['area']; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($request->has('pay_status')) { $pay_status = $input['pay_status']; } else { $pay_status = []; } $order_type = $input['order_type']; $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','users.warea_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname','users.remark_name as u_name', 'users.mobile as u_mobile', 'users.realname as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { // $data->where('order_test.activity_id', $activity_id); $actice=Activity::find($activity_id); $data->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('order_test.user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $data->whereIn('order_test.address_id', $address_ids); } if ($province && $province != '省') { $province_ids = $this->getProvinceIds($province); $data->whereIn('order_test.address_id', $province_ids); } if ($city && $city != '市') { $city_ids = $this->getCityIds($city); $data->whereIn('order_test.address_id', $city_ids); } if ($town && $town != '区') { $town_ids = $this->getAreaIds($town); $data->whereIn('order_test.address_id', $town_ids); } //商品信息 if ($goods_info) { $order_ids = $this->getGoodsOrderIds($goods_info); $data->whereIn('order_test.id', $order_ids); } if ($order_status) { if (!in_array('-1', $order_status)) { if (!in_array('5', $order_status)) { $data->whereIn('order_test.status', $order_status)->where('order_test.is_deleted', 0); } else { $data->where('order_test.is_deleted', 1) ->orWhere(function ($query) use ($order_status) { $query->where('order_test.is_deleted', 0) ->whereIn('order_test.status', $order_status); }); } } } if ($pay_status) { if (!in_array('-1', $pay_status)) { $data->whereIn('order_test.pay_status', $pay_status); } } if (in_array($order_type, [0, 1])) { $data->where('order_test.order_type', $order_type); } $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('id')) { $list = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at','order_test.good_user_id','order_test.id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts') ->whereIn('order_test.id', $request->id) ->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { if ($request->has('order_no')) { $order_no = $input['order_no']; } else { $order_no = ''; } $start_time = $input['start_time'] ?? ''; $end_time = $input['end_time'] ?? ''; $activity_id = $input['activity_id'] ?? ''; $search_name = $input['search_name'] ?? ''; if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.is_car','order_test.status','order_test.pay_status','order_test.is_deleted','order_test.store_id','order_test.created_at', 'order_test.good_user_id','order_test.id','users.warea_id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.remark_name as u_name', 'users.name as u_realname', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total'),'goods_test.attr_id as rank','goods_test.id as sorts'); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('order_test.is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('order_test.is_deleted', 1); } elseif ($order_status == 0) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 1) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 2) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 3) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 4) { $data->where('order_test.status', $order_status)->where('order_test.is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('order_test.pay_status', [0, 1])->where('order_test.order_test.is_deleted', 0); } } if ($order_no) { $data->where('order_test.order_num', $order_no); } if ($search_name) { // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_test.order_num',trim($search_name)); // }else{ $ids = $this->getUserIds($search_name); $data->whereIn('order_test.user_id', $ids); // } } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if ($activity_id) { $actice = Activity::find($activity_id); $data->whereBetween('order_test.created_at', [$actice->start_time, $actice->end_time]); } // $list = $data->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') $list = $data->groupBy('order_detail.order_id', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } } $re=collect($list) ->groupBy('order_num') ->map(function ($item) { return $item->toArray(); }); $dd=[]; foreach ($re as $k=>$v){ $last_names = array_column($v,'rank'); $last_namess = array_column($v,'sorts'); array_multisort($last_names,SORT_ASC,$last_namess,SORT_ASC,$v); $dd[$k]=$v; } // return $this->success($arrs); // $newArr = []; // $arr=[]; // foreach ($list as $k => $val) { //数据根据日期分组 // $newArr[$val['order_num']][] = $val; // } // return $this->success_list($newArr,'','',$arr); // $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $info['u_nickname'] = $val[0]['u_name']; $info['u_name'] = $val[0]['u_realname']; $info['u_mobile'] = $val[0]['u_mobile']; $info['username'] = $val[0]['username']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['pay_status'] = $val[0]['pay_status']; $info['status'] = $val[0]['status']; $info['is_deleted'] = $val[0]['is_deleted']; if ($val[0]['is_deleted']==1){ $info['status'] = $this->judge_status(5); }else{ $info['status'] = $this->judge_status($val[0]['status']); } $info['pay_status'] = $this->judge_pay_status($val[0]['pay_status']); $info['store']=''; if ( $val[0]['store_id']){ $info['store'] ='体验店订单'; }else{ if ( $val[0]['is_car']){ $info['store'] ='专车'; } }; $info['peijian']=$this->DelNum($val[0]['id']); // if ($val[0]['good_user_id']){ // $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','realname')->first(); // if ($gooduser){ // $info['belong']='('.$gooduser->realname.mb_substr($gooduser->mobile,7,4).')'; // }else{ // $info['belong']=''; // } // // }else{ $info['belong']=''; // } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data'] = $info; $d[$key]['精装'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['普通混合'] = []; $x1 = 0; $y1 = [];//精装 $x = 0; $y = [];//普通 // return $this->success($val); foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精装版'; $n = floor($v['total'] / 12); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 12; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 12 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] =$v['total'] % 12; array_push($d[$key]['精装混合'], $z1); } } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; } elseif($v['main_attr']=='大卫博士纯棉老人版') { $main_attr = '棉'; }else{ $main_attr='青春'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; array_push($d[$key]['普通'], $cc); } if ($v['total'] % 6 > 0) { $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total'] % 6; array_push($d[$key]['普通混合'], $z); } } } } return $this->success($d); } //体验店导出拆单明细 public function orderStoreBreakUpCourier(Request $request) { ini_set('memory_limit', '1024M'); $input = $request->all(); if (!$request->has('id')) { $page_index = $input['page_index']; $page_size = $input['page_size']; $num = ($page_index - 1) * $page_size; $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $search_name = $input['search_name']; $activity_id = $input['activity_id']; $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.created_at', 'order_test.good_user_id','users.warea_id','order_test.id','order_test.store_id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total')); $admin = Auth::user(); if ($admin->role_id == 23) { $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id'); $data->whereIn('users.warea_id', $warea_ids); } if ($order_no) { $data->where('order_test.order_num', 'like','%'.$order_no.'%'); } if ($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('order_test.user_id', $ids); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('order_test.created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); } if ($request->store_id){ $data->where('order_test.store_id',$request->store_id); } $data->whereNotNull('order_test.store_id'); $list = $data->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } else { $list = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') // ->join('warea','warea.id','=','users.warea_id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id') ->select('order_test.order_num','order_test.created_at', 'order_test.good_user_id','order_test.id','order_test.store_id', 'order_test.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'goods_test.main_attr', 'goods_test.sec_attr', 'goods_test.size', DB::raw('SUM(order_detail.num) as total')) ->whereIn('order_test.id', $request->id) ->groupBy('order_detail.order_id', 'goods_test.sec_attr', 'goods_test.size', 'goods_test.main_attr') ->orderBy('order_test.id', 'order_detail.id') ->get()->toArray(); } $dd = $this->dataGroup($list, 'order_num'); $d = []; foreach ($dd as $key => $val) { $info['gift'] = OrderGift::leftJoin('gifts', 'order_gift.gift_id', '=', 'gifts.id') ->where('order_gift.order_id', $val[0]['id']) ->where('order_gift.num', '>', '0') ->select('gifts.name', 'order_gift.num')->get(); $info['u_nickname'] = $val[0]['u_nickname']; $info['u_name'] = $val[0]['u_name']; $info['u_mobile'] = $val[0]['u_mobile']; $info['username'] = $val[0]['username']; $info['mobile'] = $val[0]['mobile']; $info['address'] = $val[0]['address']; $info['province'] = $val[0]['province']; $info['city'] = $val[0]['city']; $info['town'] = $val[0]['town']; $info['get_store'] =Store::where('id',$val[0]['store_id'])->select('name')->first(); if ($val[0]['good_user_id']){ $gooduser=User::where('id',$val[0]['good_user_id'])->select('mobile','nickname')->first(); $info['belong']='('.$gooduser->nickname.','.$gooduser->mobile.')'; }else{ $info['belong']=''; } $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name'); $info['admin_name'] =$admin_name; $info['created_at'] = $val[0]['created_at']; // $info['remark'] = (string)$val[0]['remark']; $info['remark'] = $this->getOrderRemark($val[0]['id']); $d[$key]['data'] = $info; $d[$key]['精装'] = []; $d[$key]['普通'] = []; $d[$key]['精装混合'] = []; $d[$key]['普通混合'] = []; $x1 = 0; $y1 = [];//精装 $x = 0; $y = [];//普通 foreach ($val as $k => $v) { if ($v['main_attr'] == '大卫博士精装版') { $main_attr = '精'; $n = floor($v['total'] / 10); for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 10; array_push($d[$key]['精装'], $cc); } if ($v['total'] % 10 > 0) { $t1 = $v['total'] % 10; if ($x1 + $t1 >= 10) { $x1 = $x1 + $t1 - 10; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $t1 - $x1; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); $z1 = []; array_push($d[$key]['精装混合'], $y1); $y1 = []; if ($x1 > 0) { $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $x1; array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } else { $x1 += $t1; $z1['main_attr'] = $main_attr; $z1['sec_attr'] = $v['sec_attr']; $z1['size'] = $v['size']; $z1['num'] = $v['total'] % 10; if ($y1) { array_pop($d[$key]['精装混合']); } array_push($y1, $z1); array_push($d[$key]['精装混合'], $y1); } } } else { $n = floor($v['total'] / 6); if ($v['main_attr'] == '大卫博士高腰版') { $main_attr = '高'; } elseif ($v['main_attr'] == '大卫博士简约版') { $main_attr = '简'; }elseif ($v['main_attr'] == '大卫博士青春版') { $main_attr = '青'; } else { $main_attr = '棉'; } for ($i = 0; $i < $n; $i++) { $cc = []; $cc['main_attr'] = $main_attr; $cc['sec_attr'] = $v['sec_attr']; $cc['size'] = $v['size']; $cc['num'] = 6; array_push($d[$key]['普通'], $cc); } if ($v['total'] % 6 > 0) { $t = $v['total'] % 6; if ($x + $t >= 6) { $x = $x + $t - 6; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $t - $x; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); $z = []; array_push($d[$key]['普通混合'], $y); $y = []; if ($x > 0) { $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $x; array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } else { $x += $t; $z['main_attr'] = $main_attr; $z['sec_attr'] = $v['sec_attr']; $z['size'] = $v['size']; $z['num'] = $v['total'] % 6; if ($y) { array_pop($d[$key]['普通混合']); } array_push($y, $z); array_push($d[$key]['普通混合'], $y); } } } } } return $this->success($d); } //获取合并订单 public function getMergerOrder(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $num=$page_size*($page_index-1); $activity_id=$input['activity_id']; $search_name=$input['search_name']; $activity=Activity::where('id',$activity_id)->first(); $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id'); if($search_name){ $address_ids=Address::where(function($query) use ($search_name){ $query->where('username','like','%'.$search_name.'%') ->orWhere('mobile',$search_name); })->pluck('id'); $data->whereIn('order_test.address_id',$address_ids); } $list=$data->whereBetween('order_test.created_at',[$activity->start_time, $activity->end_time]) ->where('order_test.is_deleted',0) ->select('users.id as u_id','users.nickname as u_nickname', 'users.mobile as u_mobile', 'users.realname as u_name', 'address.id as address_id','address.username', 'address.mobile', 'address.address', 'address.province', 'address.city','address.town', 'goods_test.unit',DB::raw('SUM(order_detail.num) as total')) ->groupBy('order_test.address_id','order_test.user_id','goods_test.unit') ->orderBy('order_test.created_at') ->get(); $array=[]; foreach($list as $key => $val){ $keys=$val->address_id.'-'.$val->u_id; $array[$keys]['name']=$val->username; $array[$keys]['mobile']=$val->mobile; $array[$keys]['address']=$val->address; $array[$keys]['address_id']=$val->address_id; $array[$keys]['user_id']=$val->u_id; $array[$keys]['province']=$val->province; $array[$keys]['city']=$val->city; $array[$keys]['town']=$val->town; $array[$keys]['u_nickname']=$val->u_nickname; $array[$keys]['u_mobile']=$val->u_mobile; $array[$keys]['u_name']=$val->u_name; if($val->unit=='套'){ if(empty($array[$keys]['num'])){ $array[$keys]['num']=$val->total; }else{ $array[$keys]['num']+=$val->total; } }elseif($val->unit=='件'){ if(empty($array[$keys]['num'])){ $array[$keys]['num']=$val->total*2; }else{ $array[$keys]['num']+=$val->total*2; } } } $gifts=Gifts::where('activity_id',$activity_id)->get(); foreach($array as $key=>$val){ $arr=[]; foreach($gifts as $k => $v){ if(floor($val['num']/$v->num)>0){ $arr[]=$v->name.'*'.floor($val['num']/$v->num); } $array[$key]['gift']=implode(',',$arr); } } $count=count($array); return $this->success_list(array_slice($array,$num,$page_size),'成功',$count); } //导出合并订单 public function exportMergerOrder(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $search_name=$input['search_name']; $activity=Activity::where('id',$activity_id)->first(); $data = Ordertest::leftJoin('order_detail', 'order_test.id', '=', 'order_detail.order_id') ->leftJoin('users', 'order_test.user_id', '=', 'users.id') ->leftJoin('goods_test', 'goods_test.id', '=', 'order_detail.goods_id') ->leftJoin('address', 'address.id', '=', 'order_test.address_id'); if($search_name){ $address_ids=Address::where(function($query) use ($search_name){ $query->where('username','like','%'.$search_name.'%') ->orWhere('mobile',$search_name); })->pluck('id'); $data->whereIn('order_test.address_id',$address_ids); } $list=$data->whereBetween('order_test.created_at',[$activity->start_time, $activity->end_time]) ->where('order_test.is_deleted',0) ->select('users.id as u_id','users.nickname as u_nickname', 'users.mobile as u_mobile', 'users.realname as u_name', 'address.id as address_id','address.username', 'address.mobile', 'address.address', 'address.province', 'address.city','address.town', 'order_test.order_num', 'goods_test.unit','goods_test.name','goods_test.main_attr','goods_test.sec_attr','goods_test.size', DB::raw('SUM(order_detail.num) as total')) ->groupBy('order_test.address_id','order_test.user_id','order_test.order_num','goods_test.unit','goods_test.main_attr','goods_test.sec_attr','goods_test.size') ->orderBy('order_test.created_at') ->get(); // dd($list); $array=[]; foreach($list as $key => $val){ $keys=$val->address_id.'-'.$val->u_id; $array[$keys]['name']=$val->username; $array[$keys]['mobile']=$val->mobile; $array[$keys]['address']=$val->address; $array[$keys]['address_id']=$val->address_id; $array[$keys]['user_id']=$val->u_id; $array[$keys]['province']=$val->province; $array[$keys]['city']=$val->city; $array[$keys]['town']=$val->town; $array[$keys]['u_nickname']=$val->u_nickname; $array[$keys]['u_mobile']=$val->u_mobile; $array[$keys]['u_name']=$val->u_name; $array[$keys]['goods'][$val->order_num][]=$val->name.'-'.$val->sec_attr.'-'.$val->size.'*'.$val->total; // $array[$keys]['goods'][$val->order_num][]=[$val->name.$val->size,$val->name,$val->size,$val->sec_attr,$val->total]; if($val->unit=='套'){ if(empty($array[$keys]['num'])){ $array[$keys]['num']=$val->total; }else{ $array[$keys]['num']+=$val->total; } }elseif($val->unit=='件'){ if(empty($array[$keys]['num'])){ $array[$keys]['num']=$val->total*2; }else{ $array[$keys]['num']+=$val->total*2; } } } $gifts=Gifts::where('activity_id',$activity_id)->get(); foreach($array as $key=>$val){ $array[$key]['shouhuan']=0; $array[$key]['xianglian']=0; $arr=[]; foreach($gifts as $k => $v){ if(floor($val['num']/$v->num)>0){ if ($v->name=='手环'||$v->name=='赠品-手环'){ $array[$key]['shouhuan']=floor($val['num']/$v->num); } if ($v->name=='项链'||$v->name=='赠品-项链'){ $array[$key]['xianglian']=floor($val['num']/$v->num); } $arr[]=$v->name.'*'.floor($val['num']/$v->num); } $array[$key]['gift']=implode(',',$arr); } } return $this->success($array); } }