From ff4525af5b4178a38ca310719e4c7af9af3e742c Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 15:58:46 +0800
Subject: [PATCH] chore(migration): 进件来源列的迁移让号,V157 改为 V158

---
 talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingProgressService.java |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingProgressService.java b/talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingProgressService.java
index 132b063..4c87752 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingProgressService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingProgressService.java
@@ -45,6 +45,21 @@
 
     public Map<String,Object> view(Long id) { return view(application(id)); }
 
+    /** 进件来源标记:后台纳管进来的外部进件商户。取值与 V158 的 {@code source} 列一致。 */
+    public static final String SOURCE_MANAGED = "managed";
+
+    /**
+     * 这条进件是不是「后台纳管的外部进件」。
+     *
+     * <p>它决定这条进件能不能**下发**通道改动:纳管全程只查询、不下发(外部商户的口径已由业务要求
+     * 保持一致,只需核实;而补开微信、绑人才端、改支付场景、开启延迟入账这些下发操作都不幂等,
+     * 连锁多店共用同一个汇付商户号时各自下发还会重复下发)。判定只留这一处定义,刷新链路与纳管/解绑
+     * 都读它,避免同一个来源标记在几处各自比较字符串。
+     */
+    public static boolean isManaged(Map<String,Object> application) {
+        return SOURCE_MANAGED.equals(text(application.get("source")).trim());
+    }
+
     @org.springframework.transaction.annotation.Transactional(propagation = org.springframework.transaction.annotation.Propagation.NOT_SUPPORTED)
     public Map<String,Object> refresh(Long applicationId, boolean retry) {
         Map<String,Object> application=application(applicationId);
@@ -147,7 +162,7 @@
                         if (!"confirmed".equals(stages.get("realname"))) stages.put("realname", "missing");
                     } else jdbc.update("update merchant_onboarding_progress set sync_error=? where application_id=? and sync_owner=?",queryError(realname),applicationId,owner);
                 }
-                if ("Y".equals(audit) && "S".equals(text(response.get("reg_status"))) && capabilities != null
+                if (!isManaged(application) && "Y".equals(audit) && "S".equals(text(response.get("reg_status"))) && capabilities != null
                         && "00000000".equals(text(capabilities.get("resp_code"))) && "NORMAL".equals(text(capabilities.get("mer_stat")))
                         && capabilities.containsKey("delay_flag") && capabilities.containsKey("forced_delay_flag")) {
                     advanceDelay(applicationId,text(application.get("providerHuifuId")),owner,stages,retry);

--
Gitblit v1.7.1