Ver Fonte

feat:订单管理->用户确认撤离

刘学玺 há 4 meses atrás
pai
commit
2856f0804d
1 ficheiros alterados com 30 adições e 18 exclusões
  1. 30 18
      app/Services/Client/OrderService.php

+ 30 - 18
app/Services/Client/OrderService.php

@@ -426,27 +426,39 @@ class OrderService
     public function confirmLeave($userId, $orderId)
     {
         return DB::transaction(function () use ($userId, $orderId) {
-            $order = Order::where('user_id', $userId)
-                ->where('id', $orderId)
-                ->first();
+            try {
+                // 1. 参数校验
+                $order = Order::where('user_id', $userId)
+                    ->where('id', $orderId)
+                    ->where('state', 'service_end') // 订单状态必须是服务结束
+                    ->firstOrFail();
 
-            if (! $order) {
-                throw new Exception('订单不存在');
-            }
+                if (! $order) {
+                    throw new Exception('订单不能撤离');
+                }
 
-            // 添加订单撤离记录
-            OrderRecord::create([
-                'order_id' => $orderId,
-                'user_id' => $userId,
-                'state' => 'leave',
-                'remark' => '技师已离开',
-            ]);
+                // 2. 添加订单撤离记录
+                OrderRecord::create([
+                    'order_id' => $orderId,
+                    'object_id' => $userId,
+                    'object_type' => MemberUser::class,
+                    'state' => 'leave',
+                    'remark' => '技师已离开',
+                ]);
 
-            // 修改订单状态
-            $order->state = 'allow_leave';
-            $order->save();
+                // 3. 修改订单状态为撤离
+                $order->state = 'leave';
+                $order->save();
 
-            return ['message' => '已确认技师离开'];
+                return ['message' => '已确认技师离开'];
+            } catch (Exception $e) {
+                Log::error('确认技师离开失败:', [
+                    'message' => $e->getMessage(),
+                    'user_id' => $userId,
+                    'order_id' => $orderId,
+                ]);
+                throw $e;
+            }
         });
     }
 
@@ -697,7 +709,7 @@ class OrderService
                 ->first();
 
             if (! $agentProject) {
-                throw new Exception('代理商项目不���在');
+                throw new Exception('代理商项目不在');
             }
 
             $project->price = $agentProject->price;