first(); if (!$applicant) { echo "❌ 没有找到用户\n"; exit(1); } echo "👤 申请人: {$applicant->name} (ID: {$applicant->id})\n"; // 获取审批人 $approvers = User::where('status', 1) ->where('id', '!=', $applicant->id) ->limit(3) ->get(); if ($approvers->count() < 3) { echo "❌ 审批人数量不足,需要至少3个\n"; exit(1); } echo "👥 审批人: " . $approvers->pluck('name')->join(', ') . "\n\n"; Db::transaction(function () use ($applicant, $approvers) { $businessTripService = new \app\service\BusinessTripService(); // 1. 创建草稿 echo "【步骤1】创建草稿\n"; $draft = $businessTripService->createDraft($applicant->id, [ 'reason' => '会签测试', 'itineraries' => [ [ 'start_time' => date('Y-m-d H:i:s'), 'end_time' => date('Y-m-d H:i:s', strtotime('+1 day')), 'departure' => '长沙', 'destination' => '北京', 'transport' => '飞机', ], ], ]); echo "✅ 草稿创建成功: ID={$draft->id}\n\n"; // 2. 提交申请 echo "【步骤2】提交申请(会签,3个审批人)\n"; $approverIds = $approvers->pluck('id')->toArray(); $businessTrip = $businessTripService->submit($applicant->id, $draft->id, $approverIds, []); $approvalOrder = $businessTrip->approvalOrder; echo "✅ 申请提交成功\n"; echo " 订单ID: {$approvalOrder->id}\n"; echo " 当前状态: {$approvalOrder->status}\n"; echo " 当前节点: " . json_encode($approvalOrder->current_nodes) . "\n"; echo " 审批人: " . json_encode($approvalOrder->form_data['approvers'] ?? []) . "\n\n"; // 3. 第一个审批人通过 echo "【步骤3】第一个审批人通过\n"; $approver1 = $approvers[0]; $approvalService = new \app\service\ApprovalService(); $order1 = $approvalService->approve($approvalOrder->id, $approver1->id); echo " 审批人: {$approver1->name}\n"; echo " 订单状态: {$order1->status}\n"; echo " 审批记录数: " . ApprovalRecord::where('order_id', $order1->id)->where('action', 'approve')->count() . "\n"; echo " 预期: 状态仍为 pending(需要其他人审批)\n\n"; // 4. 第二个审批人通过 echo "【步骤4】第二个审批人通过\n"; $approver2 = $approvers[1]; $order2 = $approvalService->approve($approvalOrder->id, $approver2->id); echo " 审批人: {$approver2->name}\n"; echo " 订单状态: {$order2->status}\n"; echo " 审批记录数: " . ApprovalRecord::where('order_id', $order2->id)->where('action', 'approve')->count() . "\n"; echo " 预期: 状态仍为 pending(需要最后一人审批)\n\n"; // 5. 第三个审批人通过 echo "【步骤5】第三个审批人通过\n"; $approver3 = $approvers[2]; $order3 = $approvalService->approve($approvalOrder->id, $approver3->id); echo " 审批人: {$approver3->name}\n"; echo " 订单状态: {$order3->status}\n"; echo " 审批记录数: " . ApprovalRecord::where('order_id', $order3->id)->where('action', 'approve')->count() . "\n"; echo " 预期: 状态变为 approved(所有人都已审批)\n\n"; }); // 6. 检查消息日志 echo "【检查】消息日志\n"; $logCount = \app\model\FeishuMessageLog::where('order_id', $approvalOrder->id)->count(); echo " 消息日志数量: {$logCount}\n"; if ($logCount > 0) { $logs = \app\model\FeishuMessageLog::where('order_id', $approvalOrder->id) ->orderBy('created_at') ->get(); foreach ($logs as $log) { echo " - {$log->action}: {$log->status} (user_id={$log->user_id})\n"; } } echo "\n=== 测试完成 ===\n";