qiangdanxitong/database/reward_system_upgrade.sql

117 lines
6.4 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.

-- ========================================
-- 奖励系统升级脚本
-- 版本: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);