154 lines
5.0 KiB
SQL
154 lines
5.0 KiB
SQL
-- 创建用户表
|
|
CREATE TABLE users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
email VARCHAR(100) UNIQUE,
|
|
phone VARCHAR(20) UNIQUE,
|
|
nickname VARCHAR(50),
|
|
avatar VARCHAR(255),
|
|
password VARCHAR(255),
|
|
gender INTEGER DEFAULT 0,
|
|
birthday DATE,
|
|
region VARCHAR(50),
|
|
bio VARCHAR(500),
|
|
status INTEGER DEFAULT 0,
|
|
last_login_time DATETIME,
|
|
last_login_ip VARCHAR(50),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at DATETIME
|
|
);
|
|
|
|
-- 创建角色表
|
|
CREATE TABLE roles (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name VARCHAR(50) UNIQUE NOT NULL,
|
|
code VARCHAR(50) UNIQUE NOT NULL,
|
|
description VARCHAR(200),
|
|
parent_id INTEGER,
|
|
level INTEGER DEFAULT 1,
|
|
is_system INTEGER DEFAULT 0,
|
|
is_default INTEGER DEFAULT 0,
|
|
status INTEGER DEFAULT 1,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (parent_id) REFERENCES roles(id)
|
|
);
|
|
|
|
-- 创建权限表
|
|
CREATE TABLE permissions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name VARCHAR(50) NOT NULL,
|
|
code VARCHAR(100) UNIQUE NOT NULL,
|
|
type INTEGER NOT NULL,
|
|
description VARCHAR(200),
|
|
parent_id INTEGER,
|
|
level INTEGER DEFAULT 1,
|
|
path VARCHAR(200),
|
|
method VARCHAR(10),
|
|
sort INTEGER DEFAULT 0,
|
|
icon VARCHAR(50),
|
|
status INTEGER DEFAULT 1,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (parent_id) REFERENCES permissions(id)
|
|
);
|
|
|
|
-- 创建用户-角色关联表
|
|
CREATE TABLE user_roles (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
role_id INTEGER NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id),
|
|
FOREIGN KEY (role_id) REFERENCES roles(id),
|
|
UNIQUE(user_id, role_id)
|
|
);
|
|
|
|
-- 创建角色-权限关联表
|
|
CREATE TABLE role_permissions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
role_id INTEGER NOT NULL,
|
|
permission_id INTEGER NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (role_id) REFERENCES roles(id),
|
|
FOREIGN KEY (permission_id) REFERENCES permissions(id),
|
|
UNIQUE(role_id, permission_id)
|
|
);
|
|
|
|
-- 创建设备表
|
|
CREATE TABLE devices (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
device_id VARCHAR(100) UNIQUE NOT NULL,
|
|
device_name VARCHAR(100),
|
|
device_type INTEGER DEFAULT 0,
|
|
device_os VARCHAR(50),
|
|
device_browser VARCHAR(50),
|
|
ip VARCHAR(50),
|
|
location VARCHAR(100),
|
|
status INTEGER DEFAULT 1,
|
|
last_active_time DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
-- 创建登录日志表
|
|
CREATE TABLE login_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER,
|
|
login_type INTEGER NOT NULL,
|
|
device_id VARCHAR(100),
|
|
ip VARCHAR(50),
|
|
location VARCHAR(100),
|
|
status INTEGER NOT NULL,
|
|
fail_reason VARCHAR(255),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
-- 创建操作日志表
|
|
CREATE TABLE operation_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER,
|
|
operation_type VARCHAR(50),
|
|
operation_name VARCHAR(100),
|
|
request_method VARCHAR(10),
|
|
request_path VARCHAR(200),
|
|
request_params TEXT,
|
|
response_status INTEGER,
|
|
ip VARCHAR(50),
|
|
user_agent VARCHAR(500),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
-- 创建索引
|
|
CREATE INDEX idx_users_status ON users(status);
|
|
CREATE INDEX idx_users_created_at ON users(created_at);
|
|
CREATE INDEX idx_roles_parent_id ON roles(parent_id);
|
|
CREATE INDEX idx_roles_is_default ON roles(is_default);
|
|
CREATE INDEX idx_permissions_parent_id ON permissions(parent_id);
|
|
CREATE INDEX idx_user_roles_user_id ON user_roles(user_id);
|
|
CREATE INDEX idx_user_roles_role_id ON user_roles(role_id);
|
|
CREATE INDEX idx_role_permissions_role_id ON role_permissions(role_id);
|
|
CREATE INDEX idx_role_permissions_permission_id ON role_permissions(permission_id);
|
|
CREATE INDEX idx_devices_user_id ON devices(user_id);
|
|
CREATE INDEX idx_devices_device_id ON devices(device_id);
|
|
CREATE INDEX idx_login_logs_user_id ON login_logs(user_id);
|
|
CREATE INDEX idx_login_logs_created_at ON login_logs(created_at);
|
|
CREATE INDEX idx_operation_logs_user_id ON operation_logs(user_id);
|
|
CREATE INDEX idx_operation_logs_created_at ON operation_logs(created_at);
|
|
|
|
-- 插入默认角色
|
|
INSERT INTO roles (name, code, description, is_system, is_default) VALUES
|
|
('管理员', 'admin', '系统管理员角色,拥有所有权限', 1, 0),
|
|
('普通用户', 'user', '普通用户角色,基本权限', 1, 1);
|
|
|
|
-- 默认管理员账号不再通过迁移脚本写入
|
|
|
|
-- 分配管理员角色
|
|
-- 默认管理员不再随迁移直接写入。
|
|
-- 首次部署请使用显式初始化流程创建管理员账户。
|