Files
dax-pay/_config/sql/update-datas.sql
DaxPay Dev 98f39595ab feat(device): 系统终端与通道终端台账功能,菜单迁移至商户管理
- 新增系统终端/通道终端/绑定关系实体与管理层(controller/service/dao/entity/param/result/convert)
- 权限码 device:terminal:system → merchant:terminal(PermCodes 迁移至 Merchant 域)
- 菜单 id=905 从设备管理(pid=9)移到商户管理组(pid=4040130), 改为 subpage 隐藏模式
- update-datas.sql 增量升级脚本(已部署库 UPDATE)
- 终端类型/状态枚举, 10语种 i18n
2026-07-19 00:07:40 +08:00

79 lines
3.5 KiB
SQL

-- ============================================================
-- 门店/应用默认项数据迁移诊断(升级脚本)
-- ============================================================
-- 背景:
-- 本次升级后, 支付下单若未显式传 appId / storeNo,
-- 系统会回落到商户的默认应用/默认门店;
-- 若默认项不存在或已停用, 将直接抛异常阻断下单(对齐 MchApp 既有策略)。
-- 风险:
-- 历史数据中可能存在「从未创建默认应用/默认门店」的商户(如 SQL 直接导入未走入驻流程),
-- 升级后这些商户的下单会被阻断。
-- 迁移策略:
-- 主键(id)与应用号(appId)/门店号(storeNo)由应用层(MyBatis-Plus 雪花 ID / RandomUtil)生成,
-- SQL 层难以精确复现; 且每个商户的默认应用名/门店名应按当前请求语言生成,
-- 不适合在 SQL 中硬编码。
-- 因此本脚本不自动执行数据补建, 仅提供诊断查询, 由运维确认后处理。
-- ============================================================
-- 诊断 1: 查询没有默认应用的商户(升级后这些商户未传 appId 的下单会失败)
-- SELECT mch.mch_no, mch.mch_name
-- FROM merchant_info mch
-- WHERE NOT EXISTS (
-- SELECT 1 FROM mch_app_info app
-- WHERE app.mch_no = mch.mch_no
-- AND app.default_app = TRUE
-- AND app.deleted = FALSE
-- )
-- AND mch.deleted = FALSE;
-- 诊断 2: 查询没有默认门店的商户(升级后这些商户未传 storeNo 的下单会失败)
-- SELECT mch.mch_no, mch.mch_name
-- FROM merchant_info mch
-- WHERE NOT EXISTS (
-- SELECT 1 FROM mch_store_info s
-- WHERE s.mch_no = mch.mch_no
-- AND s.default_store = TRUE
-- AND s.deleted = FALSE
-- )
-- AND mch.deleted = FALSE;
-- 诊断 3: 查询同商户存在多个默认应用的脏数据(会导致 uk_mch_app_info_default 索引创建失败)
-- SELECT mch_no, COUNT(*)
-- FROM mch_app_info
-- WHERE default_app = TRUE AND deleted = FALSE
-- GROUP BY mch_no
-- HAVING COUNT(*) > 1;
-- 诊断 4: 查询同商户存在多个默认门店的脏数据(会导致 uk_mch_store_info_default 索引创建失败)
-- SELECT mch_no, COUNT(*)
-- FROM mch_store_info
-- WHERE default_store = TRUE AND deleted = FALSE
-- GROUP BY mch_no
-- HAVING COUNT(*) > 1;
-- ============================================================
-- 修复指引(诊断查询有结果时按以下方式处理):
-- 1. 诊断 3/4 命中(脏数据):
-- 手动 UPDATE 保留其中一条 default_app/default_store = TRUE, 其余置 FALSE。
-- 2. 诊断 1/2 命中(缺默认项):
-- 登录运营端 -> 商户管理 -> 选择对应商户 -> 应用管理/门店管理 ->
-- 新增应用/门店后调用「设为默认」接口(set-default);
-- 或通过 MerchantAdminService.createDefaultApp / MchStoreInfoService.createDefaultStore 触发。
-- ============================================================
-- ----------------------------
-- 系统终端菜单迁移: 从设备管理移到商户管理(照搬门店 subpage 模式)
-- 权限码 device:terminal:system → merchant:terminal
-- ----------------------------
UPDATE "public"."iam_perm_menu"
SET "pid" = 4040130,
"menu_code" = 'merchant:terminal',
"i18n_key" = 'menu.payment.merchant.terminal',
"icon" = NULL,
"hidden" = true,
"component" = '/payment/merchant/terminal/SystemTerminalList',
"path" = '/payment/merchant/terminal',
"sort_no" = 16,
"menu_type" = 'subpage'
WHERE "id" = 905;