liujie
2026-09-14 15defa991fcd30b9fa60bab17d2230b5929bf2a2
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; }