Browse Source

fixed:用户端-取消订单

刘学玺 4 months ago
parent
commit
856a40da6a
1 changed files with 11 additions and 6 deletions
  1. 11 6
      app/Services/Client/OrderService.php

+ 11 - 6
app/Services/Client/OrderService.php

@@ -332,10 +332,10 @@ class OrderService
             try {
                 // 1. 验证用户和订单
                 $order = $this->validateOrderForCancel($userId, $orderId);
-                abort_if($order->state == 'cancel', 400, '订单已取消');
+                abort_if($order->state == OrderStatus::CANCELLED->value, 400, '订单已取消');
 
                 // 2. 处理退款
-                if (in_array($order->state, ['wait_receive', 'on_the_way'])) {
+                if (in_array($order->state, [OrderStatus::PAID->value, OrderStatus::ACCEPTED->value, OrderStatus::DEPARTED->value])) {
                     $this->handleCancelRefund($order);
                 }
 
@@ -395,6 +395,12 @@ class OrderService
                 $this->handleRefund($user, $order, $deductAmount, true);
                 break;
 
+            case OrderStatus::PAID->value: // 已支付
+                // 返还所有金额
+                $deductAmount = 0;
+                $this->handleRefund($user, $order, $deductAmount, false);
+                break;
+
             case OrderStatus::CREATED->value:
                 // 待支付状态直接取消,无需退款
                 break;
@@ -414,13 +420,12 @@ class OrderService
             'order_id' => $order->id,
             'object_id' => $userId,
             'object_type' => MemberUser::class,
-            'state' => 'cancel',
+            'state' => OrderRecordStatus::CANCELLED->value,
             'remark' => '用户取消订单',
         ]);
 
         // 修改订单状态
-        $order->state = 'cancel';
-        $order->cancel_time = now(); // 添加取消时间
+        $order->state = OrderStatus::CANCELLED->value;
         $order->save();
 
         // 如果有技师,可能需要通知技师订单已取消
@@ -452,7 +457,7 @@ class OrderService
         // 剩余退款金额从支付金额中退还
         $paymentRefund = $refundAmount - $balanceRefund;
         if ($paymentRefund > 0) {
-            $this->createRefundRecords($user, $order, $paymentRefund, 'payment');
+            $this->createRefundRecords($user, $order, $paymentRefund);
         }
 
         // 记录平台收入