Skip to content

Commit 4af68a4

Browse files
committed
♻️Refactor: 채팅 생성 로직 수정
1 parent 850f229 commit 4af68a4

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/main/java/com/sku/refit/domain/chat/exception/ChatErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
@AllArgsConstructor
1515
public enum ChatErrorCode implements BaseErrorCode {
1616
CHAT_NOT_FOUND("CHAT001", "채팅이 존재하지 않습니다.", HttpStatus.NOT_FOUND),
17+
CANNOT_CHAT_MYSELF("CHAT002", "자기자신과 채팅할 수 없습니다.", HttpStatus.BAD_REQUEST),
1718
;
1819

1920
private final String code;

src/main/java/com/sku/refit/domain/chat/service/ChatServiceImpl.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,27 @@ public ChatRoomResponse createChatRoom(Long postId) {
6767
throw new CustomException(ChatErrorCode.CHAT_NOT_FOUND);
6868
}
6969

70-
ChatRoom room =
71-
chatRoomRepository
72-
.findByExchangePostIdAndUsers(postId, user.getId(), receiver.getId())
73-
.orElseGet(() -> chatRoomRepository.save(chatMapper.toChatRoom(post, user, receiver)));
70+
if (user.getId().equals(receiver.getId())) {
71+
throw new CustomException(ChatErrorCode.CHAT_NOT_FOUND);
72+
}
7473

75-
return chatMapper.toChatRoomResponse(room);
74+
return chatRoomRepository
75+
.findByExchangePostIdAndUsers(postId, user.getId(), receiver.getId())
76+
.map(chatMapper::toChatRoomResponse)
77+
.orElseGet(
78+
() -> {
79+
try {
80+
ChatRoom newRoom = chatMapper.toChatRoom(post, user, receiver);
81+
ChatRoom savedRoom = chatRoomRepository.save(newRoom);
82+
return chatMapper.toChatRoomResponse(savedRoom);
83+
} catch (org.springframework.dao.DataIntegrityViolationException e) {
84+
ChatRoom existingRoom =
85+
chatRoomRepository
86+
.findByExchangePostIdAndUsers(postId, user.getId(), receiver.getId())
87+
.orElseThrow(() -> new CustomException(ChatErrorCode.CHAT_NOT_FOUND));
88+
return chatMapper.toChatRoomResponse(existingRoom);
89+
}
90+
});
7691
}
7792

7893
@Transactional

0 commit comments

Comments
 (0)