From b18c4e51f067253d0c6d9aca3fc5267f98782d88 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Fri, 14 Jan 2022 19:37:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=96=E6=B6=88=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/Dealer/OrderController.php | 16 +++++++++++++++- app/Endpoint/Api/routes.php | 2 ++ app/Models/DealerOrder.php | 6 ++++++ app/Services/Dealer/OrderService.php | 10 ++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/Endpoint/Api/Http/Controllers/Dealer/OrderController.php b/app/Endpoint/Api/Http/Controllers/Dealer/OrderController.php index 1ace63ae..3feacd25 100644 --- a/app/Endpoint/Api/Http/Controllers/Dealer/OrderController.php +++ b/app/Endpoint/Api/Http/Controllers/Dealer/OrderController.php @@ -200,8 +200,22 @@ class OrderController extends Controller * @param Request $request * @return void */ - public function cancelOrder($id, Request $request) + public function cancelOrder($id, Request $request, OrderService $orderService) { + $order = DealerOrder::findOrFail($id); + $userId = $request->user()->id; + if (!$order->isUser($userId)) { + throw new BizException('订单未找到'); + } + try { + DB::beginTransaction(); + $orderService->cancelOrder($order); + DB::commit(); + } catch (Throwable $th) { + DB::rollBack(); + report($th); + throw new BizException('操作失败,请刷新后再试'); + } return response()->noContent(); } } diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index 93910463..0d3753a4 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -240,5 +240,7 @@ Route::group([ Route::post('orders/{order}/paid', [Dealer\OrderController::class, 'paidOrder']); //确认收货 Route::post('orders/{order}/shippinged', [Dealer\OrderController::class, 'shippingedOrder']); + //取消订单 + Route::post('orders/{order}/cancel', [Dealer\OrderController::class, 'cancelOrder']); }); }); diff --git a/app/Models/DealerOrder.php b/app/Models/DealerOrder.php index d13f74b4..7fd49d1d 100644 --- a/app/Models/DealerOrder.php +++ b/app/Models/DealerOrder.php @@ -189,6 +189,12 @@ class DealerOrder extends Model return $this->status == DealerOrderStatus::Cancelled; } + /** + * 能否操作 + * + * @param [type] $userId + * @return boolean + */ public function canCurd($userId) { return $this->isUser($userId) || $this->isConsignor($userId); diff --git a/app/Services/Dealer/OrderService.php b/app/Services/Dealer/OrderService.php index 637d7571..94b8ad14 100644 --- a/app/Services/Dealer/OrderService.php +++ b/app/Services/Dealer/OrderService.php @@ -195,6 +195,16 @@ class OrderService ]); } + public function cancelOrder(DealerOrder $order) + { + if (!($order->isPending() || $order->isPendinged() || $order->isPay())) { + throw new BizException('订单状态异常,请刷新后再试'); + } + $order->update([ + 'status' => DealerOrderStatus::Cancelled, + ]); + } + /** * 更新订单发货人 *