Skip to content

Commit

Permalink
refactor: 채팅보내기 api 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
hig1002 committed Feb 1, 2025
1 parent 7d0a8c5 commit f9cba1f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
6 changes: 6 additions & 0 deletions src/main/java/com/connectCo/domain/chat/entity/ChatRoom.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,10 @@ public class ChatRoom extends BaseEntity {

@OneToMany(mappedBy = "chatRoom", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Chat> chats = new ArrayList<>();

public void updateRecentMessage(String recentMessage, LocalDateTime recentMessageTime) {
this.recentMessage = recentMessage;
this.recentMessageTime = recentMessageTime;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,31 @@ public class ChatServiceImpl implements ChatService {
@Override
@Transactional
public ChatResponse createChat(CreateChatRequest request) {
ChatRoom chatRoom = chatRoomRepository.findById(request.getChatRoomId())
.orElseGet(()->chatRoomService.createChatRoom(request.getSenderId(), request.getReceiverId()));
ChatRoom chatRoom = findOrCreateChatRoom(request);
Chat chat = saveChat(request, chatRoom);
updateChatRoomRecentMessage(chatRoom, chat);
sendPushNotificationToReceiver(request);

return chatMapper.toChatResponse(chat);
}

private ChatRoom findOrCreateChatRoom(CreateChatRequest request) {
return chatRoomRepository.findById(request.getChatRoomId())
.orElseGet(() -> chatRoomService.createChatRoom(request.getSenderId(), request.getReceiverId()));
}

private Chat saveChat(CreateChatRequest request, ChatRoom chatRoom) {
Chat chat = chatMapper.toChat(request, chatRoom);
chatRepository.save(chat);
return chatRepository.save(chat);
}

Member member = memberRepository.findById(request.getReceiverId()).orElseThrow(()->new CustomApiException(ErrorCode.USER_NOT_FOUND));
private void updateChatRoomRecentMessage(ChatRoom chatRoom, Chat chat) {
chatRoom.updateRecentMessage(chat.getMessage(), chat.getCreatedAt());
chatRoomRepository.save(chatRoom);
}

private void sendPushNotificationToReceiver(CreateChatRequest request) {
Member member = memberRepository.findById(request.getReceiverId()).orElseThrow(()->new CustomApiException(ErrorCode.USER_NOT_FOUND));
fcmService.sendPushNotification(member.getFcmToken(), "새로운 메시지", request.getMessage());

return chatMapper.toChatResponse(chat);
}
}

0 comments on commit f9cba1f

Please sign in to comment.