Files
cpzs-backend/大乐透奖金规则更新说明.md
2026-02-14 12:15:01 +08:00

4.2 KiB
Raw Permalink Blame History

大乐透奖金规则更新说明

更新概述

大乐透奖池字段单位从"元"改为"亿元"以便与Excel导入数据保持一致。

1. 数据库变更

字段类型修改

  • 字段名prizePool
  • 旧类型BIGINT(单位:元)
  • 新类型DECIMAL(10,2)(单位:亿元)
  • 表名dlt_draw_record

SQL脚本

  • sql/update_prize_pool_to_decimal.sql: 修改奖池字段类型

2. 代码变更

2.1 实体类更新

DltDrawRecord.java

  • prizePool 字段从 Long 改为 Double
  • 单位从"元"改为"亿元"

2.2 工具类更新

DltPrizeCalculator.java

  • calculatePrize() 方法参数 prizePoolLong 改为 Double
  • 奖池阈值从 800000000L8亿元改为 8.08亿
  • 注释更新为"单位:亿元"

2.3 导入逻辑更新

DltDataImporter.java

  • importD1Data() 方法:删除 * 100000000 转换,直接存储亿元值
  • appendD1Data() 方法:删除 * 100000000 转换,直接存储亿元值
  • 日志输出改为"亿元"

2.4 服务层更新

DltDataAnalysisServiceImpl.java

  • processPendingDltPredictions() 方法中 prizePool 类型从 Long 改为 Double
  • 日志输出改为"亿元"

3. 奖金规则

奖池阈值

  • 高奖金档:奖池 ≥ 8亿元
  • 低奖金档:奖池 < 8亿元

奖金标准

奖项 中奖条件 奖池≥8亿 奖池<8亿
一等奖 5+2 500万封顶浮动 500万封顶浮动
二等奖 5+1 500万封顶浮动 500万封顶浮动
三等奖 5+0 或 4+2 6666元 5000元
四等奖 4+1 380元 300元
五等奖 4+0 或 3+2 200元 150元
六等奖 3+1 或 2+2 18元 15元
七等奖 3+0 或 1+2 或 2+1 或 0+2 7元 5元

4. 使用说明

4.1 数据库迁移

执行SQL脚本修改字段类型

mysql -u用户名 -p数据库名 < sql/update_prize_pool_to_decimal.sql

4.2 Excel导入格式

D1工作表大乐透开奖数据列结构

  • A列开奖期号
  • B列开奖日期
  • C-G列前区球1-5
  • H-I列后区球1-2
  • J列奖池金额单位亿元如 8.50、10.25

示例

  • Excel中填写8.50 表示 8.50亿元
  • 数据库存储:8.50
  • 判断逻辑:8.50 >= 8.0 → 使用高奖金档

4.3 API接口

现有接口无需修改,系统会自动:

  1. 导入数据时直接存储亿元值
  2. 处理待开奖预测时根据奖池判断奖金档位
  3. 返回结果中奖池单位为亿元

5. 注意事项

  1. 奖池金额单位变更

    • Excel中以"亿元"为单位如8.50表示8.50亿元)
    • 数据库中:以"亿元"为单位存储DECIMAL(10,2)类型)
    • 判断阈值8亿元
    • 重要:如果之前已经导入过数据(以元为单位),需要执行 sql/update_prize_pool_to_decimal.sql 来转换数据类型
  2. 数据精度

    • 奖池金额使用 DECIMAL(10,2) 类型最多支持10位数字小数点后2位
    • 可以精确表示到0.01亿元即100万元
  3. 向后兼容

    • DltPrizeCalculator.calculatePrize() 提供了无奖池参数的重载方法默认奖池为0
    • 旧代码可以继续使用,但建议更新为传入奖池参数的版本

6. 测试建议

  1. 测试高奖金档导入奖池≥8亿的数据验证奖金计算正确
  2. 测试低奖金档:导入奖池<8亿的数据验证奖金计算正确
  3. 测试边界值:导入奖池=8.00的数据,验证使用高奖金档
  4. 测试空值验证奖池为空时默认为0.0

7. 文件清单

修改文件

  • src/main/java/com/xy/xyaicpzs/domain/entity/DltDrawRecord.java
  • src/main/java/com/xy/xyaicpzs/util/DltPrizeCalculator.java
  • src/main/java/com/xy/xyaicpzs/util/DltDataImporter.java
  • src/main/java/com/xy/xyaicpzs/service/impl/DltDataAnalysisServiceImpl.java

新增文件

  • 大乐透奖金规则更新说明.md(本文件)

SQL脚本

  • sql/update_prize_pool_to_decimal.sql(同时更新双色球和大乐透)

8. 完成状态

数据库字段类型修改 实体类更新 工具类更新 导入逻辑更新 服务层更新 代码编译通过

所有代码已完成并通过编译检查,可以部署使用。