营销项目--6. 抽奖中规则过滤
问题背景刺激用户的抽奖欲望:当用户抽奖次数到一定值时才会解锁新的奖品。eg: 一个用户前3次抽奖只能抽到1-6号奖品,第4次开始就解锁了更好的奖品。第7次又会解锁更好的奖品。这样就可以更快速的消耗用户积分 所以在上一节DefaultLogicFactory已经实现了黑名单过滤规则和权重范围过滤规则的基础上,再实现次数过滤:即任何一个奖品配置抽奖n次后才能解锁的操作 rule_lock 开发流程 实现RuleLockLogicFilter, 主要是过滤用户抽奖次数和奖品对应的rule_value就行比对,如果小于,就接管,如果大于就放行 增加了StrategyAwardRuleModelVO 作为仓库查询对应的奖品规则返回值 补充AbstractRaffleStrategy的抽奖一般流程,补充抽奖中的规则过滤 增加了doCheckRaffleCenterLogic方法 RuleLockLogicFilterRuleLockLogicFilter 实现了一个抽奖前的过滤规则,名为...
营销项目--5. 抽奖前置规则过滤
2024.7.12 day13![[抽奖前规则过滤.png]] 情景上一节完成了当用户抽奖的幸运值(消耗的积分)达到一定值时,分配可以抽奖的范围,需要从strategy实体中找到rule model字段,根据rule_weight在策略规则实体中找到对应的规则并进行解析,在装配策略时将规则装配到缓存中。这一节需要实现抽奖前置权重和黑名单规则,![[Pasted image...
营销项目--4. 策略权重概率装配
2024 7.11 day12https://blog.csdn.net/m0_53934691/article/details/142566492?type=blog&rId=142566492&refer=APP&source=m0_53934691 实现:策略权重装配在上一节已经能够正常根据策略id装配奖品到redis中的实现,继续实现有rule_weight的策略 查询策略并装配策略奖品 根据strategyId 在StrategyAward中查找策略奖品实体 依据上一节已经编写好的逻辑,将strategyAward装配到redis中 获取策略规则实体(含有rule...
营销项目--2. 基础层持久化数据
alt+shift多选 alt向下一拉出现多个光标 shift+tab 退行 shift+回车 换行 数据库int类型对应java long, varchar对应String, datetime对应date 情景上一节将最基本的库表设计好了并开发在数据库mysql中,现在需要让工程对接到数据库 任务通过分析抽奖的行为逻辑,设计抽奖策略领域模型和对应的库表结构。 行动 在infrastructure层的persistent中创建了对应四张库表的4个PO[[JavaBean. POJO. PO. DTO. VO. BO. EJB. EntityBean.]], Award StrategyAward StrategyRule Strategy....
营销项目--3. 策略概率装配处理
2024.07.07 day8 情景对于大营销项目,目前已经处理好开发环境和持久化数据的问题,接下来要根据梳理出的业务流程一步步的实现,首先要实现的是抽奖策略的装配![[Pasted image 20240707211309.png]] 任务实现抽奖策略的装配,这个过程会需要用到数据库查询,策略值计算,redis map数据存储。 通过策略ID检索数据库策略配置,根据策略配置的概率计算出占比值,初始化到redis服务中,完成简单的随机抽奖 策略概率装配处理Target: 将抽奖的概率初始化到应用中原始思路:...
营销项目--1. 抽奖策略领域和库表设计
STAR情景分析了任务需求后针对抽奖策略领域进行数据库表设计 任务通过分析抽奖的行为逻辑,设计抽奖策略领域模型和对应的库表结构。 行动根据大营销平台抽奖的模式拆解出8个功能点。![[Pasted image 20240704220914.png]]根据8个功能点设计出数据库的ER图。做了4张表:strategy,strategy_award,strategy_rule,award使用docker在本地win11电脑上安装了MySQL, 并使用DataGrid GUI界面创建了数据库并填充数据.使用phpadmin导出了表结构和数据在项目结构里新增了 dev-ops/docker-compose.yml. 主要是安装mysql和phpadmin并将导出的sql运行重新建表 结果本地安装了mysql,新建了四个表,完成了最初的库表设计。背了关于mysql数据类型的八股 笔记mysqlint 和bigint 区别, bigint(8)和bigint (11)区别INT 和 BIGINT是存储大小的区别。INT占用4 byte, 也就是可以表示2^(4*8)个数字 ....