系列文章目录
目录
前言
在积分系统中,用户的积分使用规则一般会加上过期时间,提高用户的使用频率。
一、积分记录表 score_record
此表对应的是业务操作引起的积分变化记录
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | BIGINT | 20 | 主键ID |
type | smallint | 11 | 积分记录类型 |
value | INT | 11 | 积分值 |
action | TINYINT | 2 | 动作 1: 增加 2:扣减 |
expire_time | DATETIME | 3 | 过期时间 |
reason | VARCHAR | 128 | 积分增减原因 |
user_id | BIGINT | 20 | 用户ID |
create_time | DATETIME | CURRENT_TIMESTAMP | 创建时间 |
deleted | TINYINT | 2 | 删除标记 |
二、积分可用表score_usable 设计
此表对应的是可用的积分记录,当前积分根据此表值计算得出
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | BIGINT | 20 | 主键 |
value | INT | 11 | 积分值 |
expire_time | DATETIME | 3 | 过期时间 |
user_id | BIGINT | 20 | 用户ID |
create_time | DATETIME | CURRENT_TIMESTAMP | 创建时间 |
deleted | TINYINT | 2 | 删除标记 |
三、场景模拟
2023-04-20当天记录
某用户积分记录表如下
主键ID | user_id | 积分值value | action | 过期时间 | 创建时间 | 积分记录类型 |
---|---|---|---|---|---|---|
1 | 1 | 50 | 1 | 2023-04-25 | 2023-04-20 | 1 扫码获取 |
2 | 1 | 50 | 1 | 2023-04-27 | 2023-04-20 | 1 扫码获取 |
3 | 1 | 100 | 1 | 2023-04-27 | 2023-04-20 | 2 活动获取 |
4 | 1 | 20 | 2 | 2023-04-20 | 2023-04-20 | 3 积分兑换扣减 |
可用积分表
主键ID | user_id | 可用积分值 | 过期时间 | 创建时间 | deleted |
---|---|---|---|---|---|
1 | 1 | 30 | 2023-04-25 | 2023-04-20 | 未删除 |
2 | 1 | 150 | 2023-04-27 | 2023-04-20 | 未删除 |
总结
-
积分优先扣除最早过期的且小面值的积分
-
每天需要定时扫码可用积分表,将过期积分删除,并在积分记录表标注好过期记录以及扣减积分详情表记录扣减值
-
积分总额可直接根据可用积分值计算(即使过期积分没即使删除,也可以通过计算过滤来实现)