From 280ef5100bece9b40ac51736aef037704a52a4ca Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 30 七月 2026 14:58:52 +0800
Subject: [PATCH] update
---
backend/src/main/java/com/tourguide/modules/finance/service/AdminFinanceService.java | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/backend/src/main/java/com/tourguide/modules/finance/service/AdminFinanceService.java b/backend/src/main/java/com/tourguide/modules/finance/service/AdminFinanceService.java
index 53542ac..7f8b108 100644
--- a/backend/src/main/java/com/tourguide/modules/finance/service/AdminFinanceService.java
+++ b/backend/src/main/java/com/tourguide/modules/finance/service/AdminFinanceService.java
@@ -57,7 +57,7 @@
Page<TourOrder> result = orderMapper.selectPage(new Page<TourOrder>(page, size), query);
PlatformSettingsResponse settings = settingsService.getSettings();
Map<Long, GuideUser> guides = loadGuides(result.getRecords());
- Map<Long, String> teams = loadTeams(guides.values());
+ Map<Long, String> teams = loadTeams(result.getRecords(), guides.values());
List<FinanceLedgerResponse> records = result.getRecords().stream()
.map(order -> toLedger(order, refund, settings, guides.get(order.getGuideId()), teams))
.collect(Collectors.toList());
@@ -133,9 +133,17 @@
private FinanceLedgerResponse toLedger(TourOrder order, boolean refund, PlatformSettingsResponse settings,
GuideUser guide, Map<Long, String> teams) {
BigDecimal amount = refund ? safeAmount(order.getRefundAmount()) : paymentAmount(order);
- BigDecimal commissionRate = settings.getCommissionRate().movePointLeft(2);
- BigDecimal platformIncome = amount.multiply(commissionRate).setScale(2, RoundingMode.HALF_UP);
- BigDecimal guideIncome = amount.subtract(platformIncome).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal orderAmount = paymentAmount(order);
+ BigDecimal guideIncome;
+ BigDecimal platformIncome;
+ if (order.getGuideEarningAmount() != null) {
+ guideIncome = order.getGuideEarningAmount().setScale(2, RoundingMode.HALF_UP);
+ platformIncome = orderAmount.subtract(guideIncome).setScale(2, RoundingMode.HALF_UP);
+ } else {
+ BigDecimal commissionRate = settings.getCommissionRate().movePointLeft(2);
+ platformIncome = orderAmount.multiply(commissionRate).setScale(2, RoundingMode.HALF_UP);
+ guideIncome = orderAmount.subtract(platformIncome).setScale(2, RoundingMode.HALF_UP);
+ }
if (refund) {
platformIncome = platformIncome.negate();
guideIncome = guideIncome.negate();
@@ -143,7 +151,10 @@
}
LocalDateTime settledAt = order.getCompletedAt() == null ? null
: order.getCompletedAt().plusDays(settings.getSettlementDays());
- String teamName = guide == null || guide.getTeamId() == null ? "个人导游" : teams.get(guide.getTeamId());
+ Long teamId = order.getCommissionTeamId() != null
+ ? order.getCommissionTeamId()
+ : guide == null ? null : guide.getTeamId();
+ String teamName = teamId == null ? "个人导游" : teams.get(teamId);
return new FinanceLedgerResponse(order.getId(),
refund ? order.getRefundOrderNo() : "IN" + order.getOrderNo(), order.getOrderNo(),
paymentAmount(order), platformIncome, guideIncome, order.getGuideName(), order.getGuideMobile(),
@@ -160,9 +171,11 @@
.collect(Collectors.toMap(GuideUser::getId, guide -> guide));
}
- private Map<Long, String> loadTeams(java.util.Collection<GuideUser> guides) {
+ private Map<Long, String> loadTeams(List<TourOrder> orders, java.util.Collection<GuideUser> guides) {
Set<Long> teamIds = guides.stream().map(GuideUser::getTeamId)
.filter(id -> id != null).collect(Collectors.toSet());
+ orders.stream().map(TourOrder::getCommissionTeamId)
+ .filter(id -> id != null).forEach(teamIds::add);
if (teamIds.isEmpty()) return new HashMap<Long, String>();
return guideTeamMapper.selectBatchIds(teamIds).stream()
.collect(Collectors.toMap(GuideTeam::getId, GuideTeam::getTeamName));
--
Gitblit v1.7.1