From 2678a4278d893df26a0f948f1d360db862ec7df8 Mon Sep 17 00:00:00 2001 From: koosco Date: Sun, 24 Nov 2024 02:27:15 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A9=ED=91=9C-=ED=80=98=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../groom/orbit/common/exception/ErrorCode.java | 1 + .../groom/orbit/goal/app/MemberGoalService.java | 15 +++++++++++++++ .../query/MemberGoalQueryController.java | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/src/main/java/com/groom/orbit/common/exception/ErrorCode.java b/src/main/java/com/groom/orbit/common/exception/ErrorCode.java index e0d5869..e5559eb 100644 --- a/src/main/java/com/groom/orbit/common/exception/ErrorCode.java +++ b/src/main/java/com/groom/orbit/common/exception/ErrorCode.java @@ -23,6 +23,7 @@ public enum ErrorCode { NOT_FOUND_S3(40406, HttpStatus.NOT_FOUND, "해당 파일을 찾을 수 없습니다."), NOT_FOUND_QUEST(40407, HttpStatus.NOT_FOUND, "해당 퀘스트가 존재하지 않습니다."), NOT_FOUND_GOAL_CATEGORY(40408, HttpStatus.NOT_FOUND, "해당 목표 카테고리가 존재하지 않습니다."), + NOT_FOUND_MEMBER_GOAL(40409, HttpStatus.NOT_FOUND, "해당 사용자 목표가 존재하지 않습니다."), // Invalid Argument Error MISSING_REQUEST_PARAMETER(40000, HttpStatus.BAD_REQUEST, "필수 요청 파라미터가 누락되었습니다."), diff --git a/src/main/java/com/groom/orbit/goal/app/MemberGoalService.java b/src/main/java/com/groom/orbit/goal/app/MemberGoalService.java index 5d9a006..557233e 100644 --- a/src/main/java/com/groom/orbit/goal/app/MemberGoalService.java +++ b/src/main/java/com/groom/orbit/goal/app/MemberGoalService.java @@ -18,6 +18,7 @@ import com.groom.orbit.goal.dao.MemberGoalRepository; import com.groom.orbit.goal.dao.entity.Goal; import com.groom.orbit.goal.dao.entity.MemberGoal; +import com.groom.orbit.goal.dao.entity.Quest; import com.groom.orbit.member.app.MemberQueryService; import com.groom.orbit.member.dao.jpa.entity.Member; @@ -136,4 +137,18 @@ private List getGoalTitle(List startIds) { public List findMemberGoalsByGoalId(Long goalId) { return memberGoalRepository.findAllByGoalId(goalId); } + + public GetMemberGoalResponseDto findGoal(Long memberGoalId) { + MemberGoal memberGoal = findMemberGoal(memberGoalId); + List quests = memberGoal.getQuests(); + List questDtos = + quests.stream() + .map( + quest -> + new GetQuestResponseDto( + quest.getQuestId(), quest.getTitle(), quest.getIsComplete())) + .toList(); + return new GetMemberGoalResponseDto( + memberGoal.getMemberGoalId(), memberGoal.getTitle(), questDtos); + } } diff --git a/src/main/java/com/groom/orbit/goal/controller/query/MemberGoalQueryController.java b/src/main/java/com/groom/orbit/goal/controller/query/MemberGoalQueryController.java index da97600..2185fe7 100644 --- a/src/main/java/com/groom/orbit/goal/controller/query/MemberGoalQueryController.java +++ b/src/main/java/com/groom/orbit/goal/controller/query/MemberGoalQueryController.java @@ -3,6 +3,7 @@ import java.util.List; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -27,6 +28,12 @@ public ResponseDto> getGoals( return ResponseDto.ok(memberGoalService.findGoals(memberId, isComplete)); } + @GetMapping("/{member_goal_id}") + public ResponseDto getGoal( + @PathVariable("member_goal_id") Long memberGoalId) { + return ResponseDto.ok(memberGoalService.findGoal(memberGoalId)); + } + @GetMapping("/recommend") public ResponseDto getRecommendedGoals(@AuthMember Long memberId) { return ResponseDto.ok(memberGoalService.findMemberGoalNotCompleted(memberId));