积分系统设计与开发

近期在做APP的积分模块,有一些总结,希望能帮助到大家。

概念介绍:

积分事件: 获取/消费积分的行为称之为积分事件
积分获取: 由APP相关系统触发,或其他系统触发
积分消费: 用积分兑换产品
积分到期: 积分时效性,定时跑批处理

表设计:

积分事件表: 有些基础字段就没有在此列出了
event_code事件编码
event_type事件类型获取积分 | 消费积分
event_subject事件主题
event_describe事件描述
constraint_rule事件约束规则日/周/天 (时间单位) 主要是用来限制用户获取操作该事件的限制
constraint_rule_value约束值int 例: 100 200 300 与如上字段组合使用
effective_rule生效规则立即生效/手动生效 大多数积分事件由用户触发后,积分并不会立即增加用户积分,需要用户手动领取。而有些如签到,初始化等级时赠送的积分就会立即添加积分了
main_process_event是否为主事件例如: 用户登录积分事件 有对外暴露的事件, 也有对内处理的事件,当外部接口触发时,我们需要根据逻辑去找到对内的处理事件,通过该字段来表示该事件是否需要执行此逻辑 (其实最主要的是,目前设计的思路需要把用户获取积分的行为完全透明出来,否则话这些逻辑在代码里写就行了)
integral_value_rule积分定义规则有些积分事件需要赠送多少积分,是我们这边定义的,但有些我们控制不了。比如用户购买商品需要赠送 金额*10这种外部定义的,所以增加该字段来定义该事件的积分值要怎么算
integral_value积分值
积分流水表:
integral_code积分编码
customer_id会员id
customer_name会员名称
event_code
event_type事件类型 新增/消费
event_subject
integral_value该流水操作积分值
history_integral_value历史积分
avaliable_integral_value可用积分
status流水类型:0,“待领取”,
1,“已领取”,
2,“使用”,
3,“退回”;
4, 过期
expire_time积分有效时间(针对于status=1),有效时间规则可自定义
source_system来源系统
effective_time积分生效时间(针对于status=2)
is_deleted
积分消费表
customer_id会员id
integral_code积分编码(对应积分消费流水)
consumer_integral_code消费的积分流水编码
consumer_integral_value消费积分流水的积分值
consumer_type消费类型 正常消费/过期消费
积分订单表: 后续订单数据如订单兑换信息可在此表扩展 或新加表
customer_id客户id
integral_code订单对应的积分流水编码
order_no订单号
source_system
status订单状态 正常/回退
用户积分信息表
customer_id会员id
avaliable_integral_value可用积分
gain_integral_value总获取积分
expire_integral_value过期积分
used_integral_value已使用积分
表关系

在这里插入图片描述

考虑要点
  1. ​ 以用户维度对积分操作并发。 目前采用乐观锁来控制

  2. ​ 积分流水规则,目前只要涉及到对积分的操作都会在积分流水表插入数据,目前设计方式符合当前业务。且积分流水表的定义规则一旦插入便不会更改。目前status字段会由0-1的调整

  3. ​ 积分消费 积分消费单独定义表,也就是说一笔获取积分的流水可能会对应多比积分消费记录

  4. ​ 积分订单回退 目前设计方式只需根据订单号,找到对应的积分消费编码并将关联的积分消费表的数据逻辑删除即可

  5. ​ 定时跑批:

    1. ​ 积分自动签收
    2. ​ 积分自动过期(积分过期理论上归属于消费范畴,所以也会记录,方便追溯)
    3. ​ 会员等级升级积分赠送
    4. ​ 财务积分数据推送
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值