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
  • 新的生成逻辑不影响现有功能
  • 保持了原有的业务逻辑不变