count(); echo "✅ 用户数量: {$userCount}\n"; $flow = ApprovalFlow::where('business_type', 'business_trip')->where('status', 1)->first(); if ($flow) { echo "✅ 审批流程: {$flow->name} (ID: {$flow->id})\n"; $nodes = ApprovalNode::where('flow_id', $flow->id)->get(); foreach ($nodes as $node) { echo " - 节点: {$node->name}, 类型: {$node->type}, 审批人: " . json_encode($node->approvers) . "\n"; } } else { echo "❌ 未找到审批流程\n"; } // 测试2:检查现有审批订单 echo "\n【测试2】检查现有审批订单\n"; echo "-------------------------------------------\n"; $pendingOrders = ApprovalOrder::where('status', 'pending')->get(); echo "✅ 待审批订单数量: {$pendingOrders->count()}\n"; foreach ($pendingOrders as $order) { $applicant = User::find($order->applicant_id); $formData = $order->form_data ?? []; $approvers = $formData['approvers'] ?? []; echo " 订单 {$order->id}: {$order->title}\n"; echo " 申请人: {$applicant->name}\n"; echo " 审批人: " . json_encode($approvers) . "\n"; echo " 当前节点: " . json_encode($order->current_nodes) . "\n"; // 检查审批记录 $records = ApprovalRecord::where('order_id', $order->id)->get(); echo " 审批记录数量: {$records->count()}\n"; // 检查消息映射 $messages = FeishuMessage::where('order_id', $order->id)->get(); echo " 消息映射数量: {$messages->count()}\n"; } // 测试3:验证节点完成逻辑 echo "\n【测试3】验证节点完成逻辑\n"; echo "-------------------------------------------\n"; // 使用反射来测试私有方法 $approvalService = new ApprovalService(); $reflection = new ReflectionClass($approvalService); $method = $reflection->getMethod('isNodeCompleted'); $method->setAccessible(true); // 测试订单132(待审批,节点7) echo "订单132(节点7,会签):\n"; try { $isCompleted = $method->invoke($approvalService, 132, 7); echo " 节点是否完成: " . ($isCompleted ? '是' : '否') . "\n"; // 查看审批记录 $records = ApprovalRecord::where('order_id', 132) ->where('node_id', 7) ->where('action', 'approve') ->get(); echo " 已审批人数: {$records->count()}\n"; // 查看form_data中的审批人 $order = ApprovalOrder::find(132); $formData = $order->form_data ?? []; $approvers = $formData['approvers'] ?? []; echo " 需要审批人数: " . count($approvers) . "\n"; echo " 审批人列表: " . json_encode($approvers) . "\n"; } catch (Exception $e) { echo " ❌ 错误: {$e->getMessage()}\n"; } // 测试4:检查消息映射 echo "\n【测试4】检查消息映射\n"; echo "-------------------------------------------\n"; $feishuMessages = FeishuMessage::all(); echo "消息映射总数: {$feishuMessages->count()}\n"; // 测试5:检查消息日志 echo "\n【测试5】检查消息日志\n"; echo "-------------------------------------------\n"; $logCount = FeishuMessageLog::count(); echo "消息日志总数: {$logCount}\n"; // 测试6:验证或签场景配置 echo "\n【测试6】验证不同节点类型配置\n"; echo "-------------------------------------------\n"; echo "当前需要测试的场景:\n"; echo "1. 单人审批 (approver): 1人通过即可\n"; echo "2. 会签 (and_approve): 所有人通过\n"; echo "3. 或签 (or_approve): 1人通过即可\n"; echo "\n建议测试步骤:\n"; echo "-------------------------------------------\n"; echo "1. 修改节点类型为 'approver' 或 'or_approve'\n"; echo "2. 选择多个审批人提交申请\n"; echo "3. 测试第一个审批人通过\n"; echo "4. 检查消息日志和消息映射\n"; echo "5. 验证其他审批人的消息是否更新\n"; echo "\n=== 测试完成 ===\n";