From 15defa991fcd30b9fa60bab17d2230b5929bf2a2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 14 九月 2026 17:20:20 +0800
Subject: [PATCH] update

---
 backend/src/main/java/com/tourguide/modules/order/service/GuideOrderMatchingService.java |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/backend/src/main/java/com/tourguide/modules/order/service/GuideOrderMatchingService.java b/backend/src/main/java/com/tourguide/modules/order/service/GuideOrderMatchingService.java
index c642ec7..a308761 100644
--- a/backend/src/main/java/com/tourguide/modules/order/service/GuideOrderMatchingService.java
+++ b/backend/src/main/java/com/tourguide/modules/order/service/GuideOrderMatchingService.java
@@ -58,9 +58,11 @@
         if (pricing == null || scenic == null) return false;
         for (GuideReceivingSession session : candidates) {
             LocalDateTime now = LocalDateTime.now();
+            int leadMinutes = positive(scenic.getFirstOrderLeadMinutes(), 15);
+            LocalDateTime serviceStartAt = now.plusMinutes(leadMinutes);
             boolean reserved = "GROUP".equals(mode)
-                    ? reserveGroup(session, order, pricing, scenic, now)
-                    : sessionMapper.assignPrivate(session.getId(), order.getPeopleCount(), now) == 1;
+                    ? reserveGroup(session, order, pricing, scenic, now, serviceStartAt)
+                    : sessionMapper.assignPrivate(session.getId(), order.getPeopleCount(), now, serviceStartAt) == 1;
             if (!reserved) continue;
             GuideUser guide = guideUserMapper.selectById(session.getGuideId());
             if (guide == null) continue;
@@ -86,13 +88,13 @@
     }
 
     private boolean reserveGroup(GuideReceivingSession session, TourOrder order, ScenicPricing pricing,
-                                 OperationScenicSpot scenic, LocalDateTime now) {
+                                 OperationScenicSpot scenic, LocalDateTime now, LocalDateTime serviceStartAt) {
         Integer maxPeople = pricing.getMaxParticipants();
         if (maxPeople == null || maxPeople < 1) return false;
         int leadMinutes = positive(scenic.getFirstOrderLeadMinutes(), 15);
         int cutoffMinutes = positive(scenic.getVisitorNoOrderMinutes(), leadMinutes);
         return sessionMapper.reserveGroupCapacity(session.getId(), order.getPeopleCount(), maxPeople, now,
-                now.plusMinutes(leadMinutes), now.plusMinutes(cutoffMinutes)) == 1;
+                serviceStartAt, now.plusMinutes(cutoffMinutes)) == 1;
     }
 
     private int positive(Integer value, int fallback) { return value == null || value < 1 ? fallback : value; }

--
Gitblit v1.7.1