积分会有一张积分活动表,活动名称、发放总数、每个用户可领取的数量,是否上架、活动截止时间。领取积分,会有一张用户积分表,谁,哪个积分活动,积分数,积分操作类型。设计一定的规则,比如100积分抵1块,支付的时候,默认选上,pay表有一列,记录购买XX时消耗的积分,用户积分表也插一条。积分过期会麻烦一些,按月过期,需要定时任务判断是否是每月第一天0点,也就是上个月最后一天24点,这就还需要有一个地方记录用户领取的积分什么时候过期,可以另外建张表,因为不是所有用户都会有积分,这样用户表可以少一列。保存为json格式,类似于{“202009”:500,“202010”:500},表示2020年9月和10月,都有500积分过期,这就需要在领取的时候根据积分过期时间加入到json,消耗积分时优先消耗早期的积分,这需要先给json的日期排序。

优惠券会稍有不同,首先会有一张优惠券表,保存优惠券的名称、金额、过期时间,属于哪个课程。发放优惠券,所以会有一张用户优惠券表,谁,哪个优惠券,是否已经使用。支付时筛选未过期的优惠券,pay表会有一列优惠券id,支付成功回调更新用户优惠券表的是否已经使用。优惠券可以给指定的多个用户发送,也可以给购买了某些课程的用户发送。

大体类似,会有领取/发放,消耗/使用,过期。