use school_news; -- 部门表 DROP TABLE IF EXISTS `tb_sys_dept`; CREATE TABLE `tb_sys_dept` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `dept_id` VARCHAR(50) NOT NULL COMMENT '部门ID', `name` VARCHAR(100) NOT NULL COMMENT '部门名称', `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父部门ID', `description` VARCHAR(255) DEFAULT NULL COMMENT '部门描述', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_dept_id` (`dept_id`), KEY `idx_dept_parent` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 角色表 DROP TABLE IF EXISTS `tb_sys_role`; CREATE TABLE `tb_sys_role` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID', `name` VARCHAR(100) NOT NULL COMMENT '角色名称', `description` VARCHAR(255) DEFAULT NULL COMMENT '角色描述', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_role_id` (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 部门-角色关联 DROP TABLE IF EXISTS `tb_sys_dept_role`; CREATE TABLE `tb_sys_dept_role` ( `id` VARCHAR(50) NOT NULL COMMENT '部门角色ID', `dept_id` VARCHAR(50) NOT NULL COMMENT '部门ID', `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_dept_role` (`dept_id`, `role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 用户-角色关联 DROP TABLE IF EXISTS `tb_sys_user_dept_role`; CREATE TABLE `tb_sys_user_dept_role` ( `id` VARCHAR(50) NOT NULL COMMENT '用户角色ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `dept_id` VARCHAR(50) NOT NULL COMMENT '部门ID', `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_dept_role` (`user_id`, `dept_id`, `role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 模块表 DROP TABLE IF EXISTS `tb_sys_module`; CREATE TABLE `tb_sys_module` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `module_id` VARCHAR(50) NOT NULL COMMENT '模块ID', `name` VARCHAR(100) NOT NULL COMMENT '模块名称', `code` VARCHAR(100) NOT NULL COMMENT '模块代码', `description` VARCHAR(255) DEFAULT NULL COMMENT '模块描述', `icon` VARCHAR(100) DEFAULT NULL COMMENT '模块图标', `order_num` INT(4) DEFAULT 0 COMMENT '模块排序号', `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '模块状态(0禁用 1启用)', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_module_id` (`module_id`), UNIQUE KEY `uk_module_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 权限表 DROP TABLE IF EXISTS `tb_sys_permission`; CREATE TABLE `tb_sys_permission` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID', `name` VARCHAR(100) NOT NULL COMMENT '权限名称', `code` VARCHAR(100) NOT NULL COMMENT '权限代码', `description` VARCHAR(255) DEFAULT NULL COMMENT '权限描述', `module_id` VARCHAR(50) DEFAULT NULL COMMENT '所属模块ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_permission_id` (`permission_id`), KEY `idx_permission_module` (`module_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 角色-权限关联 DROP TABLE IF EXISTS `tb_sys_role_permission`; CREATE TABLE `tb_sys_role_permission` ( `id` VARCHAR(50) NOT NULL COMMENT '角色权限ID', `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID', `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_role_permission` (`role_id`, `permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- 菜单表 DROP TABLE IF EXISTS `tb_sys_menu`; CREATE TABLE `tb_sys_menu` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `name` VARCHAR(100) NOT NULL COMMENT '菜单名称', `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父菜单ID', `url` VARCHAR(255) DEFAULT NULL COMMENT '菜单URL', `component` VARCHAR(255) DEFAULT NULL COMMENT '菜单组件', `icon` VARCHAR(100) DEFAULT NULL COMMENT '菜单图标', `order_num` INT(4) DEFAULT 0 COMMENT '菜单排序号', `type` INT(4) DEFAULT 0 COMMENT '菜单类型(0目录 1菜单 2按钮)', `layout` VARCHAR(100) DEFAULT 'BasicLayout' COMMENT '布局组件路径名称(如:BasicLayout、BlankLayout、NavigationLayout、PageLayout)', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_menu_id` (`menu_id`), KEY `idx_menu_parent` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; DROP TABLE IF EXISTS `tb_sys_menu_permission`; CREATE TABLE `tb_sys_menu_permission` ( `id` VARCHAR(50) NOT NULL COMMENT '菜单权限ID', `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_menu_permission` (`menu_id`, `permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;