0


从零开始设计开发优惠券系统(二)

优惠券

1. 模型梳理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7a2jQWSQ-1617081825183)(/Users/wangziyi17/Library/Application Support/typora-user-images/image-20210330112731344.png)]

我们将整个优惠券系统细分为9个大的模块

Domain:领域服务相关

Dao:数据库连接相关

JOB:定时任务相关

Rpc:外部调用相关定义

SPI:rpc的分类实现

Common:通用工具类等与业务无关的操作

API:对外开放的接口,如查询、领券等操作

Application:系统内部除领域服务外的一些应用服务,包括Api的实现以及业务逻辑层实现

web:web模块没有列到服务中心,作为控制层的界面展示,放到了单独的模块,方便前后端分离,与中心端通过RPC协议进行通信

2. 券能力梳理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hB5pTpvO-1617081825186)(/Users/wangziyi17/Library/Application Support/typora-user-images/image-20210330124728120.png)]

我们把券系统梳理为四大能力

创建

券的来源,会有成本分摊、限制信息等一系列基础数据,确定了在特定的时间、特定的地点、特定的人群、特定的商品,能够使用优惠券的一些列场景

以下为券创建的uml图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GR9yRDlW-1617081825187)(/Users/wangziyi17/Desktop/Coupon/创建优惠券.png)]

领取

领取分为两个功能点来展示

  1. 用户从C端展示界面进行领取,进行一些逻辑校验
  2. 优惠券系统对用户账号进行发券

1.用户从C端界面点击领取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21yj335z-1617081825190)(/Users/wangziyi17/Desktop/Coupon/领取优惠券.png)]

2.校验没有问题,给用户进行发放

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wn13jHvd-1617081825192)(/Users/wangziyi17/Desktop/Coupon/发放优惠券.png)]

使用与退还

1.使用:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JauBqA2b-1617081825193)(/Users/wangziyi17/Desktop/Coupon/使用优惠券.png)]

2.退还

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mGrlN5C-1617081825194)(/Users/wangziyi17/Desktop/Coupon/退还优惠券.png)]

查询

查询涉及的场景非常复杂,我们初步可以分为三大块

一) 查询可以领券的场景

用户在商品详情页或者首页的时候,要露出那些优惠券可以领取,是根据商品、门店、渠道等限制信息进行查询的,这些也是最常见的查询,也是最直观的,调用的数据量会很大,同时对我们接口的性能要求又很强

二)查询可以使用的优惠券

用户在购物车提交订单时,会获取可以使用和不可以使用的优惠券,这些券已经在用户手里了,可以用哪些,不能用哪些,怎么搭配是最优的选择,这个时候考验的是我们的计算和排序和算法能力,同时,这个接口的稳定性要求很高,如果有问题的话,会直接影响提单流程。

三)个人优惠券

展示的是用户领取的所有优惠券,以及其使用核销的记录,这些查询不复杂,但是数据量会很大,大数据量的处理也是系统应该考虑的重要关键点。

这些查询的逻辑涉及的技术关键点比较多,可以单独出一片文章,详细讲一下,我们如何实现券系统的高并发及高可用的。


本文转载自: https://blog.csdn.net/qq_34370153/article/details/115323118
版权归原作者 wangzy-nice 所有, 如有侵权,请联系我们删除。

“从零开始设计开发优惠券系统(二)”的评论:

还没有评论