forked from admin/xyzw_web_helper
1.0
This commit is contained in:
204
MD说明文件夹/问题修复-俱乐部签到错误码2300190v3.11.1.md
Normal file
204
MD说明文件夹/问题修复-俱乐部签到错误码2300190v3.11.1.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# 问题修复:俱乐部签到错误码 2300190 v3.11.1
|
||||
|
||||
**版本**: v3.11.1
|
||||
**日期**: 2025-10-08
|
||||
**类型**: Bug Fix
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
用户反馈批量自动化执行俱乐部签到时失败,显示错误:
|
||||
```
|
||||
俱乐部签到
|
||||
失败
|
||||
服务器错误: 2300190 - 未知错误
|
||||
```
|
||||
|
||||
但实际检查游戏时,俱乐部已经是"已签到"状态。
|
||||
|
||||
---
|
||||
|
||||
## 问题分析
|
||||
|
||||
### 错误码 2300190 的含义
|
||||
|
||||
通过用户反馈和实际状态对比,可以确定:
|
||||
- **错误码 2300190** 表示 **"今日已签到"**
|
||||
- 签到操作实际上是**成功的**(或者之前已经签到过)
|
||||
- 但客户端将其视为错误,导致任务统计中显示为"失败"
|
||||
|
||||
### 根本原因
|
||||
|
||||
在 `batchTaskStore.js` 的 `legionSignIn` case 中:
|
||||
```javascript
|
||||
case 'legionSignIn':
|
||||
// 俱乐部签到
|
||||
return await executeSubTask(
|
||||
tokenId,
|
||||
'legion_signin',
|
||||
'俱乐部签到',
|
||||
async () => await client.sendWithPromise('legion_signin', {}, 1000),
|
||||
false
|
||||
)
|
||||
```
|
||||
|
||||
`executeSubTask` 的 `catch` 块会捕获所有错误,包括 2300190 错误码,并将其标记为任务失败。
|
||||
|
||||
---
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 修改内容
|
||||
|
||||
在 `legionSignIn` case 的 executor 函数中,添加对错误码 2300190 的特殊处理:
|
||||
|
||||
**修改文件**: `src/stores/batchTaskStore.js`
|
||||
|
||||
**修改前**:
|
||||
```javascript
|
||||
case 'legionSignIn':
|
||||
// 俱乐部签到
|
||||
return await executeSubTask(
|
||||
tokenId,
|
||||
'legion_signin',
|
||||
'俱乐部签到',
|
||||
async () => await client.sendWithPromise('legion_signin', {}, 1000),
|
||||
false
|
||||
)
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```javascript
|
||||
case 'legionSignIn':
|
||||
// 俱乐部签到
|
||||
return await executeSubTask(
|
||||
tokenId,
|
||||
'legion_signin',
|
||||
'俱乐部签到',
|
||||
async () => {
|
||||
try {
|
||||
const result = await client.sendWithPromise('legion_signin', {}, 1000)
|
||||
return result
|
||||
} catch (error) {
|
||||
const errorMsg = error.message || String(error)
|
||||
// 错误码 2300190 表示"今日已签到",不应视为错误
|
||||
if (errorMsg.includes('2300190')) {
|
||||
console.log('ℹ️ 俱乐部今日已签到,跳过')
|
||||
return { alreadySignedIn: true }
|
||||
}
|
||||
// 其他错误正常抛出
|
||||
throw error
|
||||
}
|
||||
},
|
||||
false
|
||||
)
|
||||
```
|
||||
|
||||
### 修改逻辑
|
||||
|
||||
1. **添加 try-catch**: 在 executor 函数内部捕获 `legion_signin` 命令的错误
|
||||
2. **检查错误码**: 如果错误消息包含 `2300190`,则不抛出错误
|
||||
3. **返回成功**: 对于 2300190 错误,返回 `{ alreadySignedIn: true }` 表示已签到
|
||||
4. **其他错误正常处理**: 如果是其他错误码,正常抛出,由 `executeSubTask` 处理
|
||||
|
||||
---
|
||||
|
||||
## 测试验证
|
||||
|
||||
### 测试场景 1:首次签到(未签到状态)
|
||||
|
||||
**预期行为**:
|
||||
- 发送 `legion_signin` 命令
|
||||
- 服务器返回成功响应
|
||||
- 任务标记为成功
|
||||
|
||||
**预期日志**:
|
||||
```
|
||||
✅ 俱乐部签到 - 成功
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 2:重复签到(已签到状态)
|
||||
|
||||
**预期行为**:
|
||||
- 发送 `legion_signin` 命令
|
||||
- 服务器返回错误码 2300190
|
||||
- 客户端识别为"已签到",不抛出错误
|
||||
- 任务标记为成功
|
||||
|
||||
**预期日志**:
|
||||
```
|
||||
ℹ️ 俱乐部今日已签到,跳过
|
||||
✅ 俱乐部签到 - 成功
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 测试场景 3:其他签到错误(如网络错误)
|
||||
|
||||
**预期行为**:
|
||||
- 发送 `legion_signin` 命令
|
||||
- 服务器返回其他错误码(如超时)
|
||||
- 错误正常抛出
|
||||
- 任务标记为失败
|
||||
|
||||
**预期日志**:
|
||||
```
|
||||
❌ 俱乐部签到 - 失败: 请求超时: legion_signin (1000ms)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 影响范围
|
||||
|
||||
### 修改的文件
|
||||
1. `src/stores/batchTaskStore.js` - 俱乐部签到逻辑
|
||||
|
||||
### 影响的功能
|
||||
1. **批量自动化 - legionSignIn 任务**: 正确处理"今日已签到"状态
|
||||
2. **任务统计**: 不再将"已签到"误计为失败
|
||||
|
||||
### 不受影响的功能
|
||||
- 其他批量自动化任务(dailyFix, autoStudy, claimHangupReward, addClock, sendCar, climbTower)
|
||||
- 游戏功能模块
|
||||
|
||||
---
|
||||
|
||||
## 类似问题的处理建议
|
||||
|
||||
如果未来遇到类似的"服务器错误"但实际已完成的情况,可以采用相同的模式:
|
||||
|
||||
1. **确认错误码含义**: 通过用户反馈和实际游戏状态,确认错误码的真实含义
|
||||
2. **添加特殊处理**: 在相应的 executor 函数中捕获特定错误码
|
||||
3. **返回成功**: 对于"已完成"类型的错误码,返回成功状态而不是抛出错误
|
||||
4. **添加日志**: 使用 `console.log` 输出友好的提示信息
|
||||
|
||||
### 常见的"已完成"错误码
|
||||
|
||||
根据经验,以下错误码通常表示"已完成"而不是真正的错误:
|
||||
- **2300190**: 俱乐部今日已签到
|
||||
- **12000050**: 今日发车次数已达上限(v3.10.1 已处理)
|
||||
- **其他 23xxxxx**: 俱乐部相关的"今日已完成"错误
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
本次修复(v3.11.1)解决了俱乐部签到的误报问题:
|
||||
|
||||
✅ **正确识别**: 错误码 2300190 识别为"今日已签到"
|
||||
✅ **标记成功**: 不再将"已签到"误计为失败
|
||||
✅ **友好日志**: 输出 `ℹ️ 俱乐部今日已签到,跳过`
|
||||
✅ **统计准确**: 任务统计中不再出现误报的失败
|
||||
|
||||
这是一个简单但重要的修复,提高了批量自动化的准确性和用户体验。
|
||||
|
||||
---
|
||||
|
||||
**版本标识**: v3.11.1
|
||||
**相关版本**:
|
||||
- v3.11.0 - 重构发车任务,复用游戏模块逻辑
|
||||
- v3.10.1 - 修复发车任务中服务器 sendCount 不可靠问题
|
||||
|
||||
Reference in New Issue
Block a user