yumi-golang/migrations/032_voice_room_rocket.sql
2026-05-15 14:14:04 +08:00

198 lines
13 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CREATE TABLE IF NOT EXISTS voice_room_rocket_config (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
timezone VARCHAR(64) NOT NULL DEFAULT 'Asia/Riyadh' COMMENT '业务时区',
max_level INT NOT NULL DEFAULT 6 COMMENT '最大等级',
ranking_top_limit INT NOT NULL DEFAULT 100 COMMENT '火箭王榜单展示人数',
reward_record_keep_days INT NOT NULL DEFAULT 35 COMMENT '用户奖励记录展示天数',
broadcast_duration_seconds INT NOT NULL DEFAULT 7 COMMENT '发射广播展示秒数',
in_room_reward_delay_seconds INT NOT NULL DEFAULT 10 COMMENT '在房间奖励延迟窗口秒数',
energy_rule_json JSON DEFAULT NULL COMMENT '礼物折算规则',
rule_text JSON DEFAULT NULL COMMENT '规则说明多语言文案',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_config (sys_origin)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭系统配置';
CREATE TABLE IF NOT EXISTS voice_room_rocket_level_config (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
level INT NOT NULL COMMENT '火箭等级Lv.1-Lv.6',
need_energy BIGINT NOT NULL COMMENT '本级发射所需能量',
shake_threshold_percent DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '抖动阈值百分比',
preview_rocket_url VARCHAR(512) DEFAULT NULL COMMENT '预览火箭资源URL',
rocket_icon_url VARCHAR(512) DEFAULT NULL COMMENT '火箭图标资源URL',
rocket_animation_url VARCHAR(512) DEFAULT NULL COMMENT '火箭发射动画资源URL',
progress_bar_url VARCHAR(512) DEFAULT NULL COMMENT '进度条资源URL历史字段',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
sort INT NOT NULL DEFAULT 0 COMMENT '排序值,升序',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_level (sys_origin, level)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭等级配置';
CREATE TABLE IF NOT EXISTS voice_room_rocket_reward_config (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
level INT NOT NULL COMMENT '适用等级',
reward_scene VARCHAR(32) NOT NULL COMMENT 'TOP1/IGNITE/IN_ROOM',
reward_type VARCHAR(32) NOT NULL COMMENT 'GOLD/MOUNT/AVATAR_FRAME/CHAT_BUBBLE/VIP_CARD/GIFT/BADGE/NONE',
reward_item_id BIGINT DEFAULT NULL COMMENT '道具、礼物、权益等资源ID',
reward_name VARCHAR(128) NOT NULL COMMENT '奖励名称',
reward_cover VARCHAR(512) DEFAULT NULL COMMENT '奖励封面URL',
reward_amount BIGINT NOT NULL DEFAULT 1 COMMENT '金币数量或道具数量/天数',
expire_days INT DEFAULT NULL COMMENT '时效类奖励有效天数',
reward_copies INT NOT NULL DEFAULT 1 COMMENT 'IN_ROOM 本奖励每次发射可发放份数',
weight INT NOT NULL DEFAULT 0 COMMENT 'IN_ROOM 随机抽取权重小于等于0按1处理',
sort INT NOT NULL DEFAULT 0 COMMENT '排序值,升序',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
KEY idx_voice_room_rocket_reward_scene (sys_origin, level, reward_scene, enabled)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭奖励配置';
CREATE TABLE IF NOT EXISTS voice_room_rocket_status (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL DEFAULT 1 COMMENT '当天第几轮火箭',
current_level INT NOT NULL DEFAULT 1 COMMENT '当前等级',
current_energy BIGINT NOT NULL DEFAULT 0 COMMENT '当前等级已累计能量',
need_energy BIGINT NOT NULL COMMENT '当前等级所需能量',
status VARCHAR(32) NOT NULL COMMENT 'CHARGING/LAUNCHING',
level_start_time DATETIME NOT NULL COMMENT '当前等级开始时间',
last_event_time DATETIME DEFAULT NULL COMMENT '最近一次有效送礼事件时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_status (sys_origin, room_id, day_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭当前状态';
CREATE TABLE IF NOT EXISTS voice_room_rocket_level_round (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL COMMENT '当天第几轮火箭',
level INT NOT NULL COMMENT '火箭等级',
need_energy BIGINT NOT NULL COMMENT '本级所需能量',
final_energy BIGINT NOT NULL DEFAULT 0 COMMENT '本级最终累计能量',
status VARCHAR(32) NOT NULL COMMENT 'CHARGING/LAUNCHED',
top1_user_id BIGINT DEFAULT NULL COMMENT '本级贡献第一用户ID',
ignite_user_id BIGINT DEFAULT NULL COMMENT '点火用户ID',
reach_time DATETIME DEFAULT NULL COMMENT '能量达标时间',
launch_time DATETIME DEFAULT NULL COMMENT '发射时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_level_round (sys_origin, room_id, day_key, round_no, level),
KEY idx_voice_room_rocket_level_round_room (sys_origin, room_id, day_key, round_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭每轮每级快照';
CREATE TABLE IF NOT EXISTS voice_room_rocket_contribution (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL COMMENT '当天第几轮火箭',
level INT NOT NULL COMMENT '火箭等级',
user_id BIGINT NOT NULL COMMENT '贡献用户ID',
score_energy BIGINT NOT NULL DEFAULT 0 COMMENT '计入榜单的能量值',
gift_count INT NOT NULL DEFAULT 0 COMMENT '计入火箭的送礼次数',
first_contribute_time DATETIME NOT NULL COMMENT '首次贡献时间',
last_contribute_time DATETIME NOT NULL COMMENT '最近贡献时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_contribution_user (sys_origin, room_id, day_key, round_no, level, user_id),
KEY idx_voice_room_rocket_contribution_rank (sys_origin, room_id, day_key, round_no, level, score_energy, last_contribute_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭贡献榜';
CREATE TABLE IF NOT EXISTS voice_room_rocket_gift_event_log (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
track_id VARCHAR(128) NOT NULL COMMENT '送礼事件唯一追踪ID',
room_id BIGINT NOT NULL COMMENT '房间ID',
send_user_id BIGINT NOT NULL COMMENT '送礼用户ID',
gift_id BIGINT DEFAULT NULL COMMENT '礼物ID',
gift_type VARCHAR(32) DEFAULT NULL COMMENT '礼物类型',
gift_tab VARCHAR(64) DEFAULT NULL COMMENT '礼物分类',
raw_energy BIGINT NOT NULL DEFAULT 0 COMMENT '原始能量值',
accepted_energy BIGINT NOT NULL DEFAULT 0 COMMENT '实际计入火箭能量值',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL COMMENT '当天第几轮火箭',
level INT NOT NULL COMMENT '火箭等级',
status VARCHAR(32) NOT NULL COMMENT 'IGNORED/SUCCESS/FAILED',
raw_payload MEDIUMTEXT COMMENT '原始消息内容',
error_message VARCHAR(1024) DEFAULT NULL COMMENT '失败原因',
event_time DATETIME NOT NULL COMMENT '事件发生时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_track (track_id),
KEY idx_voice_room_rocket_event_room (sys_origin, room_id, day_key, round_no, level)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭送礼事件日志';
CREATE TABLE IF NOT EXISTS voice_room_rocket_launch (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
launch_no VARCHAR(64) NOT NULL COMMENT '发射编号',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
room_account VARCHAR(64) DEFAULT NULL COMMENT '房间号',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL COMMENT '当天第几轮火箭',
level INT NOT NULL COMMENT '火箭等级',
final_energy BIGINT NOT NULL COMMENT '发射时最终能量',
top1_user_id BIGINT DEFAULT NULL COMMENT '贡献第一用户ID',
ignite_user_id BIGINT DEFAULT NULL COMMENT '点火用户ID',
in_room_snapshot_status VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '在房用户快照状态PENDING/SUCCESS/FAILED',
launch_time DATETIME NOT NULL COMMENT '发射时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_launch_no (launch_no),
UNIQUE KEY uk_voice_room_rocket_launch_level (sys_origin, room_id, day_key, round_no, level),
KEY idx_voice_room_rocket_launch_room (sys_origin, room_id, launch_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭发射记录';
CREATE TABLE IF NOT EXISTS voice_room_rocket_reward_record (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
launch_id BIGINT NOT NULL COMMENT '发射记录ID',
launch_no VARCHAR(64) NOT NULL COMMENT '发射编号',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
day_key VARCHAR(16) NOT NULL COMMENT 'UTC+3 业务日 yyyyMMdd',
round_no INT NOT NULL COMMENT '当天第几轮火箭',
level INT NOT NULL COMMENT '火箭等级',
user_id BIGINT NOT NULL COMMENT '获奖用户ID',
reward_scene VARCHAR(32) NOT NULL COMMENT '奖励场景TOP1/IGNITE/IN_ROOM',
reward_config_id BIGINT NOT NULL COMMENT '奖励配置ID',
reward_type VARCHAR(32) NOT NULL COMMENT '奖励类型GOLD/MOUNT/AVATAR_FRAME/CHAT_BUBBLE/VIP_CARD/GIFT/BADGE/NONE',
reward_item_id BIGINT DEFAULT NULL COMMENT '奖励资源ID',
reward_name VARCHAR(128) NOT NULL COMMENT '奖励名称',
reward_cover VARCHAR(512) DEFAULT NULL COMMENT '奖励封面URL',
reward_amount BIGINT NOT NULL DEFAULT 1 COMMENT '金币数量或道具数量/天数',
expire_days INT DEFAULT NULL COMMENT '时效类奖励有效天数',
grant_event_id VARCHAR(128) NOT NULL COMMENT '发奖幂等事件ID',
grant_status VARCHAR(32) NOT NULL COMMENT 'PENDING/SUCCESS/FAILED',
popup_status VARCHAR(32) NOT NULL DEFAULT 'UNREAD' COMMENT 'UNREAD/READ',
error_message VARCHAR(1024) DEFAULT NULL COMMENT '发奖失败原因',
grant_time DATETIME DEFAULT NULL COMMENT '发奖完成时间',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_voice_room_rocket_reward_event (grant_event_id),
KEY idx_voice_room_rocket_reward_user (sys_origin, user_id, create_time),
KEY idx_voice_room_rocket_reward_launch (launch_id, user_id),
KEY idx_voice_room_rocket_reward_retry (grant_status, update_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭奖励记录';
CREATE TABLE IF NOT EXISTS voice_room_rocket_audience_snapshot (
id BIGINT NOT NULL PRIMARY KEY COMMENT '主键ID',
launch_id BIGINT NOT NULL COMMENT '发射记录ID',
sys_origin VARCHAR(32) NOT NULL COMMENT '系统来源',
room_id BIGINT NOT NULL COMMENT '房间ID',
user_id BIGINT NOT NULL COMMENT '在房用户ID',
last_seen_time DATETIME NOT NULL COMMENT '最近在线时间',
selected TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否被抽中发放在房奖励',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_voice_room_rocket_audience (launch_id, user_id),
KEY idx_voice_room_rocket_audience_launch (launch_id, selected)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='语音房火箭在房间用户快照';