fix: 修复3个紧急问题

1. 修复抄送人重新选择后接收不到通知的问题
   - BusinessTripService: 添加 $detailUrl 变量定义,确保抄送通知包含详情链接

2. 修复多人审批报错的问题
   - ApprovalService: isNodeCompleted() 方法改为从 $node->approvers 获取审批人列表
   - 之前从 form_data['approvers'] 获取会因重新选择审批人而导致数据不一致

3. 确保所有角色的通知消息都能点击进入详情
   - 飞书卡片通知已包含"查看详情"按钮,问题1的修复确保了抄送人也能正常跳转

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-28 17:11:14 +08:00
parent 92ffaf2ef0
commit e7165d3d9f
2 changed files with 3 additions and 4 deletions
+2 -4
View File
@@ -331,10 +331,8 @@ class ApprovalService
->where('action', 'approve')
->get();
// 从 form_data 获取审批人列表
$order = ApprovalOrder::find($orderId);
$formData = $order->form_data ?? [];
$approvers = $formData['approvers'] ?? [];
// 从节点的 approvers 字段获取审批人列表
$approvers = $node->approvers ?? [];
// 兼容两种格式:[{id:1, name:'...'}] 或 [1]
if (!empty($approvers) && is_array($approvers[0] ?? null) && isset($approvers[0]['id'])) {
@@ -297,6 +297,7 @@ class BusinessTripService
// 构建审批链接(统一使用审批详情页)
$approvalUrl = "https://uniservice-mobile.hnxinyouhe.com/approval/detail/{$approvalOrder->id}";
$detailUrl = $approvalUrl; // 用于抄送人和其他通知
// 构建内容
$content = "**出差原因**: {$businessTrip->reason}\n";