From f2cca8fe463efe96ad8d949a40bbee52baf89d8c Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 14:28:20 +0800
Subject: [PATCH] fix(admin): 精简纳管对话框的文字

---
 talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantManagedOnboardingTests.java   |    6 +++++-
 talent-card-admin/src/views/MerchantSettlementView.vue                                                      |   23 +++++++----------------
 talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantManagedOnboardingService.java |   11 ++++++++++-
 3 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/talent-card-admin/src/views/MerchantSettlementView.vue b/talent-card-admin/src/views/MerchantSettlementView.vue
index 8705464..e52dd6d 100644
--- a/talent-card-admin/src/views/MerchantSettlementView.vue
+++ b/talent-card-admin/src/views/MerchantSettlementView.vue
@@ -473,10 +473,6 @@
       :close-on-click-modal="false"
       destroy-on-close
     >
-      <p class="adopt-hint">
-        用于把<b>已在汇付侧完成进件</b>的商户接到我方某个商家上。纳管全程只查询、不下发:不会补开微信、
-        不会绑定人才端、不会改动支付场景与延迟入账。
-      </p>
       <el-form label-width="120px" class="adopt-form">
         <el-form-item label="我方商家" required>
           <el-select
@@ -506,14 +502,14 @@
         </el-form-item>
         <el-form-item label=" ">
           <el-button type="primary" plain :loading="adoptPreviewing" @click="runAdoptPreview">核验通道商户</el-button>
-          <span class="adopt-tip">卡号不用填,从通道查回来。</span>
         </el-form-item>
       </el-form>
 
       <template v-if="adoptPreview">
         <el-descriptions :column="1" border size="small" class="adopt-preview">
           <el-descriptions-item label="我方商家">
-            {{ adoptPreview.merchantName }}<span class="muted">(门店:{{ adoptPreview.storeName }})</span>
+            {{ adoptPreview.merchantName
+            }}<span v-if="adoptPreview.storeName && adoptPreview.storeName !== adoptPreview.merchantName" class="muted">(门店:{{ adoptPreview.storeName }})</span>
           </el-descriptions-item>
           <el-descriptions-item label="通道商户注册名称">{{ adoptPreview.channelMerchantName }}</el-descriptions-item>
           <el-descriptions-item label="通道商户简称">{{ adoptPreview.channelShortName }}</el-descriptions-item>
@@ -526,22 +522,20 @@
             <span v-if="adoptPreview.settlementBankName" class="muted">({{ adoptPreview.settlementBankName }})</span>
           </el-descriptions-item>
         </el-descriptions>
-        <!-- 只提示不拦截:连锁各门店共用一个收款主体是允许的,这里列出已绑的商家让运营自己确认。 -->
+        <!-- 只提示不拦截:连锁各门店共用一个收款主体是允许的,列出已绑的商家让运营自己确认。 -->
         <el-alert
           v-if="adoptPreview.alreadyManaged"
           class="adopt-alert"
           type="success"
           :closable="false"
-          title="该商家已纳管过这个汇付商户号"
-          description="重复纳管是幂等的,提交会直接返回原来那条进件记录,不会产生第二条。"
+          title="该商家已纳管过这个汇付商户号,提交会返回原进件记录,不会新建"
         />
         <el-alert
           v-if="adoptPreview.boundMerchants?.length"
           class="adopt-alert"
           type="info"
           :closable="false"
-          :title="`该汇付商户号已绑给:${adoptPreview.boundMerchants.join('、')}`"
-          description="可以继续纳管(连锁各门店共用一个收款主体)。"
+          :title="`该汇付商户号已绑给:${adoptPreview.boundMerchants.join('、')},可继续纳管`"
         />
         <el-alert
           v-if="adoptPreview.nameWarning"
@@ -556,8 +550,7 @@
           class="adopt-alert"
           type="warning"
           :closable="false"
-          title="商户端登录"
-          :description="adoptPreview.loginNotice"
+          :title="adoptPreview.loginNotice"
         />
         <el-alert
           v-for="blocker in adoptPreview.blockers || []"
@@ -568,7 +561,7 @@
           :title="blocker"
         />
         <el-checkbox v-model="adoptConfirmed" :disabled="(adoptPreview.blockers || []).length > 0">
-          我已把通道侧的商户注册名称与简称与所选商家核对一致(纳管后该商家的收款将进入这个收款主体)
+          我已核对通道商户名称与所选商家一致(该商家的收款将进入这个收款主体)
         </el-checkbox>
       </template>
 
@@ -601,9 +594,7 @@
 .query-actions { justify-content: flex-end; }
 .query-actions :deep(.el-form-item__content) { justify-content: flex-end; }
 .settlement-table-tools { margin: 0 0 12px; }
-.adopt-hint { margin: 0 0 16px; color: #606266; font-size: 13px; line-height: 20px; }
 .adopt-form :deep(.el-select) { width: 100%; }
-.adopt-tip { margin-left: 12px; color: #909399; font-size: 12px; }
 .adopt-preview { margin-bottom: 14px; }
 .adopt-alert { margin-bottom: 12px; }
 .table-panel { margin-top: 16px; padding: 0 20px 12px; }
diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantManagedOnboardingService.java b/talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantManagedOnboardingService.java
index 6658be1..68ee993 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantManagedOnboardingService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantManagedOnboardingService.java
@@ -419,11 +419,20 @@
                 where a.provider_huifu_id = ? and a.merchant_id <> ? and a.status in ('pending', 'approved')
                 order by a.id
                 """, huifuId, exceptMerchantId).stream()
-                .map(row -> clean(row.get("merchantName")) + (clean(row.get("storeName")).isBlank() ? "" : "(" + clean(row.get("storeName")) + ")"))
+                .map(row -> displayName(clean(row.get("merchantName")), clean(row.get("storeName"))))
                 .distinct().toList();
     }
 
     /**
+     * 「商家名(门店名)」的展示形式。门店名与商家名一样时不再重复一遍——多数门店名就是商家名,
+     * 加上去只是把同一句话印两遍(列表里看起来像「某某商户(某某商户)」)。
+     */
+    private static String displayName(String merchantName, String storeName) {
+        return storeName.isBlank() || storeName.equals(merchantName)
+                ? merchantName : merchantName + "(" + storeName + ")";
+    }
+
+    /**
      * 通道侧两个名称与所选商家名**连一个字符都不重叠**时的警示。
      *
      * <p>刻意不做「名称是否对得上」的判定:形态不对应(工商全称 vs 品牌简称),规则化匹配必然误判。
diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantManagedOnboardingTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantManagedOnboardingTests.java
index 291be6d..371c846 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantManagedOnboardingTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantManagedOnboardingTests.java
@@ -159,9 +159,13 @@
         stubConvergedChannel(huifuId, "622200001234", "external-card-token");
 
         service.adopt(first.merchantId(), huifuId, APPLY_NO, true);
+        // 门店名与商家名一样时不重复印一遍——多数门店就是这样,列表里不该出现「某某商户(某某商户)」。
+        jdbc.update("update merchant_store set store_name = ? where id = ?", first.key(), first.storeId());
         Map<String, Object> preview = service.preview(second.merchantId(), huifuId);
 
-        assertThat((List<?>) preview.get("boundMerchants")).anySatisfy(name -> assertThat(String.valueOf(name)).contains(first.key()));
+        assertThat(preview.get("boundMerchants"))
+                .asInstanceOf(org.assertj.core.api.InstanceOfAssertFactories.list(String.class))
+                .containsExactly(first.key());
         assertThat((List<?>) preview.get("blockers")).as("已被其他商家绑定只是提示,不能拦").isEmpty();
         assertThat(service.adopt(second.merchantId(), huifuId, APPLY_NO, true)).containsEntry("status", "approved");
         assertThat(readinessService.requireCollectingMerchant(second.merchantId(), second.storeId()).huifuId()).isEqualTo(huifuId);

--
Gitblit v1.7.1