优惠券系统-第一章-系统设计

本文介绍了优惠券系统的设计,包括优惠券的整体流程、设计原则和表结构。系统采用先生成后领取的策略,通过coupon_act、coupon_base和coupon_user三张表管理优惠券。在领取过程中,利用Redis解决并发领取的‘领重’问题。
摘要由CSDN通过智能技术生成

优惠券系统介绍

         优惠券在很多系统会用到,本文结合项目实战谈谈优惠券系统怎么做。分为四个章节,第一个章节只介绍优惠券的设计,在第二章介绍优惠券的领取与补券,第三章设计一个类似京东的领券中心、活动中心,第四章聊聊优惠券使用。

优惠券整体流程图

       优惠券整体流程使用流程如下图所示。注:下面这个图来自网络。

       

      如上图所示,优惠券是先新建,然后由系统领导或者财务相关人员审核通过,再绑定活动发放出去。实际使用情况一般是运营小姐姐发邮件申请活动,审批通过后开发小哥哥直接配置线上活动,没有审批这个环节,这个环节比较简单,后面就不多介绍了。

优惠券设计

      优惠券的设计原则就是尽量使单独的业务分割开来,首先就可以想到优惠券本身是一张表,我们叫做coupon_base,其次还需要一张用户表与优惠券的关联表,来记录用户与优惠券的关系叫做coupon_user,这里为了解耦业务,如果过多信息(比如用户)放在coupon_base上,后面表会无法控制的变大。

      有了这两个表讨论一个问题,就是优惠券肯定是每个用户领完后有自己的券,所以量会很大。那么优惠券是先生成后给用户领取,还是用户领取的时候给用户生成呢?肯定是先生成后给用户领取,因为用户领取是一个高并发的操作,不宜做过多的业务逻辑进去,尽量简化用户领券的逻辑,简化成一个步骤最好,那就是从提前生成的"券池"中拿一个券SN号即可。

      选择了将券生成后给用户领,每次配券只需要配一个券的模板,指定券的数量,然后开始生成,就需要一个模板表。这个表的名字可以是coupon_model或者coupon_act,这里我用的coupon_act。一共三张表,coupon_act记录了优惠券基本,coupon_base保存了生成后的券,coupon_user记录用户和券的关系。如下图所示:

     第一张表coupon_act表,里面coupon_num是要生成的券数量,act_status是状态,coupon_money_min是优惠券使用的最低门栏,就是所谓的“满减金额”,订单满coupon_money_min即可减去coupon_value金额。这里注意类型coupon_type如果是“直接券”类型,即可不限制满减,直接抵扣订单金额,可以根据你的业务需求加类型,笔者只用到这两种。

CREATE TABLE `coupon_act` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `act_sn` varchar(50) NOT NULL COMMENT '活动码',
  `coupon_name` varchar(255) DEFAULT NULL COMMENT '活动名称',
  `coupon_desc` varchar(255) DEFAULT NULL COMMENT '活动描述',
  `act_status` int(11) NOT NULL COMMENT '活动状态 1:未启用 2:已启用 3:已中止 4:已过
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值