|
@@ -384,27 +384,39 @@ class OrderService
|
|
|
public function finishOrder($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_ing') // 订单状态必须是服务中
|
|
|
+ ->firstOrFail();
|
|
|
|
|
|
- if (! $order) {
|
|
|
- throw new Exception('订单不存在');
|
|
|
- }
|
|
|
+ if (! $order) {
|
|
|
+ throw new Exception('订单不能结束');
|
|
|
+ }
|
|
|
|
|
|
- // 添加订单结束记录
|
|
|
- OrderRecord::create([
|
|
|
- 'order_id' => $orderId,
|
|
|
- 'user_id' => $userId,
|
|
|
- 'state' => 'finish',
|
|
|
- 'remark' => '服务完成',
|
|
|
- ]);
|
|
|
+ // 2. 创建订单历史记录
|
|
|
+ OrderRecord::create([
|
|
|
+ 'order_id' => $orderId,
|
|
|
+ 'object_id' => $userId,
|
|
|
+ 'object_type' => MemberUser::class,
|
|
|
+ 'state' => 'finish',
|
|
|
+ 'remark' => '服务完成',
|
|
|
+ ]);
|
|
|
|
|
|
- // 修改订单状态
|
|
|
- $order->state = 'finished';
|
|
|
- $order->save();
|
|
|
+ // 3. 修改订单状态为服务结束
|
|
|
+ $order->state = 'service_end';
|
|
|
+ $order->save();
|
|
|
|
|
|
- return ['message' => '订单已完成'];
|
|
|
+ return ['message' => '订单已完成'];
|
|
|
+ } catch (Exception $e) {
|
|
|
+ Log::error('结束订单失败:', [
|
|
|
+ 'message' => $e->getMessage(),
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'order_id' => $orderId,
|
|
|
+ ]);
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -685,7 +697,7 @@ class OrderService
|
|
|
->first();
|
|
|
|
|
|
if (! $agentProject) {
|
|
|
- throw new Exception('代理商项目不存在');
|
|
|
+ throw new Exception('代理商项目不���在');
|
|
|
}
|
|
|
|
|
|
$project->price = $agentProject->price;
|