-- ============================================================================= -- trade 模块 admin 权限点登记 SQL(U2 经济:admin 赋余额 / 赋订阅 两端点鉴权所需 system_menu 种子) -- 文件:game-cloud/game-module-trade/sql/trade_menu.sql -- 设计依据:U2 R-ECON(docs/plans/2026-06-18-002)+ TradeAdminController @PreAuthorize('trade:account:grant' / 'trade:subscription:grant')。 -- -- ⚠️ 为什么不进 Flyway V21(与 biz_menu.sql 同理): -- 1) V21.0.0__create_game_trade_subscription.sql 两副本(contracts/db-schemas/ + huijing-server/.../db/migration/)必须字节一致(md5 全等), -- 把权限 seed 塞进 V21 会破坏副本字节一致、触发 flyway validate 崩; -- 2) huijing 菜单 seed 一贯走独立 SQL(sql/mysql/ruoyi-vue-pro.sql / game-module-biz/sql/biz_menu.sql 同范式), -- 权限点不属 Flyway 业务表迁移范畴。故 trade 权限点照「单独菜单初始化 SQL」方式登记,与 V21 解耦、不破副本一致性。 -- -- 执行方式(mini-desktop staging,幂等可重复执行;INSERT IGNORE 撞 id 即跳过): -- mysql --default-character-set=utf8mb4 -h -u -p < game-cloud/game-module-trade/sql/trade_menu.sql -- (含中文,务必 --default-character-set=utf8mb4 防乱码。) -- -- 放行说明: -- huijing 超级管理员角色(system_role.code='super_admin',type=1)对 @ss.hasPermission 全量放行(*:*:*), -- 登记菜单行后超管即可调用赋余额/赋订阅端点;分配给普通运营角色由运营在 game-admin「角色管理」按需勾选(不在本 SQL)。 -- id 取 7110~7112(biz_menu.sql 已占 7100~7107,huijing base seed system_menu 7110+ 区间未占用,避免碰撞)。 -- 范围:本 SQL 仅登记 U2 新增的赋余额/赋订阅两权限点(NO-MERGE 范围);trade 其余 withdraw/income/report 权限点不在本次范围。 -- ============================================================================= -- 父菜单:经营管理(type=2 菜单,parent_id=0 顶级;前端路由/组件由前端按需补,本 SQL 仅登记后端鉴权所需节点) 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 (7110, '经营管理', '', 2, 110, 0, 'trade-ops', 'ep:wallet', 'trade/ops/index', 'TradeOps', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); -- 2 个按钮权限点(type=3 按钮,parent_id=7110,对齐 TradeAdminController U2 端点 @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 (7111, 'admin 赋余额', 'trade:account:grant', 3, 1, 7110, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), (7112, 'admin 赋订阅', 'trade:subscription:grant', 3, 2, 7110, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');