我是靠谱客的博主 土豪可乐,最近开发中收集的这篇文章主要介绍带过期时间的积分系统表设计积分表设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

积分表设计

表结构设计

由于业务需要可以作废还原等操作,所以设计的稍微复杂,如果没有这种业务需求,可以去除扣减积分详情表以及可用积分表去除record_id并合并相同过期时间的积分,然后在账号中冗余可用积分及最近过期的积分过期时间

积分记录表 integral_record

此表对应的是业务操作引起的积分变化记录

字段名类型长度说明
idbigint20主键id
typesmallint11积分记录类型
original_idvarchar40原始记录id
valueint11积分值
expire_timedatetime3过期时间
reasonvarchar255积分增减原因
user_idvarchar40用户id
deletedtinyint4删除标记
create_timedatetime3创建时间
update_timedatetime3修改时间

可用积分表 usable_integral

此表对应的是可用的积分记录,当前积分根据此表值计算得出

字段名类型长度说明
idbigint20主键id
record_idbigint20积分表中积分记录id
valueint11积分值
expire_timedatetime3过期时间
user_idvarchar40用户id
deletedtinyint4删除标记
create_timedatetime3创建时间
update_timedatetime3修改时间

扣减积分详情表 reduce_integral_detail

字段名类型长度说明
idbigint20主键id
reduce_idbigint20积分表中扣减积分记录id
add_idbigint20积分表中新增的积分记录id
used_valueint11扣减的积分值
expire_timedatetime3原新增的积分记录的过期时间
user_idvarchar40用户id
deletedtinyint4删除标记
create_timedatetime3创建时间
update_timedatetime3修改时间

场景模拟

2020-04-01当天记录

某用户积分记录表如下,其他额外信息暂时忽略

积分记录表id用户id积分值添加时间过期时间类型备注
11502019-04-022020-04-02扫码获取新增积分
21502019-04-042020-04-04扫码获取新增积分
311002019-04-042020-04-04扫码获取新增积分
41-302020-04-012020-04-01积分兑换使用积分

可用积分表

可用积分表id用户idrecord_id可用积分值修改时间过期时间deleted
111202020-04-012020-04-02未删除
212502019-04-042020-04-04未删除
3131002019-04-042020-04-04未删除

扣减积分详情表

记录id用户idadd_id
新增积分id
reduce_id
扣减积分id
used_value
使用积分
创建时间过期时间
1114302020-04-012020-04-01

2020-04-03当天记录

某用户积分记录表如下,其他额外信息暂时忽略

积分记录表id用户id积分值添加时间过期时间类型备注
11502019-04-022020-04-021(扫码获取)新增积分
21502019-04-042020-04-041(扫码获取)新增积分
311002019-04-042020-04-041(扫码获取)新增积分
41-302020-04-012020-04-012(积分兑换)使用积分
51-202020-04-012020-04-013(积分过期)积分过期

可用积分表

可用积分表id用户idrecord_id可用积分值修改时间过期时间deleted
11102020-04-022020-04-02删除
212502019-04-042020-04-04未删除
3131002019-04-042020-04-04未删除

扣减积分详情表

记录id用户idadd_id
新增积分id
reduce_id
扣减积分id
used_value
使用积分
创建时间过期时间
1114302020-04-012020-04-01
2115202020-04-022020-04-02

2020-04-03 积分兑换80后

积分记录表id用户id积分值添加时间过期时间类型备注
11502019-04-022020-04-021(扫码获取)新增积分
21502019-04-042020-04-041(扫码获取)新增积分
311002019-04-042020-04-041(扫码获取)新增积分
41-302020-04-012020-04-012(积分兑换)使用积分
51-202020-04-012020-04-013(积分过期)积分过期
61-802020-04-012020-04-013(积分兑换)积分兑换

可用积分表

可用积分表id用户idrecord_id可用积分值修改时间过期时间deleted
11102020-04-022020-04-02删除
21202020-04-032020-04-04删除
313702020-04-032020-04-04未删除

扣减积分详情表

记录id用户idadd_id
新增积分id
reduce_id
扣减积分id
used_value
使用积分
创建时间过期时间
1114302020-04-012020-04-01
2115202020-04-022020-04-02
3126502020-04-032020-04-04
4136302020-04-032020-04-04

额外说明

  1. 积分优先扣除最早过期的且小面值的积分

  2. 每天需要定时扫码可用积分表,将过期积分删除,并在积分记录表标注好过期记录以及扣减积分详情表记录扣减值

  3. 积分总额可直接根据可用积分值计算(即使过期积分没即使删除,也可以通过计算过滤来实现)

  4. 校验等式: 扣减积分表中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

最后

以上就是土豪可乐为你收集整理的带过期时间的积分系统表设计积分表设计的全部内容,希望文章能够帮你解决带过期时间的积分系统表设计积分表设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部