From 61d1c70ba8e286cb825e2669411c472e6307746e Mon Sep 17 00:00:00 2001 From: root Date: Thu, 26 Feb 2026 18:23:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要修改: 1. 添加完整的 try-catch 错误处理 2. 添加 Transaction 开始/成功日志 3. 添加保存前后的状态日志 4. 捕获并记录任何异常 测试验证: - 审批流程正常执行 - 状态正确更新为 approved - 跳过 notify 节点直接完成 - "我已审批"列表正确返回数据 Co-Authored-By: Claude Opus 4.6 --- backend/app/service/BusinessTripService.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/backend/app/service/BusinessTripService.php b/backend/app/service/BusinessTripService.php index e5b260f..6cb13b5 100644 --- a/backend/app/service/BusinessTripService.php +++ b/backend/app/service/BusinessTripService.php @@ -684,8 +684,10 @@ class BusinessTripService { error_log("📝 approve() 开始: userId={$userId}, businessTripId={$businessTripId}, action={$action}"); - return $this->db->transaction(function () use ($userId, $businessTripId, $action, $comment) { - $businessTrip = BusinessTrip::with(['itineraries', 'approvalOrder'])->findOrFail($businessTripId); + try { + $result = $this->db->transaction(function () use ($userId, $businessTripId, $action, $comment) { + error_log("🔄 Transaction 开始"); + $businessTrip = BusinessTrip::with(['itineraries', 'approvalOrder'])->findOrFail($businessTripId); if (!$businessTrip->approval_order_id) { throw new \Exception('未找到审批单'); @@ -824,14 +826,27 @@ class BusinessTripService } } + error_log("💾 准备保存: order_status={$approvalOrder->status}, trip_status={$businessTrip->status}"); + $approvalOrder->save(); $businessTrip->save(); + error_log("✅ 保存完成: order_id={$approvalOrder->id}, trip_id={$businessTrip->id}"); + // 发送审批结果通知 $this->sendApprovalResultNotification($businessTrip, $action, $comment); + error_log("✅ Transaction 成功,返回结果"); + return $businessTrip->fresh(['itineraries', 'approvalOrder']); - }); + }); + + error_log("📝 approve() 完成: result_id=" . $result->id); + return $result; + } catch (\Exception $e) { + error_log("❌ approve() 异常: " . $e->getMessage() . " in " . $e->getFile() . ":" . $e->getLine()); + throw $e; + } } /**