-- ============================================================ -- freedom 系统初始化脚本 -- 数据库: freedom_db -- 目标: 远程 MySQL 124.221.214.237:3306 -- 说明: 需在数据库外部执行 `CREATE DATABASE` 权限 -- ============================================================ CREATE DATABASE IF NOT EXISTS `freedom_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `freedom_db`; -- 外键约束关闭 SET FOREIGN_KEY_CHECKS = 0; -- ============================================================ -- 1. 用户表 t_sys_user -- ============================================================ DROP TABLE IF EXISTS `t_sys_user`; CREATE TABLE `t_sys_user` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `username` VARCHAR(50) NOT NULL COMMENT '登录用户名', `password` VARCHAR(100) NOT NULL COMMENT '登陆密码', `encode_type` VARCHAR(20) DEFAULT 'BCRYPT' COMMENT '加密方式(默认BCRYPT)', `user_type` VARCHAR(20) DEFAULT NULL COMMENT '用户类型', `nickname` VARCHAR(50) DEFAULT NULL COMMENT '用户昵称', `avatar` VARCHAR(255) DEFAULT NULL COMMENT '用户头像', `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号', `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮箱', `signature` VARCHAR(255) DEFAULT NULL COMMENT '个性签名', `status` INT DEFAULT 0 COMMENT '状态', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` TINYINT DEFAULT 0 COMMENT '删除标记', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; -- ============================================================ -- 2. 部门表 t_sys_dept -- ============================================================ DROP TABLE IF EXISTS `t_sys_dept`; CREATE TABLE `t_sys_dept` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `parent_id` BIGINT DEFAULT 0 COMMENT '父ID', `dept_code` VARCHAR(50) DEFAULT NULL COMMENT '编码', `dept_name` VARCHAR(100) NOT NULL COMMENT '名称', `dept_desc` VARCHAR(255) DEFAULT NULL COMMENT '描述', `level` INT DEFAULT 1 COMMENT '级别', `sort` INT DEFAULT 0 COMMENT '排序', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` TINYINT DEFAULT 0 COMMENT '删除标记', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='部门表'; -- ============================================================ -- 3. 角色表 t_sys_role -- ============================================================ DROP TABLE IF EXISTS `t_sys_role`; CREATE TABLE `t_sys_role` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称', `role_code` VARCHAR(50) DEFAULT NULL COMMENT '角色编号', `role_desc` VARCHAR(255) DEFAULT NULL COMMENT '角色描述', `is_default` VARCHAR(10) DEFAULT '0' COMMENT '默认角色', `dept_id` BIGINT DEFAULT NULL COMMENT '该角色归属部门', `sort` INT DEFAULT 0 COMMENT '角色排序', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` TINYINT DEFAULT 0 COMMENT '删除标记', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; -- ============================================================ -- 4. 权限表 t_sys_permission -- ============================================================ DROP TABLE IF EXISTS `t_sys_permission`; CREATE TABLE `t_sys_permission` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `parent_id` BIGINT DEFAULT 0 COMMENT '父ID', `permission_code` VARCHAR(50) DEFAULT NULL COMMENT '编码', `permission_name` VARCHAR(100) NOT NULL COMMENT '名称', `permission_desc` VARCHAR(255) DEFAULT NULL COMMENT '描述', `level` INT DEFAULT 1 COMMENT '级别', `icon` VARCHAR(100) DEFAULT NULL COMMENT '图标', `url` VARCHAR(255) DEFAULT NULL COMMENT '链接地址', `component` VARCHAR(255) DEFAULT NULL COMMENT '组件地址', `sort` INT DEFAULT 0 COMMENT '排序', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` TINYINT DEFAULT 0 COMMENT '删除标记', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='权限表'; -- ============================================================ -- 5. 角色权限关联表 t_sys_role_permission -- ============================================================ DROP TABLE IF EXISTS `t_sys_role_permission`; CREATE TABLE `t_sys_role_permission` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `role_id` BIGINT NOT NULL COMMENT '角色ID', `permission_id` BIGINT NOT NULL COMMENT '权限ID', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_role_permission_role` (`role_id`), KEY `idx_role_permission_perm` (`permission_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表'; -- ============================================================ -- 6. 用户角色关联表 t_sys_user_role -- ============================================================ DROP TABLE IF EXISTS `t_sys_user_role`; CREATE TABLE `t_sys_user_role` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `role_id` BIGINT NOT NULL COMMENT '角色ID', `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_role_user` (`user_id`), KEY `idx_user_role_role` (`role_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表'; SET FOREIGN_KEY_CHECKS = 1; -- ============================================================ -- 基础数据 -- ============================================================ -- 部门:总公司 / 技术部 INSERT INTO `t_sys_dept` (`id`, `parent_id`, `dept_code`, `dept_name`, `dept_desc`, `level`, `sort`, `create_by`, `create_date`, `del_flag`) VALUES (1, 0, 'HEAD', '总公司', '总公司', 1, 1, 'admin', NOW(), 0), (2, 1, 'TECH', '技术部', '技术部', 2, 1, 'admin', NOW(), 0); -- 用户:admin / 123456 (BCRYPT) INSERT INTO `t_sys_user` (`id`, `username`, `password`, `encode_type`, `user_type`, `nickname`, `avatar`, `phone`, `email`, `signature`, `status`, `create_by`, `create_date`, `del_flag`) VALUES (1, 'admin', '$2a$10$re0cfTCIYGaxSjme0fTNEOk4K4hGNDwYNTjJ3dz6R8SZWfGV994M2', 'BCRYPT', 'SYSTEM', '超级管理员', NULL, '13800000000', 'admin@freedom.com', 'Freedom 系统管理员', 0, 'admin', NOW(), 0); -- 角色:超级管理员 INSERT INTO `t_sys_role` (`id`, `role_name`, `role_code`, `role_desc`, `is_default`, `dept_id`, `sort`, `create_by`, `create_date`, `del_flag`) VALUES (1, '超级管理员', 'admin', '超级管理员,拥有所有权限', '1', 1, 1, 'admin', NOW(), 0); -- 权限菜单 INSERT INTO `t_sys_permission` (`id`, `parent_id`, `permission_code`, `permission_name`, `permission_desc`, `level`, `icon`, `url`, `component`, `sort`, `create_by`, `create_date`, `del_flag`) VALUES (1, 0, 'system', '系统管理', '系统管理菜单', 1, 'ios-settings', '', '', 1, 'admin', NOW(), 0), (2, 1, 'sys:user', '用户管理', '用户管理', 2, 'ios-person', '/sys/user', 'sys/user/user-list', 1, 'admin', NOW(), 0), (3, 1, 'sys:role', '角色管理', '角色管理', 2, 'ios-people', '/sys/role', 'sys/role/role-list', 2, 'admin', NOW(), 0), (4, 1, 'sys:dept', '部门管理', '部门管理', 2, 'ios-home', '/sys/dept', 'sys/dept/dept-list', 3, 'admin', NOW(), 0), (5, 1, 'sys:permission', '权限管理', '权限管理', 2, 'ios-key', '/sys/permission', 'sys/permission/permission-list', 4, 'admin', NOW(), 0); -- 用户-角色关联:admin -> 超级管理员 INSERT INTO `t_sys_user_role` (`id`, `user_id`, `role_id`, `create_by`, `create_time`) VALUES (1, 1, 1, 'admin', NOW()); -- 角色-权限关联:超级管理员 -> 所有权限 INSERT INTO `t_sys_role_permission` (`id`, `role_id`, `permission_id`, `create_by`, `create_date`) VALUES (1, 1, 1, 'admin', NOW()), (2, 1, 2, 'admin', NOW()), (3, 1, 3, 'admin', NOW()), (4, 1, 4, 'admin', NOW()), (5, 1, 5, 'admin', NOW());