Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,13 +277,16 @@ private List<LocalTime> getAvailableTimes() {
}

public RouteDetailResponseDto getRouteDetail(Long routeId, LocalDate date, LocalTime startTime) {
// 1. 루트 엔티티 조회 (없으면 예외)
Route route = findRouteById(routeId);

// 2. 해당 루트에 속한 장소 리스트 조회 (방문 순서대로 정렬)
List<RoutePlace> routePlaces = routePlaceRepository.findByRouteIdOrderByVisitOrder(routeId);

List<RouteDetailResponseDto.RoutePlaceDto> placeDtos = routePlaces.isEmpty()
? createMockRoutePlaces(startTime)
: convertToRoutePlaceDtos(routePlaces, startTime);
// 3. 조회 결과를 DTO로 변환 (목데이터 생성 부분 제거)
List<RouteDetailResponseDto.RoutePlaceDto> placeDtos = convertToRoutePlaceDtos(routePlaces, startTime);

// 4. 최종 응답 객체 생성
return buildRouteDetailResponse(route, placeDtos);
}

Expand All @@ -297,6 +300,7 @@ private RouteDetailResponseDto buildRouteDetailResponse(Route route, List<RouteD
.routeId(route.getId())
.title(route.getTitleKo())
.description(route.getDescriptionKo())
.imageUrl(route.getImageUrl())
.theme(route.getThemes().isEmpty() ? "" : route.getThemes().get(0).name())
.totalDistanceKm(BigDecimal.valueOf(route.getTotalDistance()))
.totalDurationMinutes(route.getTotalDurationMinutes())
Expand Down Expand Up @@ -345,64 +349,6 @@ private RouteDetailResponseDto.PlaceDto buildPlaceDto(RoutePlace routePlace) {
.build();
}

private List<RouteDetailResponseDto.RoutePlaceDto> 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<Place> places) {

return places.stream()
Expand Down