78 lines
3.8 KiB
SQL
78 lines
3.8 KiB
SQL
-- ============================================
|
|
-- 权限体系增量建表 SQL
|
|
-- 适用于已有 demo 数据库,仅补建权限相关表
|
|
-- ============================================
|
|
|
|
USE `demo`;
|
|
|
|
SET @need_uk_username = (
|
|
SELECT CASE WHEN COUNT(1) = 0 THEN 1 ELSE 0 END
|
|
FROM information_schema.statistics
|
|
WHERE table_schema = DATABASE()
|
|
AND table_name = 'sys_user'
|
|
AND index_name = 'uk_username'
|
|
);
|
|
SET @sql_uk_username = IF(
|
|
@need_uk_username = 1,
|
|
'ALTER TABLE `sys_user` ADD UNIQUE KEY `uk_username` (`username`)',
|
|
'SELECT 1'
|
|
);
|
|
PREPARE stmt_uk_username FROM @sql_uk_username;
|
|
EXECUTE stmt_uk_username;
|
|
DEALLOCATE PREPARE stmt_uk_username;
|
|
|
|
CREATE TABLE IF NOT EXISTS `sys_role` (
|
|
`id` BIGINT NOT NULL COMMENT '主键ID',
|
|
`role_code` VARCHAR(64) NOT NULL COMMENT '角色编码',
|
|
`role_name` VARCHAR(128) NOT NULL COMMENT '角色名称',
|
|
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用(0否 1是)',
|
|
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
|
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
|
`deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除(0正常 1删除)',
|
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_role_code` (`role_code`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `sys_menu` (
|
|
`id` BIGINT NOT NULL COMMENT '主键ID',
|
|
`parent_id` BIGINT NOT NULL DEFAULT 0 COMMENT '父级ID',
|
|
`menu_type` VARCHAR(16) NOT NULL COMMENT '类型(MENU/BUTTON)',
|
|
`menu_name` VARCHAR(128) NOT NULL COMMENT '菜单名称',
|
|
`path` VARCHAR(255) DEFAULT NULL COMMENT '路由路径',
|
|
`component` VARCHAR(255) DEFAULT NULL COMMENT '组件路径',
|
|
`permission` VARCHAR(128) DEFAULT NULL COMMENT '权限标识',
|
|
`icon` VARCHAR(64) DEFAULT NULL COMMENT '图标',
|
|
`visible` TINYINT NOT NULL DEFAULT 1 COMMENT '是否显示(0否 1是)',
|
|
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用(0否 1是)',
|
|
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序',
|
|
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
|
`deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除(0正常 1删除)',
|
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `sys_user_role` (
|
|
`id` BIGINT NOT NULL COMMENT '主键ID',
|
|
`user_id` BIGINT NOT NULL COMMENT '用户ID',
|
|
`role_id` BIGINT NOT NULL COMMENT '角色ID',
|
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `sys_role_menu` (
|
|
`id` BIGINT NOT NULL COMMENT '主键ID',
|
|
`role_id` BIGINT NOT NULL COMMENT '角色ID',
|
|
`menu_id` BIGINT NOT NULL COMMENT '菜单ID',
|
|
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
|
|
|
|
-- 说明:
|
|
-- 1. 执行完本文件后重启应用
|
|
-- 2. 应用启动时会自动初始化 ADMIN 角色、基础菜单权限,并尝试将 admin 用户绑定为管理员
|