From 3f341cca31effff904cc50c03adb62a41df6e5a4 Mon Sep 17 00:00:00 2001 From: Lee SeungHeon <51286325+dev-Crayon@users.noreply.github.com> Date: Wed, 31 Jan 2024 18:31:14 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]:=20=EC=B9=9C=EA=B5=AC=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=EC=97=AC=EB=B6=80=20=ED=99=95=EC=9D=B8=20API=20(#7?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관련 로직 작성 Related to: #70 --- .../SobokSobok/exception/SuccessCode.java | 1 + .../friend/application/FriendService.java | 17 +++++++++++++++++ .../SobokSobok/friend/ui/FriendController.java | 18 ++++++++++++++++++ .../infrastructure/NoticeRepository.java | 5 +++++ 4 files changed, 41 insertions(+) diff --git a/src/main/java/io/sobok/SobokSobok/exception/SuccessCode.java b/src/main/java/io/sobok/SobokSobok/exception/SuccessCode.java index 927e002..bf79b3b 100644 --- a/src/main/java/io/sobok/SobokSobok/exception/SuccessCode.java +++ b/src/main/java/io/sobok/SobokSobok/exception/SuccessCode.java @@ -35,6 +35,7 @@ public enum SuccessCode { GET_FRIEND_LIST_SUCCESS(HttpStatus.OK, "친구 리스트 조회에 성공했습니다."), HANDLE_FRIEND_REQUEST_SUCCESS(HttpStatus.OK, "공유 응답에 성공했습니다."), UPDATE_FRIEND_NAME_SUCCESS(HttpStatus.OK, "멤버 이름 수정에 성공했습니다."), + GET_REQUEST_FRIEND_SUCCESS(HttpStatus.OK, "친구 요청 여부 조회에 성공했습니다."), // notice GET_NOTICE_LIST_SUCCESS(HttpStatus.OK, "알림 리스트 조회에 성공했습니다."), diff --git a/src/main/java/io/sobok/SobokSobok/friend/application/FriendService.java b/src/main/java/io/sobok/SobokSobok/friend/application/FriendService.java index 576d387..9447652 100644 --- a/src/main/java/io/sobok/SobokSobok/friend/application/FriendService.java +++ b/src/main/java/io/sobok/SobokSobok/friend/application/FriendService.java @@ -10,6 +10,7 @@ import io.sobok.SobokSobok.exception.model.NotFoundException; import io.sobok.SobokSobok.friend.domain.Friend; import io.sobok.SobokSobok.friend.domain.SendFriend; +import io.sobok.SobokSobok.friend.infrastructure.FriendQueryRepository; import io.sobok.SobokSobok.friend.infrastructure.FriendRepository; import io.sobok.SobokSobok.friend.infrastructure.SendFriendRepository; import io.sobok.SobokSobok.friend.ui.dto.AddFriendRequest; @@ -40,6 +41,7 @@ public class FriendService { private final SendFriendRepository sendFriendRepository; private final FriendRepository friendRepository; private final NoticeQueryRepository noticeQueryRepository; + private final FriendQueryRepository friendQueryRepository; @Transactional public AddFriendResponse addFriend(Long userId, AddFriendRequest request) { @@ -165,4 +167,19 @@ public UpdateFriendNameResponse updateFriendName(Long userId, Long friendId, Upd .friendName(request.friendName()) .build(); } + + @Transactional + public Boolean checkFriendRequest(Long userId, Long friendId) { + + boolean AlreadyFriendRequest = false; + + UserServiceUtil.existsUserById(userRepository, userId); + UserServiceUtil.existsUserById(userRepository, friendId); + + if (friendQueryRepository.isAlreadyFriend(userId, friendId) || noticeRepository.existsBySenderIdAndReceiverIdAndIsOkay(userId, friendId, NoticeStatus.WAITING)) { + AlreadyFriendRequest = true; + } + + return AlreadyFriendRequest; + } } diff --git a/src/main/java/io/sobok/SobokSobok/friend/ui/FriendController.java b/src/main/java/io/sobok/SobokSobok/friend/ui/FriendController.java index e828d6a..ebf8a20 100644 --- a/src/main/java/io/sobok/SobokSobok/friend/ui/FriendController.java +++ b/src/main/java/io/sobok/SobokSobok/friend/ui/FriendController.java @@ -103,4 +103,22 @@ public ResponseEntity> updateFriendName( friendService.updateFriendName(user.getId(), friendId, request) )); } + + @GetMapping("/request/{friendId}") + @Operation( + summary = "친구 신청 여부 확인 API 메서드", + description = "친구 신청을 했는지 확인하는 메서드입니다." + ) + public ResponseEntity> checkFriendRequest( + @AuthenticationPrincipal User user, + @PathVariable Long friendId + ) { + + return ResponseEntity + .status(HttpStatus.OK) + .body(ApiResponse.success( + SuccessCode.GET_REQUEST_FRIEND_SUCCESS, + friendService.checkFriendRequest(user.getId(), friendId) + )); + } } diff --git a/src/main/java/io/sobok/SobokSobok/notice/infrastructure/NoticeRepository.java b/src/main/java/io/sobok/SobokSobok/notice/infrastructure/NoticeRepository.java index b898b7b..57ceb2d 100644 --- a/src/main/java/io/sobok/SobokSobok/notice/infrastructure/NoticeRepository.java +++ b/src/main/java/io/sobok/SobokSobok/notice/infrastructure/NoticeRepository.java @@ -1,9 +1,14 @@ package io.sobok.SobokSobok.notice.infrastructure; import io.sobok.SobokSobok.notice.domain.Notice; +import io.sobok.SobokSobok.notice.domain.NoticeStatus; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; +import java.util.Optional; public interface NoticeRepository extends JpaRepository { + + // READ + Boolean existsBySenderIdAndReceiverIdAndIsOkay(Long senderId, Long receiverId, NoticeStatus isOkay); }