hanbin
214 天前
两个表:
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
过期积分用脚本处理
积分消费时判断余额够就允许消费。