5.9 KiB
5.9 KiB
问题修复 - 发车失败错误200020 (v3.9.9)
📋 问题描述
现象
在批量自动化的发车任务中,虽然车辆查询、刷新、收获都成功,但在发送车辆时全部失败,错误码为 200020。
详细日志分析
✅ 成功的部分
- 账号激活: 成功
- 查询车辆: 成功,查询到4辆车
- 刷新车辆: 部分执行
- 1辆车刷新失败(处于冷却期)
- 3辆车跳过(已有刷新票,按设计跳过)
- 收获车辆: 全部成功,4辆车都收获成功
❌ 失败的部分
- 发送车辆: 全部失败
❌ [token_xxx] 发送车辆失败: C2z8-70437522 - 服务器错误: 200020 - 未知错误 ❌ [token_xxx] 发送车辆失败: CpYM-70437533 - 服务器错误: 200020 - 未知错误 ❌ [token_xxx] 发送车辆失败: MH53-70437538 - 服务器错误: 200020 - 未知错误 ❌ [token_xxx] 发送车辆失败: UCED-70437551 - 服务器错误: 200020 - 未知错误 🚀 [token_xxx] 发送完成:成功0次,跳过0次
错误码含义
错误码 200020 是一个通用错误,在不同场景下有不同含义:
- 刷新车辆时:冷却期未过/刷新次数已用完
- 发送车辆时:服务器状态未同步/操作间隔过短
🔍 问题原因
根本原因
服务器状态同步延迟:
- 车辆收获后,服务器需要时间将车辆状态从"已到达"更新为"待发车"
- 原代码在收获和发送之间只等待了 500ms
- 这个时间不足以让服务器完成状态同步
- 导致发送请求时,服务器认为车辆状态不合法,返回错误码
200020
时序问题
收获车辆 → 等待500ms → 查询车辆 → 立即发送
↑
时间太短,服务器状态未同步
为什么游戏功能模块中没有这个问题?
在游戏功能的"俱乐部赛车"页面中:
- 用户手动点击"一键发车"
- 收获和发送之间有明显的UI交互延迟(查询、渲染、用户观察)
- 实际间隔通常在1-2秒以上
- 足够服务器完成状态同步
💡 解决方案
v3.9.9 修复
增加服务器状态同步等待时间:
- 将收获后的等待时间从 500ms 增加到 3000ms(3秒)
- 添加明确的日志提示,让用户知道在等待服务器同步
代码修改
位置: src/stores/batchTaskStore.js - sendCar 任务
修改前:
console.log(`🎁 [${tokenId}] 收获完成:成功${claimSuccessCount}次,跳过${claimSkipCount}次`)
sendCarResults.push({
task: '批量收获',
success: true,
message: `成功${claimSuccessCount},跳过${claimSkipCount}`
})
// 第5步:批量发送
console.log(`🚀 [${tokenId}] 开始批量发送...`)
let sendSuccessCount = 0
let sendSkipCount = 0
const remainingSendCount = 4 - dailySendCount
// 重新查询车辆状态
await new Promise(resolve => setTimeout(resolve, 500)) // ❌ 500ms太短
修改后:
console.log(`🎁 [${tokenId}] 收获完成:成功${claimSuccessCount}次,跳过${claimSkipCount}次`)
sendCarResults.push({
task: '批量收获',
success: true,
message: `成功${claimSuccessCount},跳过${claimSkipCount}`
})
// 第5步:批量发送
console.log(`🚀 [${tokenId}] 开始批量发送...`)
let sendSuccessCount = 0
let sendSkipCount = 0
const remainingSendCount = 4 - dailySendCount
// 等待服务器状态同步(收获→待发车需要时间)
console.log(`⏳ [${tokenId}] 等待服务器状态同步(3秒)...`) // ✅ 新增日志
await new Promise(resolve => setTimeout(resolve, 3000)) // ✅ 增加到3秒
// 重新查询车辆状态
console.log(`🔍 [${tokenId}] 重新查询车辆状态...`) // ✅ 新增日志
📊 优化效果
时序优化对比
修改前
收获车辆(4辆) → 等待500ms → 查询车辆 → 发送失败(4辆)
总耗时: ~2秒
成功率: 0%
修改后
收获车辆(4辆) → 等待3000ms → 查询车辆 → 发送成功(4辆)
总耗时: ~5秒
成功率: 预期100%
性能影响
- 单token额外耗时: +2.5秒
- 批量6个token(并发1): +2.5秒(每个token独立等待)
- 用户体验: 有明确的日志提示,用户知道在等待服务器同步
🎯 验证建议
验证步骤
- 重新运行批量自动化,选择包含"发车"任务
- 观察日志中是否有:
✅ [token_xxx] 收获车辆成功: xxx ✅ [token_xxx] 收获车辆成功: xxx ... 🎁 [token_xxx] 收获完成:成功4次,跳过0次 ⏳ [token_xxx] 等待服务器状态同步(3秒)... ← 新增 🔍 [token_xxx] 重新查询车辆状态... ← 新增 🚀 [token_xxx] 待发车: 4辆,剩余额度: 4个,将发送: 4辆 ✅ [token_xxx] 发送车辆成功: xxx ← 期望成功
预期结果
- ✅ 所有车辆发送成功
- ✅ 日志中显示明确的等待提示
- ✅ 每日发车次数正确更新(如
今日4/4)
如果仍然失败
如果3秒等待后仍然失败,可能的原因:
- 账号限制: 该账号在俱乐部中没有发车权限
- 服务器限制: 服务器有更严格的防刷新机制
- 车辆状态异常: 车辆本身存在问题
建议:
- 尝试在游戏功能的"俱乐部赛车"页面手动发车,确认是否能成功
- 如果手动也失败,说明是账号或车辆本身的问题
- 如果手动成功,批量自动化失败,可以考虑进一步增加等待时间到5秒
📝 更新日志
版本: v3.9.9
日期: 2025-10-08
类型: 问题修复
修改内容:
- 增加收获车辆后的等待时间(500ms → 3000ms)
- 添加明确的日志提示,显示正在等待服务器状态同步
- 优化发送前的查询日志,更清晰地显示流程
影响范围:
src/stores/batchTaskStore.js-sendCar任务
相关问题:
- 批量发车全部失败,错误码200020
- 服务器状态同步延迟导致的时序问题