From 24efcb050a3b0a05d95192d2624f3f600b9e0b04 Mon Sep 17 00:00:00 2001 From: djeu1116 Date: Tue, 10 Feb 2026 12:57:02 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=83=81=EB=8C=80=EB=B0=A9=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=20=EB=82=B4?= =?UTF-8?q?=EA=B0=80=20=EC=B0=A8=EB=8B=A8=ED=95=9C=20or=20=EC=B0=A8?= =?UTF-8?q?=EB=8B=A8=EB=8B=B9=ED=95=9C=20=EC=83=81=EB=8C=80=EB=B0=A9=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=A1=B0=ED=9A=8C=20=EB=B6=88?= =?UTF-8?q?=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/member/controller/ProfileController.java | 2 +- .../domain/member/exception/MemberErrorStatus.java | 3 ++- .../server/domain/member/service/ProfileService.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) 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 2f41536..59f9a5e 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 @@ -165,7 +165,7 @@ public ResponseEntity> getMyProfile( @Operation(summary = "상대방 프로필 조회 API", description = "타인의 프로필을 조회합니다.") @ApiResponses(value = { @ApiResponse(description = "200", responseCode = "요청 성공", content = @Content(schema = @Schema(implementation = OtherProfileResponse.class))), - @ApiResponse(responseCode = "400", description = "MEMBER4041: 해당 사용자를 찾을 수 없습니다.") + @ApiResponse(responseCode = "400", description = "MEMBER4041: 해당 사용자를 찾을 수 없습니다., MEMBER4031: 차단된 or 차단한 사용자의 프로필은 조회할 수 없습니다.") }) @GetMapping("/{targetId}") public ResponseEntity> getOtherProfile( diff --git a/src/main/java/com/meetkey/server/domain/member/exception/MemberErrorStatus.java b/src/main/java/com/meetkey/server/domain/member/exception/MemberErrorStatus.java index 4a4ae53..fa12398 100644 --- a/src/main/java/com/meetkey/server/domain/member/exception/MemberErrorStatus.java +++ b/src/main/java/com/meetkey/server/domain/member/exception/MemberErrorStatus.java @@ -18,7 +18,8 @@ public enum MemberErrorStatus implements BaseCode { // 회원 관련 MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "MEMBER4041", "해당 사용자를 찾을 수 없습니다."), INVALID_S3_KEY(HttpStatus.NOT_FOUND, "MEMBER4042", "저장된 프로필 사진을 찾을 수 없습니다."), - ALREADY_BLOCKED(HttpStatus.BAD_REQUEST, "MEMBER_4001", "이미 차단된 사용자입니다.") + ALREADY_BLOCKED(HttpStatus.BAD_REQUEST, "MEMBER_4001", "이미 차단된 사용자입니다."), + BLOCKED_MEMBER(HttpStatus.FORBIDDEN, "MEMBER4031", "차단당한 or 차단한 사용자의 프로필은 조회 불가능 합니다.") ; private final HttpStatus status; diff --git a/src/main/java/com/meetkey/server/domain/member/service/ProfileService.java b/src/main/java/com/meetkey/server/domain/member/service/ProfileService.java index 8b67806..b621f16 100644 --- a/src/main/java/com/meetkey/server/domain/member/service/ProfileService.java +++ b/src/main/java/com/meetkey/server/domain/member/service/ProfileService.java @@ -38,6 +38,7 @@ public class ProfileService { private final PreferenceRepository preferenceRepository; private final MemberLocationRepository memberLocationRepository; private final EvaluationRepository evaluationRepository; + private final MemberBlockRepository memberBlockRepository; private final BadgeService badgeService; private final GeocodingService geocodingService; private final S3Service s3Service; @@ -174,6 +175,16 @@ public OtherProfileResponse getOtherProfile(Long memberId, Long targetMemberId) Member me = getMember(memberId); Member target = getMember(targetMemberId); + // 내가 차단한 상태인지 확인 + boolean iBlockedTarget = memberBlockRepository.existsByMemberBlockIdFromIdAndMemberBlockIdToId(memberId, targetMemberId); + + // 상대가 나를 차단했는지 확인 + boolean targetBlockedMe = memberBlockRepository.existsByMemberBlockIdFromIdAndMemberBlockIdToId(targetMemberId, memberId); + + if (iBlockedTarget || targetBlockedMe) { + throw new MemberException(MemberErrorStatus.BLOCKED_MEMBER); + } + MemberLocation myLocation = memberLocationRepository.findByMember(me).orElse(null); MemberLocation targetLocation = memberLocationRepository.findByMember(target).orElse(null); // 나와의 거리 계산