From ac96848ecde99c3dd8a3ec8df0750c71d51933dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JunhyukPark=28=EB=B0=95=EC=A4=80=ED=98=81=29?= Date: Sun, 2 Feb 2025 21:22:49 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[CMAT-50]=20feat=20:=20=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EB=84=88=20=EC=83=9D=EC=84=B1=20=EB=8B=A4=EC=8B=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=B4=88=EA=B8=B0=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/member/service/MemberService.java | 6 +---- .../planner/controller/PlannerController.java | 14 +++++++++++ .../planner/converter/PlannerConverter.java | 23 +++++++++++++++++-- .../service/PlannerCommandService.java | 13 +++++------ 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/main/java/UMC/career_mate/domain/member/service/MemberService.java b/src/main/java/UMC/career_mate/domain/member/service/MemberService.java index eefa65f..6252dda 100644 --- a/src/main/java/UMC/career_mate/domain/member/service/MemberService.java +++ b/src/main/java/UMC/career_mate/domain/member/service/MemberService.java @@ -1,6 +1,5 @@ package UMC.career_mate.domain.member.service; -import UMC.career_mate.domain.chatgpt.GptAnswer; import UMC.career_mate.domain.chatgpt.repository.GptAnswerRepository; import UMC.career_mate.domain.job.Job; import UMC.career_mate.domain.job.Service.JobService; @@ -14,13 +13,10 @@ import UMC.career_mate.domain.recruit.enums.RecruitKeyword; import UMC.career_mate.global.response.exception.GeneralException; import UMC.career_mate.global.response.exception.code.CommonErrorCode; -import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @Service @Transactional(readOnly = true) @RequiredArgsConstructor @@ -40,7 +36,7 @@ public Member makeProfile(CreateProfileDTO request,Member member) { profileMember.createProfile(request, job); profileMember.completeProfile(); - plannerService.savePlanner(profileMember); + plannerService.initPlanner(profileMember); return profileMember; } diff --git a/src/main/java/UMC/career_mate/domain/planner/controller/PlannerController.java b/src/main/java/UMC/career_mate/domain/planner/controller/PlannerController.java index 86821c5..6a5f7bd 100644 --- a/src/main/java/UMC/career_mate/domain/planner/controller/PlannerController.java +++ b/src/main/java/UMC/career_mate/domain/planner/controller/PlannerController.java @@ -19,6 +19,20 @@ public class PlannerController { private final PlannerCommandService plannerCommandService; private final PlannerQueryService plannerQueryService; + @PostMapping + @Operation( + summary = "플래너 생성(TEST용)", + description = """ + [프로필 작성 완료시 플래너가 자동 생성되기 때문에, PATCH API를 사용해주시면 되겠습니다] + 요청한 멤버에 해당하는 빈 플래너를 생성합니다. + ``` + """) + + public ApiResponse initPlanner(@LoginMember Member member) { + plannerCommandService.initPlanner(member); + return ApiResponse.onSuccess("플래너 생성 완료"); + } + @PatchMapping @Operation( summary = "플래너 수정", diff --git a/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java b/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java index aa758ba..e081bbf 100644 --- a/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java +++ b/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java @@ -28,8 +28,27 @@ public static Planner toPlanner(Member member, CreatePlannerDTO createPlannerDTO .build(); } - public static List toPlannerList(Member member, List createPlannerDTOList){ - return createPlannerDTOList.stream().map(createPlannerDTO -> PlannerConverter.toPlanner(member, createPlannerDTO)).toList(); + public static Planner toInitialPlanner(Member member){ + return Planner + .builder() + .activityName("") + .startTime(null) + .endTime(null) + .specifics("") + .measurable("") + .achievable("") + .relevant("") + .timeBound("") + .otherPlans("") + .member(member) + .build(); + } + + public static List toInitialPlannerList(Member member){ + return List.of( + PlannerConverter.toInitialPlanner(member), + PlannerConverter.toInitialPlanner(member) + ); } public static PlannerResponseDTO toPlannerResponseDTO(Planner planner){ diff --git a/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java b/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java index 9093111..2ceb180 100644 --- a/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java +++ b/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java @@ -24,18 +24,17 @@ public class PlannerCommandService { private final PlannerRepository plannerRepository; - public void savePlanner(Member member){ + public void initPlanner(Member member){ + + if(member == null){ + throw new GeneralException(CommonErrorCode.NOT_FOUND_BY_MEMBER_ID); + } if(plannerRepository.existsByMember(member)){ throw new GeneralException(CommonErrorCode.PLANNER_EXISTS); } - List createPlannerDTOList = List.of( - CreatePlannerDTO.builder().build(), - CreatePlannerDTO.builder().build() - ); - - plannerRepository.saveAll(PlannerConverter.toPlannerList(member, createPlannerDTOList)); + plannerRepository.saveAll(PlannerConverter.toInitialPlannerList(member)); } public void editPlanner(Member member, CreatePlannerListDTO createPlannerListDTO){ From 7d1939a7459d6bba69d4b6dd1f4fb9fb24724bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JunhyukPark=28=EB=B0=95=EC=A4=80=ED=98=81=29?= Date: Sun, 2 Feb 2025 22:21:00 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[CMAT-50]=20feat:=EC=99=9C=EB=9E=98?= =?UTF-8?q?=ED=82=A4=20=EA=B4=80=EB=A0=A8=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/planner/repository/PlannerRepository.java | 1 - .../domain/planner/service/PlannerCommandService.java | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/UMC/career_mate/domain/planner/repository/PlannerRepository.java b/src/main/java/UMC/career_mate/domain/planner/repository/PlannerRepository.java index b8b56be..7fe53ae 100644 --- a/src/main/java/UMC/career_mate/domain/planner/repository/PlannerRepository.java +++ b/src/main/java/UMC/career_mate/domain/planner/repository/PlannerRepository.java @@ -10,6 +10,5 @@ public interface PlannerRepository extends JpaRepository { Boolean existsByMember(Member member); - Optional findPlannerByMember(Member member); List findByMember(Member member); } diff --git a/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java b/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java index 2ceb180..df31e1e 100644 --- a/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java +++ b/src/main/java/UMC/career_mate/domain/planner/service/PlannerCommandService.java @@ -39,6 +39,10 @@ public void initPlanner(Member member){ public void editPlanner(Member member, CreatePlannerListDTO createPlannerListDTO){ + if(!plannerRepository.existsByMember(member)){ + throw new GeneralException(CommonErrorCode.PLANNER_NOT_EXISTS); + } + List planners = plannerRepository.findByMember(member); List plannerDTOs = createPlannerListDTO.planners(); @@ -49,6 +53,10 @@ public void editPlanner(Member member, CreatePlannerListDTO createPlannerListDTO public void deletePlanner(Member member){ + if(!plannerRepository.existsByMember(member)){ + throw new GeneralException(CommonErrorCode.PLANNER_NOT_EXISTS); + } + List planners = plannerRepository.findByMember(member); plannerRepository.deleteAll(planners); From a3d068325d2cc57c968ea311d17332f16466bca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JunhyukPark=28=EB=B0=95=EC=A4=80=ED=98=81=29?= Date: Sun, 2 Feb 2025 22:45:38 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[CMAT-50]=20fix:=20=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EB=84=88=20=EC=A1=B0=ED=9A=8C=20=EA=B4=80=EB=A0=A8=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/planner/converter/PlannerConverter.java | 2 -- .../domain/planner/service/PlannerQueryService.java | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java b/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java index e081bbf..b847298 100644 --- a/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java +++ b/src/main/java/UMC/career_mate/domain/planner/converter/PlannerConverter.java @@ -6,9 +6,7 @@ import UMC.career_mate.domain.planner.dto.response.PlannerListResponseDTO; import UMC.career_mate.domain.planner.dto.response.PlannerResponseDTO; -import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; public class PlannerConverter { diff --git a/src/main/java/UMC/career_mate/domain/planner/service/PlannerQueryService.java b/src/main/java/UMC/career_mate/domain/planner/service/PlannerQueryService.java index b2709c9..5f47174 100644 --- a/src/main/java/UMC/career_mate/domain/planner/service/PlannerQueryService.java +++ b/src/main/java/UMC/career_mate/domain/planner/service/PlannerQueryService.java @@ -25,6 +25,11 @@ public class PlannerQueryService { public PlannerListResponseDTO getPlannerByMember(Member member) { List planners = plannerRepository.findByMember(member); + + if (planners.isEmpty()) { + throw new GeneralException(CommonErrorCode.PLANNER_NOT_EXISTS); + } + return PlannerConverter.toPlannerListResponseDTO(planners); } }