-- 房间红包主表
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='房间红包异常日志表';
