From 9412a221b76e8cbae7e624245944f3a0dc4602ee Mon Sep 17 00:00:00 2001 From: li kesong Date: Sun, 23 Jan 2022 12:44:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A2=E5=8D=95=E9=A1=B5=E9=9D=A2blade?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImsCjdcOrderMainController.php | 4 +- app/Http/Controllers/GrabOrderController.php | 61 ++++++++++--- app/Http/Middleware/WechatAuth.php | 53 ++++++++++++ resources/views/web/grab_order.blade.php | 86 ++++++++++++++++++- routes/web.php | 6 ++ 5 files changed, 197 insertions(+), 13 deletions(-) create mode 100644 app/Http/Middleware/WechatAuth.php diff --git a/app/Admin/Controllers/ImsCjdcOrderMainController.php b/app/Admin/Controllers/ImsCjdcOrderMainController.php index 27d4cc7..7b59ac9 100644 --- a/app/Admin/Controllers/ImsCjdcOrderMainController.php +++ b/app/Admin/Controllers/ImsCjdcOrderMainController.php @@ -114,8 +114,8 @@ class ImsCjdcOrderMainController extends AdminController $actions->append(new CheckRow($actions->row->id, $grid->model()->getCurrentPage(), '
配送
')); $actions->append(new OrderStateHandle('
取消接单
', 2)); } - $url = config('app.url') . '/grab.html#order&id=837023'; - $actions->append('
复制
'); + $url = route('grab_order', ['id' => $this->id]); + $actions->append('
抢单链接
'); } elseif ($state == 8) { $actions->append(new OrderStateHandle('
同意
', 9)); $actions->append(new OrderRefund($actions->row->id, $grid->model()->getCurrentPage(), '
拒绝
')); diff --git a/app/Http/Controllers/GrabOrderController.php b/app/Http/Controllers/GrabOrderController.php index e5ecda9..9fcb3d6 100644 --- a/app/Http/Controllers/GrabOrderController.php +++ b/app/Http/Controllers/GrabOrderController.php @@ -8,7 +8,6 @@ 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; /** @@ -20,17 +19,59 @@ class GrabOrderController extends Controller public function index(Request $request) { - $id = (int)$request->route('id'); - if (!$id || !$order = ImsCjdcOrderMain::find($id)) { - return self::error('唉呀,来晚啦,订单已经被接走啦~~~'); + try { + $user = $request->user(); + $id = $request->route('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']; + if (!$id || !$order = ImsCjdcOrderMain::where('state', 3)->find($id, $fields)) { + throw new \Exception('唉呀,来晚啦,订单已经被接走啦~~~'); + } + + } catch (\Exception $exception) { + $error_msg = $exception->getMessage(); } - /*$order = ImsCjdcOrderMain::with(['market:id,name']) - ->where([['state', '=', 2], ['pay_time', '>', 0]]) - ->orderBy('pay_time')->orderByDesc('id') - ->limit(15)->get();*/ + return view('web.grab_order', [ + 'error_msg' => $error_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("您还不是骑手,请联系管理员增加骑手权限"); + } - return view('web.grab_order', ['order_list' => $order ?? []]); + $order = ImsCjdcOrderMain::where('id', $id)->first(); + if (!$order) { + throw new \Exception('订单跑丢了~~'); + } else if ($order->state != 3) { + 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()); + } } /** @@ -65,7 +106,7 @@ class GrabOrderController extends Controller throw new \Exception('用户信息不存在'); } - $employee = LanzuEmployees::where(['user_id' => $user->id, 'name' => $formData['name']])->orderByDesc('id')->first(); + $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("您还不是骑手,请联系管理员增加骑手权限"); } diff --git a/app/Http/Middleware/WechatAuth.php b/app/Http/Middleware/WechatAuth.php new file mode 100644 index 0000000..3287c8e --- /dev/null +++ b/app/Http/Middleware/WechatAuth.php @@ -0,0 +1,53 @@ +session()->get($sessionKey); + if (!$user) { + $config = config('wechat.official_account.default'); + $app = Factory::officialAccount($config); + + $code = $request->input('code'); + if (empty($code)) { + return $app->oauth->scopes(['snsapi_userinfo'])->redirect($request->url()); + } else { + $wechatUser = $app->oauth->user(); + if (!$wechatUser) { + throw new \Exception('获取用户信息失败'); + } else if (empty($user->unionid)) { + # TODO 调试unionid + if (config('app.debug') && $request->server('REMOTE_ADDR') == '127.0.0.1') { + $wechatUser['unionid'] = 'onhl355f-ofX5e0-4I4vn0bswVPM'; + } else + throw new Exception('获取UnionId失败'); + } + } + + $user = User::where('unionid', $wechatUser->unionid)->first(); + if (!$user) { + throw new Exception('您的账号未在小程序上登录过,获取用户信息失败'); + } + $request->session()->put($sessionKey, $user); + } + return $next($request); + } +} diff --git a/resources/views/web/grab_order.blade.php b/resources/views/web/grab_order.blade.php index a317acb..d51cf1f 100644 --- a/resources/views/web/grab_order.blade.php +++ b/resources/views/web/grab_order.blade.php @@ -5,9 +5,93 @@ 抢单大厅 - + + + +@if($error_msg) +

{{ $error_msg }}

+@else + +@endif +@php($pay_type = [1 => '微信支付', 2 => '余额支付', 3 => '积分支付', 4 => '货到付款']) +@if($order) + + +@endif diff --git a/routes/web.php b/routes/web.php index 8ea0f0f..dbc6cdc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ group(function () { + Route::get('grab_order/{id}', [GrabOrderController::class, 'index'])->where(['id' => '\d+'])->name('grab_order'); + Route::post('grab_order/{id}', [GrabOrderController::class, 'grabOrderPost'])->where(['id' => '\d+']); +}); + Route::get('/test', 'TestController@Test'); Route::get('/export', 'TestController@export'); Route::any('/rpc', 'TestController@testRpc');