zizi ca53a0db0c feat(trade): U2 R-ECON admin赋余额+会员订阅(独立流水表+幂等)
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>
2026-06-18 03:56:58 +00:00

38 lines
3.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================================================
-- trade 模块 admin 权限点登记 SQLU2 经济admin 赋余额 / 赋订阅 两端点鉴权所需 system_menu 种子)
-- 文件game-cloud/game-module-trade/sql/trade_menu.sql
-- 设计依据U2 R-ECONdocs/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 一贯走独立 SQLsql/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~7112biz_menu.sql 已占 7100~7107huijing 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');