weizong song 4 years ago
parent b78f8b01e0
commit 4d6f37fab9

@ -0,0 +1,35 @@
<?php
namespace App\Actions;
use App\Models\Orders;
use Illuminate\Support\Facades\DB;
class ChangeOrderStatus
{
public function __invoke(Orders $order)
{
if ($order->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;
}
}

@ -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()
]);
}
}
}

@ -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');

Loading…
Cancel
Save