From 09ad67610e04c5dcb994fea427ef7e29fadae1d7 Mon Sep 17 00:00:00 2001 From: Gwanghyeon-k Date: Tue, 18 Feb 2025 14:10:59 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[feat]=20startDate=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/aiCourse/dto/AICourseItineraryResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0f9381f..758d7e0 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; } From d72c39dcfd727e47529f9c2da70b51367bcb678f Mon Sep 17 00:00:00 2001 From: Gwanghyeon-k Date: Tue, 18 Feb 2025 14:12:13 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[feat]=20dto=20=EB=B3=80=ED=99=98=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiCourse/converter/AICourseConverter.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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 7f703b3..9fba675 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(); + } } From 0e90c7d45a705ec6887023b691073ba870219828 Mon Sep 17 00:00:00 2001 From: Gwanghyeon-k Date: Tue, 18 Feb 2025 14:12:34 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[feat]=20aiCourse=20=EC=A1=B0=ED=9A=8C=20ap?= =?UTF-8?q?i=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AICourseController.java | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) 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 4554ad8..1f693f9 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); }