# 《大营销平台系统设计实现》 - 营销服务 第6节:抽奖中置规则过滤

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

  • 本章难度:★★★☆☆
  • 本章重点:添加抽奖中规则过滤,主要为处理用户抽中某个奖品后,但该奖品配置有已抽奖n后解锁的限制条件。
  • 课程视频https://t.zsxq.com/16m3EJA0G (opens new window)

版权说明:©本项目与星球签约合作,受《中华人民共和国著作权法实施条例》 (opens new window) 版权法保护,禁止任何理由和任何方式公开(public)源码、资料、视频等内容到Github、Gitee等,违反可追究进一步的法律行动。

# 一、本章诉求

在实际的公司级别的项目中,抽奖是一个非常复杂的营销活动过程,尤其是类似拼多多这样的电商平台,对于抽奖的场景应用更是多样。

一般产品在运营一段时间抽奖系统后,就会思考🤔怎么能刺激用户更多的消耗手里的积分。频次更高的参与抽奖。这个时候产品就会从抽奖的行为上下手,比如;一个用户最开始前三次抽奖,能抽奖的范围为1-6个奖品,当抽奖3次后解锁1-7、抽奖6次后解锁1-9这样一个处理。那么用户已经抽奖一次,就会想着在抽奖下好增加抽奖奖品的范围。从而更多的消耗用户积分。

所以我们在设计抽奖的系统的时候,要时刻记住松耦合。就像 Spring 源码中拆解一个 Bean 对象为不同阶段一样,我们这里也把抽奖拆解为不同时间段的过程,以用于可以在各个节点添加所需的功能流程。这样的设计也就更加便于后续的功能迭代了。否则一些小卡拉米的设计,会导致每次需求迭代山崩地裂一样。

# 二、流程设计

在流程实现中,设计出抽奖的前中后置过程,并在每个阶段设计对应的操作规则。当你这样设计以后,你会发现整个抽奖功能实现变得非常灵活好扩展。

  • 在上一节中,小傅哥已经带着大家实现了规则实现的框架,本节可以继续在已有的规则模型结构加,添加新的规则。不过我们需要标记出规则的前中后标记【DefaultLogicFactory#LogicModel】,便于使用。
  • 本节扩展如图黄色部分「次数过滤」,这个规则的作用是为任何一个奖品配置抽奖抽奖n次后解锁的操作。这个配置就是图中数据库内的配置。
  • 后续在实现图中抽奖后的规则处理。