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/test/java/com/tourguide/modules/order/service/GuideOrderMatchingServiceTest.java | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/backend/src/test/java/com/tourguide/modules/order/service/GuideOrderMatchingServiceTest.java b/backend/src/test/java/com/tourguide/modules/order/service/GuideOrderMatchingServiceTest.java
index a70200f..f364de6 100644
--- a/backend/src/test/java/com/tourguide/modules/order/service/GuideOrderMatchingServiceTest.java
+++ b/backend/src/test/java/com/tourguide/modules/order/service/GuideOrderMatchingServiceTest.java
@@ -13,6 +13,7 @@
import com.tourguide.modules.user.mapper.GuideRealtimeStatusMapper;
import com.tourguide.modules.user.mapper.GuideReceivingSessionMapper;
import com.tourguide.modules.user.mapper.GuideUserMapper;
+import org.mockito.ArgumentCaptor;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -85,6 +86,33 @@
verify(notificationService).notifyOrderAssigned(secondOrder);
}
+ @Test
+ void shouldApplyScenicLeadTimeToPrivateOrderSession() {
+ TourOrder order = privateOrder(3L);
+ GuideReceivingSession session = receivingSession("RECEIVING", 0);
+ session.setReceivingMode("PRIVATE");
+ ScenicPricing pricing = privatePricing();
+ OperationScenicSpot scenic = scenicSpot();
+ GuideUser guide = guide();
+
+ when(orderMapper.selectForUpdate(3L)).thenReturn(order);
+ when(sessionMapper.selectMatchCandidates(11L, 12L, "PRIVATE", "PRIVATE_QUICK"))
+ .thenReturn(Collections.singletonList(session));
+ when(pricingMapper.selectById(30L)).thenReturn(pricing);
+ when(scenicMapper.selectById(11L)).thenReturn(scenic);
+ when(guideUserMapper.selectById(7L)).thenReturn(guide);
+ when(sessionMapper.assignPrivate(eq(41L), eq(1), any(LocalDateTime.class), any(LocalDateTime.class)))
+ .thenReturn(1);
+
+ assertThat(service.match(3L)).isTrue();
+
+ ArgumentCaptor<LocalDateTime> now = ArgumentCaptor.forClass(LocalDateTime.class);
+ ArgumentCaptor<LocalDateTime> serviceStartAt = ArgumentCaptor.forClass(LocalDateTime.class);
+ verify(sessionMapper).assignPrivate(eq(41L), eq(1), now.capture(), serviceStartAt.capture());
+ assertThat(serviceStartAt.getValue()).isEqualTo(now.getValue().plusMinutes(10));
+ assertThat(order.getStatus()).isEqualTo(OrderStatus.PENDING_MEETING.getCode());
+ }
+
private TourOrder groupOrder(Long id) {
TourOrder order = new TourOrder();
order.setId(id);
@@ -94,6 +122,12 @@
order.setOrderType("GROUP_PREMIUM");
order.setPeopleCount(1);
order.setStatus(OrderStatus.PENDING_ACCEPT.getCode());
+ return order;
+ }
+
+ private TourOrder privateOrder(Long id) {
+ TourOrder order = groupOrder(id);
+ order.setOrderType("PRIVATE_QUICK");
return order;
}
@@ -120,6 +154,15 @@
return pricing;
}
+ private ScenicPricing privatePricing() {
+ ScenicPricing pricing = new ScenicPricing();
+ pricing.setId(30L);
+ pricing.setScenicSpotId(11L);
+ pricing.setServiceType("PRIVATE_QUICK");
+ pricing.setDiscountPrice(new BigDecimal("536.00"));
+ return pricing;
+ }
+
private OperationScenicSpot scenicSpot() {
OperationScenicSpot scenic = new OperationScenicSpot();
scenic.setId(11L);
--
Gitblit v1.7.1