4.1 KiB
4.1 KiB
ACCEPTANCE - 优化抖音定时任务
执行结果
✅ Task 1: 修改定时任务调度器
文件: internal/service/douyin/scheduler.go
修改内容:
- 从单一定时器改为多定时器模式
- 使用
time.NewTicker和select多路复用 - 移除冗余的
FetchAndSyncOrders调用
执行频率:
- 直播奖品发放: 每 5 分钟 (不调用抖音 API)
- 全量订单同步: 每 1 小时 (调用抖音 API)
- 退款状态同步: 每 2 小时 (调用抖音 API)
验证结果: ✅ 编译通过
✅ Task 2: 新增管理后台接口
文件: internal/api/admin/douyin_orders_admin.go
新增接口:
1. 手动全量同步
POST /api/admin/douyin/sync-all
Headers: Authorization: Bearer {admin_token}
Body: {
"duration_hours": 1 // 可选,默认1小时
}
Response: {
"message": "全量同步成功 (同步范围: 1小时)",
"debug_info": "..."
}
2. 手动退款同步
POST /api/admin/douyin/sync-refund
Headers: Authorization: Bearer {admin_token}
Response: {
"message": "退款状态同步成功",
"refunded_count": 0
}
3. 手动发放奖品
POST /api/admin/douyin/grant-prizes
Headers: Authorization: Bearer {admin_token}
Response: {
"message": "直播奖品发放成功",
"granted_count": 0
}
路由注册: internal/router/router.go 第 225-227 行
验证结果: ✅ 编译通过
性能优化效果
API 调用频率对比
优化前:
- 每 5 分钟执行 4 个任务
- 其中 2 个任务调用抖音 API (FetchAndSyncOrders + SyncAllOrders)
- API 调用频率: 12 次/小时
优化后:
- 每 5 分钟: 直播奖品发放 (不调用 API)
- 每 1 小时: 全量订单同步 (调用 API)
- 每 2 小时: 退款状态同步 (调用 API)
- API 调用频率: 1.5 次/小时
降低: 87.5%
功能完整性
- ✅ 直播奖品发放延迟 ≤ 5 分钟
- ✅ 订单同步延迟 ≤ 1 小时
- ✅ 前端按需同步不受影响 (5 秒限流)
- ✅ 管理员可手动触发同步
使用指南
1. 重启服务
# 重启服务以加载新代码
systemctl restart bindbox-game
# 或
./bindbox-game
2. 观察日志
# 查看定时任务日志
tail -f logs/app.log | grep "定时"
# 预期日志:
# [抖店定时同步] 定时任务已启动 直播奖品=每5分钟 订单同步=每1小时 退款同步=每2小时
# [定时发放] 开始发放直播奖品
# [定时同步] 开始全量订单同步 (1小时)
# [定时同步] 开始退款状态同步
3. 手动触发同步 (管理后台)
# 获取管理员 token
TOKEN="your_admin_token"
# 手动全量同步 (同步最近 1 小时)
curl -X POST http://localhost:8080/api/admin/douyin/sync-all \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"duration_hours": 1}'
# 手动退款同步
curl -X POST http://localhost:8080/api/admin/douyin/sync-refund \
-H "Authorization: Bearer $TOKEN"
# 手动发放奖品
curl -X POST http://localhost:8080/api/admin/douyin/grant-prizes \
-H "Authorization: Bearer $TOKEN"
验收检查清单
功能验收
- 定时任务正常启动
- 多定时器独立执行
- 管理接口可正常调用
- 编译通过无错误
性能验收
- API 调用频率降低 87.5%
- 直播奖品发放延迟 ≤ 5 分钟
- 前端按需同步正常 (5 秒限流)
代码质量
- 代码风格一致
- 日志输出清晰
- 错误处理完善
- 使用独立 Context 防止中断
后续建议
1. 监控指标
建议在生产环境监控以下指标:
- 抖音 API 调用次数 (应降低 80%+)
- 定时任务执行时长
- 直播奖品发放延迟
- 订单同步延迟
2. 可选优化
如果仍然觉得慢,可以进一步调整:
- 将订单同步改为每 2 小时
- 将退款同步改为每 4 小时
- 在系统配置中添加频率可调参数
3. 回滚方案
如果出现问题,可以快速回滚:
git checkout HEAD~1 internal/service/douyin/scheduler.go
git checkout HEAD~1 internal/api/admin/douyin_orders_admin.go
git checkout HEAD~1 internal/router/router.go
go build .