4.2 KiB
4.2 KiB
大乐透奖金规则更新说明
更新概述
大乐透奖池字段单位从"元"改为"亿元",以便与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()方法参数prizePool从Long改为Double- 奖池阈值从
800000000L(8亿元)改为8.0(8亿) - 注释更新为"单位:亿元"
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接口
现有接口无需修改,系统会自动:
- 导入数据时直接存储亿元值
- 处理待开奖预测时根据奖池判断奖金档位
- 返回结果中奖池单位为亿元
5. 注意事项
-
奖池金额单位变更:
- Excel中:以"亿元"为单位(如8.50表示8.50亿元)
- 数据库中:以"亿元"为单位存储(DECIMAL(10,2)类型)
- 判断阈值:8亿元
- 重要:如果之前已经导入过数据(以元为单位),需要执行
sql/update_prize_pool_to_decimal.sql来转换数据类型
-
数据精度:
- 奖池金额使用 DECIMAL(10,2) 类型,最多支持10位数字,小数点后2位
- 可以精确表示到0.01亿元(即100万元)
-
向后兼容:
DltPrizeCalculator.calculatePrize()提供了无奖池参数的重载方法,默认奖池为0- 旧代码可以继续使用,但建议更新为传入奖池参数的版本
6. 测试建议
- 测试高奖金档:导入奖池≥8亿的数据,验证奖金计算正确
- 测试低奖金档:导入奖池<8亿的数据,验证奖金计算正确
- 测试边界值:导入奖池=8.00的数据,验证使用高奖金档
- 测试空值:验证奖池为空时默认为0.0
7. 文件清单
修改文件
src/main/java/com/xy/xyaicpzs/domain/entity/DltDrawRecord.javasrc/main/java/com/xy/xyaicpzs/util/DltPrizeCalculator.javasrc/main/java/com/xy/xyaicpzs/util/DltDataImporter.javasrc/main/java/com/xy/xyaicpzs/service/impl/DltDataAnalysisServiceImpl.java
新增文件
大乐透奖金规则更新说明.md(本文件)
SQL脚本
sql/update_prize_pool_to_decimal.sql(同时更新双色球和大乐透)
8. 完成状态
✅ 数据库字段类型修改 ✅ 实体类更新 ✅ 工具类更新 ✅ 导入逻辑更新 ✅ 服务层更新 ✅ 代码编译通过
所有代码已完成并通过编译检查,可以部署使用。