64 lines
3.1 KiB
SQL
64 lines
3.1 KiB
SQL
-- 房间红包主表
|
||
CREATE TABLE `room_red_packet` (
|
||
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||
`packet_id` VARCHAR(32) UNIQUE NOT NULL COMMENT '红包ID(UUID)',
|
||
`room_id` BIGINT NOT NULL COMMENT '房间ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '发起人ID',
|
||
|
||
`packet_type` TINYINT NOT NULL COMMENT '红包类型:1-固定金额 2-拼手气',
|
||
`source_type` TINYINT NOT NULL DEFAULT 1 COMMENT '来源类型:1-用户红包 2-平台红包',
|
||
`total_amount` BIGINT NOT NULL COMMENT '总金额(分)',
|
||
`total_count` INT NOT NULL COMMENT '红包总个数',
|
||
`remain_amount` BIGINT NOT NULL COMMENT '剩余金额(分)',
|
||
`remain_count` INT NOT NULL COMMENT '剩余个数',
|
||
|
||
`expire_minutes` INT NOT NULL COMMENT '过期分钟数:1/3/5',
|
||
`expire_time` DATETIME NOT NULL COMMENT '过期时间',
|
||
|
||
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-进行中 2-已抢完 3-已过期',
|
||
`refund_status` TINYINT DEFAULT 0 COMMENT '退款状态:0-未退 1-已退 2-无需退款',
|
||
|
||
`is_broadcast` TINYINT DEFAULT 0 COMMENT '是否触发全服推送:0-否 1-是(10000+金币)',
|
||
|
||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
|
||
INDEX `idx_room_id` (`room_id`),
|
||
INDEX `idx_user_id` (`user_id`),
|
||
INDEX `idx_expire_time` (`expire_time`, `status`),
|
||
INDEX `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间红包主表';
|
||
|
||
-- 房间红包领取记录表
|
||
CREATE TABLE `room_red_packet_record` (
|
||
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||
`record_id` VARCHAR(32) UNIQUE NOT NULL COMMENT '记录ID(UUID)',
|
||
`packet_id` VARCHAR(32) NOT NULL COMMENT '红包ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '领取人ID',
|
||
`amount` BIGINT NOT NULL COMMENT '领取金额(分)',
|
||
`grab_time` DATETIME NOT NULL COMMENT '抢红包时间',
|
||
|
||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
|
||
UNIQUE KEY `uk_packet_user` (`packet_id`, `user_id`) COMMENT '防止重复领取',
|
||
INDEX `idx_packet_id` (`packet_id`),
|
||
INDEX `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间红包领取记录表';
|
||
|
||
-- 房间红包异常日志表(可选,用于补偿机制)
|
||
CREATE TABLE `room_red_packet_error_log` (
|
||
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||
`packet_id` VARCHAR(32) NOT NULL COMMENT '红包ID',
|
||
`user_id` BIGINT COMMENT '用户ID',
|
||
`error_type` VARCHAR(50) NOT NULL COMMENT '异常类型',
|
||
`error_msg` TEXT COMMENT '异常信息',
|
||
`retry_count` INT DEFAULT 0 COMMENT '重试次数',
|
||
`status` TINYINT DEFAULT 0 COMMENT '状态:0-待处理 1-已处理',
|
||
|
||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
|
||
INDEX `idx_packet_id` (`packet_id`),
|
||
INDEX `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间红包异常日志表';
|