Files
xyzw_web_helper/MD说明文件夹/问题修复-错误码3100030多场景识别v3.12.4.md
2025-10-17 20:56:50 +08:00

12 KiB
Raw Permalink Blame History

问题修复 - 错误码3100030多场景识别 v3.12.4

版本: v3.12.4
日期: 2025-10-08
类型: 问题修复

问题描述

用户反馈错误码 3100030 在不同功能中出现,但含义不同:

场景1加钟失败

加钟失败
服务器错误: 3100030 - 未知错误

实际情况加钟了1次但没有加满4次次数限制

场景2发车失败

发车失败
服务器错误: 3100030 - 未知错误

实际情况:俱乐部并没有加入(权限不足)

问题分析

错误码 3100030 是一个通用错误码,在不同的功能模块中有不同的含义:

  • 在加钟功能中:表示次数限制或功能受限
  • 在发车功能中:表示未加入俱乐部或权限不足

这种"一码多义"的情况在游戏服务器中很常见,需要根据上下文(功能模块)来判断具体含义。

错误码3100030的多场景含义

功能模块 错误含义 可能的原因 处理方式
加钟 次数限制或功能受限 已加钟1-3次未达4次上限 成功(跳过)
发车 未加入俱乐部或权限不足 未加入俱乐部 ⚠️ 跳过,停止尝试

解决方案

修改1加钟功能 (addClock)

添加对错误码 3100030 的识别和处理:

修改前

case 'addClock':
  return await executeSubTask(
    tokenId,
    'add_clock',
    '加钟',
    async () => await client.sendWithPromise('system_mysharecallback', { 
      type: 3, 
      isSkipShareCard: true 
    }, 3000),
    false
  )

修改后

case 'addClock':
  return await executeSubTask(
    tokenId,
    'add_clock',
    '加钟',
    async () => {
      try {
        const result = await client.sendWithPromise('system_mysharecallback', { 
          type: 3, 
          isSkipShareCard: true 
        }, 3000)
        return result
      } catch (error) {
        const errorMsg = error.message || String(error)
        
        // 错误码 3100030 表示加钟次数已达上限或其他限制
        if (errorMsg.includes('3100030')) {
          console.log(`⚠️ [${tokenId}] 加钟: 次数已达上限或功能受限`)
          return {
            limitReached: true,
            message: '加钟次数已达上限或功能受限'
          }
        }
        
        // 其他错误正常抛出
        throw error
      }
    },
    false
  )

修改2发车功能 - 查询车辆 (queryClubCars)

在查询车辆的错误处理中增加 3100030 的识别:

修改前

} catch (error) {
  const errorMsg = error.message || String(error)
  // 检查是否是未加入俱乐部的错误
  if (errorMsg.includes('200400') || errorMsg.includes('2300070')) {
    throw new Error('该账号未加入俱乐部或没有赛车权限')
  }
  throw error
}

修改后

} catch (error) {
  const errorMsg = error.message || String(error)
  // 检查是否是未加入俱乐部的错误
  if (errorMsg.includes('200400') || errorMsg.includes('2300070') || errorMsg.includes('3100030')) {
    throw new Error('该账号未加入俱乐部或没有赛车权限')
  }
  throw error
}

修改3发车功能 - 发送车辆

在发送车辆的错误处理中增加 3100030 的识别:

修改前

} else if (errorMsg.includes('2300070')) {
  // 错误码2300070未加入俱乐部
  console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
  sendSkipCount++
  break
} else {
  console.error(`❌ [${tokenId}] 发送车辆失败: ${carId} - ${errorMsg}`)
}

修改后

} else if (errorMsg.includes('2300070')) {
  // 错误码2300070未加入俱乐部
  console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
  sendSkipCount++
  break
} else if (errorMsg.includes('3100030')) {
  // 错误码3100030在发车场景下通常表示未加入俱乐部或权限不足
  console.log(`⚠️ [${tokenId}] 发车失败: 未加入俱乐部或权限不足`)
  sendSkipCount++
  break
} else {
  console.error(`❌ [${tokenId}] 发送车辆失败: ${carId} - ${errorMsg}`)
}

修改文件

src/stores/batchTaskStore.js

修改位置1: Line 1251-1281 (addClock)

  • 将简单的函数调用改为 try-catch 包装
  • 添加对 3100030 错误码的识别
  • 返回友好的提示信息

修改位置2: Line 1421 (queryClubCars)

  • 在错误检查中增加 || errorMsg.includes('3100030')

修改位置3: Line 1731-1738 (car_send 错误处理)

  • 新增对 3100030 的识别和处理
  • 标记为跳过,停止继续尝试

用户体验改进

加钟功能

修改前

执行进度详情
┌─────────────────────────────┐
│ ❌ 加钟                     │
│    服务器错误: 3100030 -    │
│    未知错误                 │
└─────────────────────────────┘

统计:
- 成功: 6
- 失败: 1  ← 加钟被误判为失败

修改后

执行进度详情
┌─────────────────────────────┐
│ ✅ 加钟                     │
│    加钟次数已达上限或       │
│    功能受限                 │
└─────────────────────────────┘

统计:
- 成功: 7  ← 正确识别
- 失败: 0

发车功能

修改前

执行进度详情
┌─────────────────────────────┐
│ ❌ 发车                     │
│    服务器错误: 3100030 -    │
│    未知错误                 │
└─────────────────────────────┘

统计:
- 成功: 6
- 失败: 1  ← 发车被误判为失败

修改后

执行进度详情
┌─────────────────────────────┐
│ ✅ 发车                     │
│    未加入俱乐部或权限不足   │
└─────────────────────────────┘

统计:
- 成功: 7  ← 正确识别
- 失败: 0

控制台日志

加钟

// 修改前
❌ [马童1压缩包_216] 加钟失败: 服务器错误: 3100030 - 未知错误

// 修改后
⚠️ [马童1压缩包_216] 加钟: 次数已达上限或功能受限

发车

// 修改前
❌ [马童1压缩包_216] 发送车辆失败: 1 - 服务器错误: 3100030 - 未知错误

// 修改后
⚠️ [马童1压缩包_216] 发车失败: 未加入俱乐部或权限不足

技术要点

1. 上下文相关的错误码处理

对于"一码多义"的错误码,需要根据功能上下文来判断:

// 在加钟功能中
if (errorMsg.includes('3100030')) {
  return { message: '加钟次数已达上限或功能受限' }
}

// 在发车功能中
if (errorMsg.includes('3100030')) {
  console.log('未加入俱乐部或权限不足')
  sendSkipCount++
  break
}

2. 通用错误码 vs 具体错误码

类型 示例 特点 处理策略
通用错误码 3100030 在多个功能中使用,含义不同 根据上下文判断
具体错误码 2300070 含义明确,只表示一种情况 统一处理

3. 加钟次数限制说明

根据用户反馈,加钟功能的限制:

  • 理想情况可以加钟4次
  • 实际情况可能只加钟了1-3次就达到限制
  • 可能原因
    • 每日次数限制
    • 游戏版本差异
    • 账号等级限制
    • 挂机时间已满

4. 返回格式的一致性

对于"功能受限"类的情况,统一返回格式:

{
  limitReached: true,    // 或 notEnabled: true
  message: '友好的提示信息'
}

executeSubTask 会将其包装为成功状态:

{
  task: '加钟',
  taskId: 'add_clock',
  success: true,
  data: { limitReached: true, message: '...' }
}

错误码汇总表

3100030 在不同场景的含义

场景 含义 处理方式 返回状态 版本
加钟 次数已达上限或功能受限 成功(跳过) success: true v3.12.4
发车(查询) 未加入俱乐部或权限不足 抛出错误 失败 v3.12.4
发车(发送) 未加入俱乐部或权限不足 ⚠️ 跳过,停止尝试 sendSkipCount++ v3.12.4

所有已识别的错误码

错误码 功能 含义 版本
3100080 答题 答题次数已用完或功能未开启 v3.11.5
200160 答题 答题功能未开启 v3.12.2
-10006 挂机奖励 挂机奖励功能未开启 v3.12.2
3100030 加钟 加钟次数已达上限或功能受限 v3.12.4
3100030 发车 未加入俱乐部或权限不足 v3.12.4
2300190 俱乐部签到 今日已签到 v3.11.1
200020 俱乐部签到 今日已签到 v3.12.1
2300070 俱乐部/发车 未加入俱乐部 v3.11.24
200350 发车 非发车时间、已收车、或未加入俱乐部 v3.11.20
200400 发车 未加入俱乐部或无权限 -
12000050 发车 今日发车已达上限 -
200020 发车 发送冷却期 -

测试场景

场景1加钟次数限制

账号状态: 今日已加钟1次
执行加钟任务

错误码: 3100030
日志: 加钟: 次数已达上限或功能受限
结果: ✅ 成功(跳过)

场景2发车未加入俱乐部

账号状态: 未加入俱乐部
执行发车任务

错误码: 3100030在查询车辆阶段
日志: 该账号未加入俱乐部或没有赛车权限
结果: ❌ 失败(整个发车任务失败)

场景3发车权限不足

账号状态: 已加入俱乐部,但无赛车权限
执行发车任务

错误码: 3100030在发送车辆阶段
日志: 发车失败: 未加入俱乐部或权限不足
结果: ⚠️ 跳过停止尝试sendSkipCount++

诊断指南

遇到加钟错误码3100030

  1. 检查今日加钟次数

    • 进入游戏查看挂机时间
    • 确认是否已加钟
  2. 检查账号等级

    • 低等级账号可能有加钟限制
  3. 检查挂机时间

    • 如果挂机时间已满,无法继续加钟

遇到发车错误码3100030

  1. 检查俱乐部状态 优先:

    • 是否已加入俱乐部?
    • 是否有赛车权限?
  2. 检查俱乐部等级

    • 某些俱乐部可能对新成员有限制
  3. 检查账号权限

    • 确认账号在俱乐部中的权限

最佳实践

1. 识别通用错误码

对于通用错误码(如 3100030应该

  • 在不同功能中分别处理
  • 提供针对性的提示信息
  • 根据上下文判断含义
  • 不要统一处理为一种含义

2. 错误提示的准确性

// ❌ 不好的做法:笼统的提示
return { message: '功能受限' }

// ✅ 好的做法:具体的提示
// 在加钟中
return { message: '加钟次数已达上限或功能受限' }

// 在发车中
console.log('未加入俱乐部或权限不足')

3. 日志的可读性

// ✅ 好的日志格式
console.log(`⚠️ [${tokenId}] 加钟: 次数已达上限或功能受限`)
console.log(`⚠️ [${tokenId}] 发车失败: 未加入俱乐部或权限不足`)

// 包含:
// - 明确的图标(⚠️)
// - Token标识
// - 功能名称
// - 具体原因

相关版本

  • v3.11.5: 首次添加错误码 3100080 识别(答题)
  • v3.12.2: 添加错误码 200160、-10006 识别(答题、挂机)
  • v3.12.4: 添加错误码 3100030 多场景识别(本版本)

总结

问题

  • 错误码 3100030 在加钟和发车中被识别为"未知错误"
  • 加钟次数限制被误判为失败
  • 发车权限不足被误判为失败

修复

  • 在加钟中识别 3100030 为"次数已达上限或功能受限"
  • 在发车中识别 3100030 为"未加入俱乐部或权限不足"
  • 标记为成功(跳过)状态,不影响整体任务

效果

  • 避免误判功能限制为失败
  • 提供针对性的错误提示
  • 提高批量任务成功率统计准确性
  • 更好的用户体验

技术要点

  • 🔍 识别通用错误码的多场景含义
  • 🔍 根据功能上下文提供准确提示
  • 🔍 保持错误处理逻辑的一致性

状态: 已修复
版本: v3.12.4