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