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)->select('id','nickname','realname'); }); } if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } $admin=Auth::user(); if($admin->role_id==23){ $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id'); $user_ids = User::whereIn('warea_id',$warea_ids)->pluck('id'); $num_1=Ordertest::whereIn('is_deleted',[0,1])->whereIn('user_id',$user_ids)->count(); $num_3=Ordertest::where('is_deleted',0)->where('status', 0)->whereIn('user_id',$user_ids)->count(); $num_4=Ordertest::where('is_deleted',0)->where('status', 1)->whereIn('user_id',$user_ids)->count(); $num_5=Ordertest::where('is_deleted',0)->where('status', 2)->whereIn('user_id',$user_ids)->count(); $num_6=Ordertest::where('is_deleted',0)->where('status', 3)->whereIn('user_id',$user_ids)->count(); $num_7=Ordertest::where('is_deleted',0)->where('status', 4)->whereIn('user_id',$user_ids)->count(); $num_8=Ordertest::where('is_deleted',1)->whereIn('user_id',$user_ids)->count(); $num_2=Ordertest::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->whereIn('user_id',$user_ids)->count(); }else{ $num_1=Ordertest::whereIn('is_deleted',[0,1])->count(); $num_3=Ordertest::where('is_deleted',0)->where('status', 0)->count(); $num_4=Ordertest::where('is_deleted',0)->where('status', 1)->count(); $num_5=Ordertest::where('is_deleted',0)->where('status', 2)->count(); $num_6=Ordertest::where('is_deleted',0)->where('status', 3)->count(); $num_7=Ordertest::where('is_deleted',0)->where('status', 4)->count(); $num_8=Ordertest::where('is_deleted',1)->count(); $num_2=Ordertest::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->count(); } if ($order_no) { $data->where('order_num','like', '%'.$order_no.'%'); } if ($search_name){ // $s=substr(trim($search_name),0,4); // if($s=='DWBS'){ // $data->where('order_num',trim($search_name)); // }else{ $ids=$this->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 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)->select('id','nickname','realname'); }); } if ($order_no) { $data->where('order_num', $order_no); } if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } if ($user_name) { $user_id = $this->getUserNameIds($user_name); $data->whereIn('user_id', $user_id); } if ($receive_info) { $address_ids = $this->getReceiveAddressIds($receive_info); $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.'%') //<<<<<<< HEAD ->orwhere('realname','like','%'.$search.'%') ->orwhere('mobile',$search); })->pluck('id'); } //======= // ->orwhere('name','like','%'.$search.'%') // ->orwhere('mobile','like','%'.$search.'%'); // })->pluck('id'); // } // // //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab //根据名称查询代理信息 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','mobile'); },'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){ // $data->where('activity_id',$activity_id); // } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } //======= // $data = Ordertest::with(['get_user:id,nickname,realname,mobile'])->with(['get_address:id,username,mobile,address,province,city,town'])->with(['get_store:name,id']); // // if ($order_no) { // $data->where('order_num', 'like','%'.$order_no.'%'); // } // if ($start_time && $end_time) { // $data->whereBetween('created_at', [$start_time, $end_time]); // } //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab 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','mobile'); },'get_order_gift']) // with(['get_user:id,nickname,mobile,realname','get_order_gift']) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id'])->whereIn('id', $request->id)->get(); } else { $order_no = $input['order_no']; $start_time = $input['start_time']; $end_time = $input['end_time']; $activity_id = $input['activity_id']; $search_name = $input['search_name']; $data = Ordertest::with(['get_user'=>function($query){ $query->with(['warea:id,admin_name'])->select('id','nickname','realname','warea_id','mobile'); },'get_order_gift']) ->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(); $re[$i]['所属政委'] = $v->get_user->warea->admin_name; 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]['物流单号'] = $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(count($v->get_order_gift)>0){ foreach($v->get_order_gift as $key =>$val){ if($val->pivot->num>0){ if(empty($re[$i]['赠品信息'])){ $re[$i]['赠品信息'] .=$val->name.$val->pivot->num; }else{ $re[$i]['赠品信息'] .=','.$val->name.$val->pivot->num; } } } // $re[$i]['赠品信息'] = json_encode($order_gift,JSON_UNESCAPED_UNICODE); } // else{ // $re[$i]['赠品信息'] = ''; // } // $re[$i]['收货时间'] = $v->receive_time==null?'':$v->receive_time; // foreach ($order_detail as $key => $value) { // // foreach ($data as $ke => $va) { // if ($value->goods_size == $va->size) { // $re[$i]['尺码:'.$va->size] = $value->num; // } else { // $re[$i]['尺码:'.$va->size] = 0; // } // } // } $i++; } //<<<<<<< HEAD // if($i==100){ // return $re; // } // //======= //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab } return $this->success_list($re); } public function judge_status($status) { if ($status == 0) { $text = '待订单审核'; } elseif ($status == 1) { $text = '待财务审核'; } elseif ($status == 2) { $text = '待发货审核'; } elseif ($status == 3) { $text = '待收货'; } elseif ($status == 4) { $text = '已完成'; }elseif ($status == 5) { $text = '已作废'; } return $text; } public function judge_pay_status($status) { if ($status == 0) { $text = '未付款'; } elseif ($status == 1) { $text = '部分付款'; } elseif ($status == 2) { $text = '已付款'; } elseif ($status == 3) { $text = '待退款'; } return $text; } /* * 上传物流单号 * */ public function send_order(Request $request) { $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); $wxl_keys=array_search('5XL',$one); $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$wxl_keys]; $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政EMS'=>'EMS']; $express_nums=array_column($array[0],$express_num_keys); $unique_express_nums=array_unique($express_nums); $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums); if(count($que_express_nums)>0){ $que_express_str=implode(',',$que_express_nums); return $this->error('450001','快递单号'.$que_express_str.'重复出现'); } $statusArr=[];$arr=[]; DB::beginTransaction(); try { foreach ($array[0] as $key => $val) { $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys]; $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]); if (count($arr[$val[$order_num_keys]]) > 1) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致'); } if (empty($val[$order_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空'); } $order = Ordertest::where('order_num', $val[$order_num_keys])->first(); if (empty($order)) { return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在'); } if ($order->status == 0 || $order->status == 1) { return $this->error(450001, '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '的订单处于待订单审核或者待财务审核状态中'); } if (empty($val[$express_total])) { return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空'); } if (empty($val[$express_num_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空'); } if (empty($val[$express_com_keys])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空'); } if (empty($express_code[$val[$express_com_keys]])) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误'); } $express = Express::where('express_number', $val[$express_num_keys])->first(); if ($express) { return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在'); } if (!empty($newArr[$val[$express_num_keys]]['note'])) { $newArr[$val[$express_num_keys]]['note'] = $newArr[$val[$express_num_keys]]['note'] . ','; } else { $newArr[$val[$express_num_keys]]['note'] = ''; } $newArr[$val[$express_num_keys]]['order_id'] = $order->id; $newArr[$val[$express_num_keys]]['express_number'] = $val[$express_num_keys]; $newArr[$val[$express_num_keys]]['express_com'] = $val[$express_com_keys]; $newArr[$val[$express_num_keys]]['express_code'] = $express_code[$val[$express_com_keys]]; $data = ''; foreach ($keys as $k => $v) { if (!empty($val[$v])) { if (empty($data)) { $data .= $one[$v] . ':' . $val[$v]; } else { $data .= '+' . $one[$v] . ':' . $val[$v]; } } } $newArr[$val[$express_num_keys]]['note'] .= $data; $newArr[$val[$express_num_keys]]['status'] = 0; $newArr[$val[$express_num_keys]]['total'] = $val[$express_total]; $newArr[$val[$express_num_keys]]['created_at'] = date("Y-m-d H:i:s"); $newArr[$val[$express_num_keys]]['updated_at'] = date("Y-m-d H:i:s"); } foreach ($arr as $k => $v) { Ordertest::where('order_num', $k)->update(['track_status' => $v[0]]); } Express::insert($newArr); DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error(); } } /* *修改订单地址 */ public function update_address(Request $request) { $address = Address::find($request->address_id); $add=Address::where('province',$request->province) ->where('user_id',$address->user_id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if(!empty($add) && $add->id!=$request->address_id){ return $this->error('450001','当前地址信息已存在'); } $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->mobile = $request->mobile; $address->username = $request->name; $row=$address->save(); if($row){ return $this->success([]); }else{ return $this->error(); } } /* * 订单详情 * */ public function order_detail(Request $request) { $order_num = $request->order_num; $order = Ordertest::where('order_num', $order_num)->with(['get_order_log'=>function($q){ $q->orderByDesc('created_at'); }, 'get_address', 'get_order_remark', 'get_user', 'get_order_gift'])->first()->toArray(); $order_detail = Orderdetail::where('order_id', $order['id'])->orderByDesc('created_at')->get(); $data = []; foreach ($order_detail as $k => $v) { $good = Goodtest::find($v->goods_id); $data['goods_detail'][$k]['name'] = $good->name; $data['goods_detail'][$k]['main_img'] = $good->main_img; $data['goods_detail'][$k]['size'] = $good->size; $data['goods_detail'][$k]['unit'] = $good->unit; $data['goods_detail'][$k]['money'] = $v->money; $data['goods_detail'][$k]['num'] = $v->num; $data['goods_detail'][$k]['id'] = $v->goods_id; $data['goods_detail'][$k]['detail_id'] = $v->id; $data['goods_detail'][$k]['goods_price'] = $v->goods_price; $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark; } $all = array_merge($order, $data); return $this->success($all); } /* * 订单的修改 * */ public function order_update(Request $request) { $rule = [ 'order_id' => 'required', 'size_id' => 'required', 'num' => 'required', 'total' => 'required', 'money' => 'required', 'type' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'order_id' => '订单id', 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money' => '商品金额', ]; $vali = Validator::make($request->all(), $rule, $message, $attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}' . $vali->errors()->first()); return $this->error('40010', '', $vali->errors()->first()); } $input = $request->all(); DB::beginTransaction(); try { $order = Ordertest::find($input['order_id']); $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 . '型号数量不足'); } $goods = Goodtest::find($v); Log::error('剩余数量' . $goods->storage); $goods->storage = $goods->storage - $input['num'][$k] + $orderdetail->num; Log::error('传递数量' . $input['num'][$k]); Log::error('原订单数量' . $orderdetail->num); Log::error('剩余----数量' . $goods->storage); $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 { $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); Log::error('剩余数量' . $goods->storage); // $goods->storage=$goods->storage-$input['num'][$k]+$orderdetail->num; Log::error('传递数量' . $input['num'][$k]); Log::error('剩余----数量' . $goods->storage); $goods->storage = $goods->storage - $input['num'][$k]; $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){ $num=$v->num; OrderGift::create([ 'gift_id'=>$v->id, 'order_id'=>$input['order_id'], 'activity_id'=>$activity_id, 'num'=>floor($num_gift/$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(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->sold_num = $goods->sold_num - $orderdetail->num; if (!$goods->save()) { throw new \Exception('1'); } if (!$orderdetail->delete()) { throw new \Exception('1'); } } $money_old = $order->money; $total_old = $order->total; $type_old = $order->type; $pay_money_old = $order->pay_money; $mo_money_old = $order->no_pay_money; $total = $input['total']; $money = $input['money']; $type = $input['type']; if ($money > $pay_money_old) { if ($pay_money_old == 0) { $order->pay_status = 0; } else { $order->pay_status = 1; } $order->no_pay_money = $money - $pay_money_old; $order->wait_back_money=0; } elseif ($money < $pay_money_old) { $order->pay_status = 3; $order->no_pay_money=0; $order->wait_back_money = $pay_money_old - $money; } elseif ($money == $pay_money_old){ $order->pay_status = 2; $order->wait_back_money=0; $order->no_pay_money=0; } $order->money = $money; $order->total = $total; $order->type = $type; if (!$order->save()) { throw new \Exception('s'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '修改订单'; $orderlog->log_text = '原订单总金额为' . $money_old . ',商品数量为' . $total_old . ',商品种类为' . $type_old . '。新订单金额为' . $money . ',商品数量为' . $total . ',种类为' . $type; if (!$orderlog->save()) { throw new \Exception('1'); } $user=User::where('id',$order->user_id)->first(); if($user->openid){ $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$order->order_num.'修改成功', 'keyword1' => $mes_info, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); } DB::commit(); return $this->success([]); } catch (\Exception $exception) { DB::rollBack(); Log::info('订单修改的错误信息为' . $exception); return $this->error(40013, '订单修改出错'); } } /* * 代下单 * */ public function submit_order(Request $request) { Log::error(json_encode($request->all())); $rule = [ 'user_id' => 'required', 'address_id' => 'required', 'size_id' => 'required|array', 'num' => 'required|array', 'total' => 'required', 'type' => 'required', 'money' => 'required', ]; $message = [ 'required' => ':attribute不能为空', ]; $attributes = [ 'user_id' => '用户id', 'size_id' => 'size_id', 'total' => '商品总数量', 'type' => '商品中总类型', 'num' => '单类商品商量', 'money' => '商品金额', 'address_id' => '地址', ]; $vali = Validator::make($request->all(), $rule, $message, $attributes); if ($vali->fails()) { Log::error('{-------提交订单的参数错误--------}' . $vali->errors()->first()); return $this->error('40010', '', $vali->errors()->first()); } $input = $request->all(); DB::beginTransaction(); try { $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']; 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'); } } if (!$order->save()) { Log::error('{-----订单保存出错-----}' . $user->id); throw new \Exception('订单保存出错'); } $orderlog = new Orderlog(); $orderlog->order_id = $order->id; $orderlog->user_id = $order->user_id; $orderlog->log_name = Auth::user()->name; $orderlog->log_title = '创建新订单'; $orderlog->log_text = '代下单成功'; if (!$orderlog->save()) { throw new \Exception('1'); } $num_gift=0; foreach ($input['size_id'] as $k => $v) { $data = Goodtest::find($v); // if($data->main_attr=='大卫博士精装版'){ // $num_gift+=$input['num'][$k]; // } // if($data->main_attr=='大卫博士简约版' || $data->main_attr=='大卫博士老人版'){ // $num_gift+=$input['num'][$k]*2; // } if($data->unit=='套'){ $num_gift+=$input['num'][$k]; } if($data->unit=='件'){ $num_gift+=$input['num'][$k]*2; } $now = Carbon::now()->timestamp; if ($data->show_time != null) { if (strtotime($data->off_time) < $now) { return $this->error(40013, '商品' . $data->name . '的' . $data->size . '尺码已经下架'); } } $order_detail = new OrderDetail(); $order_detail->order_id = $order->id; $order_detail->goods_id = $data->id; if ($data->storage < $input['num'][$k]) { return $this->error(40013, $data->name . '的' . $data->size . '尺码数量不足,请重新选择数量'); } $order_detail->num = $input['num'][$k]; $order_detail->money = $input['num'][$k] * $data->money; $order_detail->goods_name = $data->name; $order_detail->goods_size = $data->size; $order_detail->goods_price = $data->money; $order_detail->goods_unit = $data->unit; if (!$order_detail->save()) { Log::error('{-----订单详情保存出错-----}' . $user->id); throw new \Exception('订单详情出错'); } $data->sold_num = $data->sold_num + $input['num'][$k]; $data->storage = $data->storage - $input['num'][$k]; if (!$data->save()) { throw new \Exception('3'); } } $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){ $gifts = Gifts::where('activity_id',$activity_id)->get(); if($gifts){ foreach($gifts as $key => $val){ $dda=new OrderGift(); $dda->gift_id=$val->id; $dda->order_id=$order->id; $dda->activity_id=$activity_id; $dda->num=floor($num_gift/$val->num); $dda->save(); } } } if($user->openid){ $goodsInfo=''; foreach($input['size_id'] as $key => $val){ $goods=Goodtest::find($val); if($key<=5){ if(empty($goodsInfo)){ $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; }else{ $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key]; } }elseif($key==6){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单已提交成功 (后台系统代下单)', 'keyword1' => $goodsInfo, 'keyword2' => $order->order_num, 'keyword3' => number_format($input['money'], 2), 'remark' => '点击链接进入系统,查看详情', ]; event(new SubmitOrderInfo($mes)); } DB::commit(); return $this->success(['order_id' => $order->id, 'order_num' => $order->order_num]); } catch (\Exception $exception) { DB::rollBack(); Log::info('错误信息' . $exception); return $this->error($exception->getMessage()); return $this->error('40011', '', '订单出错'); } } /*生成订单编号*/ public function order_num($user_code) { $number = mb_substr($user_code, 0, 4) . '-' . date('Ymd', time()) . mb_substr(time(), 7, 10) . '-' . rand(1111, 9999); $num = Ordertest::where('order_num', $number)->count(); if ($num > 0) { $number = $this->order_num($user_code); return $number; } return $number; } /*地址管理---展示地址*/ public function show_address(Request $request) { $id = $request->user_id; $address = Address::where('user_id', $id)->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; } // 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', '订单状态已变更,请重试!'); } $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); } 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); } else { throw new Exception("订单状态有误!"); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', $e->getMessage()); } } //校验审核 public function checkOrderStatus(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $count = Ordertest::whereIn('id', $data)->where('status', $status)->count(); return $count; } //批量审核 public function many_audit_order(Request $request) { $input = $request->all(); $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成 $data = $input['data']; $name = Auth::user()->name; 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); } } } 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, ]); if($user->openid){ if ($order->is_deleted==0){ $me="订单编号为".$order->order_num.'修改了商品数量产生的退款'; }else{ $me="订单编号为".$order->order_num.'作废产生的退款'; } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您有一笔退款,已经退至您的账户之中', 'keyword1' => $money, 'keyword2' => $me, 'keyword3' => date('Y-m-d',time()), 'keyword4' => '系统账户', 'keyword5' => "该退款已打至您的账户之中,有疑问请联系客服", 'remark' => '点击链接进入系统,查看详情', ]; event(new RefundEvent($mes)); } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error(); } } public function getCollectMoneyLog(Request $request) { $input = $request->all(); $order_num = $input['order_num']; $list = Userpay::where('order_num', $order_num)->orderby('id', 'desc')->get(); if ($list) { return $this->success($list); } else { return $this->error(); } } /*地址管理-----新增地址*/ public function add_address(Request $request, Address $address) { $id = $request->user_id; $add=Address::where('province',$request->province) ->where('user_id',$id) ->where('city',$request->city) ->where('town',$request->area) ->where('address',$request->address) ->where('mobile',$request->mobile) ->where('username',$request->name)->first(); if($add){ return $this->error('450001','当前地址信息已存在'); } $address->user_id = $id; $address->username = $request->name; $address->mobile = $request->mobile; $address->province = $request->province; $address->city = $request->city; $address->town = $request->area; $address->address = $request->address; $address->save(); return $this->success(['id' => $address->id]); } /*地址管理----编辑地址*/ // public function update_address(Request $request){ // $address=Address::find($request->address_id); // $address->username=$request->con_name; // $address->mobile=$request->con_mobile; // $address->provice=$request->provice; // $address->city=$request->city; // $address->town=$request->area; // $address->address=$request->address; // $address->save(); // return $this->success([]); // } /*---修改订单地址-----*/ public function order_address(Request $request) { $order = Ordertest::find($request->order_id); $order->address_id = $request->address_id; $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, '', '查无此订单,请重试'); } DB::beginTransaction(); try { $order->is_deleted = 1; if ($order->pay_money == 0) { $order->pay_status = 0; } else { $order->pay_status = 3; $order->wait_back_money = $order->pay_money; } if (!$order->save()) { throw new \Exception('1'); } // $user = User::find($order->user_id); // $user->money = $user->money + $order->pay_money; // if (!$user->save()) { // throw new \Exception('2'); // } //作废备注 OrderRemark::create([ 'order_id' => $order->id, 'name' => Auth::user()->name, 'level' => '', 'type' => '0', 'remark' => $request->remark ]); // $user_log = new UserPay(); // $user_log->user_id = $order->user_id; // $user_log->pay_money = $order->money; // $user_log->op_name = $user->nickname; // $user_log->order_num = $order->order_num; // $user_log->pay_num = $this->pay_num($order->user_id); // $user_log->type = 2; // $user_log->remark = '订单作废退回'; // if (!$user_log->save()) { // throw new \Exception('3'); // } $orderdetail = OrderDetail::where('order_id', $order->id)->get(); foreach ($orderdetail as $k => $v) { $good = Goodtest::find($v->goods_id); $good->storage = $good->storage + $v->num; $good->sold_num = $good->sold_num - $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(); 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']); 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(); $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']) ->where('is_deleted',0) ->with(['get_address:id,username,mobile,address,province,city,town']) ->with(['get_store:name,id']); if ($request->has('order_status')) { $order_status = $input['order_status']; } else { $order_status = []; } if ($order_status || $order_status == 0) { if ('-1' == $order_status) { $data->whereIn('is_deleted', [0, 1]); } elseif ($order_status == 5) { $data->where('is_deleted', 1); } elseif ($order_status == 0) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 1) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 2) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 3) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 4) { $data->where('status', $order_status)->where('is_deleted', 0); } elseif ($order_status == 6) { $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0); } } if ($order_no) { $data->where('order_num', 'like','%'.$order_no.'%'); } if ($search_name){ $ids=$this->getUserIds($search_name); $data->whereIn('user_id', $ids); } //<<<<<<< HEAD if ($start_time && $end_time && empty($activity_id)) { $data->whereBetween('created_at', [$start_time, $end_time]); } if($activity_id){ $actice=Activity::find($activity_id); $data->whereBetween('created_at',[$actice->start_time,$actice->end_time]); } // if($activity_id){ // $data->where('activity_id',$activity_id); //======= // if ($start_time && $end_time) { // $start=date('Y-m-d H:i:s',strtotime($start_time)); // $end=date('Y-m-d H:i:s',strtotime($end_time)); //// Log::error($start); // $data->whereBetween('created_at', [$start, $end]); //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab // } 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; $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 . '订单退款信息有误'); } }else{ return $this->error('450001','订单作废状态码有误'); } if($user->openid){ if ($order->is_deleted==0){ $me="订单编号为".$order->order_num.'修改了商品数量产生的退款'; }else{ $me="订单编号为".$order->order_num.'作废产生的退款'; } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您有一笔退款,已经退至您的账户之中', 'keyword1' => $pay_money, 'keyword2' => $me, 'keyword3' => date('Y-m-d',time()), 'keyword4' => '系统账户', 'keyword5' => "该退款已打至您的账户之中,有疑问请联系客服", 'remark' => '点击链接进入系统,查看详情', ]; event(new RefundEvent($mes)); } } DB::commit(); return $this->success([]); } catch (Exception $e) { DB::rollBack(); return $this->error('450001', '退款失败'); } } public function 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']; // $activity_id=''; $big_gift='38500'; $where=[]; $wheres=[]; if($activity_id){ $big_gift=Activity::where('id',$activity_id)->value('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'); if(empty($honor_wall)){ return $this->error('450001','本此活动未开放荣誉墙名单'); } // $where['order_test.activity_id']=$activity_id; $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $user=User::select('users.id','list_tag.type as type','users.nickname','users.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 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']; // $activity_id=''; //======= // //导出 // public function exportList(Request $request){ // $input=$request->all(); // $type=$input['type']; //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab 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'); if(empty($big_gift)){ return $this->error('450001','本此活动未开放大礼包名单'); } }else{ $honor_wall=Activity::where('id',$activity_id)->value('honor_wall'); if(empty($honor_wall)){ return $this->error('450001','本此活动未开放荣誉墙名单'); } } // $where['order_test.activity_id']=$activity_id; $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; if($type==1){ $money=Activity::where('id',$activity_id)->value('big_gift'); }else{ $money=Activity::where('id',$activity_id)->value('honor_wall'); } } $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)){ $wheres=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::groupBy('user_id')->pluck('user_id')->toArray(); $users=User::where('level',3)->pluck('id')->toArray(); $money=User::where('level',3)->sum('money'); $user_ids=array_unique(array_merge($order_user_ids,$users)); $user=User::select('users.id','users.mobile','users.nickname','users.money','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account'), DB::raw('SUM(order_test.money-order_test.pay_money) as no_pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->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]['money']=$val->money; $ll[$key]['realname']=$val->realname; $ll[$key]['mobile']=$val->mobile; $ll[$key]['account']=$val->account?$val->account:0; $ll[$key]['pay_account']=$val->pay_account?$val->pay_account:0; $ll[$key]['no_pay_account']=$val->no_pay_account?$val->no_pay_account:0; } $dd=[ 'list'=>$ll, 'all_money'=>$money, 'total'=>$user_total ]; return $this->success_list($dd,'获取数据成功',$count); } //导出类大礼包 public function exportLikeBAgentGiftBag(Request $request){ $input=$request->all(); $search_name=$input['search_name']; $start_time=$input['start_time']; $end_time=$input['end_time']; $activity_id=$input['activity_id']; $where=[]; $wheres=[]; if($start_time && $end_time && empty($activity_id)){ $where=function ($query) use ($start_time,$end_time){ $query->whereBetween('order_test.created_at',[$start_time,$end_time]); }; } if($activity_id){ $actice=Activity::find($activity_id); $wheres=function($query) use ($actice){ $query->whereBetween('order_test.created_at',[$actice->start_time,$actice->end_time]); }; } $order_user_ids=Ordertest::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.money','users.mobile','users.realname', DB::raw('SUM(order_test.money) as account'), DB::raw('SUM(order_test.pay_money) as pay_account')) ->leftJoin('order_test', function($join) use ($start_time,$end_time,$where,$wheres){ $join->on('order_test.user_id', '=', 'users.id') ->where('order_test.is_deleted','=','0') ->where($where) ->where($wheres); }) ->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; } $ll[$key]['账户余额']=$val->money; } 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){ $og->num=floor($num_gift/$val->num); $og->save(); }else{ OrderGift::create([ 'gift_id'=> $val->id, 'order_id'=> $master_order->id, 'activity_id'=> $activity_id, 'num'=> floor($num_gift/$val->num) ]); } } }else{ $gifts = Gifts::where('activity_id',$activity_id)->get(); foreach($gifts as $key=>$val) { OrderGift::create([ 'gift_id' => $val->id, 'order_id' => $master_order->id, 'activity_id' => $activity_id, 'num' => floor($num_gift / $val->num) ]); } } $user=User::where('id',$master_order->user_id)->first(); if($user->openid){ $goodsInfo=''; foreach($slave_detail as $key => $val){ if($key<=2){ if(empty($goodsInfo)){ $goodsInfo='添加'.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; }else{ $goodsInfo.=','.$val->goods_name.'-'.$val->goods_size.'数量:'.$val->num; } }elseif($key==3){ $goodsInfo.=',...'; } } $mes['openid']=$user->openid; $mes['data']=[ 'first' => '您的订单:'.$master_num.'与'.$slave_num.'合并成功,保留订单:'.$master_num.'作废订单:'.$slave_num, 'keyword1' => $goodsInfo, 'keyword2' => date("Y-m-d H:i"), 'remark' => '点击链接进入系统,查看详情', ]; event(new ChangeOrder($mes)); } DB::commit(); return $this->success([]); }catch(Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } } public function mergeOrderDetail(Request $request) { $input=$request->all(); $master_num=$input['master_num']; $slave_num=$input['slave_num']; $activity=Activity::where('is_ing',1)->where('disabled',0)->first(); $start_time=$activity->start_time; $end_time=$activity->end_time; $master_order=Ordertest::where('order_num',$master_num)->whereBetween('created_at',[$start_time,$end_time])->where('is_deleted',0)->first(); 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(); } }