fix: 修复审批详情显示问题
- 修复用户不存在时仍然显示审批人ID的问题 - 即使部分用户不存在,也保留其ID信息显示 - 优化审批人和抄送人的查询逻辑 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -280,20 +280,42 @@ class ApprovalService
|
|||||||
|
|
||||||
// 获取实际审批人的完整用户信息
|
// 获取实际审批人的完整用户信息
|
||||||
$actualApproverUsers = [];
|
$actualApproverUsers = [];
|
||||||
|
$actualApproverIdsArray = [];
|
||||||
if (!empty($actualApproverIds)) {
|
if (!empty($actualApproverIds)) {
|
||||||
$actualApproverUsers = User::whereIn('id', $actualApproverIds)
|
$users = User::whereIn('id', $actualApproverIds)->get()->keyBy('id');
|
||||||
->get()
|
foreach ($actualApproverIds as $approverId) {
|
||||||
->keyBy('id')
|
if ($users->has($approverId)) {
|
||||||
->toArray();
|
$actualApproverUsers[$approverId] = $users->get($approverId)->toArray();
|
||||||
|
} else {
|
||||||
|
// 用户不存在,至少保留ID信息
|
||||||
|
$actualApproverUsers[$approverId] = [
|
||||||
|
'id' => $approverId,
|
||||||
|
'name' => '用户' . $approverId . '(不存在)',
|
||||||
|
'status' => 0,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$actualApproverIdsArray[] = (int)$approverId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取实际抄送人的完整用户信息
|
// 获取实际抄送人的完整用户信息
|
||||||
$actualCcUserObjects = [];
|
$actualCcUserObjects = [];
|
||||||
|
$actualCcUserIdsArray = [];
|
||||||
if (!empty($actualCcUserIds)) {
|
if (!empty($actualCcUserIds)) {
|
||||||
$actualCcUserObjects = User::whereIn('id', $actualCcUserIds)
|
$users = User::whereIn('id', $actualCcUserIds)->get()->keyBy('id');
|
||||||
->get()
|
foreach ($actualCcUserIds as $ccUserId) {
|
||||||
->keyBy('id')
|
if ($users->has($ccUserId)) {
|
||||||
->toArray();
|
$actualCcUserObjects[$ccUserId] = $users->get($ccUserId)->toArray();
|
||||||
|
} else {
|
||||||
|
// 用户不存在,至少保留ID信息
|
||||||
|
$actualCcUserObjects[$ccUserId] = [
|
||||||
|
'id' => $ccUserId,
|
||||||
|
'name' => '用户' . $ccUserId . '(不存在)',
|
||||||
|
'status' => 0,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$actualCcUserIdsArray[] = (int)$ccUserId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理节点信息,添加实际审批人
|
// 处理节点信息,添加实际审批人
|
||||||
@@ -305,7 +327,7 @@ class ApprovalService
|
|||||||
// 为审批节点添加实际审批人信息
|
// 为审批节点添加实际审批人信息
|
||||||
if (in_array($node->type, ['approver', 'and_approve', 'or_approve'])) {
|
if (in_array($node->type, ['approver', 'and_approve', 'or_approve'])) {
|
||||||
$nodeArray['actual_approvers'] = [];
|
$nodeArray['actual_approvers'] = [];
|
||||||
foreach ($actualApproverIds as $approverId) {
|
foreach ($actualApproverIdsArray as $approverId) {
|
||||||
if (isset($actualApproverUsers[$approverId])) {
|
if (isset($actualApproverUsers[$approverId])) {
|
||||||
$nodeArray['actual_approvers'][] = $actualApproverUsers[$approverId];
|
$nodeArray['actual_approvers'][] = $actualApproverUsers[$approverId];
|
||||||
}
|
}
|
||||||
@@ -313,7 +335,7 @@ class ApprovalService
|
|||||||
|
|
||||||
// 获取每个实际审批人的审批状态
|
// 获取每个实际审批人的审批状态
|
||||||
$nodeArray['approver_statuses'] = [];
|
$nodeArray['approver_statuses'] = [];
|
||||||
foreach ($actualApproverIds as $approverId) {
|
foreach ($actualApproverIdsArray as $approverId) {
|
||||||
$record = ApprovalRecord::where('order_id', $orderId)
|
$record = ApprovalRecord::where('order_id', $orderId)
|
||||||
->where('node_id', $node->id)
|
->where('node_id', $node->id)
|
||||||
->where('approver_id', $approverId)
|
->where('approver_id', $approverId)
|
||||||
@@ -334,7 +356,7 @@ class ApprovalService
|
|||||||
// 为通知节点添加实际抄送人
|
// 为通知节点添加实际抄送人
|
||||||
if ($node->type === 'notify') {
|
if ($node->type === 'notify') {
|
||||||
$nodeArray['actual_cc_users'] = [];
|
$nodeArray['actual_cc_users'] = [];
|
||||||
foreach ($actualCcUserIds as $ccUserId) {
|
foreach ($actualCcUserIdsArray as $ccUserId) {
|
||||||
if (isset($actualCcUserObjects[$ccUserId])) {
|
if (isset($actualCcUserObjects[$ccUserId])) {
|
||||||
$nodeArray['actual_cc_users'][] = $actualCcUserObjects[$ccUserId];
|
$nodeArray['actual_cc_users'][] = $actualCcUserObjects[$ccUserId];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user