diff --git a/src/main/java/com/challenge/api/controller/member/MemberController.java b/src/main/java/com/challenge/api/controller/member/MemberController.java index a8669dd..0f3a706 100644 --- a/src/main/java/com/challenge/api/controller/member/MemberController.java +++ b/src/main/java/com/challenge/api/controller/member/MemberController.java @@ -10,6 +10,7 @@ import com.challenge.api.controller.member.request.UpdateNicknameRequest; import com.challenge.api.service.member.MemberService; import com.challenge.api.service.member.response.MemberInfoResponse; +import com.challenge.api.service.member.response.MyPageResponse; import com.challenge.domain.member.Member; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -39,6 +40,11 @@ public ApiResponse getMemberProfileImg(@AuthMember Member member) { return ApiResponse.ok(memberService.getMemberProfileImg(member)); } + @GetMapping("/mypage") + public ApiResponse getMyPageInfo(@AuthMember Member member) { + return ApiResponse.ok(memberService.getMyPageInfo(member)); + } + @PostMapping("/nickname/valid") public ApiResponse checkNicknameIsValid(@RequestBody @Valid CheckNicknameRequest request) { return ApiResponse.ok(memberService.checkNicknameIsValid(request.toServiceRequest())); diff --git a/src/main/java/com/challenge/api/service/member/MemberService.java b/src/main/java/com/challenge/api/service/member/MemberService.java index f73ff31..3021f16 100644 --- a/src/main/java/com/challenge/api/service/member/MemberService.java +++ b/src/main/java/com/challenge/api/service/member/MemberService.java @@ -7,7 +7,9 @@ import com.challenge.api.service.member.request.UpdateJobYearServiceRequest; import com.challenge.api.service.member.request.UpdateNicknameServiceRequest; import com.challenge.api.service.member.response.MemberInfoResponse; +import com.challenge.api.service.member.response.MyPageResponse; import com.challenge.api.service.s3.S3ClientService; +import com.challenge.domain.challenge.ChallengeQueryRepository; import com.challenge.domain.job.Job; import com.challenge.domain.job.JobRepository; import com.challenge.domain.member.JobYear; @@ -26,6 +28,7 @@ public class MemberService { private final MemberRepository memberRepository; + private final ChallengeQueryRepository challengeQueryRepository; private final JobRepository jobRepository; private final S3ClientService s3ClientService; @@ -49,6 +52,19 @@ public String getMemberProfileImg(Member member) { return member.getProfileImg(); } + /** + * 회원 마이페이지 조회 메소드 + * + * @param member + * @return + */ + public MyPageResponse getMyPageInfo(Member member) { + Long ongoing = challengeQueryRepository.countOngoingChallengesBy(member); + Long succeed = challengeQueryRepository.countSucceedChallengesBy(member); + Long total = challengeQueryRepository.countAllChallengesBy(member); + return MyPageResponse.of(member, ongoing, succeed, total); + } + /** * 해당 닉네임이 사용 가능 여부를 조회하는 메소드 * diff --git a/src/main/java/com/challenge/api/service/member/response/MyPageResponse.java b/src/main/java/com/challenge/api/service/member/response/MyPageResponse.java new file mode 100644 index 0000000..66b6be1 --- /dev/null +++ b/src/main/java/com/challenge/api/service/member/response/MyPageResponse.java @@ -0,0 +1,32 @@ +package com.challenge.api.service.member.response; + +import com.challenge.domain.member.Member; +import lombok.Builder; +import lombok.Getter; + +@Getter +public class MyPageResponse { + + private final String profileImg; + private final Long ongoingCount; + private final Long succeedCount; + private final Long totalCount; + + @Builder + public MyPageResponse(String profileImg, Long ongoingCount, Long succeedCount, Long totalCount) { + this.profileImg = profileImg; + this.ongoingCount = ongoingCount; + this.succeedCount = succeedCount; + this.totalCount = totalCount; + } + + public static MyPageResponse of(Member member, Long ongoing, Long succeed, Long total) { + return MyPageResponse.builder() + .profileImg(member.getProfileImg()) + .ongoingCount(ongoing) + .succeedCount(succeed) + .totalCount(total) + .build(); + } + +} diff --git a/src/main/java/com/challenge/scheduler/NotificationScheduler.java b/src/main/java/com/challenge/scheduler/NotificationScheduler.java index aa21e78..da48ce9 100644 --- a/src/main/java/com/challenge/scheduler/NotificationScheduler.java +++ b/src/main/java/com/challenge/scheduler/NotificationScheduler.java @@ -32,7 +32,6 @@ public class NotificationScheduler { private static final String ACHIEVE_DAY_END_BODY = "님, 아직 달성할 수 있는 챌린지가 %d개 있어요!"; private static final int MAX_TITLES = 3; - /** * 새로운 챌린지 등록 알림 발송 */