236 lines
11 KiB
SQL
236 lines
11 KiB
SQL
-- Activity-template runtime facts are version-bound. Configuration edits never rewrite these tables.
|
||
CREATE TABLE IF NOT EXISTS activity_template_runtime_versions (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
start_ms BIGINT NOT NULL,
|
||
end_ms BIGINT NOT NULL,
|
||
all_regions BOOLEAN NOT NULL DEFAULT FALSE,
|
||
runtime_from_ms BIGINT NOT NULL,
|
||
runtime_to_ms BIGINT NOT NULL DEFAULT 0,
|
||
created_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no),
|
||
KEY idx_activity_template_runtime_current (app_code, template_code, start_ms, end_ms, runtime_from_ms, runtime_to_ms),
|
||
KEY idx_activity_template_runtime_due (app_code, end_ms, runtime_to_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版不可变运行版本启停窗口';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_runtime_regions (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
region_id BIGINT NOT NULL,
|
||
created_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, region_id),
|
||
KEY idx_activity_template_runtime_region (app_code, region_id, template_id, version_no)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版运行版本区域快照';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_event_consumption (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
source_event_id VARCHAR(128) NOT NULL,
|
||
event_type VARCHAR(64) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
template_code VARCHAR(64) NOT NULL DEFAULT '',
|
||
version_no BIGINT NOT NULL DEFAULT 0,
|
||
user_id BIGINT NOT NULL DEFAULT 0,
|
||
region_id BIGINT NOT NULL DEFAULT 0,
|
||
task_day VARCHAR(10) NOT NULL DEFAULT '',
|
||
status VARCHAR(24) NOT NULL,
|
||
skip_reason VARCHAR(128) NOT NULL DEFAULT '',
|
||
occurred_at_ms BIGINT NOT NULL,
|
||
consumed_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, source_event_id),
|
||
KEY idx_activity_template_event_template (app_code, template_id, version_no, occurred_at_ms),
|
||
KEY idx_activity_template_event_status (app_code, status, consumed_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版运行事件幂等事实';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_user_day_scores (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
task_day VARCHAR(10) NOT NULL,
|
||
day_start_ms BIGINT NOT NULL,
|
||
day_end_ms BIGINT NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
score BIGINT NOT NULL DEFAULT 0,
|
||
gift_count BIGINT NOT NULL DEFAULT 0,
|
||
coin_amount BIGINT NOT NULL DEFAULT 0,
|
||
first_scored_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, task_day, user_id),
|
||
KEY idx_activity_template_day_rank (app_code, template_id, version_no, task_day, score DESC, first_scored_at_ms, user_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版 UTC 日榜实时分数';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_user_total_scores (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
score BIGINT NOT NULL DEFAULT 0,
|
||
gift_count BIGINT NOT NULL DEFAULT 0,
|
||
coin_amount BIGINT NOT NULL DEFAULT 0,
|
||
first_scored_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, user_id),
|
||
KEY idx_activity_template_total_rank (app_code, template_id, version_no, score DESC, first_scored_at_ms, user_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版活动总榜实时分数';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_daily_visits (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
task_day VARCHAR(10) NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
region_id BIGINT NOT NULL DEFAULT 0,
|
||
command_id VARCHAR(128) NOT NULL,
|
||
visited_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, task_day, user_id),
|
||
UNIQUE KEY uk_activity_template_visit_command (app_code, command_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版 daily_visit 自然幂等事实';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_task_progress (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
task_day VARCHAR(10) NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
first_region_id BIGINT NOT NULL DEFAULT 0,
|
||
task_key VARCHAR(64) NOT NULL,
|
||
task_type VARCHAR(32) NOT NULL,
|
||
target_value BIGINT NOT NULL,
|
||
progress_value BIGINT NOT NULL DEFAULT 0,
|
||
reward_resource_group_id BIGINT NOT NULL,
|
||
reward_snapshot_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
reward_snapshot_json JSON NULL,
|
||
sort_order INT NOT NULL DEFAULT 0,
|
||
status VARCHAR(24) NOT NULL,
|
||
completed_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
earning_region_id BIGINT NOT NULL DEFAULT 0,
|
||
attribution_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
claimed_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, task_day, user_id, task_key),
|
||
KEY idx_activity_template_task_data (app_code, template_id, version_no, task_day, task_key, status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版用户每日任务进度';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_task_claims (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
claim_id VARCHAR(96) NOT NULL,
|
||
command_id VARCHAR(128) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
task_day VARCHAR(10) NOT NULL,
|
||
task_key VARCHAR(64) NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
earning_region_id BIGINT NOT NULL DEFAULT 0,
|
||
attribution_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
reward_resource_group_id BIGINT NOT NULL,
|
||
reward_snapshot_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
reward_snapshot_json JSON NULL,
|
||
wallet_command_id VARCHAR(160) NOT NULL,
|
||
wallet_grant_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
status VARCHAR(24) NOT NULL,
|
||
failure_reason VARCHAR(512) NOT NULL DEFAULT '',
|
||
attempt_count INT NOT NULL DEFAULT 0,
|
||
created_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
granted_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (app_code, claim_id),
|
||
UNIQUE KEY uk_activity_template_claim_command (app_code, command_id),
|
||
UNIQUE KEY uk_activity_template_claim_task (app_code, template_id, version_no, task_day, user_id, task_key),
|
||
UNIQUE KEY uk_activity_template_claim_wallet (app_code, wallet_command_id),
|
||
KEY idx_activity_template_claim_status (app_code, status, updated_at_ms),
|
||
KEY idx_activity_template_claim_admin (app_code, template_id, version_no, task_day, task_key, user_id, status, updated_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版任务资源组领奖事实';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_rank_periods (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
board_type VARCHAR(16) NOT NULL,
|
||
period_key VARCHAR(24) NOT NULL,
|
||
period_start_ms BIGINT NOT NULL,
|
||
period_end_ms BIGINT NOT NULL,
|
||
settle_after_ms BIGINT NOT NULL COMMENT '结算水位:周期结束加允许迟到窗口,UTC epoch ms',
|
||
leaderboard_size INT NOT NULL,
|
||
status VARCHAR(24) NOT NULL,
|
||
locked_by VARCHAR(128) NOT NULL DEFAULT '',
|
||
lock_until_ms BIGINT NOT NULL DEFAULT 0,
|
||
settled_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
created_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, board_type, period_key),
|
||
KEY idx_activity_template_period_settle_due (app_code, status, settle_after_ms, lock_until_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版榜单结算周期';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_rank_snapshots (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
board_type VARCHAR(16) NOT NULL,
|
||
period_key VARCHAR(24) NOT NULL,
|
||
rank_no INT NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
score BIGINT NOT NULL,
|
||
gift_count BIGINT NOT NULL,
|
||
coin_amount BIGINT NOT NULL,
|
||
first_scored_at_ms BIGINT NOT NULL,
|
||
snapshot_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (app_code, template_id, version_no, board_type, period_key, rank_no),
|
||
UNIQUE KEY uk_activity_template_rank_user (app_code, template_id, version_no, board_type, period_key, user_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版冻结榜单快照';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_reward_jobs (
|
||
app_code VARCHAR(32) NOT NULL,
|
||
reward_job_id VARCHAR(96) NOT NULL,
|
||
template_id VARCHAR(96) NOT NULL,
|
||
template_code VARCHAR(64) NOT NULL,
|
||
version_no BIGINT NOT NULL,
|
||
board_type VARCHAR(16) NOT NULL,
|
||
period_key VARCHAR(24) NOT NULL,
|
||
rank_no INT NOT NULL,
|
||
user_id BIGINT NOT NULL,
|
||
score BIGINT NOT NULL,
|
||
resource_group_id BIGINT NOT NULL,
|
||
reward_snapshot_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
reward_snapshot_json JSON NULL,
|
||
wallet_command_id VARCHAR(192) NOT NULL,
|
||
wallet_grant_id VARCHAR(96) NOT NULL DEFAULT '',
|
||
status VARCHAR(24) NOT NULL,
|
||
failure_reason VARCHAR(512) NOT NULL DEFAULT '',
|
||
attempt_count INT NOT NULL DEFAULT 0,
|
||
created_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
granted_at_ms BIGINT NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (app_code, reward_job_id),
|
||
UNIQUE KEY uk_activity_template_reward_rank (app_code, template_id, version_no, board_type, period_key, rank_no),
|
||
UNIQUE KEY uk_activity_template_reward_wallet (app_code, wallet_command_id),
|
||
KEY idx_activity_template_reward_query (app_code, template_id, version_no, board_type, period_key, status),
|
||
KEY idx_activity_template_reward_retry (app_code, status, updated_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版榜单奖励发放任务';
|
||
|
||
CREATE TABLE IF NOT EXISTS activity_template_stats_outbox (
|
||
outbox_id VARCHAR(96) NOT NULL,
|
||
app_code VARCHAR(32) NOT NULL,
|
||
event_type VARCHAR(64) NOT NULL,
|
||
payload BLOB NOT NULL,
|
||
status VARCHAR(24) NOT NULL,
|
||
retry_count INT NOT NULL DEFAULT 0,
|
||
next_retry_at_ms BIGINT NOT NULL,
|
||
locked_by VARCHAR(128) NOT NULL DEFAULT '',
|
||
lock_until_ms BIGINT NOT NULL DEFAULT 0,
|
||
last_error VARCHAR(512) NOT NULL DEFAULT '',
|
||
created_at_ms BIGINT NOT NULL,
|
||
updated_at_ms BIGINT NOT NULL,
|
||
PRIMARY KEY (outbox_id),
|
||
KEY idx_activity_template_stats_outbox_claim (status, next_retry_at_ms, lock_until_ms, created_at_ms)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动模版统计事实 RocketMQ transactional outbox';
|