微信读书的书币逻辑是怎样做到独立过期的呢?

查看 479|回复 40
作者:zero47   
有点好奇微信读书的书币系统是怎么实现的。微信读书每天阅读可以获得书币奖励,基本每天能领取 1 到 2 个,而这些领取的书币都有独立的有效期,貌似一个月。如果每笔领取记录都单独过期,意思是一个月可能会有 30 多笔记录。假设每笔都是 1 个书币,难道买本 30 块的电子书要更新 30 条记录?每次查看余额都要 sum 一下记录?
yefuchao   
余额就是一个数字,过期时间到了给你扣掉不就好了
NoOneNoBody   
硬件足够的话,数据越细越好
不需要每次计算,缓存,或者保存预计算结果就可以了
zero47
OP
  
@yefuchao 不能吧,他付款肯定是先用旧的奖励记录,那就必须每笔记录是否被消费都记
Donjote   
更新 30 条记录也没啥吧,余额可以存另外一个表里
subfire   
跟游戏开发中的道具类似, 每次获得的书币道具, 只是 configId 一样, 但是 instanceId 是新增的, 不同 instanceId 的道具都有独立的有效期. 扣减书币道具的时候, 优先扣减即将到期的
xxxaadsdss   
每次领取都是一条领取记录。领取的商品有过期时间。到时间了。减一下总表的 书币数就好了
zero47
OP
  
想了想还有一个情况是,30 块的交易,用户有 29 个 1 块书币奖励和 1 个 2 块书币奖励,还得在最后一个 2 块奖励里记录消费了 1 块,还有 1 块没被消费,这太不优雅了吧
zero47
OP
  
@xxxaadsdss 这只能解决 sum 的问题,实际消费还得一条一条的更新奖励记录
NessajCN   
参考比特币的区块嘛
做一个表,只记录交易信息,譬如 xxxx(时间戳) 入账 1 币,一个月后该条交易记录失效
消费的时候就是手动将依然在有效期内的前 3 条 1 币交易记录失效,如果是入账 3 币只消费 2 币的记录就失效掉 3 币的记录重新生成一条基于原时间戳的 1 币记录
余额计算就是简单的所有有效入账记录求和
您需要登录后才可以回帖 登录 | 立即注册

返回顶部