From 79ed4cb4045964a406a10bf3753ffcfb768d1c3a Mon Sep 17 00:00:00 2001 From: li kesong Date: Sat, 8 Jan 2022 16:31:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A2=E5=8D=95=E6=8E=A5=E5=8F=A3=EF=BC=88?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/GrabOrderController.php | 58 +++++++++++++++++--- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/GrabOrderController.php b/app/Http/Controllers/GrabOrderController.php index c417ee5..f83662e 100644 --- a/app/Http/Controllers/GrabOrderController.php +++ b/app/Http/Controllers/GrabOrderController.php @@ -4,8 +4,11 @@ namespace App\Http\Controllers; use App\Http\JsonReturn; use App\Models\ImsCjdcOrderMain; +use App\Models\v3\LanzuEmployees; +use App\Models\v3\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Validator; /** @@ -33,27 +36,64 @@ class GrabOrderController extends Controller /** * 抢单post */ - public function grabOrder(Request $request): JsonResponse + public function grabOrder(Request $request) { try { - $formData = $request->only(['id', 'name', 'mobile']); - Validator::make($formData, [ - 'id' => 'required|int', + $validator = Validator::make($request->all(), [ + 'order_num' => ['required', 'regex:/^\d+$/'], 'name' => 'required|between:2,20', - 'mobile' => ['required', 'regex:/^1\d{10}$/'], + 'tel' => ['required', 'regex:/^1\d{10}$/'], ], [ '*.required' => ':attribute不能为空', + '*.regex' => ':attribute格式不正确', 'name.between' => ':attribute输入不正确', - 'mobile.regex' => ':attribute输入不正确', ], [ - 'id' => 'ID', + 'order_num' => '订单号', 'name' => '姓名', - 'mobile' => '手机号', + 'tel' => '手机号', ]); - return self::success('恭喜您,运气太好啦,订单被您抢到啦!'); + 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']])->orderByDesc('id')->first(); + if (!$employee || !in_array(29, $employee->position)) { //29是骑手,见:config("role.position") + throw new \Exception("您还不是骑手,请联系管理员增加骑手权限"); + } + + $order = ImsCjdcOrderMain::where('order_num', $formData['order_num'])->first(); + if (!$order) { + throw new \Exception('订单跑丢了~~'); + } else if ($order->state != 3) { + throw new \Exception('您来晚啦,订单已经被人接走啦~~'); + } + + /** + * 抢单逻辑详见: + * @see \App\Admin\Forms\SelectHorseman + */ + $SelectHorseman = new \App\Admin\Forms\SelectHorseman; + $result = $SelectHorseman->handle(['horseman_id' => $employee->id, 'order_id' => $order->id]); + + return self::success('抢单成功,已消息通知客户,请尽快配送'); } catch (\Exception $exception) { return self::error($exception->getMessage()); } } + + /** + * 获取订单信息 + */ + public function orderInfo() + { + $order_num = \request('order_num'); + } }