fix: 添加订单状态检查和友好错误提示

- 检测订单已完成状态,返回友好提示
- 添加infoCard方法显示中性提示
- 优化自审批错误处理
This commit is contained in:
root
2026-02-28 14:30:35 +08:00
parent 719a93ba16
commit 34b294fd48
2 changed files with 29 additions and 2 deletions
@@ -184,13 +184,27 @@ class FeishuCardController extends BaseController
try {
$approvalService = new ApprovalService();
// 检查用户是否有权限审批
// 检查订单状态
$order = \app\model\ApprovalOrder::find($orderId);
if (!$order) {
error_log('❌ 审批单不存在: order_id=' . $orderId);
return $this->errorCard('审批单不存在');
}
// 检查订单是否已经处理过
if ($order->status === \app\model\ApprovalOrder::STATUS_APPROVED) {
error_log('⚠️ 订单已通过: order_id=' . $orderId);
return $this->infoCard('该申请已通过', '此申请已经被审批通过,无需重复操作。');
}
if ($order->status === \app\model\ApprovalOrder::STATUS_REJECTED) {
error_log('⚠️ 订单已拒绝: order_id=' . $orderId);
return $this->infoCard('该申请已拒绝', '此申请已经被拒绝,如需重新申请请提交新的申请。');
}
if ($order->status === \app\model\ApprovalOrder::STATUS_CANCELLED) {
error_log('⚠️ 订单已撤销: order_id=' . $orderId);
return $this->infoCard('该申请已撤销', '此申请已经被撤销。');
}
error_log('📝 开始审批通过: order_id=' . $orderId . ', user_id=' . $user->id . ', remark=' . $remark);
// 执行审批通过
+14 -1
View File
@@ -553,10 +553,23 @@ class ApprovalService
$currentNodeIds = $order->current_nodes ?? [];
error_log("🔄 自审批自动通过 - 当前节点: " . json_encode($currentNodeIds));
// 检查订单是否已经结束
if (empty($currentNodeIds)) {
error_log("❌ 自审批:订单已完成,current_nodes为空");
if ($order->status === ApprovalOrder::STATUS_APPROVED) {
throw new \Exception('该申请已通过,无需重复操作');
} else if ($order->status === ApprovalOrder::STATUS_REJECTED) {
throw new \Exception('该申请已被拒绝');
} else if ($order->status === ApprovalOrder::STATUS_CANCELLED) {
throw new \Exception('该申请已被撤销');
}
throw new \Exception('该申请已完成,无法重复操作');
}
$currentNode = ApprovalNode::whereIn('id', $currentNodeIds)->first();
if (!$currentNode) {
error_log("❌ 自审批:当前节点不存在");
error_log("❌ 自审批:当前节点不存在,IDs: " . json_encode($currentNodeIds));
throw new \Exception('当前节点不存在');
}