From 4f6f15b818704079ff2e4e4719b798f48d68a335 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 11 九月 2026 13:52:19 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java b/backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java
index 88f32fa..7c65d5b 100644
--- a/backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java
@@ -67,6 +67,43 @@
         verify(balanceService, never()).credit(8L, new BigDecimal("90.00"));
     }
 
+    @Test
+    void shouldReverseSettledGuideEarningForRefund() {
+        TourOrder order = dueOrder(LocalDateTime.now());
+        order.setSettledAt(LocalDateTime.now());
+        order.setAmount(new BigDecimal("100.00"));
+        order.setPaymentAmount(new BigDecimal("100.00"));
+
+        service.reverseRefund(order, BigDecimal.ZERO, new BigDecimal("100.00"));
+
+        verify(balanceService).debitForRefund(8L, new BigDecimal("90.00"));
+    }
+
+    @Test
+    void shouldReverseOnlyIncrementalAmountForPartialRefund() {
+        TourOrder order = dueOrder(LocalDateTime.now());
+        order.setSettledAt(LocalDateTime.now());
+        order.setAmount(new BigDecimal("100.00"));
+        order.setPaymentAmount(new BigDecimal("100.00"));
+
+        service.reverseRefund(order, new BigDecimal("20.00"), new BigDecimal("50.00"));
+
+        verify(balanceService).debitForRefund(8L, new BigDecimal("27.00"));
+    }
+
+    @Test
+    void shouldReverseSettledTeamEarningForRefund() {
+        TourOrder order = dueOrder(LocalDateTime.now());
+        order.setSettledAt(LocalDateTime.now());
+        order.setCommissionTeamId(6L);
+        order.setAmount(new BigDecimal("100.00"));
+        order.setPaymentAmount(new BigDecimal("100.00"));
+
+        service.reverseRefund(order, BigDecimal.ZERO, new BigDecimal("100.00"));
+
+        verify(balanceService).debitTeamForRefund(6L, new BigDecimal("90.00"));
+    }
+
     private TourOrder dueOrder(LocalDateTime dueAt) {
         TourOrder order = new TourOrder();
         order.setId(10L);

--
Gitblit v1.7.1