친구 목록 조회 기능 구현
2024. 12. 27. 18:05ㆍTIL
친구 수락 로직 변경
@Transactional
fun acceptFriendRequest(userId: Long, senderId: Long): FriendShipDto {
val friendRequest = friendRequestRepository.findBySenderIdAndReceiverId(senderId = senderId, receiverId = userId)
?: throw IllegalArgumentException("친구 요청을 찾을 수 없습니다.")
val user = oAuthRepository.findById(userId).getOrNull()
val sender = oAuthRepository.findById(senderId).getOrNull()
val friendship = friendshipRepository.findByUserIdAndFriendId(userId = senderId, friendId = userId)
?: throw IllegalArgumentException("친구 요청을 찾을 수 없습니다.")
friendship.status = FriendshipStatus.ACCEPTED
friendshipRepository.save(friendship)
friendshipRepository.save(
Friendship(
user = user!!,
friend = sender!!,
status = FriendshipStatus.ACCEPTED
)
)
friendRequestRepository.delete(friendRequest)
return FriendShipDto(
userId = friendship.user.id,
friendId = friendship.friend.id,
status = friendship.status.toString(),
senderName = friendship.friend.userName
)
}
상대방이 초대를 수락하여 친구 관계가 성립했을 경우 2개의 친구데이터 관계 데이터가 생성되도록 변경
Controller 작성
@GetMapping("/get_list")
fun getMyFriendsList(
@AuthenticationPrincipal user: UserPrincipal
): ResponseEntity<List<FriendShipDto>>{
return ResponseEntity.status(HttpStatus.OK).body(friendsService.getMyFriendsList(user))
}
비즈니스 로직 작성
fun getMyFriendsList(user: UserPrincipal): List<FriendShipDto> {
val friendList = friendshipRepository.findAllByUserId(user.memberId)
?: throw IllegalArgumentException("해당 ${user.memberId} ID의 데이터가 존재하지 않음")
return friendList.map{ it.toResponse() }
}
테스트
'TIL' 카테고리의 다른 글
Apache Kafka 적용시키기 (0) | 2024.12.31 |
---|---|
Apache Kafka (0) | 2024.12.30 |
사용자 친구 추가 기능 구현 (1) | 2024.12.26 |
𝒘𝒆𝒃𝒔𝒐𝒄𝒌𝒆𝒕에서 사용자 정보 가져오기 오류 (0) | 2024.12.25 |
WebSocket을 이용해서 실시간 채팅 구현하기 (0) | 2024.12.24 |