Zuncle
d45096d13f
fix(refund): 修复退款后翻牌游戏资格未回收的问题
问题描述:
用户退单后,翻牌游戏资格会重新出现(被重置),但用户已经抽过奖了。
这导致用户可以通过退款获得额外的翻牌机会。
根本原因:
退款处理逻辑 reclaimLivestreamAssets 只回收了 user_inventory 中的实物奖品,
但没有回收 user_game_tickets 中的翻牌游戏资格。
解决方案:
在 reclaimLivestreamAssets 函数后添加 reclaimFlipCardTicket 函数,
用于检测并回收翻牌游戏资格:
1. 通过 shop_order_id 查询抖店订单获取商品ID
2. 查询 douyin_product_rewards 表检查商品是否配置了翻牌游戏奖励
- 检查 reward_type = 'game_ticket'
- 检查 payload.game_code = 'flip_card'
3. 如果配置了翻牌奖励,回收用户的翻牌次数
- 扣减 user_game_tickets.available
- 扣减 user_game_tickets.total_earned
4. 在 game_ticket_logs 表中记录回收日志
影响范围:
- 仅影响配置了翻牌游戏奖励的商品订单退款
- 退款时会同步回收翻牌游戏资格
- 已使用过的翻牌次数不会被回收(只回收 available > 0 的记录)
测试建议:
1. 购买配置了翻牌奖励的商品
2. 进行翻牌游戏
3. 申请退款
4. 验证翻牌资格是否被正确回收
2026-03-08 16:01:39 +08:00
..
2026-03-05 12:50:06 +08:00
2026-03-05 12:50:06 +08:00
2026-02-21 21:33:19 +08:00
2026-03-05 12:50:06 +08:00
2026-03-08 16:01:39 +08:00