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/main/java/com/tourguide/modules/finance/service/GuideBalanceSettlementService.java | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/backend/src/main/java/com/tourguide/modules/finance/service/GuideBalanceSettlementService.java b/backend/src/main/java/com/tourguide/modules/finance/service/GuideBalanceSettlementService.java
index 6c92169..72b9a9c 100644
--- a/backend/src/main/java/com/tourguide/modules/finance/service/GuideBalanceSettlementService.java
+++ b/backend/src/main/java/com/tourguide/modules/finance/service/GuideBalanceSettlementService.java
@@ -59,10 +59,16 @@
BigDecimal currentReversal = proratedEarning(order.getGuideEarningAmount(), current, paidAmount);
BigDecimal reversal = currentReversal.subtract(previousReversal).setScale(2, RoundingMode.HALF_UP);
if (reversal.signum() <= 0) return;
+ boolean debited;
if (order.getCommissionTeamId() != null) {
- balanceService.debitTeamForRefund(order.getCommissionTeamId(), reversal);
+ debited = balanceService.debitTeamForRefund(order.getCommissionTeamId(), reversal);
} else if (order.getGuideId() != null) {
- balanceService.debitForRefund(order.getGuideId(), reversal);
+ debited = balanceService.debitForRefund(order.getGuideId(), reversal);
+ } else {
+ return;
+ }
+ if (!debited) {
+ throw new BusinessException(500, "退款后导游收益冲正失败");
}
}
@@ -75,7 +81,7 @@
&& order.getGuideId() != null
&& order.getGuideEarningAmount() != null
&& order.getGuideEarningAmount().signum() >= 0
- && !RefundStatus.REFUNDED.matches(order.getRefundStatus());
+ && canSettleRefund(order.getRefundStatus());
}
private BigDecimal effectiveEarning(TourOrder order) {
@@ -94,4 +100,12 @@
private BigDecimal nonNegative(BigDecimal value) {
return value == null ? BigDecimal.ZERO : value.max(BigDecimal.ZERO);
}
+
+ private boolean canSettleRefund(String refundStatus) {
+ return refundStatus == null
+ || refundStatus.trim().isEmpty()
+ || RefundStatus.NONE.matches(refundStatus)
+ || RefundStatus.PARTIAL.matches(refundStatus)
+ || RefundStatus.REFUND_FAILED.matches(refundStatus);
+ }
}
--
Gitblit v1.7.1