当前位置: 首页 > news >正文

《大营销平台系统设计实现》 - 营销服务 第2节:基础层持久化数据

一、本章诉求

在这一章节,我们把前面通过分析、设计的库表落到工程中编写,让工程可以对接到数据库

二、代码开发

1. 数据库修改

1.1strategy表新增字段rule_models

ALTER 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 修改说明

    • 保留原有规则字段,新增或调整规则类型说明。
    • 插入示例:
    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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 修改说明: 保留原有规则字段,新增或调整规则类型说明。 插入示例: 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 { List<Strategy> queryStrategyList(); } @Mapper public interface IStrategyAwardDao { List<StrategyAward> queryStrategyAwardList(); } @Mapper public interface IStrategyRuleDao { List<StrategyRule> queryStrategyRuleList(); } @Mapper public interface IAwardDao { List<Award> queryAwardList(); }
  • 说明
    • 每个 DAO 对应一张表。
    • 保证数据查询时字段映射和数据库一致。
    • 为业务逻辑层提供标准接口

2.2Mapper XML

对应xml文件位置,应该放在app模块下

http://www.jsqmd.com/news/856972/

相关文章:

  • Keil5调试进阶:玩转STM32的RAM分区(代码区/数据区)与.sct分散加载文件解析
  • Neurobiol Dis:微量元素失调对脊髓小脑共济失调3型脑结构和功能的影响
  • 2026平凉市崆峒区黄金回收铂金回收白银回收深度实测 五大正规门店横屏 报价透明 免费上门才是真靠谱 - 亦辰小黄鸭
  • C语言:结构体的大小
  • 多功能复合材料树状介孔硅的定制介绍
  • 番茄小说下载器:打造你的个人数字图书馆之旅
  • 梳理2026年环保节能的玉兰灯品牌,推荐哪家好 - mypinpai
  • 告别滚动混乱:Scroll Reverser让你在Mac上统一触控板和鼠标的滚动方向
  • 终极指南:30天重置JetBrains IDE试用期的完整解决方案
  • ADL 概念
  • OpenRPA实战手册:3步掌握免费企业级RPA自动化终极指南
  • FPGA设计避坑指南:别再乱用同步复位了,聊聊异步复位同步释放的实战配置
  • 从“它激”到“自激”:三引脚压电陶瓷片在低成本报警器设计中的妙用
  • Fansly Downloader:3分钟掌握离线收藏创作者内容的完整解决方案
  • 2026TOP5南昌市青云谱区黄金,白银,铂金回收门店推荐及联系方式权威发布 - 前途无量YY
  • Java数据结构——List接口与ArrayList源码剖析
  • 9 款论文查重 / 降 AIGC 工具横评:Paperxie 领衔,从查重到降 AIGC 一站式解决毕业焦虑
  • CTF Pwn新手必看:手把手教你用格式化字符串漏洞绕过PIE保护(附Python脚本)
  • 5个理由告诉你为什么ViGEmBus是Windows游戏控制器模拟的最佳选择
  • 用SystemVerilog的unique/priority优化你的case语句:告别Latch和优先级烦恼
  • Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具指南
  • 千问 LeetCode 2478.完美分割的方案数 Python3实现
  • Linux head、tail 命令详解——查看文件首尾内容+实时监控日志(工作必备)
  • Java EE:2.多线程-初阶(第三弹)
  • NPS内网穿透实战:5分钟为你的本地开发环境(如SpringBoot、Vue)配置一个临时公网URL
  • 黔西南兴义西服定制优选:六大本土实力厂家深度盘点(附联系方式) - 贵州服装测评君
  • 抖音视频批量下载终极指南:免费无水印工具完整教程
  • 如何测量WIFI通讯中客户端的漫游时间
  • 【C++笔记】内存管理流食般投喂
  • 为什么Java老手都推荐装JDK 8?从版本选择到目录结构,一次给你讲明白