Ver Fonte

fixed:创建订单,扣除钱包余额

刘学玺 há 4 meses atrás
pai
commit
5b50cd27d3

+ 3 - 3
app/Http/Controllers/Client/OrderController.php

@@ -46,10 +46,10 @@ class OrderController extends Controller
      *
      * @bodyParam project_id int required 项目ID Example: 1
      * @bodyParam address_id int required 地址ID Example: 1
-     * @bodyParam coach_id int required 技师ID Example: 1
-     * @bodyParam use_balance int 使用余额 Example: 0
+     * @bodyParam coach_id int required 技师ID Example: 6
+     * @bodyParam use_balance boolean 使用余额 Example: false
      * @bodyParam service_time datetime required 服务时间 Example: 2024-01-01 10:00:00
-     * @bodyParam order_id int 订单ID Example:
+     * @bodyParam order_id int 订单ID Example: null
      *
      * @response {
      *   "status": "success",

+ 10 - 4
app/Services/Client/OrderService.php

@@ -15,7 +15,6 @@ use App\Models\OrderRecord;
 use App\Models\Project;
 use App\Models\SysConfig;
 use App\Models\User;
-use App\Models\Wallet;
 use App\Models\WalletRefundRecord;
 use Exception;
 use Illuminate\Support\Facades\Auth;
@@ -190,6 +189,7 @@ class OrderService
                     $order->state = 'wait_receive';
                     $order->save();
 
+                    // 创建订单支付记录
                     OrderRecord::create([
                         'order_id' => $order->id,
                         'object_id' => $userId,
@@ -198,6 +198,12 @@ class OrderService
                         'remark' => '余额支付',
                     ]);
 
+                    // 扣除用户钱包总余额
+                    $user->wallet->decrement('total_balance', $order->balance_amount);
+                    // 扣除用户钱包可用余额
+                    $user->wallet->decrement('available_balance', $order->balance_amount);
+                    $user->wallet->save();
+
                     // 创建技师排班
                     // CoachSchedule::create([
                     //     'coach_id' => $data['coach_id'],
@@ -587,12 +593,12 @@ class OrderService
         $payAmount = $totalAmount;
 
         if ($useBalance) {
-            $wallet = Wallet::where('user_id', $userId)->first();
-            if ($wallet && $wallet->balance >= $totalAmount) {
+            $wallet = $user->wallet;
+            if ($wallet && $wallet->available_balance >= $totalAmount) {
                 $balanceAmount = $totalAmount;
                 $payAmount = 0;
             } elseif ($wallet) {
-                $balanceAmount = $wallet->balance;
+                $balanceAmount = $wallet->available_balance;
                 $payAmount = $totalAmount - $balanceAmount;
             }
         }

+ 2 - 1
routes/api.php

@@ -77,12 +77,13 @@ Route::middleware('auth:sanctum')->group(function () {
         Route::put('/{id}/default', [UserAddressController::class, 'setDefault']);
     });
 
+    // 订单相关
     Route::prefix('orders')->group(function () {
         Route::post('initialize', [OrderController::class, 'initialize']);
         Route::post('create', [OrderController::class, 'create']);
+        Route::post('cancel', [OrderController::class, 'cancel']);
         Route::post('finish', [OrderController::class, 'finish']);
         Route::post('confirm-leave', [OrderController::class, 'confirmLeave']);
-        Route::post('cancel', [OrderController::class, 'cancel']);
         Route::get('list', [OrderController::class, 'list']);
         Route::get('detail/{id}', [OrderController::class, 'detail']);
         Route::post('refund/{id}', [OrderController::class, 'refund']);