yml2213 5da35ab65e 抢购后自动核对积分余额(基线在导入账号时获取),发布0.3.5
兑换成功会扣积分,所以"余额确实少了多少"是一个独立于接口返回的确认证据——
2026-09-30 出现过订单实际已支付、程序却报成失败的情况,只看接口返回不够。

基线的获取时机刻意放在抢购链路之外:轮次/预热期间任何额外请求都会挤占锁单,
账号越多越明显。基线只在三个时机更新:
- 导入账号后自动查一次(后台执行,不阻塞导入返回)
- 用户手动点"查询积分"时
- 每次抢购核对之后把最新余额存回,下一次抢购的基线就是上一次的终值,差值才准
账号被编辑(改名/换 Cookie)时清掉旧基线,删除账号时一并清理。

- 新增 ScoreBaselineStore(scores.json,与账号库同目录,原子写盘):
  记录每个账号上次已知的积分余额与时间;账号库路径为空时退化为纯内存,不写工作目录
- 核对输出示例:
  "积分已扣减,兑换确认: 账号=a 抢购前=1000 抢购后=800 扣减=200"
  并把"|积分-200"附到结果集,账号表里也能直接看到确认信息
- 没有基线时只记录余额并提示"下次抢购即可比对",不会误报"未扣分";
  积分接口失败只记警告,不改变"抢到"这个结论
- 抢购进行中调用导入不会去查询积分(避免与锁单抢连接),提示稍后手动查询
- 预热日志措辞修正:"开始预热: N 个请求" → "N 个账号"(每账号实际不止一个请求)
- 新增测试:TestVerifyRunResultsConfirmsScoreDeduction、TestVerifyRunResultsWithoutBaseline、
  TestVerifyRunResultsIgnoresScoreFailure、TestScoreBaselineStorePersists、
  TestFetchScoreBaselinesRecordsValues
2026-10-03 19:57:13 +08:00
2026-08-08 17:40:16 +08:00
2026-08-08 23:04:40 +08:00
2026-08-08 19:52:00 +08:00
2026-06-24 19:11:02 +08:00

斗鱼抢购系统

Wails v2 桌面应用。

开发运行

wails dev

构建

# 构建当前平台
wails build

# 交叉编译
GOOS=windows GOARCH=amd64 wails build
GOOS=darwin  GOARCH=amd64 wails build
GOOS=darwin  GOARCH=arm64 wails build
GOOS=linux   GOARCH=amd64 wails build

构建产物在 build/bin/ 目录。

项目结构

├── main.go                      # Wails 入口
├── app.go                       # App 结构体 + 前端可调用方法
├── frontend/
│   └── index.html               # 前端页面
├── internal/
│   ├── client/                  # 斗鱼接口客户端
│   ├── seckill/                 # 抢购调度器
│   ├── logger/                  # 日志系统
│   ├── trace/                   # HTTP 请求追踪
│   ├── image/                   # 成功图片生成
│   ├── config/                  # 配置管理
│   ├── types/                   # 类型定义
│   ├── constants/               # 常量
│   └── utils/                   # 工具函数
├── data/
│   └── user.txt                 # 账号文件
└── build/                       # 构建输出(gitignore)

环境变量

变量 说明 默认值
DOUYU_CONFIG 配置文件路径 config.json
DOUYU_USERS 账号文件路径 data/user.txt
DOUYU_LOG_DIR 日志目录 logs
DOUYU_SUCCESS_DIR 成功图片目录 success_images
DOUYU_FONT 自定义字体路径 自动检测系统字体
DOUYU_TRACE 启用 HTTP 追踪 关闭
DOUYU_TRACE_MAX_BODY trace 正文最大字节数 无限制
S
Description
No description provided
Readme
1.9 MiB
Languages
Go 66%
Vue 23%
TypeScript 6.1%
CSS 3.9%
Shell 0.9%