mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-11-15 10:59:22 +08:00
feat(plugin/tenant): 新增多租户插件模块 (#175)
This commit is contained in:
@@ -11,6 +11,8 @@ databaseChangeLog:
|
||||
file: db/changelog/mysql/plugin/plugin_open.sql
|
||||
- include:
|
||||
file: db/changelog/mysql/plugin/plugin_generator.sql
|
||||
- include:
|
||||
file: db/changelog/mysql/plugin/plugin_tenant.sql
|
||||
# PostgreSQL
|
||||
# - include:
|
||||
# file: db/changelog/postgresql/main_table.sql
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
-- liquibase formatted sql
|
||||
|
||||
-- changeset 小熊:1
|
||||
-- comment 初始化表结构
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_tenant
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_tenant`;
|
||||
CREATE TABLE `sys_tenant` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '租户名称',
|
||||
`tenant_sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户编号',
|
||||
`user_id` bigint DEFAULT NULL COMMENT '租户对应的用户',
|
||||
`domain` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '绑定的域名',
|
||||
`package_id` bigint NOT NULL COMMENT '租户套餐编号',
|
||||
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用;2:禁用)',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '租户过期时间',
|
||||
`create_user` bigint NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`isolation_level` tinyint unsigned NOT NULL COMMENT '隔离级别',
|
||||
`db_connect_id` bigint DEFAULT NULL COMMENT '数据连接ID',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='租户表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_tenant_package
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sys_tenant_package`;
|
||||
CREATE TABLE `sys_tenant_package` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '套餐名称',
|
||||
`menu_ids` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联的菜单ids',
|
||||
`menu_check_strictly` bit(1) DEFAULT b'0' COMMENT '菜单选择是否父子节点关联',
|
||||
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态(1:启用;2:禁用)',
|
||||
`create_user` bigint NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='租户套餐表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for sys_tenant_db_connect
|
||||
-- ----------------------------
|
||||
CREATE TABLE `sys_tenant_db_connect` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`connect_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '连接名称',
|
||||
`type` tinyint(1) NOT NULL COMMENT '连接类型',
|
||||
`host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '连接主机地址',
|
||||
`port` smallint NOT NULL COMMENT '连接端口',
|
||||
`username` varchar(128) NOT NULL COMMENT '连接用户名',
|
||||
`password` varchar(128) NOT NULL COMMENT '连接密码',
|
||||
`create_user` bigint NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='租户数据库连接表';
|
||||
|
||||
|
||||
-- changeset 小熊:2
|
||||
-- comment 添加租户列和索引
|
||||
ALTER TABLE sys_app ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_app_tenant_id ON sys_app(tenant_id);
|
||||
ALTER TABLE sys_dept ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_dept_tenant_id ON sys_dept(tenant_id);
|
||||
ALTER TABLE sys_file ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_file_tenant_id ON sys_file(tenant_id);
|
||||
ALTER TABLE sys_log ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_log_tenant_id ON sys_log(tenant_id);
|
||||
ALTER TABLE sys_menu ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_menu_tenant_id ON sys_menu(tenant_id);
|
||||
ALTER TABLE sys_message ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_message_tenant_id ON sys_message(tenant_id);
|
||||
ALTER TABLE sys_message_log ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_message_log_tenant_id ON sys_message_log(tenant_id);
|
||||
ALTER TABLE sys_notice ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_notice_tenant_id ON sys_notice(tenant_id);
|
||||
ALTER TABLE sys_notice_log ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_notice_log_tenant_id ON sys_notice_log(tenant_id);
|
||||
ALTER TABLE sys_role ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_role_tenant_id ON sys_role(tenant_id);
|
||||
ALTER TABLE sys_user ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_user_tenant_id ON sys_user(tenant_id);
|
||||
ALTER TABLE sys_role_dept ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_role_dept_tenant_id ON sys_role_dept(tenant_id);
|
||||
ALTER TABLE sys_role_menu ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_role_menu_tenant_id ON sys_role_menu(tenant_id);
|
||||
ALTER TABLE sys_user_password_history ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_user_password_history_tenant_id ON sys_user_password_history(tenant_id);
|
||||
ALTER TABLE sys_user_role ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_user_role_tenant_id ON sys_user_role(tenant_id);
|
||||
ALTER TABLE sys_user_social ADD COLUMN tenant_id BIGINT NOT NULL DEFAULT 0;
|
||||
CREATE INDEX idx_sys_user_social_tenant_id ON sys_user_social(tenant_id);
|
||||
|
||||
-- changeset 小熊:3
|
||||
-- comment 唯一索引变更
|
||||
ALTER TABLE sys_app DROP INDEX `uk_access_key`;
|
||||
ALTER TABLE sys_app ADD UNIQUE INDEX `uk_access_key` (`access_key`, `tenant_id`);
|
||||
ALTER TABLE sys_dept DROP INDEX `uk_name_parent_id`;
|
||||
ALTER TABLE sys_dept ADD UNIQUE INDEX `uk_name_parent_id` (`name`, `parent_id`, `tenant_id`);
|
||||
ALTER TABLE sys_menu DROP INDEX `uk_title_parent_id`;
|
||||
ALTER TABLE sys_menu ADD UNIQUE INDEX `uk_title_parent_id` (`title`, `parent_id`, `tenant_id`);
|
||||
ALTER TABLE sys_role DROP INDEX `uk_name`;
|
||||
ALTER TABLE sys_role ADD UNIQUE INDEX `uk_name` (`name`, `tenant_id`);
|
||||
ALTER TABLE sys_role DROP INDEX `uk_code`;
|
||||
ALTER TABLE sys_role ADD UNIQUE INDEX `uk_code` (`code`, `tenant_id`);
|
||||
ALTER TABLE sys_user DROP INDEX `uk_username`;
|
||||
ALTER TABLE sys_user ADD UNIQUE INDEX `uk_username` (`username`, `tenant_id`);
|
||||
ALTER TABLE sys_user DROP INDEX `uk_email`;
|
||||
ALTER TABLE sys_user ADD UNIQUE INDEX `uk_email` (`email`, `tenant_id`);
|
||||
ALTER TABLE sys_user DROP INDEX `uk_phone`;
|
||||
ALTER TABLE sys_user ADD UNIQUE INDEX `uk_phone` (`phone`, `tenant_id`);
|
||||
|
||||
-- changeset 小熊:4
|
||||
-- comment 菜单录入
|
||||
INSERT INTO `sys_menu`
|
||||
(`id`, `title`, `parent_id`, `type`, `path`, `name`, `component`, `redirect`, `icon`, `is_external`, `is_cache`, `is_hidden`, `permission`, `sort`, `status`, `create_user`, `create_time`, `update_user`, `update_time`, `tenant_id`)
|
||||
VALUES
|
||||
(10010, '租户管理', 0, 1, '/tenant', 'Tenant', 'Layout', '/tenant/user', 'user-group', b'0', b'0', b'0', NULL, 6, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10015, '租户套餐', 10010, 2, '/tenant/package', 'TenantPackage', 'tenant/package/index', NULL, 'menu', b'0', b'0', b'0', NULL, 2, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10016, '列表', 10015, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:list', 1, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10017, '详情', 10015, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:detail', 2, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10018, '新增', 10015, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:add', 3, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10019, '修改', 10015, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:update', 4, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10020, '删除', 10015, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:package:delete', 5, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10022, '租户管理', 10010, 2, '/tenant/user', 'TenantUser', 'tenant/user/index', NULL, 'user-group', b'0', b'0', b'0', NULL, 1, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10023, '列表', 10022, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:user:list', 1, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10024, '详情', 10022, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:user:detail', 2, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10025, '新增', 10022, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:user:add', 3, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10026, '修改', 10022, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:user:update', 4, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10027, '删除', 10022, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'tenant:user:delete', 5, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10028, '账号更新', 10022, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:user:editLoginUserInfo', 6, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10040, '数据连接', 10010, 2, '/tenant/dbConnect', 'TenantDbConnect', 'tenant/tenantDbConnect/index', NULL, 'storage', b'0', b'0', b'0', NULL, 3, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10041, '列表', 10040, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:dbConnect:list', 1, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10042, '详情', 10040, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:dbConnect:detail', 2, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10043, '新增', 10040, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:dbConnect:add', 3, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10044, '修改', 10040, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:dbConnect:update', 4, 1, 1, NOW(), NULL, NULL, 0),
|
||||
(10045, '删除', 10040, 3, NULL, NULL, NULL, NULL, NULL, b'0', b'0', b'0', 'tenant:dbConnect:delete', 5, 1, 1, NOW(), NULL, NULL, 0);
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
-- 数据源级别租户表结构
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_menu` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`title` varchar(30) NOT NULL COMMENT '标题',
|
||||
`parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级菜单ID',
|
||||
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型(1:目录;2:菜单;3:按钮)',
|
||||
`path` varchar(255) DEFAULT NULL COMMENT '路由地址',
|
||||
`name` varchar(50) DEFAULT NULL COMMENT '组件名称',
|
||||
`component` varchar(255) DEFAULT NULL COMMENT '组件路径',
|
||||
`redirect` varchar(255) DEFAULT NULL COMMENT '重定向地址',
|
||||
`icon` varchar(50) DEFAULT NULL COMMENT '图标',
|
||||
`is_external` bit(1) DEFAULT b'0' COMMENT '是否外链',
|
||||
`is_cache` bit(1) DEFAULT b'0' COMMENT '是否缓存',
|
||||
`is_hidden` bit(1) DEFAULT b'0' COMMENT '是否隐藏',
|
||||
`permission` varchar(100) DEFAULT NULL COMMENT '权限标识',
|
||||
`sort` int NOT NULL DEFAULT 999 COMMENT '排序',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_title_parent_id`(`title`, `parent_id`),
|
||||
INDEX `idx_parent_id`(`parent_id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_dept` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(30) NOT NULL COMMENT '名称',
|
||||
`parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级部门ID',
|
||||
`ancestors` varchar(512) NOT NULL DEFAULT '' COMMENT '祖级列表',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`sort` int NOT NULL DEFAULT 999 COMMENT '排序',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
|
||||
`is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_name_parent_id`(`name`, `parent_id`),
|
||||
INDEX `idx_parent_id`(`parent_id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_role` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(30) NOT NULL COMMENT '名称',
|
||||
`code` varchar(30) NOT NULL COMMENT '编码',
|
||||
`data_scope` tinyint(1) NOT NULL DEFAULT 4 COMMENT '数据权限(1:全部数据权限;2:本部门及以下数据权限;3:本部门数据权限;4:仅本人数据权限;5:自定义数据权限)',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`sort` int NOT NULL DEFAULT 999 COMMENT '排序',
|
||||
`is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
|
||||
`menu_check_strictly` bit(1) DEFAULT b'0' COMMENT '菜单选择是否父子节点关联',
|
||||
`dept_check_strictly` bit(1) DEFAULT b'0' COMMENT '部门选择是否父子节点关联',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_name`(`name`),
|
||||
UNIQUE INDEX `uk_code`(`code`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_user` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`username` varchar(64) NOT NULL COMMENT '用户名',
|
||||
`nickname` varchar(30) NOT NULL COMMENT '昵称',
|
||||
`password` varchar(255) DEFAULT NULL COMMENT '密码',
|
||||
`gender` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '性别(0:未知;1:男;2:女)',
|
||||
`email` varchar(255) DEFAULT NULL COMMENT '邮箱',
|
||||
`phone` varchar(255) DEFAULT NULL COMMENT '手机号码',
|
||||
`avatar` longtext DEFAULT NULL COMMENT '头像',
|
||||
`description` varchar(200) DEFAULT NULL COMMENT '描述',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
|
||||
`is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
|
||||
`pwd_reset_time` datetime DEFAULT NULL COMMENT '最后一次修改密码时间',
|
||||
`dept_id` bigint(20) NOT NULL COMMENT '部门ID',
|
||||
`create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_username`(`username`),
|
||||
UNIQUE INDEX `uk_email`(`email`),
|
||||
UNIQUE INDEX `uk_phone`(`phone`),
|
||||
INDEX `idx_dept_id`(`dept_id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_user_password_history` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`password` varchar(255) NOT NULL COMMENT '密码',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_user_id`(`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户历史密码表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_user_social` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`source` varchar(255) NOT NULL COMMENT '来源',
|
||||
`open_id` varchar(255) NOT NULL COMMENT '开放ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`meta_json` text DEFAULT NULL COMMENT '附加信息',
|
||||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_source_open_id`(`source`, `open_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户社会化关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_user_role` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`role_id` bigint(20) NOT NULL COMMENT '角色ID',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_user_id_role_id`(`user_id`, `role_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户和角色关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_role_menu` (
|
||||
`role_id` bigint(20) NOT NULL COMMENT '角色ID',
|
||||
`menu_id` bigint(20) NOT NULL COMMENT '菜单ID',
|
||||
PRIMARY KEY (`role_id`, `menu_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和菜单关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_role_dept` (
|
||||
`role_id` bigint(20) NOT NULL COMMENT '角色ID',
|
||||
`dept_id` bigint(20) NOT NULL COMMENT '部门ID',
|
||||
PRIMARY KEY (`role_id`, `dept_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和部门关联表';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_log` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`trace_id` varchar(255) DEFAULT NULL COMMENT '链路ID',
|
||||
`description` varchar(255) NOT NULL COMMENT '日志描述',
|
||||
`module` varchar(100) NOT NULL COMMENT '所属模块',
|
||||
`request_url` varchar(512) NOT NULL COMMENT '请求URL',
|
||||
`request_method` varchar(10) NOT NULL COMMENT '请求方式',
|
||||
`request_headers` text DEFAULT NULL COMMENT '请求头',
|
||||
`request_body` text DEFAULT NULL COMMENT '请求体',
|
||||
`status_code` int NOT NULL COMMENT '状态码',
|
||||
`response_headers` text DEFAULT NULL COMMENT '响应头',
|
||||
`response_body` mediumtext DEFAULT NULL COMMENT '响应体',
|
||||
`time_taken` bigint(20) NOT NULL COMMENT '耗时(ms)',
|
||||
`ip` varchar(100) DEFAULT NULL COMMENT 'IP',
|
||||
`address` varchar(255) DEFAULT NULL COMMENT 'IP归属地',
|
||||
`browser` varchar(100) DEFAULT NULL COMMENT '浏览器',
|
||||
`os` varchar(100) DEFAULT NULL COMMENT '操作系统',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:成功;2:失败)',
|
||||
`error_msg` text DEFAULT NULL COMMENT '错误信息',
|
||||
`create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_module`(`module`),
|
||||
INDEX `idx_ip`(`ip`),
|
||||
INDEX `idx_address`(`address`),
|
||||
INDEX `idx_create_time`(`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_message` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`title` varchar(50) NOT NULL COMMENT '标题',
|
||||
`content` text DEFAULT NULL COMMENT '内容',
|
||||
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型(1:系统消息;2:安全消息)',
|
||||
`path` varchar(255) DEFAULT NULL COMMENT '跳转路径',
|
||||
`scope` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '通知范围(1:所有人;2:指定用户)',
|
||||
`users` json DEFAULT NULL COMMENT '通知用户',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_message_log` (
|
||||
`message_id` bigint(20) NOT NULL COMMENT '消息ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`read_time` datetime DEFAULT NULL COMMENT '读取时间',
|
||||
PRIMARY KEY (`message_id`, `user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息日志表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_notice` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`title` varchar(150) NOT NULL COMMENT '标题',
|
||||
`content` mediumtext NOT NULL COMMENT '内容',
|
||||
`type` varchar(30) NOT NULL COMMENT '分类',
|
||||
`notice_scope` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '通知范围(1:所有人;2:指定用户)',
|
||||
`notice_users` json DEFAULT NULL COMMENT '通知用户',
|
||||
`notice_methods` json DEFAULT NULL COMMENT '通知方式(1:系统消息;2:登录弹窗)',
|
||||
`is_timing` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否定时',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
||||
`is_top` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否置顶',
|
||||
`status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:草稿;2:待发布;3:已发布)',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_notice_log` (
|
||||
`notice_id` bigint(20) NOT NULL COMMENT '公告ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`read_time` datetime DEFAULT NULL COMMENT '读取时间',
|
||||
PRIMARY KEY (`notice_id`, `user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告日志表';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_file` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`name` varchar(255) NOT NULL COMMENT '名称',
|
||||
`original_name` varchar(255) NOT NULL COMMENT '原始名称',
|
||||
`size` bigint(20) DEFAULT NULL COMMENT '大小(字节)',
|
||||
`parent_path` varchar(512) NOT NULL DEFAULT '/' COMMENT '上级目录',
|
||||
`path` varchar(512) NOT NULL COMMENT '路径',
|
||||
`extension` varchar(32) DEFAULT NULL COMMENT '扩展名',
|
||||
`content_type` varchar(255) DEFAULT NULL COMMENT '内容类型',
|
||||
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型(0: 目录;1:其他;2:图片;3:文档;4:视频;5:音频)',
|
||||
`sha256` varchar(256) DEFAULT NULL COMMENT 'SHA256值',
|
||||
`metadata` text DEFAULT NULL COMMENT '元数据',
|
||||
`thumbnail_name` varchar(255) DEFAULT NULL COMMENT '缩略图名称',
|
||||
`thumbnail_size` bigint(20) DEFAULT NULL COMMENT '缩略图大小(字节)',
|
||||
`thumbnail_metadata` text DEFAULT NULL COMMENT '缩略图元数据',
|
||||
`storage_id` bigint(20) NOT NULL COMMENT '存储ID',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_type`(`type`),
|
||||
INDEX `idx_sha256`(`sha256`),
|
||||
INDEX `idx_storage_id`(`storage_id`),
|
||||
INDEX `idx_create_user`(`create_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件表';
|
||||
Reference in New Issue
Block a user