117 lines
6.4 KiB
SQL
117 lines
6.4 KiB
SQL
-- ========================================
|
||
-- 奖励系统升级脚本
|
||
-- 版本:v2.0
|
||
-- 日期:2026-01-04
|
||
-- ========================================
|
||
|
||
-- 1. 新增奖励发放记录表
|
||
CREATE TABLE IF NOT EXISTS reward_record (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
rule_id BIGINT COMMENT '规则ID',
|
||
rule_name VARCHAR(100) COMMENT '规则名称',
|
||
reward_type VARCHAR(50) NOT NULL COMMENT '奖励类型:score/exp/badge/title',
|
||
reward_value TEXT COMMENT '奖励内容JSON',
|
||
trigger_data TEXT COMMENT '触发时的数据快照',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_user_id (user_id),
|
||
INDEX idx_rule_id (rule_id),
|
||
INDEX idx_create_time (create_time),
|
||
INDEX idx_reward_type (reward_type)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='奖励发放记录';
|
||
|
||
-- 2. 扩展奖励规则表
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS reward_exp INT DEFAULT 0 COMMENT '奖励经验值';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS reward_title VARCHAR(50) COMMENT '奖励称号';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS reward_privilege TEXT COMMENT '奖励特权JSON';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS max_times_per_user INT DEFAULT 0 COMMENT '每用户最大获得次数(0=无限)';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS total_budget INT DEFAULT 0 COMMENT '总预算积分(0=无限)';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS used_budget INT DEFAULT 0 COMMENT '已使用预算';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS trigger_count INT DEFAULT 0 COMMENT '触发次数';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS start_time DATETIME COMMENT '生效开始时间';
|
||
ALTER TABLE reward_rule ADD COLUMN IF NOT EXISTS end_time DATETIME COMMENT '生效结束时间';
|
||
|
||
-- 3. 用户徽章表
|
||
CREATE TABLE IF NOT EXISTS user_badge (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
badge_code VARCHAR(50) NOT NULL COMMENT '徽章代码',
|
||
badge_name VARCHAR(100) NOT NULL COMMENT '徽章名称',
|
||
badge_icon VARCHAR(255) COMMENT '徽章图标URL',
|
||
badge_color VARCHAR(20) DEFAULT '#31f08b' COMMENT '徽章颜色',
|
||
description VARCHAR(255) COMMENT '徽章描述',
|
||
source_type VARCHAR(50) COMMENT '来源类型:rule/manual/achievement',
|
||
source_id BIGINT COMMENT '来源ID',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
UNIQUE KEY uk_user_badge (user_id, badge_code),
|
||
INDEX idx_user_id (user_id),
|
||
INDEX idx_badge_code (badge_code)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户徽章';
|
||
|
||
-- 4. 用户称号表
|
||
CREATE TABLE IF NOT EXISTS user_title (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||
title_code VARCHAR(50) NOT NULL COMMENT '称号代码',
|
||
title_name VARCHAR(100) NOT NULL COMMENT '称号名称',
|
||
title_color VARCHAR(20) DEFAULT '#31f08b' COMMENT '称号颜色',
|
||
description VARCHAR(255) COMMENT '称号描述',
|
||
is_active INT DEFAULT 0 COMMENT '是否激活显示:0-否 1-是',
|
||
expire_time DATETIME COMMENT '过期时间(NULL=永久)',
|
||
source_type VARCHAR(50) COMMENT '来源类型:rule/manual/achievement',
|
||
source_id BIGINT COMMENT '来源ID',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
UNIQUE KEY uk_user_title (user_id, title_code),
|
||
INDEX idx_user_id (user_id),
|
||
INDEX idx_is_active (is_active)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户称号';
|
||
|
||
-- 5. 徽章定义表(系统预设徽章)
|
||
CREATE TABLE IF NOT EXISTS badge_definition (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
badge_code VARCHAR(50) NOT NULL UNIQUE COMMENT '徽章代码',
|
||
badge_name VARCHAR(100) NOT NULL COMMENT '徽章名称',
|
||
badge_icon VARCHAR(255) COMMENT '徽章图标URL',
|
||
badge_color VARCHAR(20) DEFAULT '#31f08b' COMMENT '徽章颜色',
|
||
description VARCHAR(255) COMMENT '徽章描述',
|
||
category VARCHAR(50) DEFAULT 'general' COMMENT '分类:general/task/rating/special',
|
||
sort_order INT DEFAULT 0 COMMENT '排序',
|
||
enabled INT DEFAULT 1 COMMENT '是否启用',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_category (category),
|
||
INDEX idx_enabled (enabled)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='徽章定义';
|
||
|
||
-- 6. 称号定义表(系统预设称号)
|
||
CREATE TABLE IF NOT EXISTS title_definition (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
title_code VARCHAR(50) NOT NULL UNIQUE COMMENT '称号代码',
|
||
title_name VARCHAR(100) NOT NULL COMMENT '称号名称',
|
||
title_color VARCHAR(20) DEFAULT '#31f08b' COMMENT '称号颜色',
|
||
description VARCHAR(255) COMMENT '称号描述',
|
||
category VARCHAR(50) DEFAULT 'general' COMMENT '分类',
|
||
sort_order INT DEFAULT 0 COMMENT '排序',
|
||
enabled INT DEFAULT 1 COMMENT '是否启用',
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
INDEX idx_category (category),
|
||
INDEX idx_enabled (enabled)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='称号定义';
|
||
|
||
-- 7. 初始化一些默认徽章
|
||
INSERT IGNORE INTO badge_definition (badge_code, badge_name, badge_icon, badge_color, description, category, sort_order) VALUES
|
||
('efficiency_star', '效率之星', NULL, '#31f08b', '每周完成20个任务获得', 'task', 1),
|
||
('five_star_master', '好评大师', NULL, '#FFD700', '累计获得50个五星好评', 'rating', 2),
|
||
('task_master', '任务达人', NULL, '#1890ff', '累计完成100个任务', 'task', 3),
|
||
('speed_demon', '极速先锋', NULL, '#ff4d4f', '连续7天准时完成所有任务', 'task', 4),
|
||
('newcomer', '新人之星', NULL, '#52c41a', '首次完成任务获得', 'special', 5),
|
||
('perfect_week', '完美周', NULL, '#722ed1', '一周内所有任务都获得五星好评', 'rating', 6);
|
||
|
||
-- 8. 初始化一些默认称号
|
||
INSERT IGNORE INTO title_definition (title_code, title_name, title_color, description, category, sort_order) VALUES
|
||
('design_master', '设计大师', '#FFD700', '设计领域的佼佼者', 'general', 1),
|
||
('efficiency_king', '效率之王', '#31f08b', '高效完成任务的典范', 'general', 2),
|
||
('quality_guardian', '品质卫士', '#1890ff', '始终保持高品质输出', 'general', 3),
|
||
('team_star', '团队之星', '#ff4d4f', '团队贡献突出', 'general', 4),
|
||
('rising_star', '新星', '#52c41a', '快速成长的新人', 'general', 5);
|
||
|