codex 评审 NO-MERGE→修 P0(订阅幂等漏洞:独立幂等账本表 game_trade_subscription_grant+uk_biz_no,延期前先写、同事务)+P1(VO @Size/totalIncome注释对齐/权限种子SQL)。V21。plan 2026-06-18-002 U2。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
3.2 KiB
SQL
38 lines
3.2 KiB
SQL
-- =============================================================================
|
||
-- 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<host> -u<user> -p<pwd> <db> < 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');
|