diff --git a/src/main/java/com/meetkey/server/domain/badge/service/BadgeService.java b/src/main/java/com/meetkey/server/domain/badge/service/BadgeService.java index d2d3b0c..d25b700 100644 --- a/src/main/java/com/meetkey/server/domain/badge/service/BadgeService.java +++ b/src/main/java/com/meetkey/server/domain/badge/service/BadgeService.java @@ -85,7 +85,7 @@ public void rewardPoints(Member member, ReasonType reasonType) { public void checkAuthentication(Long memberId) { Member member = getMember(memberId); - if (Boolean.TRUE.equals(member.isVerified())) { + if (Boolean.TRUE.equals(member.isVerified()) && !hasAlreadyReceived(member, ReasonType.AUTH)) { rewardPoints(member, ReasonType.AUTH); } } @@ -100,7 +100,7 @@ public void checkProfileCompletion(Long memberId) { member.getTargetLanguage() != null && member.getTargetLanguageLevel() != null; - if (isComplete) { + if (isComplete && !hasAlreadyReceived(member, ReasonType.PROFILE)) { rewardPoints(member, ReasonType.PROFILE); } } @@ -109,7 +109,7 @@ public void checkProfileCompletion(Long memberId) { public void checkPositiveEvaluation(Long memberId) { Member member = getMember(memberId); - if (member.getRecommendCount() >= 10) { + if (member.getRecommendCount() >= 10 && !hasAlreadyReceived(member, ReasonType.PROFILE)) { rewardPoints(member, ReasonType.POSITIVE); } } @@ -120,6 +120,10 @@ public void rewardRepeatable(Long memberId, ReasonType reasonType) { rewardPoints(member, reasonType); } + private boolean hasAlreadyReceived(Member member, ReasonType reasonType) { + return pointHistoryRepository.existsByMemberAndReasonType(member, reasonType); + } + // 사용자 찾기 메소드 private Member getMember(Long memberId) { return memberRepository.findById(memberId) diff --git a/src/main/java/com/meetkey/server/domain/member/controller/ProfileController.java b/src/main/java/com/meetkey/server/domain/member/controller/ProfileController.java index 59f9a5e..1dc3924 100644 --- a/src/main/java/com/meetkey/server/domain/member/controller/ProfileController.java +++ b/src/main/java/com/meetkey/server/domain/member/controller/ProfileController.java @@ -167,6 +167,7 @@ public ResponseEntity> getMyProfile( @ApiResponse(description = "200", responseCode = "요청 성공", content = @Content(schema = @Schema(implementation = OtherProfileResponse.class))), @ApiResponse(responseCode = "400", description = "MEMBER4041: 해당 사용자를 찾을 수 없습니다., MEMBER4031: 차단된 or 차단한 사용자의 프로필은 조회할 수 없습니다.") }) + @GetMapping("/{targetId}") public ResponseEntity> getOtherProfile( @AuthenticationPrincipal CustomUserDetails customUserDetails,