From d8eaa16682cf180e9563d6be05fb43057daf6c07 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 10:34:14 +0800
Subject: [PATCH] feat(merchant): 后台纳管外部进件商户并支持解绑
---
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..bfa7767 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)); }
+ /** 进件来源标记:后台纳管进来的外部进件商户。取值与 V157 的 {@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