优惠券系统-数据存储设计

247 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情

1.优惠券模板-表结构说明

image.png coupon_template主要是用来处理优惠券模板,配置优惠券的名称,类型和有效期以及状态信息,一般是给运营人员进行生成优惠券配置的
字段说明:

  • avalidate:是否有效,用来设置优惠券的状态
  • expired:是否过期,用来设置优惠券的有效状态
  • name:优惠券的名称
  • logo:优惠券logo图片
  • intro:优惠券介绍信息
  • category:优惠券的分类,因为我们在创建优惠券的时候,优惠券的分类可能是针对新人,或者老用户
  • coupon_count:计划生成优惠券的数量
  • create_time:优惠券模板创建时间
  • user_id:优惠券模板创建人id
  • template_key:优惠券模板的key,一般用来识别不同类型的优惠券模板的名称
  • target:优惠券额外信息
  • rule:优惠券规则,定义优惠券使用条件

2.优惠券表-表结构说明

image.png

优惠券表用来存储用户领取的优惠券相关信息

字段说明:

  • template_id:优惠券模板id
  • user_id:领取的用户id
  • coupon_code:优惠券码,用来核销的,同一个优惠券模板生成的优惠券码是不同的,可以认为是优惠券核销的唯一标识
  • assign_time:领取时间
  • statuss:优惠券的状态

3.优惠券缓存设计

3.1优惠券码缓存设计

image.png
可以看出来,优惠券码缓存字段为imooc_coupon_template_code_1
字段说明:

  • code_1:标识该优惠券码是优惠券模板id为1生成
  • type imooc_coupon_template_code_1 list:优惠券码的数据类型为list,因为一次生成的优惠券可能有多张
  • 优惠券码应该永久存在系统中,不设置过期时间
  • 优惠券码的key应该设置的有意义,不能存在冲突情况

3.2用户优惠券码缓存设计:

image.png 说明:

  • 用户优惠券信息可以分成三大类,未使用,已使用,已过期
  • 用户的优惠券信息存在过期状态,不适合长期存在redis,因此需要设置过期时间