From 8dc19f0bd6c4abdc9cec1f9b99b90c33b9da966f Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 17:24:12 +0800
Subject: [PATCH] fix(settlement): 共用收款主体那格改写「共用收款主体(N 家)」,悬停列出名单

---
 talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantSettlementAdminServiceTests.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantSettlementAdminServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantSettlementAdminServiceTests.java
index 1d98ace..8898e1e 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantSettlementAdminServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/admin/MerchantSettlementAdminServiceTests.java
@@ -154,6 +154,40 @@
                 .as("一条流水只该出现一次,不能按共用它的商家数重复")
                 .containsExactlyInAnyOrder("TX-S-" + sharedHuifuId, "TX-F-" + sharedHuifuId);
         verify(settlementRecordGateway, times(1)).query(eq(sharedHuifuId), any(), any(), anyInt());
+        // 格子放不下几家商家的名字(7 家就 50 多个字符),所以显示成「共用收款主体(N 家)」,
+        // 名单随行带给前端做悬停提示。
+        assertThat(recordsOf(fetch(null, null, null, null)))
+                .filteredOn(record -> String.valueOf(record.get("providerTransactionNo")).endsWith(sharedHuifuId))
+                .isNotEmpty()
+                .allSatisfy(record -> {
+                    assertThat(record).containsEntry("merchantName", "共用收款主体(2 家)");
+                    assertThat(record.get("merchantNames"))
+                            .asInstanceOf(org.assertj.core.api.InstanceOfAssertFactories.list(String.class))
+                            .containsExactly("Settlement chain A " + suffix, "Settlement chain B " + suffix);
+                });
+    }
+
+    /**
+     * 按商家搜索照样能搜到共用的那条流水。
+     *
+     * <p>筛选是在**数据库那一层**做的(先定"查哪些商家的收款主体",再去问通道),不是拿格子里的显示
+     * 文本去匹配;所以格子改成「共用收款主体(N 家)」不会让搜索失效。而且筛到只剩一家时,那一格就
+     * 显示这一家的名字——运营按商家查的时候,看到的就是自己查的那家。
+     */
+    @Test
+    void searchingByOneOfTheSharingMerchantsStillFindsTheSharedFlow() {
+        String sharedHuifuId = "TF" + suffix + "SEARCH";
+        approveMerchantOn(sharedHuifuId, "Settlement search A " + suffix, "NORMAL", "1", true, "SEARCH-A", "餐饮服务", "13800000007");
+        approveMerchantOn(sharedHuifuId, "Settlement search B " + suffix, "NORMAL", "1", true, "SEARCH-B", "餐饮服务", "13800000008");
+
+        List<Map<String, Object>> rows = recordsOf(fetch("Settlement search A " + suffix, null, null, null));
+
+        assertThat(rows)
+                .as("按商家筛的是「看谁名下的收款主体」,共用主体下也能搜到")
+                .filteredOn(record -> String.valueOf(record.get("providerTransactionNo")).endsWith(sharedHuifuId))
+                .isNotEmpty()
+                .allSatisfy(record -> assertThat(record).containsEntry("merchantName", "Settlement search A " + suffix));
+        verify(settlementRecordGateway).query(eq(sharedHuifuId), any(), any(), anyInt());
     }
 
     /** 关闭的子商户回的是通道原话;它只在真的被查到时才会成为一条失败提示。 */

--
Gitblit v1.7.1