57 lines
2.4 KiB
SQL
57 lines
2.4 KiB
SQL
-- 后台 RBAC 权限管理建表脚本(admin_ 前缀,与小程序业务物理隔离)。
|
|
-- 执行顺序:先建表,再建索引(GORM 已含唯一索引定义,此处显式列出便于审阅)。
|
|
-- 种子管理员与 super_admin 角色由服务启动时自动初始化(见 rbac.Provider.Seed)。
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_users` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`username` VARCHAR(64) NOT NULL,
|
|
`password_hash` VARCHAR(255) NOT NULL,
|
|
`nickname` VARCHAR(128) DEFAULT '',
|
|
`status` TINYINT NOT NULL DEFAULT 1,
|
|
`created_at` DATETIME(3) NULL,
|
|
`updated_at` DATETIME(3) NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_admin_users_username` (`username`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_roles` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`code` VARCHAR(64) NOT NULL,
|
|
`name` VARCHAR(128) NOT NULL,
|
|
`description` VARCHAR(512) DEFAULT '',
|
|
`status` TINYINT NOT NULL DEFAULT 1,
|
|
`created_at` DATETIME(3) NULL,
|
|
`updated_at` DATETIME(3) NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_admin_roles_code` (`code`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_permissions` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`code` VARCHAR(128) NOT NULL,
|
|
`name` VARCHAR(128) NOT NULL,
|
|
`type` VARCHAR(16) NOT NULL DEFAULT 'api',
|
|
`method` VARCHAR(16) DEFAULT '',
|
|
`path` VARCHAR(255) DEFAULT '',
|
|
`parent_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
|
`sort` INT NOT NULL DEFAULT 0,
|
|
`created_at` DATETIME(3) NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_admin_permissions_code` (`code`),
|
|
KEY `idx_admin_permissions_parent` (`parent_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_user_roles` (
|
|
`admin_id` BIGINT UNSIGNED NOT NULL,
|
|
`role_id` BIGINT UNSIGNED NOT NULL,
|
|
PRIMARY KEY (`admin_id`, `role_id`),
|
|
KEY `idx_admin_user_roles_role` (`role_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `admin_role_permissions` (
|
|
`role_id` BIGINT UNSIGNED NOT NULL,
|
|
`permission_id` BIGINT UNSIGNED NOT NULL,
|
|
PRIMARY KEY (`role_id`, `permission_id`),
|
|
KEY `idx_admin_role_permissions_perm` (`permission_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|