diff --git a/src/main/java/com/mey/backend/domain/route/dto/RouteDetailResponseDto.java b/src/main/java/com/mey/backend/domain/route/dto/RouteDetailResponseDto.java index bbf65e7..b8fe34d 100644 --- a/src/main/java/com/mey/backend/domain/route/dto/RouteDetailResponseDto.java +++ b/src/main/java/com/mey/backend/domain/route/dto/RouteDetailResponseDto.java @@ -20,6 +20,7 @@ public class RouteDetailResponseDto { private String title; private String description; private String theme; + private String imageUrl; private BigDecimal totalDistanceKm; private Integer totalDurationMinutes; private Integer estimatedCost; diff --git a/src/main/java/com/mey/backend/domain/route/service/RouteService.java b/src/main/java/com/mey/backend/domain/route/service/RouteService.java index 76fdcbf..df9c128 100644 --- a/src/main/java/com/mey/backend/domain/route/service/RouteService.java +++ b/src/main/java/com/mey/backend/domain/route/service/RouteService.java @@ -277,13 +277,16 @@ private List getAvailableTimes() { } public RouteDetailResponseDto getRouteDetail(Long routeId, LocalDate date, LocalTime startTime) { + // 1. 루트 엔티티 조회 (없으면 예외) Route route = findRouteById(routeId); + + // 2. 해당 루트에 속한 장소 리스트 조회 (방문 순서대로 정렬) List routePlaces = routePlaceRepository.findByRouteIdOrderByVisitOrder(routeId); - List placeDtos = routePlaces.isEmpty() - ? createMockRoutePlaces(startTime) - : convertToRoutePlaceDtos(routePlaces, startTime); + // 3. 조회 결과를 DTO로 변환 (목데이터 생성 부분 제거) + List placeDtos = convertToRoutePlaceDtos(routePlaces, startTime); + // 4. 최종 응답 객체 생성 return buildRouteDetailResponse(route, placeDtos); } @@ -297,6 +300,7 @@ private RouteDetailResponseDto buildRouteDetailResponse(Route route, List createMockRoutePlaces(LocalTime startTime) { - LocalTime baseStartTime = Optional.ofNullable(startTime).orElse(DEFAULT_START_TIME); - - return Arrays.asList( - RouteDetailResponseDto.RoutePlaceDto.builder() - .sequenceOrder(1) - .place(RouteDetailResponseDto.PlaceDto.builder() - .placeId(1L) - .name("명동 쇼핑센터") - .description("명동의 대표적인 쇼핑센터") - .latitude(new BigDecimal("37.563600")) - .longitude(new BigDecimal("126.982400")) - .address("서울특별시 중구 명동길 14") - .imageUrls(List.of("https://example.com/place1.jpg")) - .openingHours(Map.of( - "monday", "10:00-22:00", - "tuesday", "10:00-22:00", - "wednesday", "10:00-22:00", - "thursday", "10:00-22:00", - "friday", "10:00-22:00", - "saturday", "10:00-22:00", - "sunday", "10:00-21:00" - )) - .build()) - .recommendedDurationMinutes(90) - .estimatedArrivalTime(baseStartTime) - .estimatedDepartureTime(baseStartTime.plusMinutes(90)) - .notes("쇼핑과 브런치를 즐길 수 있는 곳") - .build(), - RouteDetailResponseDto.RoutePlaceDto.builder() - .sequenceOrder(2) - .place(RouteDetailResponseDto.PlaceDto.builder() - .placeId(2L) - .name("명동성당") - .description("역사적인 명동성당") - .latitude(new BigDecimal("37.563500")) - .longitude(new BigDecimal("126.986200")) - .address("서울특별시 중구 명동길 74") - .imageUrls(List.of("https://example.com/place2.jpg")) - .openingHours(Map.of( - "monday", "06:00-21:00", - "tuesday", "06:00-21:00", - "wednesday", "06:00-21:00", - "thursday", "06:00-21:00", - "friday", "06:00-21:00", - "saturday", "06:00-21:00", - "sunday", "06:00-21:00" - )) - .build()) - .recommendedDurationMinutes(60) - .estimatedArrivalTime(baseStartTime.plusMinutes(105)) - .estimatedDepartureTime(baseStartTime.plusMinutes(165)) - .notes("역사와 문화를 체험할 수 있는 장소") - .build() - ); - } - - private Region chooseRegionByMajority(List places) { return places.stream()