hanbin

hanbin

🏢  PHP/Golang开发
V2EX 第 509754 号会员,加入于 2020-09-25 17:02:37 +08:00
hanbin 最近回复了
@hanbin 将积分领取和积分消费解耦,消费时不关心积分的有效期属性,积分的有效属性也不关心消费的具体场景,只关心额度变化即可。
两个表:

CREATE TABLE PointsRecord (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增 ID',
user_id INT NOT NULL COMMENT '用户 ID',
points_amount INT NOT NULL COMMENT '积分数量',
receive_time TIMESTAMP NOT NULL COMMENT '领取时间',
expiration_time TIMESTAMP NOT NULL COMMENT '过期时间',
status VARCHAR(20) NOT NULL COMMENT '状态',
receive_source VARCHAR(50) NOT NULL COMMENT '领取来源',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '积分领取记录表';

CREATE TABLE PointsWallet (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '积分钱包 ID',
user_id INT NOT NULL COMMENT '用户 ID',
points_balance INT NOT NULL DEFAULT 0 COMMENT '积分余额',
total_points INT NOT NULL DEFAULT 0 COMMENT '积分总额',
used_points INT NOT NULL DEFAULT 0 COMMENT '已用积分总额',
expired_points INT NOT NULL DEFAULT 0 COMMENT '已过期积分总额',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '积分钱包表';

领取积分:

PointsRecord 入库一条记录,PointsWallet 更新 total_points & points_balance ,事务处理

过期积分:

PointsRecord 更新一条数据,PointsWallet 更新 total_points & points_balance & expired_points ,事务处理

积分消费:

PointsWallet 更新 used_points & points_balance

过期积分用脚本处理

积分消费时判断余额够就允许消费。
55 天前
回复了 yoiteshaw 创建的主题 问与答 我该如何判断自己家半夜断过电
打电话问国家电网。
1. Microsoft Remote Desktop 需要配合 VPN 使用,我自己用的 openVPN 。

2. toDesk ,和 teamView 相同。两端登录同一个账号,或者用设备码就能用。我拿这个做 plan B 。
103 天前
回复了 brader 创建的主题 生活 等放假太难熬了
@brader 刚试了 edge 长按鼠标左键也可以
111 天前
回复了 Renco 创建的主题 职场话题 统计一下 V 友们,除夕不放假的有多少
公司送了两天带薪假,7 号开始放假。
华为用户,用华为云备份
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2314 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 08:10 · PVG 16:10 · LAX 01:10 · JFK 04:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.