记录下mysql数据库积分过期表设计

主要两张表

用户积分表

用户ID 可用 已用 更新日期
1 1000 5000 2019-12-11

积分日志表

自增ID 用户ID 积分金额 是否过期 创建日期
1 1 10000 1 2018-12-10

一 . 加积分

1.增加用户积分表的可用;

2.写日志

二 . 减积分

1.使用积分是 +已用 -可用;

三 . 查积分

1.每次从用户积分表来取当前可用时判断下更新日期是否是当天, 当天直接返回

2.否则查更新日期距离当天多少天,设为D

3.取最新过期的过期时间往前推D天,取该段时间内获取的过期积分总额,设为E

4.如果没有过期的,直接将更新日期设为当天同时返回可用

5.有过期的, 已用 = max(0, 已用 - E),  可用 = max(可用 - max(0, E - 已用 ), 0),更新日期=当天,落地DB后返回计算后的可用

暂时可满足我们的需求, 有什么问题一起探讨

猜你喜欢

转载自www.cnblogs.com/chreun/p/12111560.html