-- 后台 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;