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)
+
+ - 订单编号:{{ $order->order_num }}
+ - 客户姓名:{{ $order->name }}
+ - 客户电话:{{ substr_replace($order->tel, '****', 3, 4) }}
+ - 客户地址:{{ $order->address }}
+ - 订单备注:{{ $order->note }}
+ - 付款金额:{{ $order->money }}
+ - 订单金额:{{ $order->total_money }}(不含配送费)
+ - 支付方式:{{ $pay_type[$order->pay_type] ?? '' }}
+ - 下单时间:{{ date('Y-m-d H:i:s', $order->created_at) }}
+ - 付款时间:{{ $order->pay_time ? date('Y-m-d H:i:s', $order->pay_time) : '' }}
+
+
+@endif