From 39f6fca28e3f78abe48f08e474ec011abb990b36 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 09 九月 2026 10:39:21 +0800
Subject: [PATCH] update

---
 backend/src/test/java/com/tourguide/modules/finance/service/GuideWithdrawalServiceTest.java |   43 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/backend/src/test/java/com/tourguide/modules/finance/service/GuideWithdrawalServiceTest.java b/backend/src/test/java/com/tourguide/modules/finance/service/GuideWithdrawalServiceTest.java
index 3cc91d7..2775687 100644
--- a/backend/src/test/java/com/tourguide/modules/finance/service/GuideWithdrawalServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/finance/service/GuideWithdrawalServiceTest.java
@@ -7,6 +7,9 @@
 import com.tourguide.modules.finance.entity.GuideWithdrawalAccount;
 import com.tourguide.modules.finance.mapper.GuideWithdrawalMapper;
 import com.tourguide.modules.user.entity.GuideUser;
+import com.tourguide.modules.user.entity.GuideTeam;
+import com.tourguide.modules.user.mapper.GuideTeamMapper;
+import com.tourguide.modules.user.mapper.GuideUserMapper;
 import com.tourguide.modules.user.service.GuideUserService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -28,6 +31,8 @@
     private GuideWithdrawableBalanceService balanceService;
     private GuideWithdrawalStateService stateService;
     private GuideWithdrawalPayoutService payoutService;
+    private GuideTeamMapper teamMapper;
+    private GuideUserMapper guideUserMapper;
     private GuideWithdrawalService service;
 
     @BeforeEach
@@ -38,21 +43,26 @@
         balanceService = mock(GuideWithdrawableBalanceService.class);
         stateService = mock(GuideWithdrawalStateService.class);
         payoutService = mock(GuideWithdrawalPayoutService.class);
+        teamMapper = mock(GuideTeamMapper.class);
+        guideUserMapper = mock(GuideUserMapper.class);
         service = new GuideWithdrawalService(withdrawalMapper, settlementService,
-                guideUserService, balanceService, stateService, payoutService);
+                guideUserService, balanceService, stateService, payoutService, teamMapper, guideUserMapper);
     }
 
     @Test
     void createShouldReserveAvailableBalanceAndPersistCardSnapshot() throws Exception {
         GuideUser guide = new GuideUser();
+        guide.setId(8L);
         guide.setRealName("张三");
         guide.setMobile("13800138000");
+        guide.setStatus(1);
         GuideWithdrawalAccount account = new GuideWithdrawalAccount();
         account.setId(10);
         account.setHuifuId("HF100");
         account.setBankName("招商银行");
         account.setBankCardCode("6225888888885678");
         when(guideUserService.findEnabledById(8L)).thenReturn(guide);
+        when(guideUserMapper.selectForUpdate(8L)).thenReturn(guide);
         when(settlementService.requireApprovedCardForUpdate(8L, 10)).thenReturn(account);
         when(balanceService.debit(8L, new BigDecimal("200.00"))).thenReturn(true);
         doAnswer(invocation -> {
@@ -118,6 +128,37 @@
     }
 
     @Test
+    void createShouldReserveCollectionTeamBalance() {
+        GuideUser guide = new GuideUser();
+        guide.setId(8L);
+        guide.setTeamId(6L);
+        guide.setRealName("张三");
+        guide.setMobile("13800138000");
+        guide.setStatus(1);
+        GuideTeam team = new GuideTeam();
+        team.setId(6L);
+        team.setCollectionGuideId(8L);
+        GuideWithdrawalAccount account = new GuideWithdrawalAccount();
+        account.setId(10);
+        account.setBankName("招商银行");
+        account.setBankCardCode("6225888888885678");
+        when(guideUserService.findEnabledById(8L)).thenReturn(guide);
+        when(guideUserMapper.selectForUpdate(8L)).thenReturn(guide);
+        when(teamMapper.selectById(6L)).thenReturn(team);
+        when(settlementService.requireApprovedCardForUpdate(8L, 10)).thenReturn(account);
+        when(balanceService.debitTeam(6L, new BigDecimal("200.00"))).thenReturn(true);
+        GuideWithdrawalCreateRequest request = new GuideWithdrawalCreateRequest();
+        request.setAmount(new BigDecimal("200.00"));
+        request.setBankCardId(10);
+
+        WithdrawalResponse response = service.create(8L, request);
+
+        assertThat(response.getTeamId()).isEqualTo(6L);
+        verify(balanceService).debitTeam(6L, new BigDecimal("200.00"));
+        verify(balanceService, never()).debit(8L, new BigDecimal("200.00"));
+    }
+
+    @Test
     void nonTerminalCashCallbackShouldRemainProcessing() {
         GuideWithdrawal withdrawal = processingWithdrawal();
         GuideWithdrawalAccount account = new GuideWithdrawalAccount();

--
Gitblit v1.7.1