yunzer_go/server/database/create_missing_tables.sql
2025-10-27 23:13:08 +08:00

141 lines
7.0 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.

-- 只创建缺失的表,不重复创建已存在的表
-- 适用于部分表已存在的情况
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 检查并创建用户表(如果不存在)
CREATE TABLE IF NOT EXISTS yz_users (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '加密后的密码',
salt VARCHAR(100) NOT NULL COMMENT '密码盐值',
email VARCHAR(100) DEFAULT NULL COMMENT '邮箱地址',
avatar VARCHAR(500) DEFAULT NULL COMMENT '头像URL',
nickname VARCHAR(50) DEFAULT NULL COMMENT '昵称',
role VARCHAR(20) DEFAULT 'user' COMMENT '用户角色admin-管理员user-普通用户',
status TINYINT DEFAULT 1 COMMENT '用户状态0-禁用1-启用',
last_login_time DATETIME DEFAULT NULL COMMENT '最后登录时间',
last_login_ip VARCHAR(45) DEFAULT NULL COMMENT '最后登录IP',
login_count INT DEFAULT 0 COMMENT '登录次数',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
create_by VARCHAR(50) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(50) DEFAULT NULL COMMENT '更新人',
-- 索引
UNIQUE KEY uk_username (username),
INDEX idx_email (email),
INDEX idx_role (role),
INDEX idx_status (status),
INDEX idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 检查并创建菜单表(如果不存在)
CREATE TABLE IF NOT EXISTS yz_menus (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '菜单ID',
name VARCHAR(100) NOT NULL COMMENT '菜单名称',
path VARCHAR(255) NOT NULL COMMENT '菜单路径',
parent_id INT DEFAULT 0 COMMENT '父菜单ID0表示顶级菜单',
level TINYINT DEFAULT 1 COMMENT '菜单层级1-一级菜单2-二级菜单3-三级菜单',
full_path VARCHAR(500) DEFAULT NULL COMMENT '完整路径(包含所有父级路径)',
is_leaf TINYINT DEFAULT 0 COMMENT '是否叶子节点0-非叶子节点1-叶子节点',
has_children TINYINT DEFAULT 0 COMMENT '是否有子菜单0-无子菜单1-有子菜单',
children_count INT DEFAULT 0 COMMENT '子菜单数量',
icon VARCHAR(100) DEFAULT NULL COMMENT '菜单图标',
order_num INT DEFAULT 0 COMMENT '排序序号',
status TINYINT DEFAULT 1 COMMENT '状态0-禁用1-启用',
component_path VARCHAR(500) DEFAULT NULL COMMENT '组件路径',
is_external TINYINT DEFAULT 0 COMMENT '是否外部链接0-内部路由1-外部链接',
external_url VARCHAR(1000) DEFAULT NULL COMMENT '外部链接地址',
menu_type TINYINT DEFAULT 1 COMMENT '菜单类型1-普通菜单2-分组菜单3-按钮菜单',
permission VARCHAR(200) DEFAULT NULL COMMENT '权限标识',
description VARCHAR(500) DEFAULT NULL COMMENT '菜单描述',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
create_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
-- 索引
INDEX idx_parent_id (parent_id),
INDEX idx_level (level),
INDEX idx_status (status),
INDEX idx_order (order_num),
INDEX idx_menu_type (menu_type),
INDEX idx_full_path (full_path(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表(增强版)';
-- 检查并创建程序分类表(如果不存在)
CREATE TABLE IF NOT EXISTS yz_program_category (
category_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '分类ID',
category_name VARCHAR(100) NOT NULL COMMENT '分类名称',
category_desc VARCHAR(500) DEFAULT NULL COMMENT '分类描述',
parent_id INT DEFAULT 0 COMMENT '父分类ID0表示顶级分类',
sort_order INT DEFAULT 0 COMMENT '排序序号,用于展示顺序',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 索引
INDEX idx_parent_id (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='程序分类表';
-- 检查并创建程序信息表(如果不存在)
CREATE TABLE IF NOT EXISTS yz_program_info (
program_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '程序ID',
category_id INT NOT NULL COMMENT '所属分类ID',
program_name VARCHAR(200) NOT NULL COMMENT '程序名称',
program_desc TEXT COMMENT '程序描述',
jump_url VARCHAR(1000) NOT NULL COMMENT '跳转地址',
icon_url VARCHAR(1000) DEFAULT NULL COMMENT '程序图标地址',
version VARCHAR(50) DEFAULT NULL COMMENT '程序版本',
status TINYINT DEFAULT 1 COMMENT '状态0-禁用1-启用',
sort_order INT DEFAULT 0 COMMENT '排序序号,用于展示顺序',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 索引
INDEX idx_category_id (category_id),
INDEX idx_status (status),
CONSTRAINT yz_fk_program_category FOREIGN KEY (category_id) REFERENCES yz_program_category (category_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='程序信息表';
-- 检查并创建文件表(如果不存在)
CREATE TABLE IF NOT EXISTS yz_files (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '文件ID',
tenant_id VARCHAR(64) NOT NULL COMMENT '租户ID',
user_id INT NOT NULL DEFAULT 0 COMMENT '用户ID',
-- 文件基础信息
file_name VARCHAR(255) NOT NULL COMMENT '文件名称',
original_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
file_path VARCHAR(500) NOT NULL COMMENT '文件存储路径',
file_url VARCHAR(500) COMMENT '文件访问URL',
file_size BIGINT NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
file_type VARCHAR(50) NOT NULL COMMENT '文件类型',
file_ext VARCHAR(20) NOT NULL COMMENT '文件扩展名',
-- 分类信息
category VARCHAR(100) NOT NULL COMMENT '文件分类',
sub_category VARCHAR(100) COMMENT '子分类',
-- 状态信息
status TINYINT DEFAULT 1 COMMENT '状态(1:正常, 0:删除)',
is_public TINYINT DEFAULT 0 COMMENT '是否公开(1:是, 0:否)',
-- 上传信息
upload_by VARCHAR(100) NOT NULL COMMENT '上传人',
upload_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
-- 索引
INDEX idx_tenant (tenant_id),
INDEX idx_user (user_id),
INDEX idx_category (category),
INDEX idx_upload_time (upload_time),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';
SET FOREIGN_KEY_CHECKS = 1;
-- 完成创建
SELECT 'Missing tables created successfully!' as message;