From 82a8bc62d5b9d5d607f6952329952b17eda2f0a0 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 14 九月 2026 15:44:34 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java |   26 +++++++++++++++++++++++++-
 1 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java b/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
index ce4f145..30de603 100644
--- a/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/order/service/HuifuRefundCallbackServiceTest.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.tourguide.common.huifu.properties.HuiFuProperties;
+import com.tourguide.modules.finance.service.GuideBalanceSettlementService;
 import com.tourguide.modules.order.domain.OrderStatus;
 import com.tourguide.modules.order.domain.RefundStatus;
 import com.tourguide.modules.order.entity.TourOrder;
@@ -12,6 +13,7 @@
 import org.junit.jupiter.api.Test;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
@@ -23,6 +25,7 @@
     private TourOrderMapper orderMapper;
     private HuifuRefundCallbackService callbackService;
     private GuideSessionTransitionService sessionTransitionService;
+    private GuideBalanceSettlementService balanceSettlementService;
 
     @BeforeEach
     void setUp() {
@@ -30,7 +33,9 @@
         properties.setHuifuId("merchant-1");
         orderMapper = mock(TourOrderMapper.class);
         sessionTransitionService = mock(GuideSessionTransitionService.class);
-        callbackService = new HuifuRefundCallbackService(properties, orderMapper, null, null,
+        balanceSettlementService = mock(GuideBalanceSettlementService.class);
+        callbackService = new HuifuRefundCallbackService(properties, orderMapper, null,
+                balanceSettlementService,
                 sessionTransitionService);
     }
 
@@ -103,6 +108,25 @@
     }
 
     @Test
+    void successCallbackShouldReverseSettledGuideEarning() {
+        TourOrder order = refundingOrder();
+        order.setGuideId(8L);
+        order.setAmount(new BigDecimal("100.00"));
+        order.setPaymentAmount(new BigDecimal("100.00"));
+        order.setGuideEarningAmount(new BigDecimal("90.00"));
+        order.setSettledAt(LocalDateTime.of(2026, 8, 2, 12, 0));
+        when(orderMapper.selectByRefundOrderNoForUpdate("RF001")).thenReturn(order);
+
+        JSONObject body = successBody();
+        body.put("ord_amt", "36.00");
+
+        assertThat(callbackService.handle(body)).isTrue();
+
+        verify(balanceSettlementService).reverseRefund(order, BigDecimal.ZERO,
+                new BigDecimal("36.00"));
+    }
+
+    @Test
     void pendingMeetingSuccessCallbackShouldRestoreGuideSession() {
         TourOrder order = refundingOrder();
         order.setStatus(OrderStatus.PENDING_MEETING.getCode());

--
Gitblit v1.7.1