主要两张表
用户积分表
用户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后返回计算后的可用
暂时可满足我们的需求, 有什么问题一起探讨
原文:https://www.cnblogs.com/chreun/p/12111560.html