diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/controller/AICourseController.java b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/controller/AICourseController.java index 4554ad81..1f693f92 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/controller/AICourseController.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/controller/AICourseController.java @@ -5,7 +5,6 @@ import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseIdResponse; import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseItineraryResponse; import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseResponse; -import com.umc.yeogi_gal_lae.api.aiCourse.dto.DailyItineraryResponse; import com.umc.yeogi_gal_lae.api.aiCourse.repository.AICourseRepository; import com.umc.yeogi_gal_lae.api.aiCourse.service.AICourseService; import com.umc.yeogi_gal_lae.api.place.domain.Place; @@ -61,30 +60,17 @@ public Response getStoredAICourse( @PathVariable Long aiCourseId) { Optional aiCourseOpt = aiCourseRepository.findById(aiCourseId); if (aiCourseOpt.isEmpty()) { - return Response.of(ErrorCode.NOT_FOUND, null); + return Response.of(ErrorCode.NOT_FOUND); } AICourse aiCourse = aiCourseOpt.get(); - // TripPlan 검증: aiCourse에 연결된 TripPlan의 id와 입력받은 tripPlanId가 동일해야 함 if (!aiCourse.getTripPlan().getId().equals(tripPlanId)) { - return Response.of(ErrorCode.NOT_FOUND, null); + return Response.of(ErrorCode.NOT_FOUND); } Map> courseMap = aiCourseService.getStoredAICourseById(aiCourseId); if (courseMap.isEmpty()) { - return Response.of(ErrorCode.NOT_FOUND, null); + return Response.of(ErrorCode.NOT_FOUND); } - // Room 정보 - String roomName = aiCourse.getTripPlan().getRoom().getName(); - int totalRoomMember = (aiCourse.getTripPlan().getRoom().getRoomMembers() != null) - ? aiCourse.getTripPlan().getRoom().getRoomMembers().size() : 0; - // dailyItineraries 변환 - List dailyItineraries = AICourseConverter.toDailyItineraryResponseList(courseMap); - - // 전체 응답 DTO 생성 - AICourseItineraryResponse responseDTO = AICourseItineraryResponse.builder() - .roomName(roomName) - .totalRoomMember(totalRoomMember) - .dailyItineraries(dailyItineraries) - .build(); + AICourseItineraryResponse responseDTO = AICourseConverter.toAICourseItineraryResponse(aiCourse, courseMap); return Response.of(SuccessCode.OK, responseDTO); } diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/converter/AICourseConverter.java b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/converter/AICourseConverter.java index 7f703b31..9fba6752 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/converter/AICourseConverter.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/converter/AICourseConverter.java @@ -1,10 +1,12 @@ package com.umc.yeogi_gal_lae.api.aiCourse.converter; import com.umc.yeogi_gal_lae.api.aiCourse.domain.AICourse; +import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseItineraryResponse; import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseResponse; import com.umc.yeogi_gal_lae.api.aiCourse.dto.DailyItineraryResponse; import com.umc.yeogi_gal_lae.api.place.converter.PlaceConverter; import com.umc.yeogi_gal_lae.api.place.domain.Place; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -12,7 +14,8 @@ public class AICourseConverter { - public static List toDailyItineraryResponseList(Map> courseMap) { + public static List toDailyItineraryResponseList(Map> courseMap, + String startDate) { // 기존의 roomName과 totalRoomMember 정보를 제거하고 day, places만 포함하도록 함 return courseMap.entrySet().stream() .map(entry -> DailyItineraryResponse.builder() @@ -31,4 +34,25 @@ public static AICourseResponse toAICourseResponse(AICourse aiCourse) { .roomId(aiCourse.getTripPlan().getRoom().getId()) .build(); } + + public static AICourseItineraryResponse toAICourseItineraryResponse(AICourse aiCourse, + Map> courseMap) { + // TripPlan의 startDate를 "yyyy-MM-dd" 형식으로 변환 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startDate = aiCourse.getTripPlan().getStartDate().format(formatter); + + // dailyItineraries 생성 (각 DailyItineraryResponse에 startDate 포함) + List dailyItineraries = toDailyItineraryResponseList(courseMap, startDate); + + String roomName = aiCourse.getTripPlan().getRoom().getName(); + int totalRoomMember = (aiCourse.getTripPlan().getRoom().getRoomMembers() != null) + ? aiCourse.getTripPlan().getRoom().getRoomMembers().size() : 0; + + return AICourseItineraryResponse.builder() + .roomName(roomName) + .totalRoomMember(totalRoomMember) + .startDate(startDate) + .dailyItineraries(dailyItineraries) + .build(); + } } diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/dto/AICourseItineraryResponse.java b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/dto/AICourseItineraryResponse.java index 0f9381f9..758d7e02 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/dto/AICourseItineraryResponse.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/aiCourse/dto/AICourseItineraryResponse.java @@ -1,6 +1,5 @@ package com.umc.yeogi_gal_lae.api.aiCourse.dto; - import java.util.List; import lombok.Builder; import lombok.Getter; @@ -10,5 +9,6 @@ public class AICourseItineraryResponse { private String roomName; private int totalRoomMember; + private String startDate; private List dailyItineraries; }