mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-13 15:55:42 +08:00
- 数据库加部分唯一索引 uk_mch_app_info_default / uk_mch_store_info_default 兜底 - Service.delete 检查默认项, 禁止删除默认应用/门店 - MchAppInfoService.add 首应用自动默认, 与 MchStoreInfoService 对齐 - resolveApp 异常分类: 默认应用不存在 vs 已停用 vs 指定应用异常 - resolveStoreNo 改抛异常 (替代返回 null), 与 resolveApp 策略对齐 - update-datas.sql 提供脏数据/缺默认项诊断查询 - 6 语种 i18n 新增 5 个错误 key
26 lines
1.3 KiB
SQL
26 lines
1.3 KiB
SQL
-- ============================================================
|
|
-- 门店/应用默认项唯一性约束(升级脚本)
|
|
-- ============================================================
|
|
-- 背景:
|
|
-- 商户应用(MchAppInfo)和门店(MchStoreInfo)均引入「默认项」机制,
|
|
-- 要求同一商户下至多一个默认应用 / 至多一个默认门店。
|
|
-- 原有约束仅由 Service 层 setDefault(先 clearDefault 再 set)保证,
|
|
-- 并发或绕过 Service 直接改库时存在隐患。
|
|
-- 策略:
|
|
-- 数据库层加 PostgreSQL 部分唯一索引(Partial Unique Index)兜底,
|
|
-- 与 Service 层逻辑形成双保险。
|
|
-- 影响范围:
|
|
-- - 升级前请先执行 update-datas.sql 中的诊断查询,
|
|
-- 如发现「同商户多个默认应用/门店」需先人工修复, 否则建索引会失败。
|
|
-- ============================================================
|
|
|
|
-- 商户默认应用唯一索引 (同一商户至多一个 default_app=true 且未删除的记录)
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uk_mch_app_info_default
|
|
ON mch_app_info (mch_no)
|
|
WHERE default_app = TRUE AND deleted = FALSE;
|
|
|
|
-- 商户默认门店唯一索引 (同一商户至多一个 default_store=true 且未删除的记录)
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uk_mch_store_info_default
|
|
ON mch_store_info (mch_no)
|
|
WHERE default_store = TRUE AND deleted = FALSE;
|