Browse Source

抢单相关

master
李可松 4 years ago
parent
commit
5e8033a20b
  1. 21
      app/Admin/Forms/SelectHorseman.php
  2. 31
      app/Http/Controllers/GrabOrderController.php
  3. 2
      routes/api.php

21
app/Admin/Forms/SelectHorseman.php

@ -23,10 +23,22 @@ class SelectHorseman extends Form
*/
protected $orderId;
public function handle(array $input)
{
$current_page = $input['current_page'] ?? 1;
if ($this->selectHorseman($input)) {
return $this->success('操作成功',"order?page={$current_page}");
} else {
return $this->error('操作失败');
}
}
/**
* 注:此方法在app/Http/Controllers/GrabOrderController.php中也有调用,修改需要注意
*/
public function selectHorseman(array $input): bool
{
$hid = $input['horseman_id'];
$oid = $input['order_id'];
$current_page = $input['current_page'] ?? 1;
$horseman = LanzuEmployees::getName($hid);//骑手名称
$result = ImsCjdcOrderMain::where('id',$oid)->update(['shipping_type'=>1,'horseman_id'=>$hid,'delivery_start_time'=>time(),'shipping_name'=>$horseman,'updated_at'=>time()]);
if ($result){
@ -39,10 +51,9 @@ class SelectHorseman extends Form
$ssdb->set("horseman_coordinate_{$hid}",$coordinate);
//>>2.配送开始后,给用户发送消息通知
Rpc::onlineDeliveryStart($row->global_order_id);
return $this->success('操作成功',"order?page={$current_page}");
}else{
return $this->error('操作失败');
return true;
} else {
return false;
}
}

31
app/Http/Controllers/GrabOrderController.php

@ -40,15 +40,16 @@ class GrabOrderController extends Controller
{
try {
$validator = Validator::make($request->all(), [
'order_num' => ['required', 'regex:/^\d+$/'],
'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_num' => '订单号',
'order_id' => '订单ID',
'name' => '姓名',
'tel' => '手机号',
]);
@ -69,19 +70,18 @@ class GrabOrderController extends Controller
throw new \Exception("您还不是骑手,请联系管理员增加骑手权限");
}
$order = ImsCjdcOrderMain::where('order_num', $formData['order_num'])->first();
$order = ImsCjdcOrderMain::where('id', $formData['order_id'])->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]);
$result = $SelectHorseman->selectHorseman(['horseman_id' => $employee->id, 'order_id' => $order->id]);
if (!$result) {
throw new \Exception('服务器开小差,抢单失败~');
}
return self::success('抢单成功,已消息通知客户,请尽快配送');
} catch (\Exception $exception) {
@ -94,6 +94,19 @@ class GrabOrderController extends Controller
*/
public function orderInfo()
{
$order_num = \request('order_num');
$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);
}
}

2
routes/api.php

@ -21,5 +21,5 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
Route::prefix('grab')->group(function () {
Route::post('grab', [GrabOrderController::class, 'grabOrder']);
Route::post('order_info', [GrabOrderController::class, 'orderInfo']);
Route::get('order_info', [GrabOrderController::class, 'orderInfo']);
});
Loading…
Cancel
Save