Files
dax-pay/_config/sql/update-datas.sql
DaxPay Dev 24750bb9e5 feat(sql): 补充应用工作台与收银台配置菜单
新增应用配置子页 MchAppWorkbench(/payment/merchant/app/manage)及收银台配置菜单,同步全量菜单导出与增量升级脚本。
2026-07-11 15:44:09 +08:00

236 lines
8.8 KiB
SQL

-- 升级数据脚本(按顺序执行)
-- 说明: 已部署环境增量更新,执行前请确认版本与备份
-- ----------------------------
-- 2026-07-10 移动端应用配置菜单从 payment 迁到 system 配置
-- 后端包: payment.app.mobile → platform.system.mobile
-- API: /admin/mobile-app → /platform/config/mobile-app
-- 前端: payment/config/mobileApp → system/config/mobileApp
-- ----------------------------
UPDATE "public"."iam_perm_menu"
SET "pid" = 304,
"menu_code" = 'system:config:mobile_app',
"i18n_key" = 'menu.system.config.mobileApp',
"component" = '/system/config/mobileApp/MobileAppConfig',
"path" = '/system/config/mobile-app',
"sort_no" = 6,
"last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" = 40504;
UPDATE "public"."iam_perm_menu"
SET "menu_code" = 'system:config:mobile_app_detail',
"i18n_key" = 'menu.system.config.mobileAppDetail',
"component" = '/system/config/mobileApp/detail/MobileAppDetail',
"path" = '/system/config/mobile-app/detail/:appType',
"last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" = 40505;
-- ----------------------------
-- 2026-07-11 开源版取消硬件对接:移除云音箱/云打印/厂商配置菜单
-- 码牌(device:qrcode)、辅助支付终端(device:assistant)、目录 device 保留
-- 辅助终端不属于 IoT 硬件对接,勿与音箱/打印一并删除
-- ----------------------------
DELETE FROM "public"."iam_perm_menu"
WHERE "menu_code" IN (
'device:vendor_config',
'device:speaker',
'device:printer'
);
-- 若误删过辅助支付终端菜单,补回(已存在则跳过)
INSERT INTO "public"."iam_perm_menu"
SELECT 904, 9, 'device:assistant', 'admin', 'DeviceAssistant', '辅助支付终端', 'Payment Assistant Terminal',
'menu.device.assistant', 'lucide:monitor-smartphone', 'f', 'f',
'/_core/fallback/coming-soon', '/device/assistant', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'menu',
NULL, NULL, NULL, NULL, NULL, NULL,
'2026-06-25 12:51:25.252086+00', '2026-06-25 12:51:25.252086+00'
WHERE NOT EXISTS (
SELECT 1 FROM "public"."iam_perm_menu" WHERE "id" = 904 OR "menu_code" = 'device:assistant'
);
-- 目录图标由音箱改为码牌语义(可选,已有库同步)
UPDATE "public"."iam_perm_menu"
SET "icon" = 'lucide:qr-code',
"last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" = 9 AND "menu_code" = 'device';
-- ----------------------------
-- 聚合扫码配置菜单(应用级子页面)
-- 对接后端 GatewayAggregateConfigAdminController, 三级配置深度(AUTO/METHOD/DIRECT)
-- 注意: id 不能用 4040120, 该 ID 已被"微信域名验证"(merchant:wx_verify)占用
-- ----------------------------
INSERT INTO "public"."iam_perm_menu" VALUES (
4040121, 40401, 'merchant:gateway-aggregate', 'admin', 'AggregateScanConfig',
'聚合扫码', 'Aggregate QR Pay', 'menu.payment.merchant.aggregateScan',
NULL, 't', 'f',
'/payment/merchant/aggregate/AggregateScanConfig', '/payment/merchant/aggregate',
NULL, 3, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage',
NULL, NULL, NULL, NULL, NULL, NULL,
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP
);
-- ----------------------------
-- 2026-07-11 菜单子页面分组(subpage_group)升级
-- 新增 subpage_group 类型用于组织 menu 下大量平铺的 subpage, 不在侧边栏显示
-- 详见方案: catalog > menu > subpage_group(隐藏) > subpage, 面包屑显示完整四级
-- ----------------------------
-- 更新 menu_type 字段注释
COMMENT ON COLUMN "public"."iam_perm_menu"."menu_type" IS '菜单类型: catalog-目录, menu-菜单, subpage-子页面, subpage_group-子页面分组, embedded-内嵌, link-外链';
-- 新建 4 个子页面分组节点(纯容器: 无 path/component/menu_code, 强制隐藏)
-- 40401 商户列表下 3 个分组
INSERT INTO "public"."iam_perm_menu"
(id, pid, menu_code, client_code, name, title_cn, title_en, i18n_key, icon,
hidden, hide_children_menu, component, path, redirect, sort_no, root,
keep_alive, affix_tab, creator, last_modifier, version, deleted, menu_type,
active_icon, badge, badge_type, badge_variants, iframe_src, link,
create_time, last_modified_time)
VALUES
(4040130, 40401, NULL, 'admin', 'MchManageGroup', '商户管理', 'Merchant Management',
'menu.payment.merchant.group.manage', 'lucide:settings-2',
true, false, NULL, NULL, NULL, 1, false,
false, false, 1, 1, 0, false, 'subpage_group',
NULL, NULL, NULL, NULL, NULL, NULL,
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(4040131, 40401, NULL, 'admin', 'ChannelMerchantGroup', '通道商户', 'Channel Merchant',
'menu.payment.merchant.group.channelMerchant', 'lucide:repeat',
true, false, NULL, NULL, NULL, 2, false,
false, false, 1, 1, 0, false, 'subpage_group',
NULL, NULL, NULL, NULL, NULL, NULL,
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(4040132, 40401, NULL, 'admin', 'ChannelAppGroup', '渠道应用', 'Channel App',
'menu.payment.merchant.group.channelApp', 'lucide:layout-grid',
true, false, NULL, NULL, NULL, 3, false,
false, false, 1, 1, 0, false, 'subpage_group',
NULL, NULL, NULL, NULL, NULL, NULL,
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
-- 40105 支付产品管理下 1 个分组
(40508, 40105, NULL, 'admin', 'ChannelIsvConfigGroup', '渠道服务商配置', 'Channel ISV Config',
'menu.payment.config.group.channelIsv', 'lucide:server',
true, false, NULL, NULL, NULL, 1, false,
false, false, 1, 1, 0, false, 'subpage_group',
NULL, NULL, NULL, NULL, NULL, NULL,
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
ON CONFLICT (id) DO NOTHING;
-- 将子页面 pid 迁移到对应分组
-- 4040130 商户管理组(9个)
UPDATE "public"."iam_perm_menu"
SET "pid" = 4040130, "last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" IN (4040101, 4040103, 4040102, 4040110, 4040111, 4040108, 4040117, 4040121, 4040120);
-- 4040131 通道商户组(3个)
UPDATE "public"."iam_perm_menu"
SET "pid" = 4040131, "last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" IN (4040106, 4040109, 4040112);
-- 4040132 渠道应用组(4个)
UPDATE "public"."iam_perm_menu"
SET "pid" = 4040132, "last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" IN (4040113, 4040114, 4040115, 4040119);
-- 40508 渠道服务商配置组(3个)
UPDATE "public"."iam_perm_menu"
SET "pid" = 40508, "last_modified_time" = CURRENT_TIMESTAMP
WHERE "id" IN (40502, 40503, 40506);
-- 注: 40501(产品配置详情)、40505(移动端应用详情) 仅1个子页面, 保留直挂 menu 不强制分组
-- ----------------------------
-- 收银台配置菜单(应用 subpage, 从应用管理/应用工作台进入)
-- menu_code = merchant:gateway-cashier
-- 权限码: merchant:gateway-cashier:view / merchant:gateway-cashier:update
-- ----------------------------
INSERT INTO public.iam_perm_menu (
id, pid, menu_code, client_code, name,
title_cn, title_en, i18n_key, icon,
hidden, hide_children_menu, component, path, redirect, sort_no,
root, keep_alive, affix_tab, creator, last_modifier, version, deleted,
menu_type, active_icon, badge, badge_type, badge_variants, iframe_src, link,
create_time, last_modified_time
)
SELECT
4040122,
4040130,
'merchant:gateway-cashier',
'admin',
'CashierConfig',
'收银台配置',
'Cashier Config',
'menu.payment.merchant.cashierConfig',
NULL,
true,
false,
'/payment/merchant/cashier/CashierConfig',
'/payment/merchant/cashier',
NULL,
4,
false,
true,
false,
1,
1,
1,
false,
'subpage',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'2026-07-11 03:00:13.374496+00',
'2026-07-11 03:37:15.424776+00'
WHERE NOT EXISTS (
SELECT 1 FROM public.iam_perm_menu WHERE id = 4040122 OR menu_code = 'merchant:gateway-cashier'
);
-- ----------------------------
-- 应用工作台菜单(应用 subpage, 从应用列表进入)
-- menu_code = merchant:app (与应用管理同权)
-- ----------------------------
INSERT INTO public.iam_perm_menu (
id, pid, menu_code, client_code, name,
title_cn, title_en, i18n_key, icon,
hidden, hide_children_menu, component, path, redirect, sort_no,
root, keep_alive, affix_tab, creator, last_modifier, version, deleted,
menu_type, active_icon, badge, badge_type, badge_variants, iframe_src, link,
create_time, last_modified_time
)
SELECT
4040123,
4040130,
'merchant:app',
'admin',
'MchAppWorkbench',
'应用配置',
'App Configuration',
'menu.payment.merchant.appWorkbench',
NULL,
true,
false,
'/payment/merchant/app/MchAppWorkbench',
'/payment/merchant/app/manage',
NULL,
11,
false,
true,
false,
1,
1,
1,
false,
'subpage',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'2026-07-11 08:00:00+00',
'2026-07-11 08:00:00+00'
WHERE NOT EXISTS (
SELECT 1 FROM public.iam_perm_menu WHERE id = 4040123 OR name = 'MchAppWorkbench'
);