-- ============================================================================= -- aigc 生成配置治理 admin 权限点登记 SQL(配置控制面阶段三 · 配置控制台 UI 鉴权所需 system_menu 种子) -- 文件:game-cloud/game-module-aigc/sql/aigc_config_menu.sql -- 设计依据:docs/plans/2026-07-04-配置控制面阶段三-game-admin配置控制台UI-plan.md §3.3 -- + AdminGenConfigController @PreAuthorize('aigc:config:{query,save,archive,freeze,activate}')。 -- -- ⚠️ 为什么走独立 SQL 而非 Flyway: -- huijing 菜单 seed 一贯走独立 SQL(sql/mysql/ruoyi-vue-pro.sql / game-module-biz/sql/biz_menu.sql / -- game-module-trade/sql/trade_menu.sql 同范式),权限点不属 Flyway 业务表迁移范畴;塞进业务表迁移会破坏 -- contracts/db-schemas 与 server 迁移副本的字节一致性、触发 flyway validate 崩。故照既有单独菜单初始化 SQL 方式登记。 -- -- 执行方式(mini-desktop staging,幂等可重复执行;INSERT IGNORE 撞 id 即跳过): -- mysql --default-character-set=utf8mb4 -h -u -p < game-cloud/game-module-aigc/sql/aigc_config_menu.sql -- (含中文,务必 --default-character-set=utf8mb4 防乱码。) -- -- 放行说明: -- huijing 超级管理员角色(system_role.code='super_admin',type=1)对 @ss.hasPermission 全量放行(*:*:*), -- 登记菜单行后超管即可访问配置控制台;分配给普通运营角色由运营在 game-admin「角色管理」按需勾选(不在本 SQL)。 -- ⚠️ 权限门验证不能用超管(*:*:* 全放行、证不出收敛):须建一个只勾 aigc:config:query 的运营角色断言写按钮全隐藏。 -- id 取 7120~7125(biz_menu.sql 已占 7100~7107、trade_menu.sql 已占 7110~7112,7120+ 区间未占用,避免碰撞)。 -- 范围:本 SQL 仅登记生成配置治理 1 菜单 + 5 权限点(NO-MERGE 范围)。 -- ============================================================================= -- 父菜单:生成配置治理(type=2 可路由菜单,parent_id=0 顶级;component=wanxiang/config/index 对应前端配置控制台页) INSERT IGNORE INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (7120, '生成配置治理', '', 2, 120, 0, 'aigc-config', 'ep:set-up', 'wanxiang/config/index', 'AigcConfig', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); -- 5 个按钮权限点(type=3 按钮,parent_id=7120,对齐 AdminGenConfigController @PreAuthorize 五权限) INSERT IGNORE INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (7121, '查询', 'aigc:config:query', 3, 1, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), (7122, '保存草稿', 'aigc:config:save', 3, 2, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), (7123, '归档', 'aigc:config:archive', 3, 3, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), (7124, '定版', 'aigc:config:freeze', 3, 4, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), (7125, '激活', 'aigc:config:activate', 3, 5, 7120, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');