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','realname','warea_id'); }]) ->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); }); } 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($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->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 ($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 (!empty($val->track_number)) { $list[$key]['express'] = $this->express($val->track_company, $val->track_number); } } $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 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 = $input['search_name']; $activity_id = $input['activity_id']; $search_name=[]; if ($request->has('search_name')){ $search_name = $input['search_name']; }else{ if ($request->has('user_name')){ $search_name=$input['user_name']; } } 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 ($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]); } }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); } $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 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){ // $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]); } }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 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'); },'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); }); } 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); $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 = 0; if ($exp == 1) { foreach ($list as $key => $val) { $list[$key]['remarks'] = $this->getOrderRemark($val['id']); } } return $this->success_list($list, '获取数据成功', $count); } //获取活动起止时间 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; } //获取省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'); } //<<<<<<< HEAD // //获取订单备注 // 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; // } // //======= //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab //获取代理Ids public function getUserIds($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 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','warea_id'); },'get_order_gift']) ->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); }); } 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','realname','warea_id'); },'get_order_gift']) // with(['get_user:id,nickname,mobile,realname','get_order_gift']) ->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)->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','realname','warea_id'); },'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]['体验店订单'] = $v->get_store==null?'':$v->get_store->name; $re[$i]['下单人昵称'] = $v->get_user->nickname; $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->nickname; switch ($v->get_address->level){ case 1: $re[$i]['收货人等级'] = '销售主管'; break; case 2: $re[$i]['收货人等级'] = '销售经理'; break; case 3: $re[$i]['收货人等级'] = '代理公司'; break; default: $re[$i]['收货人等级'] = null; break; } $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); $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++; } } 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) { $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',"表头无'发货状态'字段"); } $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']; $arres=[]; $o=0; foreach ($array[0] as $k=>$v){ if ($v[$express_com_keys]!='中通快运'){ $arres[$o]=$v; } } $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=[]; $arr_order=[]; foreach ($array[0] as $key => $value) { $area_list[$value[0]][] = $value; } $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++; } // Log::error($array[0]); // dd($array[0]); 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 = 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=[]; // Log::error($area_list); 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; $exp->user_id=$order->user_id; if ($val[$express_com_keys]=='中通快递'){ $exp->express_number=$this->get_number($val[$express_num_keys]); }else{ $exp->express_number = $val[$express_num_keys]; } $exp->express_com = $val[$express_com_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]; } $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{ return $this->error(50021,'尺码不对',''); } } } } 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++; }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'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$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 ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0]; $total+=$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'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1]; $total+=$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'); } if ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'老人版','ku'=>2]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'老人版','ku'=>2]; $total+=$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 ($k<=3){ $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3]; $total+=$aa; }else{ $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3]; $total+=$aa; } $l++; $count++; } if (!$re_1&&!$re_2&&!$re_3&&!$re_4){ return $this->error(522201,'尺码对应的数量信息不正确',''); } } } } $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(); } Express::insert($newArr); DB::commit(); // dispatch(new SendMessageOrderSendJob($arr_order)); SendMessageOrderSendJob::dispatch($arr_order); return $this->success([]); }catch(Exception $e){ DB::rollBack(); Log::error($e); 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', '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'])->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 $all; 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]error(50021); } }else{ if ($order_re->num<$input['num'][$k]){ $numss=$input['num'][$k]-$order_re->num; if ($numsserror(50021,$numss); } } } } } 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{ if ($order_re->num<$input['num'][$k]){ $numss=$input['num'][$k]-$order_re->num; if ($numss$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.'- 1 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 . '型号数量不足'); // } Log::error('这个记录是'.$count); $nums[]=$count; $sizes[]=$input['size_id'][$k]; $goods = Goodtest::find($v); $goods->storage = Cache::get('dwbs_good_num'.$v); $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]; $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 = $goods->storage + $orderdetail->num; $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?$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(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单修改的错误信息为' . $exception); return $this->error(40013, '订单修改出错'); } } /* * 代下单 * */ public function submit_order(Request $request) { $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::has('dwbs_good_num')){ if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){ $data=Goodtest::find($v); return $this->error(300,$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量',$data->storge); } } } 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']); $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'])) { $order->remark = $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'); } } $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; $activity_id=$input['activity_id']; // $activity=Activity::where('id',$activity_id)->first(); // $activity=Activity::where('start_time','=<',$time)->where('end_time','>',$time)->first(); if($activity_id){ $or=$this->DealOrder($input['size_id'],$input['num']); $order->arr_json=json_encode($or); $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 (!$order->save()) { Log::error('{-----订单保存出错-----}' . $user->id); throw new \Exception('订单保存出错'); } 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'); } } if($user->openid){ Log::error($user->id); $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(); foreach ($input['size_id'] as $k=>$v){ Cache::increment('dwbs_good_num'.$v,$input['num'][$k]); } 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_tmie){ $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(); $activity=Activity::where('is_ing',1)->first(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $name = Auth::user()->name; 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); // Log::error($activity); // Log::error($order->created_at); 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 ($order->pay_money - $order->money < $money) { 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, ]); 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; $address->province = $request->province; $user=User::where('mobile',$request->mobile)->first(); if ($user){ $address->belong_id=$user->id; } $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'); // } 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'); } } $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)); } 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); return $this->error('40018', '', '订单作废失败,请重试'); } } public function get_crown() { $data = User::where('level', 3)->get(); foreach ($data as $k => $v) { $re[$k]['name'] = $v->nickname . '--' . $v->mobile.'--'.$v->realname; $re[$k]['id'] = $v->id; $re[$k]['mobile'] =$v->mobile; } 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,realname']) ->where('is_deleted',0) ->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); }); } 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 ($request->has('id')){ $data = Ordertest::with(['get_user:id,nickname,realname,mobile','get_order_gift']) ->where('is_deleted',0) ->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); }); } $data->whereIn('id',$input['id']); $data->whereNotNull('store_id'); $list = $data->orderBy('id', 'desc')->get(); }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,mobile','get_order_gift']) ->where('is_deleted',0) ->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); }); } 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'); $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->nickname; $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 ($order->pay_money - $order->money == $order->wait_back_money && $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 . '订单退款信息有误'); } } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', '退款失败'); } } 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']; $big_gift='38500'; $where=[]; $wheres=[]; if($activity_id){ $big_gift=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包')->value('account'); $big_gift=$big_gift_2?$big_gift_2:$big_gift; if(empty($big_gift)){ 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]); }; } $user=User::select('users.id','list_tag.type as type','users.nickname','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',1); }) ->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$big_gift) ->orderBy('list_tag.type','asc') ->orderBy('account','desc') ->orderBy('pay_account','desc'); $count = $user->get()->count(); if($count<=0){ $this->error('450001', '暂无信息'); } $user_ids=ListTag::where('type',1)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $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_2?$honor_wall_2:$honor_wall; if(empty($honor_wall)){ 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]); }; } $user=User::select('users.id','list_tag.type as type','users.nickname','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){ $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.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']; if($type==1){ $money=38500; }else{ $money=91500; } $where=[]; $wheres=[]; if($activity_id){ if($type==1){ $big_gift=Activity::where('id',$activity_id)->value('big_gift'); $big_gift_2=ActivityLimit::where('activity_id',$activity_id)->where('title','大礼包')->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','大礼包')->value('account'); $money=$big_gift_2?$big_gift_2:$money; }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'); } } $list=User::select('users.id','list_tag.type as type','users.nickname','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 ($type,$activity_id){ $join->on('users.id','=','list_tag.user_id') ->where('list_tag.activity_id',$activity_id) ->where('list_tag.type',$type); }) ->where('order_test.is_deleted',0) ->where($where) ->where($wheres) ->groupBy('users.id') ->having('account','>=',$money) ->orderBy('type','asc') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->get(); if(count($list)<=0){ $this->error('450001', '暂无信息'); } $user_ids=ListTag::where('type',$type)->where('activity_id',$activity_id)->pluck('user_id')->toArray(); $ll=[]; foreach($list as $key=>$val){ $ll[$key]['代理昵称']=$val->nickname; $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]); }; } 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.mobile','users.nickname','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); }) ->whereIn('users.id',$user_ids) ->where('users.nickname','like','%'.$search_name.'%') ->groupBy('users.id') ->orderBy('account','desc') ->orderBy('pay_account','desc') ->orderBy('users.id','desc'); $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); }) ->whereIn('users.id',$user_ids) ->where('users.nickname','like','%'.$search_name.'%')->get(); $count=0; $list=$user->get(); $ll=[]; foreach($list as $key=>$val){ $user_id=$val->id; $uu=User::select('users.id','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.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) // ->whereIn('users.id',$user_ids) ->where('users.nickname','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; } } $ll[$key]['nickname']=$val->nickname; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $ll[$key]['pay_account']=$val->pay_account?$val->pay_account:0; $ll[$key]['no_pay_account']=$val->no_pay_account?$val->no_pay_account:0; } $dd=[ 'list'=>$ll, '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.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); }) ->whereIn('users.id',$user_ids) ->where('users.nickname','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.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) ->where('users.nickname','like','%'.$search_name.'%') ->groupBy('users.id','gt.main_attr') ->orderBy('users.id','desc') ->get(); $ll[$key]['代理昵称']=$val->nickname; $ll[$key]['代理姓名']=$val->realname; $ll[$key]['手机号']=$val->mobile; $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; } } $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; } } 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")), ]); 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(); if(empty($master_order)){ return $this->error('450001','主订单信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','主订单状态不符,不能合并'); } $slave_order=Ordertest::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); 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) { 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,$arr_two); $order->arr_json=json_encode($all_arr); $order->save(); DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); Log::error($e); 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(); if(empty($master_order)){ return $this->error('450001','订单1信息有误,请核对后再合并'); } if(!in_array($master_order->status,[0,1,2])){ return $this->error('450001','订单1状态不符,不能合并'); } $slave_order=Ordertest::where('order_num',$slave_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); 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']) ->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')) ->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'); }]) ->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')) ->orderByDesc('money') ->orderByDesc('pay_money') ->orderByDesc('no_pay_money') ->skip($num)->take($page_size) ->get(); return $this->success_list($list,'成功',$count); } //发送未支付通知 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(); 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)); } } return $this->success([]); } 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])->with(['get_user'])->where('is_deleted',0)->groupBy('user_id')->get(); foreach ($user as $ke=>$va){ $orders=Ordertest::where('user_id',$va->user_id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('is_deleted',0)->get(); $money=0; $pay_money=0; $no_pay_money=0; $wait_back_money=0; foreach ($orders as $k=>$v){ $money+=$v->money; $pay_money+=$v->pay_money; $no_pay_money+=$v->no_pay_money; $wait_back_money+=$v->wait_back_money; } if($va->get_user->openid){ if ($wait_back_money==0){ $remark='点击链接进入系统,查看详情'; }else{ $remark='其中包含需要退款的金额共'.$wait_back_money.'元。点击链接进入系统,查看详情'; } $mes['openid']=$va->get_user->openid; $mes['data']=[ 'first' => '您在'.$activity->title.'活动中下的订单支付情况如下:', 'keyword1' => number_format($money,2), 'keyword2' => number_format($pay_money,2), 'keyword3' => number_format($no_pay_money,2), 'keyword4' => date("Y-m-d H:i"), 'remark' => $remark, ]; event(new \App\Events\NoPayInfo($mes)); } } 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; $set_log->ip=$_SERVER["REMOTE_ADDR"]; 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($input['page_size'])->skip(($request->page_index-1)*$input['page_size'])->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]!='中通快运'){ $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','邮政EMS'=>'EMS']; 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 = 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(); $re->express_com=$v[$express_com]; $re->express_code=$v[$express_com_code]; $re->express_number=$v[$new_express_keys]; $re->save(); }else{ Express::where('express_number',$v[$old_express_keys])->update(['express_number'=>$v[$new_express_keys]]); } } // DB::commit(); return $this->success([]); // }catch (\Exception $exception){ // DB::rollBack(); // return $this->error(); // } } public function GetExceptionOrder(Request $request){ $input=$request->all(); $activity_id=$input['activity_id']; $page_index=$input['page_index']; $page_size=$input['page_size']; $activity=Activity::find($activity_id); $re=Ordertest::wherehas('belong_user',function($q){ $q->where('level',3); })->with(['belong_user'])->whereBetween('created_at',[$activity->start_time,$activity->end_time])->whereColumn('user_id','<>','good_user_id')->get(); dd($re->toArray()); } /* * 处理每次订单数据 * **/ 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]; } } } } } return [$sizes,$nums]; } /*** * 上传赠品 */ public function UploadOrderGift(Request $request){ $client=new Client(); // $re=$client->get('http://api.appadmin.woaidakele.cn/api/TestCache'); $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]); return $this->success($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); } $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]; $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 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','nickname','realname','warea_id'); }]) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id'])->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('apply_status',1)->count(); return $this->success(['count'=>$count]); } }