diff --git a/src/main/java/com/on/server/domain/chat/application/ChatService.java b/src/main/java/com/on/server/domain/chat/application/ChatService.java index 5e9977ab..d1a032f2 100644 --- a/src/main/java/com/on/server/domain/chat/application/ChatService.java +++ b/src/main/java/com/on/server/domain/chat/application/ChatService.java @@ -152,43 +152,53 @@ public ChatResponseDto createChatRoom(User user, ChatRequestDto chatRequestDto) User chatUserTwo = userRepository.findById(chatRequestDto.getReceiverId()) .orElseThrow(() -> new InternalServerException(ResponseCode.INVALID_PARAMETER)); - ChattingRoom chattingRoom = ChattingRoom.builder() - .chattingRoomType(chatRequestDto.getChatType()) - .chatUserOne(user) // 글 보고 채팅 신청하는 사람 - .chatUserTwo(chatUserTwo) // 글 주인 - .build(); + ChattingRoom existingRoom = chattingRoomRepository.findChattingRoomByChatUserOneAndChatUserTwo(user, chatUserTwo); + Long responseRoomId = 0L; - ChattingRoom savedChattingRoom = chattingRoomRepository.save(chattingRoom); + if (existingRoom != null) { + responseRoomId = existingRoom.getId(); + } else { + ChattingRoom chattingRoom = ChattingRoom.builder() + .chattingRoomType(chatRequestDto.getChatType()) + .chatUserOne(user) // 글 보고 채팅 신청하는 사람 + .chatUserTwo(chatUserTwo) // 글 주인 + .build(); - if (chatRequestDto.getChatType() == ChatType.COMPANY) { - CompanyPost companyPost = companyPostRepository.findById(chatRequestDto.getPostId()).orElse(null); + ChattingRoom savedChattingRoom = chattingRoomRepository.save(chattingRoom); - SpecialChat specialChat = SpecialChat.builder() - .chattingRoom(savedChattingRoom) - .user(chatUserTwo) - .companyPost(companyPost) - .specialChatType(chatRequestDto.getChatType()) - .build(); + if (chatRequestDto.getChatType() == ChatType.COMPANY) { + CompanyPost companyPost = companyPostRepository.findById(chatRequestDto.getPostId()).orElse(null); - specialChatRepository.save(specialChat); + SpecialChat specialChat = SpecialChat.builder() + .chattingRoom(savedChattingRoom) + .user(chatUserTwo) + .companyPost(companyPost) + .specialChatType(chatRequestDto.getChatType()) + .build(); - } else { - MarketPost marketPost = marketPostRepository.findById(chatRequestDto.getPostId()).orElse(null); + specialChatRepository.save(specialChat); - SpecialChat specialChat = SpecialChat.builder() - .chattingRoom(savedChattingRoom) - .user(chatUserTwo) - .marketPost(marketPost) - .specialChatType(chatRequestDto.getChatType()) - .build(); + } else { + MarketPost marketPost = marketPostRepository.findById(chatRequestDto.getPostId()).orElse(null); + + SpecialChat specialChat = SpecialChat.builder() + .chattingRoom(savedChattingRoom) + .user(chatUserTwo) + .marketPost(marketPost) + .specialChatType(chatRequestDto.getChatType()) + .build(); + + specialChatRepository.save(specialChat); + + } - specialChatRepository.save(specialChat); + responseRoomId = savedChattingRoom.getId(); } return ChatResponseDto.builder() - .roomId(savedChattingRoom.getId()) + .roomId(responseRoomId) .build(); } diff --git a/src/main/java/com/on/server/domain/chat/domain/repository/ChattingRoomRepository.java b/src/main/java/com/on/server/domain/chat/domain/repository/ChattingRoomRepository.java index 443f70ca..ea98f53b 100644 --- a/src/main/java/com/on/server/domain/chat/domain/repository/ChattingRoomRepository.java +++ b/src/main/java/com/on/server/domain/chat/domain/repository/ChattingRoomRepository.java @@ -1,6 +1,5 @@ package com.on.server.domain.chat.domain.repository; -import com.on.server.domain.chat.domain.ChatType; import com.on.server.domain.chat.domain.ChattingRoom; import com.on.server.domain.user.domain.User; import org.springframework.data.jpa.repository.JpaRepository; @@ -12,5 +11,7 @@ public interface ChattingRoomRepository extends JpaRepository findById(Long roomId); + ChattingRoom findChattingRoomByChatUserOneAndChatUserTwo(User user, User user2); + List findChattingRoomByChatUserOneOrChatUserTwo(User user, User user1); }