概述
积分表设计
表结构设计
由于业务需要可以作废还原等操作,所以设计的稍微复杂,如果没有这种业务需求,可以去除扣减积分详情表以及可用积分表去除record_id并合并相同过期时间的积分,然后在账号中冗余可用积分及最近过期的积分过期时间
积分记录表 integral_record
此表对应的是业务操作引起的积分变化记录
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | 20 | 主键id |
type | smallint | 11 | 积分记录类型 |
original_id | varchar | 40 | 原始记录id |
value | int | 11 | 积分值 |
expire_time | datetime | 3 | 过期时间 |
reason | varchar | 255 | 积分增减原因 |
user_id | varchar | 40 | 用户id |
deleted | tinyint | 4 | 删除标记 |
create_time | datetime | 3 | 创建时间 |
update_time | datetime | 3 | 修改时间 |
可用积分表 usable_integral
此表对应的是可用的积分记录,当前积分根据此表值计算得出
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | 20 | 主键id |
record_id | bigint | 20 | 积分表中积分记录id |
value | int | 11 | 积分值 |
expire_time | datetime | 3 | 过期时间 |
user_id | varchar | 40 | 用户id |
deleted | tinyint | 4 | 删除标记 |
create_time | datetime | 3 | 创建时间 |
update_time | datetime | 3 | 修改时间 |
扣减积分详情表 reduce_integral_detail
字段名 | 类型 | 长度 | 说明 |
---|---|---|---|
id | bigint | 20 | 主键id |
reduce_id | bigint | 20 | 积分表中扣减积分记录id |
add_id | bigint | 20 | 积分表中新增的积分记录id |
used_value | int | 11 | 扣减的积分值 |
expire_time | datetime | 3 | 原新增的积分记录的过期时间 |
user_id | varchar | 40 | 用户id |
deleted | tinyint | 4 | 删除标记 |
create_time | datetime | 3 | 创建时间 |
update_time | datetime | 3 | 修改时间 |
场景模拟
2020-04-01当天记录
某用户积分记录表如下,其他额外信息暂时忽略
积分记录表id | 用户id | 积分值 | 添加时间 | 过期时间 | 类型 | 备注 |
---|---|---|---|---|---|---|
1 | 1 | 50 | 2019-04-02 | 2020-04-02 | 扫码获取 | 新增积分 |
2 | 1 | 50 | 2019-04-04 | 2020-04-04 | 扫码获取 | 新增积分 |
3 | 1 | 100 | 2019-04-04 | 2020-04-04 | 扫码获取 | 新增积分 |
4 | 1 | -30 | 2020-04-01 | 2020-04-01 | 积分兑换 | 使用积分 |
可用积分表
可用积分表id | 用户id | record_id | 可用积分值 | 修改时间 | 过期时间 | deleted |
---|---|---|---|---|---|---|
1 | 1 | 1 | 20 | 2020-04-01 | 2020-04-02 | 未删除 |
2 | 1 | 2 | 50 | 2019-04-04 | 2020-04-04 | 未删除 |
3 | 1 | 3 | 100 | 2019-04-04 | 2020-04-04 | 未删除 |
扣减积分详情表
记录id | 用户id | add_id 新增积分id | reduce_id 扣减积分id | used_value 使用积分 | 创建时间 | 过期时间 |
---|---|---|---|---|---|---|
1 | 1 | 1 | 4 | 30 | 2020-04-01 | 2020-04-01 |
2020-04-03当天记录
某用户积分记录表如下,其他额外信息暂时忽略
积分记录表id | 用户id | 积分值 | 添加时间 | 过期时间 | 类型 | 备注 |
---|---|---|---|---|---|---|
1 | 1 | 50 | 2019-04-02 | 2020-04-02 | 1(扫码获取) | 新增积分 |
2 | 1 | 50 | 2019-04-04 | 2020-04-04 | 1(扫码获取) | 新增积分 |
3 | 1 | 100 | 2019-04-04 | 2020-04-04 | 1(扫码获取) | 新增积分 |
4 | 1 | -30 | 2020-04-01 | 2020-04-01 | 2(积分兑换) | 使用积分 |
5 | 1 | -20 | 2020-04-01 | 2020-04-01 | 3(积分过期) | 积分过期 |
可用积分表
可用积分表id | 用户id | record_id | 可用积分值 | 修改时间 | 过期时间 | deleted |
---|---|---|---|---|---|---|
2 | 1 | 2 | 50 | 2019-04-04 | 2020-04-04 | 未删除 |
3 | 1 | 3 | 100 | 2019-04-04 | 2020-04-04 | 未删除 |
扣减积分详情表
记录id | 用户id | add_id 新增积分id | reduce_id 扣减积分id | used_value 使用积分 | 创建时间 | 过期时间 |
---|---|---|---|---|---|---|
1 | 1 | 1 | 4 | 30 | 2020-04-01 | 2020-04-01 |
2 | 1 | 1 | 5 | 20 | 2020-04-02 | 2020-04-02 |
2020-04-03 积分兑换80后
积分记录表id | 用户id | 积分值 | 添加时间 | 过期时间 | 类型 | 备注 |
---|---|---|---|---|---|---|
1 | 1 | 50 | 2019-04-02 | 2020-04-02 | 1(扫码获取) | 新增积分 |
2 | 1 | 50 | 2019-04-04 | 2020-04-04 | 1(扫码获取) | 新增积分 |
3 | 1 | 100 | 2019-04-04 | 2020-04-04 | 1(扫码获取) | 新增积分 |
4 | 1 | -30 | 2020-04-01 | 2020-04-01 | 2(积分兑换) | 使用积分 |
5 | 1 | -20 | 2020-04-01 | 2020-04-01 | 3(积分过期) | 积分过期 |
6 | 1 | -80 | 2020-04-01 | 2020-04-01 | 3(积分兑换) | 积分兑换 |
可用积分表
可用积分表id | 用户id | record_id | 可用积分值 | 修改时间 | 过期时间 | deleted |
---|---|---|---|---|---|---|
3 | 1 | 3 | 70 | 2020-04-03 | 2020-04-04 | 未删除 |
扣减积分详情表
记录id | 用户id | add_id 新增积分id | reduce_id 扣减积分id | used_value 使用积分 | 创建时间 | 过期时间 |
---|---|---|---|---|---|---|
1 | 1 | 1 | 4 | 30 | 2020-04-01 | 2020-04-01 |
2 | 1 | 1 | 5 | 20 | 2020-04-02 | 2020-04-02 |
3 | 1 | 2 | 6 | 50 | 2020-04-03 | 2020-04-04 |
4 | 1 | 3 | 6 | 30 | 2020-04-03 | 2020-04-04 |
额外说明
-
积分优先扣除最早过期的且小面值的积分
-
每天需要定时扫码可用积分表,将过期积分删除,并在积分记录表标注好过期记录以及扣减积分详情表记录扣减值
-
积分总额可直接根据可用积分值计算(即使过期积分没即使删除,也可以通过计算过滤来实现)
-
校验等式: 扣减积分表中add_id为a的所有使用积分和 + 可用积分表中record_id为a的可用积分值 = 积分记录表id为a的积分值
例如:扣减积分表 add_id=1的使用积分为(30 + 20) + 可用积分表record_id=1的可用积分值(0) = 积分记录表id为1的积分值50
思路参考: https://my.oschina.net/funcy/blog/1975523
最后
以上就是土豪可乐为你收集整理的带过期时间的积分系统表设计积分表设计的全部内容,希望文章能够帮你解决带过期时间的积分系统表设计积分表设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复