session()->get('wechat_user'); $id = $request->route('id'); if (!$id || !$order = ImsCjdcOrderMain::with('employees')->where('state', 3)->find($id)) { throw new \Exception('唉呀,来晚啦,订单已经被接走啦~~~'); } else if (!empty($order->employees->user_id)) { if ($order->employees->user_id == $user->id) { $success_msg = '运气太好了吧,订单被您抢到啦~~'; } else { unset($order); throw new \Exception('唉呀,来晚啦,订单已经被接走啦~~~'); } } } catch (\Exception $exception) { $error_msg = $exception->getMessage(); } return view('web.grab_order', [ 'error_msg' => $error_msg ?? null, 'success_msg' => $success_msg ?? null, 'user' => $user ?? null, 'order' => $order ?? [], ]); } /** * blade模板抢单 */ public function grabOrderPost(Request $request): JsonResponse { $id = $request->route('id'); /** @var User $user */ $user = session('wechat_user'); try { $employee = LanzuEmployees::where(['user_id' => $user->id, 'status' => 1])->orderByDesc('id')->first(); if (!$employee || !in_array(29, $employee->position)) { //29是骑手,见:config("role.position") throw new \Exception("您还不是骑手,请联系管理员增加骑手权限"); } $order = ImsCjdcOrderMain::with('employees')->where('id', $id)->first(); if (!$order) { throw new \Exception('订单跑丢了~~'); } else if ($order->state != 3 || !empty($order->horseman_id)) { throw new \Exception('您来晚啦,订单已经被人接走啦~~'); } $SelectHorseman = new \App\Admin\Forms\SelectHorseman; $result = $SelectHorseman->selectHorseman(['horseman_id' => $employee->id, 'order_id' => $order->id]); if (!$result) { throw new \Exception('服务器开小差,抢单失败~'); } return self::success([], '抢单成功,已消息通知客户,请尽快配送'); } catch (\Exception $exception) { return self::error($exception->getMessage(), 1, config('app.debug') ? $exception->getTrace() : null); } } /** * 抢单post */ public function grabOrder(Request $request): JsonResponse { try { $validator = Validator::make($request->all(), [ 'order_id' => ['required', 'int'], 'name' => 'required|between:2,20', 'tel' => ['required', 'regex:/^1\d{10}$/'], ], [ '*.required' => ':attribute不能为空', '*.regex' => ':attribute格式不正确', 'order_id.int' => ':attribute错误', 'name.between' => ':attribute输入不正确', ], [ 'order_id' => '订单ID', 'name' => '姓名', 'tel' => '手机号', ]); if ($validator->fails()) { throw new \Exception($validator->errors()->first()); } $formData = $validator->validated(); $user = User::where('tel', $formData['tel'])->first(); if (!$user) { throw new \Exception('用户信息不存在'); } $employee = LanzuEmployees::where(['user_id' => $user->id, 'name' => $formData['name'], 'status' => 1])->orderByDesc('id')->first(); if (!$employee || !in_array(29, $employee->position)) { //29是骑手,见:config("role.position") throw new \Exception("您还不是骑手,请联系管理员增加骑手权限"); } $order = ImsCjdcOrderMain::where('id', $formData['order_id'])->first(); if (!$order) { throw new \Exception('订单跑丢了~~'); } else if ($order->state != 3 || !empty($order->horseman_id)) { throw new \Exception('您来晚啦,订单已经被人接走啦~~'); } $SelectHorseman = new \App\Admin\Forms\SelectHorseman; $result = $SelectHorseman->selectHorseman(['horseman_id' => $employee->id, 'order_id' => $order->id]); if (!$result) { throw new \Exception('服务器开小差,抢单失败~'); } return self::success([], '抢单成功,已消息通知客户,请尽快配送'); } catch (\Exception $exception) { return self::error($exception->getMessage()); } } /** * 获取订单信息 */ public function orderInfo(): JsonResponse { $id = request('id'); $fields = ['id', 'order_num', 'refund_time', 'complete_time', 'money', 'tel', 'name', 'address', 'note', 'area', 'lat', 'lng', 'pay_type', 'order_type', 'market_id', 'total_money', 'created_at', 'pay_time']; $order = ImsCjdcOrderMain::where('state', 3)->find($id, $fields); if (!$order) { return self::error('订单不存在或已配送完成~~'); } if ($order->tel) { $order->tel = substr_replace($order->tel, '****', 3, 4); } return self::success($order); } }