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