-- ================================================================ -- 证书系统数据库迁移脚本 -- 创建日期: 2026-01-29 -- 功能: 添加证书模板表和用户证书表 -- ================================================================ -- 事务开始 START TRANSACTION; -- ================================================================ -- 1. 创建证书模板表 -- ================================================================ CREATE TABLE IF NOT EXISTS certificate_templates ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL COMMENT '模板名称', type ENUM('course', 'exam', 'achievement') NOT NULL COMMENT '证书类型: course=课程结业, exam=考试合格, achievement=成就证书', background_url VARCHAR(500) COMMENT '证书背景图URL', template_html TEXT COMMENT 'HTML模板内容', template_style TEXT COMMENT 'CSS样式', is_active BOOLEAN DEFAULT TRUE COMMENT '是否启用', sort_order INT DEFAULT 0 COMMENT '排序顺序', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_type (type), INDEX idx_is_active (is_active) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='证书模板表'; -- ================================================================ -- 2. 创建用户证书表 -- ================================================================ CREATE TABLE IF NOT EXISTS user_certificates ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL COMMENT '用户ID', template_id INT NOT NULL COMMENT '模板ID', certificate_no VARCHAR(50) UNIQUE NOT NULL COMMENT '证书编号 KPL-年份-序号', title VARCHAR(200) NOT NULL COMMENT '证书标题', description TEXT COMMENT '证书描述/成就说明', issued_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '颁发时间', valid_until DATETIME COMMENT '有效期至(NULL表示永久)', -- 关联信息 course_id INT COMMENT '关联课程ID', exam_id INT COMMENT '关联考试ID', badge_id INT COMMENT '关联奖章ID', -- 成绩信息 score DECIMAL(5,2) COMMENT '考试分数', completion_rate DECIMAL(5,2) COMMENT '完成率', -- 生成的文件 pdf_url VARCHAR(500) COMMENT 'PDF文件URL', image_url VARCHAR(500) COMMENT '分享图片URL', -- 元数据 meta_data JSON COMMENT '扩展元数据', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (template_id) REFERENCES certificate_templates(id), INDEX idx_user_id (user_id), INDEX idx_certificate_no (certificate_no), INDEX idx_course_id (course_id), INDEX idx_exam_id (exam_id), INDEX idx_issued_at (issued_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户证书表'; -- ================================================================ -- 3. 插入默认证书模板 -- ================================================================ INSERT INTO certificate_templates (name, type, template_html, template_style, is_active, sort_order) VALUES -- 课程结业证书模板 ('课程结业证书', 'course', '
兹证明 {{user_name}}
已完成课程《{{course_name}}》的全部学习内容
完成率:{{completion_rate}}%
颁发日期:{{issue_date}}
兹证明 {{user_name}}
在《{{exam_name}}》考试中成绩合格
考试日期:{{exam_date}}
兹证明 {{user_name}}
{{badge_name}}
{{badge_description}}
获得日期:{{achieve_date}}