240 lines
8.7 KiB
SQL
240 lines
8.7 KiB
SQL
-- Novalon管理系统完整数据库初始化脚本
|
|
-- 数据库: PostgreSQL
|
|
|
|
-- 用户表
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
email VARCHAR(100),
|
|
phone VARCHAR(20),
|
|
role_id BIGINT,
|
|
status INTEGER DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 角色表
|
|
CREATE TABLE IF NOT EXISTS roles (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
role_name VARCHAR(100) NOT NULL,
|
|
role_key VARCHAR(100) NOT NULL UNIQUE,
|
|
role_sort INTEGER DEFAULT 0,
|
|
status INTEGER DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 菜单表
|
|
CREATE TABLE IF NOT EXISTS menus (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
menu_name VARCHAR(50) NOT NULL,
|
|
parent_id BIGINT DEFAULT 0,
|
|
order_num INTEGER DEFAULT 0,
|
|
menu_type VARCHAR(1) DEFAULT 'C',
|
|
perms VARCHAR(100),
|
|
component VARCHAR(200),
|
|
status INTEGER DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 字典类型表
|
|
CREATE TABLE IF NOT EXISTS sys_dict_type (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
dict_name VARCHAR(100) NOT NULL,
|
|
dict_type VARCHAR(100) NOT NULL UNIQUE,
|
|
status VARCHAR(1) DEFAULT '0',
|
|
remark VARCHAR(500),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 字典数据表
|
|
CREATE TABLE IF NOT EXISTS sys_dict_data (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
dict_sort INTEGER DEFAULT 0,
|
|
dict_label VARCHAR(100) NOT NULL,
|
|
dict_value VARCHAR(100) NOT NULL,
|
|
dict_type VARCHAR(100) NOT NULL,
|
|
css_class VARCHAR(100),
|
|
list_class VARCHAR(100),
|
|
is_default VARCHAR(1) DEFAULT 'N',
|
|
status VARCHAR(1) DEFAULT '0',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 系统配置表
|
|
CREATE TABLE IF NOT EXISTS sys_config (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
config_name VARCHAR(100) NOT NULL,
|
|
config_key VARCHAR(100) NOT NULL UNIQUE,
|
|
config_value VARCHAR(500) NOT NULL,
|
|
config_type VARCHAR(1) DEFAULT 'N',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 登录日志表
|
|
CREATE TABLE IF NOT EXISTS sys_login_log (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username VARCHAR(50),
|
|
ip VARCHAR(50),
|
|
location VARCHAR(255),
|
|
browser VARCHAR(50),
|
|
os VARCHAR(50),
|
|
status VARCHAR(1),
|
|
message VARCHAR(255),
|
|
login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 异常日志表
|
|
CREATE TABLE IF NOT EXISTS sys_exception_log (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username VARCHAR(50),
|
|
title VARCHAR(100),
|
|
exception_name VARCHAR(100),
|
|
method_name VARCHAR(100),
|
|
method_params TEXT,
|
|
exception_msg TEXT,
|
|
exception_stack TEXT,
|
|
ip VARCHAR(50),
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 操作日志表
|
|
CREATE TABLE IF NOT EXISTS sys_operation_log (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username VARCHAR(50),
|
|
operation VARCHAR(50),
|
|
method VARCHAR(200),
|
|
params TEXT,
|
|
status VARCHAR(1),
|
|
duration INTEGER,
|
|
ip VARCHAR(50),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 系统公告表
|
|
CREATE TABLE IF NOT EXISTS sys_notice (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
notice_title VARCHAR(100) NOT NULL,
|
|
notice_type VARCHAR(1) DEFAULT '1',
|
|
notice_content TEXT,
|
|
status VARCHAR(1) DEFAULT '0',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 文件管理表
|
|
CREATE TABLE IF NOT EXISTS sys_file (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
file_name VARCHAR(255) NOT NULL,
|
|
file_path VARCHAR(500) NOT NULL,
|
|
file_size VARCHAR(50),
|
|
file_type VARCHAR(50),
|
|
storage_type VARCHAR(20) DEFAULT 'local',
|
|
create_by VARCHAR(50),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
-- 用户消息表(消息推送用)
|
|
CREATE TABLE IF NOT EXISTS sys_user_message (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id BIGINT NOT NULL,
|
|
title VARCHAR(100),
|
|
content TEXT,
|
|
message_type VARCHAR(1) DEFAULT '1',
|
|
is_read VARCHAR(1) DEFAULT '0',
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 创建索引
|
|
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
|
|
CREATE INDEX IF NOT EXISTS idx_users_role_id ON users(role_id);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_role_key ON roles(role_key);
|
|
CREATE INDEX IF NOT EXISTS idx_menus_parent_id ON menus(parent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_type_dict_type ON sys_dict_type(dict_type);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_dict_type ON sys_dict_data(dict_type);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_config_config_key ON sys_config(config_key);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_login_log_username ON sys_login_log(username);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_login_log_login_time ON sys_login_log(login_time);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_exception_log_create_time ON sys_exception_log(create_time);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_operation_log_username ON sys_operation_log(username);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_operation_log_created_at ON sys_operation_log(created_at);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_notice_status ON sys_notice(status);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_file_create_by ON sys_file(create_by);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_user_message_user_id ON sys_user_message(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_user_message_is_read ON sys_user_message(is_read);
|
|
|
|
-- 初始化默认管理员用户
|
|
INSERT INTO users (username, password, email, role_id, status) VALUES
|
|
('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z2EHCDHhK6VbJyS0qE', 'admin@novalon.com', 1, 1)
|
|
ON CONFLICT (username) DO NOTHING;
|
|
|
|
-- 初始化默认角色
|
|
INSERT INTO roles (role_name, role_key, role_sort, status) VALUES
|
|
('超级管理员', 'admin', 1, 1),
|
|
('普通用户', 'user', 2, 1)
|
|
ON CONFLICT (role_key) DO NOTHING;
|
|
|
|
-- 初始化默认菜单
|
|
INSERT INTO menus (menu_name, parent_id, order_num, menu_type, perms, component, status) VALUES
|
|
('系统管理', 0, 1, 'M', '', '', 1),
|
|
('用户管理', 1, 1, 'C', 'system:user:list', 'system/UserManagement', 1),
|
|
('角色管理', 1, 2, 'C', 'system:role:list', 'system/RoleManagement', 1),
|
|
('菜单管理', 1, 3, 'C', 'system:menu:list', 'system/MenuManagement', 1),
|
|
('配置管理', 0, 2, 'M', '', '', 1),
|
|
('系统配置', 5, 1, 'C', 'system:config:list', 'config/ConfigManagement', 1),
|
|
('字典管理', 5, 2, 'C', 'system:dict:list', 'config/DictManagement', 1),
|
|
('文件管理', 0, 3, 'M', '', '', 1),
|
|
('文件列表', 8, 1, 'C', 'system:file:list', 'file/FileManagement', 1),
|
|
('通知管理', 0, 4, 'M', '', '', 1),
|
|
('通知公告', 10, 1, 'C', 'system:notice:list', 'notify/NoticeManagement', 1),
|
|
('审计管理', 0, 5, 'M', '', '', 1),
|
|
('登录日志', 12, 1, 'C', 'system:log:login', 'audit/LoginLog', 1),
|
|
('操作日志', 12, 2, 'C', 'system:log:operation', 'audit/OperationLog', 1)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- 初始化默认系统配置数据
|
|
INSERT INTO sys_config (config_name, config_key, config_value, config_type) VALUES
|
|
('系统名称', 'sys.system.name', 'Novalon管理系统', 'Y'),
|
|
('系统版本', 'sys.system.version', '1.0.0', 'Y'),
|
|
('文件上传最大大小', 'sys.file.maxSize', '10485760', 'Y'),
|
|
('文件上传允许类型', 'sys.file.allowedTypes', 'jpg,jpeg,png,pdf,doc,docx,xls,xlsx', 'Y'),
|
|
('会话超时时间(分钟)', 'sys.session.timeout', '30', 'Y'),
|
|
('密码最小长度', 'sys.password.minLength', '6', 'Y')
|
|
ON CONFLICT (config_key) DO NOTHING;
|
|
|
|
-- 初始化默认字典类型
|
|
INSERT INTO sys_dict_type (dict_name, dict_type, status, remark) VALUES
|
|
('用户性别', 'sys_user_sex', '0', '用户性别列表'),
|
|
('菜单状态', 'sys_show_hide', '0', '菜单显示状态'),
|
|
('系统开关', 'sys_normal_disable', '0', '系统开关状态'),
|
|
('任务状态', 'sys_job_status', '0', '定时任务状态'),
|
|
('任务分组', 'sys_job_group', '0', '定时任务分组'),
|
|
('系统是否', 'sys_yes_no', '0', '系统是否列表')
|
|
ON CONFLICT (dict_type) DO NOTHING;
|
|
|
|
-- 初始化默认字典数据
|
|
INSERT INTO sys_dict_data (dict_label, dict_value, dict_type, dict_sort, is_default, status) VALUES
|
|
('男', '0', 'sys_user_sex', 1, 'Y', '0'),
|
|
('女', '1', 'sys_user_sex', 2, 'N', '0'),
|
|
('未知', '2', 'sys_user_sex', 3, 'N', '0'),
|
|
('显示', '0', 'sys_show_hide', 1, 'Y', '0'),
|
|
('隐藏', '1', 'sys_show_hide', 2, 'N', '0'),
|
|
('正常', '0', 'sys_normal_disable', 1, 'Y', '0'),
|
|
('停用', '1', 'sys_normal_disable', 2, 'N', '0'),
|
|
('是', 'Y', 'sys_yes_no', 1, 'Y', '0'),
|
|
('否', 'N', 'sys_yes_no', 2, 'N', '0')
|
|
ON CONFLICT DO NOTHING;
|