- 用户表中存总积分
id(用户id) | score(积分) |
---|---|
1 | 100 |
- 积分记录表中新增一个已使用积分和过期时间
id | user_id | score | endtime | used |
---|---|---|---|---|
1 | 1 | 100 | 1637573997 | 0 |
- 获得积分时插入积分流水记录,同时加上过期时间,已使用默认为0;
- 消耗积分时先减去总积分,再去积分记录表中查score>0 and score<>used and
endtime>当前时间的所有记录,再循环更新使用量,一个不够更新多个, - 查询时或者使用前更新可用积分,查询score>0 and score<>used and
endtime<当前时间的所有记录,存在则循环更新已使用的值为增加的值,再更新用户表积分值即可
借鉴了一下网友的想法,自己整理一下