-- ============================================================
-- 门店/应用默认项数据迁移诊断（升级脚本）
-- ============================================================
-- 背景:
--   本次升级后, 支付下单若未显式传 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;
