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/main/java/com/tourguide/modules/finance/service/GuideWithdrawableBalanceService.java |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawableBalanceService.java b/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawableBalanceService.java
index 84ab601..23c9f68 100644
--- a/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawableBalanceService.java
+++ b/backend/src/main/java/com/tourguide/modules/finance/service/GuideWithdrawableBalanceService.java
@@ -29,6 +29,12 @@
         return value.signum() > 0 && guideUserMapper.decreaseBalance(guideId, value) == 1;
     }
 
+    /** 退款冲正只扣除当前余额,余额不足时保留为零,避免退款回调因余额竞争失败。 */
+    public boolean debitForRefund(Long guideId, BigDecimal amount) {
+        BigDecimal value = money(amount);
+        return value.signum() > 0 && guideUserMapper.decreaseBalanceForRefund(guideId, value) == 1;
+    }
+
     public void credit(Long guideId, BigDecimal amount) {
         BigDecimal value = money(amount);
         if (value.signum() == 0) return;
@@ -49,6 +55,12 @@
                 && guideTeamMapper.decreaseBalance(teamId, value) == 1;
     }
 
+    public boolean debitTeamForRefund(Long teamId, BigDecimal amount) {
+        BigDecimal value = money(amount);
+        return teamId != null && value.signum() > 0
+                && guideTeamMapper.decreaseBalanceForRefund(teamId, value) == 1;
+    }
+
     public void creditTeam(Long teamId, BigDecimal amount) {
         BigDecimal value = money(amount);
         if (value.signum() == 0) return;

--
Gitblit v1.7.1