rebate_no_generation_update.md
2.32 KB
返利编号生成规则更新
修改概述
更新了 settleIfReady 方法中返利台账的 RebateNo 生成规则,使其符合新的业务需求。
修改内容
1. 数据库表结构更新
- 在
t_rebate_detail表中添加了t_index字段 - 字段类型:
INT DEFAULT 0 - 字段说明:序列号索引(用于生成RebateNo)
2. 实体类更新
- 在
Rebate实体类中添加了tIndex属性 - 使用
@TableField("t_index")注解映射数据库字段
3. Mapper接口更新
- 在
RebateMapper接口中添加了getMaxIndexByDate方法 - 用于获取指定日期的最大序列号
4. Mapper XML更新
- 在
RebateMapper.xml中添加了对应的SQL查询 - 更新了
baseColumns包含t_index字段
5. 服务实现更新
- 修改了
RebateSettlementServiceImpl中的settleIfReady方法 - 添加了
generateRebateNo私有方法 - 更新了返利台账生成逻辑
新的RebateNo生成规则
格式
RB-YYYYMMDD-00001
规则说明
-
前缀:
RB- -
日期:
YYYYMMDD格式(如:20240115) -
序列号:5位数字,从
00001开始 -
序列号递增:基于
t_rebate_detail表中的t_index字段 - 每日重置:序列号每天从1开始重新计数
示例
- 2024年1月15日第一条记录:
RB-20240115-00001 - 2024年1月15日第二条记录:
RB-20240115-00002 - 2024年1月16日第一条记录:
RB-20240116-00001
数据库迁移
新增字段
ALTER TABLE t_rebate_detail
ADD COLUMN t_index INT DEFAULT 0 COMMENT '序列号索引(用于生成RebateNo)'
AFTER calc_flag;
数据初始化
为现有数据按日期分配递增的序列号。
新增索引
CREATE INDEX idx_rebate_t_index ON t_rebate_detail(t_index);
CREATE INDEX idx_rebate_date_t_index ON t_rebate_detail(rebate_date, t_index);
测试
- 添加了单元测试验证RebateNo生成逻辑
- 测试了不同场景下的序列号生成
- 验证了RebateNo格式的正确性
影响范围
-
RebateSettlementServiceImpl.settleIfReady()方法 -
t_rebate_detail表结构 -
Rebate实体类 -
RebateMapper接口和XML配置
向后兼容性
- 现有数据通过迁移脚本自动初始化
t_index值 - 新的生成逻辑不影响现有功能
- 保持了原有的业务逻辑不变