From 20fb224160b3f5b2ba6cb31640395c51a4d76dd3 Mon Sep 17 00:00:00 2001 From: Bomin Kwon <101239440+pingowl@users.noreply.github.com> Date: Sun, 28 Jul 2024 05:39:58 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=EA=B0=9C=EC=88=98?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=9D=BC=20=EB=B0=A9=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=20=EB=B0=8F=20Book=20=EC=83=9D=EC=84=B1=20(#4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/mychat/controller/ChatController.java | 10 ++++++++-- src/main/java/mychat/domain/ChatRoom.java | 7 +++++++ src/main/java/mychat/service/ChatRoomService.java | 12 ++++++++++++ src/main/java/mychat/service/ChatService.java | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/mychat/controller/ChatController.java b/src/main/java/mychat/controller/ChatController.java index 04a80c1..f8e15ce 100644 --- a/src/main/java/mychat/controller/ChatController.java +++ b/src/main/java/mychat/controller/ChatController.java @@ -51,11 +51,17 @@ public void enterUser(@Payload Chat chat, SimpMessageHeaderAccessor headerAccess } @MessageMapping("/chat/sendMessage") - public void sendMessage(@Payload Chat chat) { + public String sendMessage(@Payload Chat chat) { log.info("CHAT {}", chat); chat.setId(UUID.randomUUID().toString()); - template.convertAndSend("/sub/chat/room/" + chat.getRoomId(), chat); + String roomId = chat.getRoomId(); + template.convertAndSend("/sub/chat/room/" + roomId, chat); chatService.saveMessage(chat); + if(chatRoomService.addChatCntAndReturn(roomId)){ + chatService.makeBook(roomId); + return "fin"; + } + return ""; } @EventListener diff --git a/src/main/java/mychat/domain/ChatRoom.java b/src/main/java/mychat/domain/ChatRoom.java index e05b3e6..955a5d8 100644 --- a/src/main/java/mychat/domain/ChatRoom.java +++ b/src/main/java/mychat/domain/ChatRoom.java @@ -27,6 +27,8 @@ public class ChatRoom { @Builder.Default private boolean done=false; private String firstSentence; + @Builder.Default + private int chatCnt=0; // 채팅방 삭제시 방장이 비밀번호 입력해야함 @@ -61,4 +63,9 @@ public void setAsDone(){ public void setFirstSentence(String firstSentence){ this.firstSentence = firstSentence; } + + public int addChatCnt(){ + chatCnt++; + return chatCnt; + } } diff --git a/src/main/java/mychat/service/ChatRoomService.java b/src/main/java/mychat/service/ChatRoomService.java index a7865db..f9ab540 100644 --- a/src/main/java/mychat/service/ChatRoomService.java +++ b/src/main/java/mychat/service/ChatRoomService.java @@ -72,4 +72,16 @@ public void setFirstSentence(String roomId, String firstSentence){ .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_CHATROOM)); room.setFirstSentence(firstSentence); } + + public boolean addChatCntAndReturn(String roomId){ + ChatRoom room = chatRoomRepository.findById(roomId) + .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_CHATROOM)); + int cnt = room.addChatCnt(); + chatRoomRepository.save(room); + if(cnt >= room.getUserCount()){ + room.setAsDone(); + return true; + } + return false; + } } diff --git a/src/main/java/mychat/service/ChatService.java b/src/main/java/mychat/service/ChatService.java index 49cbf9c..34a1b62 100644 --- a/src/main/java/mychat/service/ChatService.java +++ b/src/main/java/mychat/service/ChatService.java @@ -60,6 +60,7 @@ public void makeBook(String roomId){ .createdAt(LocalDateTime.ofInstant(instance, ZoneId.of("Asia/Seoul"))) .build(); bookRepository.save(book); + log.info("[Book 생성] {}", book.getId()); } public void mongoInsert(){