优惠券
1. 模型梳理
我们将整个优惠券系统细分为9个大的模块
Domain:领域服务相关
Dao:数据库连接相关
JOB:定时任务相关
Rpc:外部调用相关定义
SPI:rpc的分类实现
Common:通用工具类等与业务无关的操作
API:对外开放的接口,如查询、领券等操作
Application:系统内部除领域服务外的一些应用服务,包括Api的实现以及业务逻辑层实现
web:web模块没有列到服务中心,作为控制层的界面展示,放到了单独的模块,方便前后端分离,与中心端通过RPC协议进行通信
2. 券能力梳理
我们把券系统梳理为四大能力
创建
券的来源,会有成本分摊、限制信息等一系列基础数据,确定了在特定的时间、特定的地点、特定的人群、特定的商品,能够使用优惠券的一些列场景
以下为券创建的uml图
领取
领取分为两个功能点来展示
- 用户从C端展示界面进行领取,进行一些逻辑校验
- 优惠券系统对用户账号进行发券
1.用户从C端界面点击领取
2.校验没有问题,给用户进行发放
使用与退还
1.使用:
2.退还
查询
查询涉及的场景非常复杂,我们初步可以分为三大块
一) 查询可以领券的场景
用户在商品详情页或者首页的时候,要露出那些优惠券可以领取,是根据商品、门店、渠道等限制信息进行查询的,这些也是最常见的查询,也是最直观的,调用的数据量会很大,同时对我们接口的性能要求又很强
二)查询可以使用的优惠券
用户在购物车提交订单时,会获取可以使用和不可以使用的优惠券,这些券已经在用户手里了,可以用哪些,不能用哪些,怎么搭配是最优的选择,这个时候考验的是我们的计算和排序和算法能力,同时,这个接口的稳定性要求很高,如果有问题的话,会直接影响提单流程。
三)个人优惠券
展示的是用户领取的所有优惠券,以及其使用核销的记录,这些查询不复杂,但是数据量会很大,大数据量的处理也是系统应该考虑的重要关键点。
这些查询的逻辑涉及的技术关键点比较多,可以单独出一片文章,详细讲一下,我们如何实现券系统的高并发及高可用的。
版权归原作者 wangzy-nice 所有, 如有侵权,请联系我们删除。