diff --git a/app/Actions/ChangeOrderStatus.php b/app/Actions/ChangeOrderStatus.php new file mode 100644 index 0000000..4fc0f3c --- /dev/null +++ b/app/Actions/ChangeOrderStatus.php @@ -0,0 +1,35 @@ +status != request()->from_status) { + throw new \Exception("订单状态不匹配"); + } + + $availableToStatus = []; + switch ($order->status) { + case Orders::STATUS_FINISHED: + $availableToStatus = [Orders::STATUS_ONGOING]; + break; + default: + //do nothing + } + if (!in_array(request()->to_status, $availableToStatus)) { + throw new \Exception("订单状态不匹配"); + } + + $order->update([ + "status" => request()->to_status + ]); + + return $order; + } + +} diff --git a/app/Http/Controllers/Manager/OrdersController.php b/app/Http/Controllers/Manager/OrdersController.php index 9d3de06..e4d45ba 100644 --- a/app/Http/Controllers/Manager/OrdersController.php +++ b/app/Http/Controllers/Manager/OrdersController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Manager; use AlicFeng\IdentityCard\InfoHelper; use App\Actions\AttachAffectedOrders; +use App\Actions\ChangeOrderStatus; use App\Customer; use App\Events\OrderAssigned; use App\Libs\AlipayF2F; @@ -121,7 +122,7 @@ class OrdersController extends CommonController return response()->json(compact("orders_count")); } - /**` + /** * @OA\Get( * path="/manager/get-projcet-orders/{project_id}", * tags={"管理端订单处理"}, @@ -1699,4 +1700,37 @@ class OrdersController extends CommonController return response()->json($paramedic_levels->toArray()); } + /** + * @OA\Post( + * path="/manager/change-order-status/{id}", + * tags={"管理端订单处理"}, + * summary="V2-更新订单状态", + * description="更新订单状态", + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer"), required=true, description="订单ID"), + * @OA\Parameter(name="from_status", in="query", @OA\Schema(type="integer"), required=true, description="原状态"), + * @OA\Parameter(name="to_status", in="query", @OA\Schema(type="integer"), required=true, description="更新状态"), + * @OA\Response( + * response="200", + * description="更新订单状态" + * ) + * ) + */ + + public function changeOrderStatus($id) + { + try { + $order = (new Orders())->find($id); + $res = (new ChangeOrderStatus())->__invoke($order); + DB::commit(); + return response()->json($order->toArray()); + } catch (\Exception $exception) { + DB::rollBack(); + return response()->json([ + "errorcode" => $exception->getCode(), + "errormsg" => $exception->getMessage() + ]); + } + + } } diff --git a/routes/web.php b/routes/web.php index 4854951..ff87bae 100644 --- a/routes/web.php +++ b/routes/web.php @@ -175,6 +175,7 @@ Route::group(["namespace" => "Manager", "prefix" => "manager"], function () { Route::post('get-balance/{customer_id}', 'OrdersController@getBalance'); Route::post('recharge-for-order/{id}', 'OrdersController@rechargeForOrder'); Route::post('refund-for-order/{id}', 'OrdersController@refundForOrder'); + Route::post('change-order-status/{id}', 'OrdersController@changeOrderStatus'); Route::get('statistics/overview', 'StatisticsController@overview'); Route::get('statistics/beds', 'StatisticsController@beds');