Files
xyzw_web_helper/MD说明文件夹/问题修复-错误码2300070未加入俱乐部提示v3.11.24.md
2025-10-17 20:56:50 +08:00

384 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 问题修复 - 错误码2300070未加入俱乐部提示 v3.11.24
**版本**: v3.11.24
**日期**: 2025-10-08
**类型**: 问题修复 / 用户体验改进
## 问题描述
用户反馈在批量任务执行时,遇到以下错误:
```
俱乐部签到失败
服务器错误: 2300070 - 未知错误
发车失败
服务器错误: 2300070 - 未知错误
```
**实际情况**:该账号未加入俱乐部
**问题分析**
- 俱乐部签到和发车功能都需要账号先加入俱乐部
- 服务器返回错误码 `2300070` 表示未加入俱乐部
- 但系统显示为"未知错误",用户无法了解真实原因
- 需要识别这个错误码并给出友好提示
## 错误码说明
### 2300070 错误码
**含义**: 账号未加入俱乐部
**影响范围**
- ❌ 俱乐部签到 - 需要加入俱乐部
- ❌ 发车功能 - 需要加入俱乐部才能使用赛车
- ✅ 其他功能(每日修复、自动学习、领取奖励等)不受影响
**处理策略**
- 识别错误码 2300070
- 显示友好的错误提示:"该账号未加入俱乐部"
- 标记为失败(因为无法完成操作)
- 停止继续尝试(避免重复失败)
## 解决方案
### 1. 俱乐部签到错误处理
`legionSignIn` 任务中添加对错误码 2300070 的识别:
```javascript
case 'legionSignIn':
// 俱乐部签到
return await executeSubTask(
tokenId,
'legion_signin',
'俱乐部签到',
async () => {
try {
const result = await client.sendWithPromise('legion_signin', {}, 5000)
return result
} catch (error) {
const errorMsg = error.message || String(error)
// 错误码 2300190 表示"今日已签到",不应视为错误
if (errorMsg.includes('2300190')) {
console.log(' 俱乐部今日已签到,跳过')
return { alreadySignedIn: true }
}
// ✅ 新增:错误码 2300070 表示"未加入俱乐部"
if (errorMsg.includes('2300070')) {
console.log('⚠️ 俱乐部签到失败:该账号未加入俱乐部')
throw new Error('该账号未加入俱乐部,无法签到')
}
// 超时错误:提示用户检查游戏内实际状态
if (errorMsg.includes('请求超时') || errorMsg.includes('timeout')) {
console.warn('⚠️ 俱乐部签到超时,请检查游戏内是否已签到')
return { timeout: true, message: '超时(可能已成功,请检查游戏内状态)' }
}
// 其他错误正常抛出
throw error
}
},
false
)
```
### 2. 发车功能 - 查询车辆错误处理
`queryClubCars` 函数中添加对错误码 2300070 的识别:
```javascript
const queryClubCars = async () => {
console.log(`🚗 [${tokenId}] 开始查询俱乐部车辆...`)
try {
const response = await tokenStore.sendMessageAsync(tokenId, 'car_getrolecar', {}, 5000)
if (!response || !response.roleCar) {
throw new Error('查询车辆失败:未返回车辆数据')
}
const carDataMap = response.roleCar.carDataMap || {}
const carIds = Object.keys(carDataMap).sort()
return { carDataMap, carIds }
} catch (error) {
const errorMsg = error.message || String(error)
// ✅ 新增检查是否是未加入俱乐部的错误200400 或 2300070
if (errorMsg.includes('200400') || errorMsg.includes('2300070')) {
throw new Error('该账号未加入俱乐部或没有赛车权限')
}
throw error
}
}
```
### 3. 发车功能 - 发送车辆错误处理
在发送车辆的错误处理中添加对错误码 2300070 的识别:
```javascript
} catch (error) {
const errorMsg = error.message || String(error)
// 区分不同的错误类型
if (errorMsg.includes('12000050')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 今日发车次数已达上限(服务器端限制)`)
localStorage.setItem(dailySendKey, '4')
dailySendCount = 4
break
} else if (errorMsg.includes('200020')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 处于发送冷却期`)
} else if (errorMsg.includes('200350')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 非发车时间6:00-20:00或已发车后收车`)
sendSkipCount++
break
} else if (errorMsg.includes('2300070')) {
// ✅ 新增错误码2300070未加入俱乐部
console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
sendSkipCount++
break
} else {
console.error(`❌ [${tokenId}] 发送车辆失败: ${carId} - ${errorMsg}`)
}
}
```
## 修改文件
### src/stores/batchTaskStore.js
**修改位置**
1. **line 1050-1053**: `legionSignIn` 任务 - 添加 2300070 错误识别
2. **line 1258**: `queryClubCars` 函数 - 添加 2300070 错误识别
3. **line 1560-1566**: 发送车辆错误处理 - 添加 2300070 错误识别
## 用户体验改进
### 修改前
```
执行进度详情
┌─────────────────────────────┐
│ ❌ 俱乐部签到 │
│ 服务器错误: 2300070 - │
│ 未知错误 │
├─────────────────────────────┤
│ ❌ 发车 │
│ 服务器错误: 2300070 - │
│ 未知错误 │
└─────────────────────────────┘
问题:
- ❌ "未知错误" 没有提供有用信息
- ❌ 用户不知道是什么原因
- ❌ 用户不知道如何解决
```
### 修改后
```
执行进度详情
┌─────────────────────────────┐
│ ❌ 俱乐部签到 │
│ 该账号未加入俱乐部, │
│ 无法签到 │
├─────────────────────────────┤
│ ❌ 发车 │
│ 该账号未加入俱乐部或 │
│ 没有赛车权限 │
└─────────────────────────────┘
改进:
- ✅ 明确说明失败原因
- ✅ 用户知道是未加入俱乐部导致
- ✅ 用户知道需要先加入俱乐部
```
### 控制台日志
**修改前**
```
❌ [10684...] 俱乐部签到失败: 服务器错误: 2300070 - 未知错误
❌ [10684...] 发送车辆失败: 1 - 服务器错误: 2300070 - 未知错误
```
**修改后**
```
⚠️ 俱乐部签到失败:该账号未加入俱乐部
⚠️ [10684...] 发车失败: 该账号未加入俱乐部
```
## 相关错误码对比
### 俱乐部相关错误码
| 错误码 | 含义 | 处理方式 |
|--------|------|---------|
| `2300070` | 未加入俱乐部 | ❌ 失败,提示加入俱乐部 |
| `2300190` | 今日已签到 | ✅ 跳过,视为成功 |
| `200400` | 未加入俱乐部或无权限 | ❌ 失败,提示加入俱乐部 |
### 发车相关错误码
| 错误码 | 含义 | 处理方式 |
|--------|------|---------|
| `2300070` | 未加入俱乐部 | ⚠️ 跳过,停止继续尝试 |
| `200350` | 非发车时间或已收车 | ⚠️ 跳过,停止继续尝试 |
| `200020` | 发送冷却期 | ⚠️ 跳过,继续下一辆 |
| `12000050` | 今日发车已达上限 | ⚠️ 跳过,停止继续尝试 |
| `200400` | 未加入俱乐部或无权限 | ❌ 失败,停止执行 |
## 处理策略差异
### 俱乐部签到
```javascript
if (errorMsg.includes('2300070')) {
// 抛出错误,标记任务为失败
throw new Error('该账号未加入俱乐部,无法签到')
}
```
**原因**
- 签到是单一操作
- 失败就是失败,没有备选方案
- 需要让用户知道明确的失败状态
### 发车功能
```javascript
} else if (errorMsg.includes('2300070')) {
// 不抛出错误,计入 sendSkipCount
console.log(`⚠️ [${tokenId}] 发车失败: 该账号未加入俱乐部`)
sendSkipCount++
break
}
```
**原因**
- 发车是批量操作(可能尝试多辆车)
- 未加入俱乐部意味着所有车辆都无法发送
- 使用 `break` 立即停止,避免重复失败
- 计入 `sendSkipCount` 而非失败计数
- 最终任务仍会失败(因为 `sendSuccessCount === 0`
## 技术要点
### 错误识别优先级
在错误处理中,按照以下优先级检查:
1. **特殊成功状态**(如 2300190 已签到)→ 返回成功
2. **可识别的错误码**(如 2300070 未加入)→ 友好提示
3. **超时错误** → 特殊处理(可能已成功)
4. **其他错误** → 原样抛出
```javascript
if (errorMsg.includes('2300190')) {
return { alreadySignedIn: true } // 1. 特殊成功
}
if (errorMsg.includes('2300070')) {
throw new Error('友好提示') // 2. 可识别错误
}
if (errorMsg.includes('timeout')) {
return { timeout: true } // 3. 超时
}
throw error // 4. 其他错误
```
### 错误消息转换
```javascript
// 系统错误(不友好)
服务器错误: 2300070 - 未知错误
// 转换后(友好)
该账号未加入俱乐部无法签到
```
**转换方法**
```javascript
if (errorMsg.includes('2300070')) {
throw new Error('该账号未加入俱乐部,无法签到')
}
```
## 测试验证
### 测试场景
1.**未加入俱乐部**
- 俱乐部签到 → 显示"该账号未加入俱乐部,无法签到"
- 发车 → 显示"该账号未加入俱乐部或没有赛车权限"
2.**已加入俱乐部**
- 俱乐部签到 → 正常签到或显示"今日已签到"
- 发车 → 正常发车或其他错误提示
3.**其他错误**
- 超时 → "超时(可能已成功,请检查游戏内状态)"
- 未知错误 → 显示原始错误信息
### 预期行为
**未加入俱乐部的账号**
```
总任务: 7
成功: 5每日修复、自动学习、领取奖励、加钟、爬塔
失败: 2俱乐部签到、发车
失败任务详情:
- ❌ 俱乐部签到: 该账号未加入俱乐部,无法签到
- ❌ 发车: 该账号未加入俱乐部或没有赛车权限
```
## 用户指南
### 如何解决此问题?
当看到"该账号未加入俱乐部"提示时:
1. **进入游戏**
2. **加入俱乐部**
- 点击游戏内的"俱乐部"功能
- 搜索并申请加入一个俱乐部
- 或创建自己的俱乐部
3. **等待审核通过**(如果是申请加入)
4. **重新执行任务**
**注意**
- 俱乐部签到和发车功能必须先加入俱乐部
- 其他任务(每日修复、学习、领奖等)不受影响
- 如果不需要这两个功能,可以使用"快速套餐"模板
## 相关版本
- **v3.11.1**: 修复俱乐部签到错误码 2300190
- **v3.11.15**: 修复俱乐部签到超时误判
- **v3.11.20**: 修复发车错误码 200350
- **v3.11.24**: 添加错误码 2300070 识别(本版本)
## 总结
**核心改进**
- 🔍 识别错误码 2300070未加入俱乐部
- 💬 提供友好的错误提示
- 📊 在三个位置添加错误处理(俱乐部签到、查询车辆、发送车辆)
- ✅ 帮助用户快速定位问题原因
**用户获益**
- ✅ 明确知道失败原因
- ✅ 知道如何解决问题
- ✅ 减少疑惑和困扰
- ✅ 提升整体体验
---
**状态**: ✅ 已完成
**版本**: v3.11.24