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/main/java/com/tourguide/modules/finance/service/GuideWithdrawalStateService.java |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawalStateService.java b/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawalStateService.java
index e04df87..610d936 100644
--- a/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawalStateService.java
+++ b/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawalStateService.java
@@ -17,6 +17,7 @@
 public class GuideWithdrawalStateService {
     static final String PENDING = "PENDING";
     static final String TRANSFERRING = "TRANSFERRING";
+    static final String TRANSFER_FAILED = "TRANSFER_FAILED";
     static final String TRANSFERRED = "TRANSFERRED";
     static final String PROCESSING = "PROCESSING";
     static final String APPROVED = "APPROVED";
@@ -37,9 +38,13 @@
     @Transactional
     public WithdrawalResponse reject(Long id, String remark, String processor) {
         GuideWithdrawal withdrawal = requireForUpdate(id);
-        if (!PENDING.equals(withdrawal.getStatus())) throw new BusinessException(409, "提现申请已处理");
+        if (!canProcess(withdrawal)) throw new BusinessException(409, "提现申请已处理");
         if (!StringUtils.hasText(remark)) throw new BusinessException(400, "驳回提现时请填写处理备注");
-        balanceService.credit(withdrawal.getGuideId(), withdrawal.getAmount());
+        if (withdrawal.getTeamId() == null) {
+            balanceService.credit(withdrawal.getGuideId(), withdrawal.getAmount());
+        } else {
+            balanceService.creditTeam(withdrawal.getTeamId(), withdrawal.getAmount());
+        }
         withdrawal.setStatus(REJECTED);
         withdrawal.setAuditRemark(remark.trim());
         withdrawal.setProcessor(processor);
@@ -51,7 +56,7 @@
     @Transactional
     public GuideWithdrawal prepareTransfer(Long id, String remark, String processor) {
         GuideWithdrawal withdrawal = requireForUpdate(id);
-        if (!PENDING.equals(withdrawal.getStatus())) throw new BusinessException(409, "提现申请已处理");
+        if (!canProcess(withdrawal)) throw new BusinessException(409, "提现申请已处理");
         LocalDateTime now = LocalDateTime.now();
         withdrawal.setStatus(TRANSFERRING);
         withdrawal.setTransferReqSeqId(sequence("TF"));
@@ -91,7 +96,7 @@
     public GuideWithdrawal markTransferFailed(Long id, String message) {
         GuideWithdrawal withdrawal = requireForUpdate(id);
         if (!TRANSFERRING.equals(withdrawal.getStatus())) return withdrawal;
-        withdrawal.setStatus(PENDING);
+        withdrawal.setStatus(TRANSFER_FAILED);
         withdrawal.setPayoutMessage(limit(message));
         update(withdrawal);
         return withdrawal;
@@ -178,6 +183,10 @@
         return withdrawal;
     }
 
+    private boolean canProcess(GuideWithdrawal withdrawal) {
+        return PENDING.equals(withdrawal.getStatus()) || TRANSFER_FAILED.equals(withdrawal.getStatus());
+    }
+
     private void update(GuideWithdrawal withdrawal) {
         withdrawal.setUpdatedAt(LocalDateTime.now());
         if (withdrawalMapper.updateById(withdrawal) != 1) {

--
Gitblit v1.7.1