1.0
This commit is contained in:
		
							
								
								
									
										383
									
								
								MD说明文件夹/问题修复-错误码2300070未加入俱乐部提示v3.11.24.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										383
									
								
								MD说明文件夹/问题修复-错误码2300070未加入俱乐部提示v3.11.24.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,383 @@
 | 
			
		||||
# 问题修复 - 错误码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
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user