近期在做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 | 已使用积分 | |
表关系
考虑要点
-
以用户维度对积分操作并发。 目前采用乐观锁来控制
-
积分流水规则,目前只要涉及到对积分的操作都会在积分流水表插入数据,目前设计方式符合当前业务。且积分流水表的定义规则一旦插入便不会更改。目前status字段会由0-1的调整
-
积分消费 积分消费单独定义表,也就是说一笔获取积分的流水可能会对应多比积分消费记录
-
积分订单回退 目前设计方式只需根据订单号,找到对应的积分消费编码并将关联的积分消费表的数据逻辑删除即可
-
定时跑批:
- 积分自动签收
- 积分自动过期(积分过期理论上归属于消费范畴,所以也会记录,方便追溯)
- 会员等级升级积分赠送
- 财务积分数据推送