From 385130bdde8598485c2ee4c2033fbecdd995bb51 Mon Sep 17 00:00:00 2001 From: heeone1 Date: Sat, 14 Feb 2026 23:24:06 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20Fix:=20=EC=B9=9C=EA=B5=AC=20?= =?UTF-8?q?=EC=8B=A0=EC=B2=AD=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/friend/service/FriendService.java | 53 +++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java b/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java index e0070ce..cde8ed2 100644 --- a/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java +++ b/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java @@ -26,6 +26,53 @@ public class FriendService { private final UserRepository userRepository; /** 친구 신청 **/ +// @Transactional +// public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) { +// +// if (senderId.equals(reqDto.receiverId())) { +// throw new CustomException(FriendErrorCode.SELF_REQUEST_NOT_ALLOWED); +// } +// +// User sender = userRepository.findById(senderId) +// .orElseThrow(() -> new CustomException(FriendErrorCode.USER_NOT_FOUND)); +// +// User receiver = userRepository.findById(reqDto.receiverId()) +// .orElseThrow(() -> new CustomException(FriendErrorCode.USER_NOT_FOUND)); +// +// // 이미 친구면 다시 신청 못하도록 +// if (friendRepository.existsByUserAndFriend(sender, receiver)) { +// throw new CustomException(FriendErrorCode.ALREADY_FRIEND); +// } +// +// // 기존 신청 이력 확인 +// friendRequestRepository +// .findBySenderAndReceiver(sender, receiver) +// .ifPresent(existing -> { +// if (existing.getStatus() == FriendRequestStatus.PENDING) { +// throw new CustomException(FriendErrorCode.ALREADY_REQUESTED); +// } +// +// if (existing.getStatus() == FriendRequestStatus.ACCEPTED) { +// throw new CustomException(FriendErrorCode.ALREADY_FRIEND); +// } +// +// if (existing.getStatus() == FriendRequestStatus.REJECTED) { +// // 거절된 경우에는 재신청 가능하도록 +// existing.reRequest(); +// } +// }); +// +// // 기존 신청이 없을 때만 새로 생성 +// if (!friendRequestRepository.findBySenderAndReceiver(sender, receiver).isPresent()) { +// friendRequestRepository.save( +// FriendRequest.builder() +// .sender(sender) +// .receiver(receiver) +// .status(FriendRequestStatus.PENDING) +// .build() +// ); +// } +// } @Transactional public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) { @@ -39,8 +86,9 @@ public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) { User receiver = userRepository.findById(reqDto.receiverId()) .orElseThrow(() -> new CustomException(FriendErrorCode.USER_NOT_FOUND)); - // 이미 친구면 다시 신청 못하도록 - if (friendRepository.existsByUserAndFriend(sender, receiver)) { + // 양방향으로 친구 관계 확인 + if (friendRepository.existsByUserAndFriend(sender, receiver) + || friendRepository.existsByUserAndFriend(receiver, sender)) { throw new CustomException(FriendErrorCode.ALREADY_FRIEND); } @@ -57,7 +105,6 @@ public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) { } if (existing.getStatus() == FriendRequestStatus.REJECTED) { - // 거절된 경우에는 재신청 가능하도록 existing.reRequest(); } }); From 016bafd96639a37595d5040b451e9d05334f7187 Mon Sep 17 00:00:00 2001 From: heeone1 Date: Sat, 14 Feb 2026 23:26:20 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor:=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/friend/service/FriendService.java | 47 ------------------- 1 file changed, 47 deletions(-) diff --git a/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java b/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java index cde8ed2..349fb21 100644 --- a/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java +++ b/src/main/java/com/example/egobook_be/domain/friend/service/FriendService.java @@ -26,53 +26,6 @@ public class FriendService { private final UserRepository userRepository; /** 친구 신청 **/ -// @Transactional -// public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) { -// -// if (senderId.equals(reqDto.receiverId())) { -// throw new CustomException(FriendErrorCode.SELF_REQUEST_NOT_ALLOWED); -// } -// -// User sender = userRepository.findById(senderId) -// .orElseThrow(() -> new CustomException(FriendErrorCode.USER_NOT_FOUND)); -// -// User receiver = userRepository.findById(reqDto.receiverId()) -// .orElseThrow(() -> new CustomException(FriendErrorCode.USER_NOT_FOUND)); -// -// // 이미 친구면 다시 신청 못하도록 -// if (friendRepository.existsByUserAndFriend(sender, receiver)) { -// throw new CustomException(FriendErrorCode.ALREADY_FRIEND); -// } -// -// // 기존 신청 이력 확인 -// friendRequestRepository -// .findBySenderAndReceiver(sender, receiver) -// .ifPresent(existing -> { -// if (existing.getStatus() == FriendRequestStatus.PENDING) { -// throw new CustomException(FriendErrorCode.ALREADY_REQUESTED); -// } -// -// if (existing.getStatus() == FriendRequestStatus.ACCEPTED) { -// throw new CustomException(FriendErrorCode.ALREADY_FRIEND); -// } -// -// if (existing.getStatus() == FriendRequestStatus.REJECTED) { -// // 거절된 경우에는 재신청 가능하도록 -// existing.reRequest(); -// } -// }); -// -// // 기존 신청이 없을 때만 새로 생성 -// if (!friendRequestRepository.findBySenderAndReceiver(sender, receiver).isPresent()) { -// friendRequestRepository.save( -// FriendRequest.builder() -// .sender(sender) -// .receiver(receiver) -// .status(FriendRequestStatus.PENDING) -// .build() -// ); -// } -// } @Transactional public void requestFriend(Long senderId, FriendRequestCreateReqDto reqDto) {