一、本章诉求在这一章节我们把前面通过分析、设计的库表落到工程中编写让工程可以对接到数据库二、代码开发1. 数据库修改1.1strategy表新增字段rule_modelsALTER TABLE strategy ADD COLUMN rule_models varchar(256) DEFAULT NULL COMMENT 规则模型rule配置的模型同步到此表便于使用;修改说明新增rule_models字段用于在策略总表中同步规则模型信息。插入示例INSERT INTO strategy (strategy_id, strategy_desc, rule_models) VALUES (100001, 抽奖策略, rule_weight,rule_blacklist);代码对应Data public class Strategy { /** 自增ID */ private Long id; /** 抽奖策略ID */ private Long strategyId; /** 抽奖策略描述 */ private String strategyDesc; /** 抽奖规则模型 */ private String ruleModels; /** 创建时间 */ private Date createTime; /** 更新时间 */ private Date updateTime; }作用查询策略时可直接获取规则模型减少 join 操作提高查询效率1.2strategy_rule表重新创建CREATE TABLE strategy_rule ( id bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 自增ID, strategy_id int(8) NOT NULL COMMENT 抽奖策略ID, award_id int(8) DEFAULT NULL COMMENT 抽奖奖品ID【规则类型为策略则不需要奖品ID】, rule_type tinyint(1) NOT NULL DEFAULT 0 COMMENT 抽象规则类型1-策略规则、2-奖品规则, rule_model varchar(16) NOT NULL COMMENT 抽奖规则类型【rule_random / rule_lock / rule_luck_award】, rule_value varchar(64) NOT NULL COMMENT 抽奖规则比值, rule_desc varchar(128) NOT NULL COMMENT 抽奖规则描述, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;修改说明保留原有规则字段新增或调整规则类型说明。插入示例INSERT INTO strategy_rule(strategy_id, award_id, rule_type, rule_model, rule_value, rule_desc) VALUES (100001, NULL, 1, rule_weight, 6000:102,103,104, 消耗6000分必中奖范围);代码对应1.2 strategy_rule 表重新创建 CREATE TABLE strategy_rule ( id bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 自增ID, strategy_id int(8) NOT NULL COMMENT 抽奖策略ID, award_id int(8) DEFAULT NULL COMMENT 抽奖奖品ID【规则类型为策略则不需要奖品ID】, rule_type tinyint(1) NOT NULL DEFAULT 0 COMMENT 抽象规则类型1-策略规则、2-奖品规则, rule_model varchar(16) NOT NULL COMMENT 抽奖规则类型【rule_random / rule_lock / rule_luck_award】, rule_value varchar(64) NOT NULL COMMENT 抽奖规则比值, rule_desc varchar(128) NOT NULL COMMENT 抽奖规则描述, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; 修改说明 保留原有规则字段新增或调整规则类型说明。 插入示例 INSERT INTO strategy_rule(strategy_id, award_id, rule_type, rule_model, rule_value, rule_desc) VALUES (100001, NULL, 1, rule_weight, 6000:102,103,104, 消耗6000分必中奖范围); 代码对应 Data public class StrategyRule { private Long id; private Long strategyId; private Integer awardId; private Integer ruleType; private String ruleModel; private String ruleValue; private String ruleDesc; private Date createTime; private Date updateTime; } 作用 支持多规则类型组合。 业务逻辑层可直接查询规则类型和数值实现灵活策略控制作用支持多规则类型组合。业务逻辑层可直接查询规则类型和数值实现灵活策略控制1.3strategy_award表更新Data public class StrategyAward { private Long id; private Long strategyId; private Integer awardId; private String awardTitle; private String awardSubtitle; private Integer awardCount; private Integer awardCountSurplus; private BigDecimal awardRate; private String ruleModels; // 新增字段 private Integer sort; private Date createTime; private Date updateTime; }作用奖品表中增加ruleModels字段方便奖品关联规则。插入数据时同步规则信息提高策略执行准确性1.4Award类实体类补充Data public class Award { /** 自增ID */ private Long id; /** 抽奖奖品ID - 内部流程使用 */ private Integer awardId; /** 奖品对接标识 - 每个奖品对应发奖策略 */ private String awardKey; /** 奖品配置内容 */ private String awardConfig; /** 奖品描述信息 */ private String awardDesc; /** 同步策略规则模型 */ private String ruleModels; // 新增字段与 strategy_award 表对应 /** 排序 */ private Integer sort; /** 创建时间 */ private Date createTime; /** 更新时间 */ private Date updateTime; }作用映射数据库strategy_award表。奖品分配和策略应用时后端直接使用Award对象。ruleModels字段对应数据库修改方便规则同步。2. DAO Mapper 修改2.1 DAO 接口Mapper public interface IStrategyDao { ListStrategy queryStrategyList(); } Mapper public interface IStrategyAwardDao { ListStrategyAward queryStrategyAwardList(); } Mapper public interface IStrategyRuleDao { ListStrategyRule queryStrategyRuleList(); } Mapper public interface IAwardDao { ListAward queryAwardList(); }说明每个 DAO 对应一张表。保证数据查询时字段映射和数据库一致。为业务逻辑层提供标准接口2.2Mapper XML对应xml文件位置应该放在app模块下