From 3da8557482779faed72a07c256b141a77abbae86 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 16 九月 2026 16:35:49 +0800
Subject: [PATCH] fix(payment): 退款结果在读订单与列表时收敛,并修掉通道流水号被覆盖

---
 talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantWorkServiceTests.java |   61 ++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantWorkServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantWorkServiceTests.java
index 54f6b64..2550d35 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantWorkServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantWorkServiceTests.java
@@ -107,6 +107,67 @@
                 .containsEntry("subsidyAmount", 14799L);
     }
 
+    @Test
+    void aCancelledOrderIsShownAsCancelledInsteadOfWaitingToBeVerified() {
+        String orderNo = insertOrder("GROUP_BUY", 2, 0, LocalDateTime.now());
+
+        assertThat(recordOf(list("group", "all"), orderNo))
+                .containsEntry("status", "cancelled")
+                .containsEntry("statusText", "已取消");
+        assertThat(orderNos(list("group", "pending_verification")))
+                .as("已取消的订单不是待核销:商户照它去核销只会被资金边界拒绝")
+                .doesNotContain(orderNo);
+        assertThat(orderNos(list("group", "closed"))).contains(orderNo);
+    }
+
+    @Test
+    void aRefundedOrderIsShownAsRefundedAndStopsWaitingToBeVerified() {
+        String orderNo = insertOrder("GROUP_BUY", 1, 0, LocalDateTime.now());
+        jdbc.update("update benefit_order set refund_status = 2 where order_no = ?", orderNo);
+
+        assertThat(recordOf(list("group", "all"), orderNo))
+                .containsEntry("status", "refunded")
+                .containsEntry("statusText", "已退款");
+        assertThat(orderNos(list("group", "pending_verification"))).doesNotContain(orderNo);
+        assertThat(orderNos(list("group", "closed"))).contains(orderNo);
+    }
+
+    @Test
+    void aRefundInFlightIsShownAsRefunding() {
+        String orderNo = insertOrder("GROUP_BUY", 1, 0, LocalDateTime.now());
+        jdbc.update("update benefit_order set refund_status = 1 where order_no = ?", orderNo);
+
+        assertThat(recordOf(list("group", "all"), orderNo)).containsEntry("statusText", "退款中");
+        assertThat(orderNos(list("group", "pending_verification"))).doesNotContain(orderNo);
+    }
+
+    @Test
+    void theOrderDetailCarriesTheSameClosedState() {
+        String orderNo = insertOrder("GROUP_BUY", 1, 0, LocalDateTime.now());
+        jdbc.update("update benefit_order set refund_status = 1 where order_no = ?", orderNo);
+
+        assertThat(merchantWorkService.order(orderNo, merchantId, storeId))
+                .containsEntry("status", "refunded")
+                .containsEntry("statusText", "退款中");
+        assertThat(merchantWorkService.order(insertOrder("GROUP_BUY", 2, 0, LocalDateTime.now()), merchantId, storeId))
+                .containsEntry("status", "cancelled");
+    }
+
+    private PageResult<Map<String, Object>> list(String category, String status) {
+        return merchantWorkService.orders(merchantId, storeId, 1, 50, new MerchantOrderQuery(category, status, null, null));
+    }
+
+    private Map<String, Object> recordOf(PageResult<Map<String, Object>> page, String orderNo) {
+        return page.records().stream()
+                .filter(record -> orderNo.equals(String.valueOf(record.get("orderNo"))))
+                .findFirst()
+                .orElseThrow(() -> new AssertionError("Order " + orderNo + " is missing from the merchant order list"));
+    }
+
+    private java.util.List<String> orderNos(PageResult<Map<String, Object>> page) {
+        return page.records().stream().map(record -> String.valueOf(record.get("orderNo"))).toList();
+    }
+
     private String insertOrder(String type, int orderStatus, int verifyStatus, LocalDateTime createdAt) {
         String orderNo = "ORDER-" + System.nanoTime();
         jdbc.update("""

--
Gitblit v1.7.1