2.5 KiB
2.5 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| console返水过期兜底 | 在 C 端返水信息接口增加“近7天过期兜底”逻辑:若存在未领取且已过期记录,进入接口时自动标记为 expired,避免依赖定时脚本。 |
|
false |
Console返水信息过期兜底改造
目标
在用户访问返水信息接口时,对该用户“近7天”记录执行一次轻量过期兜底:把 status=claimable 且 expire_at<=当前时间 的记录更新为 expired,避免脚本漏跑导致前端状态不一致。
改动方案
- 在
/Users/ray/Documents/project/www/slot/slot_console/app/api/logic/DailyRebateLogic.php的info()开头($unlocked判定后、组装 records 前)新增一步:- 仅针对当前
uid、统计日期范围“今天往前 6 天到今天”(即接口展示的近7天)执行过期更新。 - 更新条件:
status = STATUS_CLAIMABLE且expire_at <= now()。 - 更新结果无需抛错,作为兜底处理(可选记录 debug/info 日志)。
- 仅针对当前
- 在同文件新增受保护方法(例如
expireRecentClaimableForInfo(int $uid): int)承载该逻辑,保持info()主流程清晰,符合 Logic 分层。 - 保留现有
expireDueRecords()(全量定时任务用),新方法仅用于 C 端接口的“用户级小范围补偿”,两者职责互补,不互相替代。
细节约束
- 范围严格限定为近7天,避免接口触发全表更新。
- 仅改
claimable -> expired,不触碰claimed/pending。 - 执行顺序放在读取记录前,保证本次
records返回的状态已是最新。
验证计划
- 构造 1 条近7天内
claimable + expire_at 已过期数据,调用info后应返回expired。 - 构造 1 条近7天内
claimable + expire_at 未到期数据,调用info后仍为claimable。 - 构造 1 条 7 天外过期
claimable数据,调用info后不应被本接口更新(仍由定时任务处理)。 - 回归
claim接口:已过期记录仍不可领取(现有保护逻辑保持不变)。