- 修改 GltUserTicketReleaseParam 中 id 和 userTicketId 类型从 Long 改为 Integer - 移除 ShopOrderServiceImpl 中的 shopTicketBizService 依赖注入 - 注释掉订单支付成功后的套票发放调用 - 添加套票功能开发计划文档,定义套票模板、用户套票账户、释放计划和变更流水的核心概念 - 设计并创建套票相关数据库表,包括套票模板表、用户套票账户表、释放计划表和变更流水表
32 lines
2.3 KiB
Markdown
32 lines
2.3 KiB
Markdown
# 套票(冻结/可用、分期释放)功能开发计划
|
||
|
||
## 目标
|
||
- 为“买N送M(例如买1送4)、起售(例如20桶起售)、按月释放(例如每月释放10桶)、可用未用完叠加”的套票/权益,提供后端可配置、可发放、可释放、可消费的能力。
|
||
|
||
## 核心概念
|
||
- 套票模板:按商品(goodsId)配置买赠规则、起售/起送、释放规则(每期释放数或释放期数)、首期释放时机。
|
||
- 用户套票账户:记录总量、可用量、冻结量、已用量、已释放量;绑定订单(用于幂等与追溯)。
|
||
- 释放计划:每期一条,到期后把冻结转可用(可用未用完自然叠加)。
|
||
- 变更流水:发放/释放/消费等都记录流水,便于对账与排查。
|
||
|
||
## 关键默认规则(可在模板里改)
|
||
- 仅赠送量进入套票账户(默认不包含“购买量”本身);如需“买20送80=总100”,可在模板设置 `includeBuyQty=true`。
|
||
- 首期释放:默认“支付成功当日/当刻”释放(`firstReleaseMode=0`);如需“下个月同日释放”,设 `firstReleaseMode=1`。
|
||
- 每期释放:默认按 `monthlyReleaseQty`;如配置了 `releasePeriods`,则平均分摊并处理余数。
|
||
|
||
## 开发步骤(建议按顺序)
|
||
1. 需求确认与接入点确认(订单哪个节点发放、桶票如何消费/核销、退款是否回滚、释放日期规则)。
|
||
2. 数据表设计与SQL输出(模板/账户/释放计划/流水)。
|
||
3. 实现套票模板后台CRUD接口。
|
||
4. 支付成功接入:在订单支付成功后发放套票账户+生成释放计划(幂等)。
|
||
5. 定时任务释放:扫描到期释放计划,执行“冻结->可用”转账(幂等)。
|
||
6. 消费扣减:对用户可用量做扣减(支持跨多套票账户FIFO扣减),并落流水。
|
||
7. 测试与验收:至少覆盖(买赠计算、分期拆分、叠加逻辑、幂等、并发扣减)。
|
||
|
||
## 待确认点(不确认也可先按默认实现)
|
||
- 套票数量=赠送量?还是(购买量+赠送量)?
|
||
- “释放日期”是按支付时间的“日”还是固定每月某一天?(31号跨月如何处理?)
|
||
- 退款/取消:是否回滚未使用的可用/冻结?已释放但未用如何处理?
|
||
- 消费场景:在哪个业务点扣减(下单抵扣/提货核销/线下核销)?
|
||
|