From 6404beaaf989cba4fd43f02aa3edce5e17ad84ab Mon Sep 17 00:00:00 2001 From: djeu1116 Date: Wed, 11 Feb 2026 16:48:44 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A0=90=EC=88=98=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=20=EC=A7=80=EA=B8=89=20=EB=B0=A9=EC=A7=80=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/badge/service/BadgeService.java | 10 +++++++--- .../domain/member/controller/ProfileController.java | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) 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,