From 3843490c1b09b1b8815b2c66fbd83aae7cf9406b Mon Sep 17 00:00:00 2001 From: SIWON990327 Date: Tue, 25 Feb 2025 19:06:10 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Feat]=20=EC=B1=84=ED=8C=85=20response=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/GetChatMessageResponseDto.java | 3 +- .../kdt/web_ide/chat/entity/ChatMessage.java | 2 ++ .../kdt/web_ide/chat/service/ChatService.java | 32 +++++++++++++------ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java b/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java index 5348313..7afb1d7 100644 --- a/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java +++ b/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java @@ -11,7 +11,8 @@ public record GetChatMessageResponseDto( String messageText, String memberProfileImageUrl, String memberNickname, - String sendTime) { + String sendTime, + String type) { public static GetChatMessageResponseDto fromChatMessage(ChatMessage chatMessage) { return GetChatMessageResponseDto.builder() .senderId(chatMessage.getSender().getMemberId()) diff --git a/src/main/java/kdt/web_ide/chat/entity/ChatMessage.java b/src/main/java/kdt/web_ide/chat/entity/ChatMessage.java index 675056d..7fb0b91 100644 --- a/src/main/java/kdt/web_ide/chat/entity/ChatMessage.java +++ b/src/main/java/kdt/web_ide/chat/entity/ChatMessage.java @@ -24,6 +24,8 @@ public class ChatMessage { @Column(columnDefinition = "LONGTEXT") private String messageText; + private String type; + @CreatedDate @Column(updatable = false) private LocalDateTime sendTime; diff --git a/src/main/java/kdt/web_ide/chat/service/ChatService.java b/src/main/java/kdt/web_ide/chat/service/ChatService.java index 34f44f1..92c611d 100644 --- a/src/main/java/kdt/web_ide/chat/service/ChatService.java +++ b/src/main/java/kdt/web_ide/chat/service/ChatService.java @@ -53,7 +53,7 @@ public void sendMessage(Long chatRoomId, ChatMessageRequestDto requestDto) { .findById(requestDto.senderId()) .orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND)); - ChatMessage message = saveMessage(chatRoom, sender, requestDto.content()); + ChatMessage message = saveMessage(chatRoom, sender, requestDto.content(), "text"); CompletableFuture.runAsync( () -> { @@ -83,7 +83,8 @@ public List getChatMessage(Long roomId, Long memberId return responseDtoList; } - private ChatMessage saveMessage(ChatRoom chatRoom, Member sender, String messageText) { + private ChatMessage saveMessage( + ChatRoom chatRoom, Member sender, String messageText, String type) { ChatMessage message = ChatMessage.builder() @@ -91,6 +92,7 @@ private ChatMessage saveMessage(ChatRoom chatRoom, Member sender, String message .sender(sender) .messageText(messageText) .sendTime(LocalDateTime.now()) + .type(type) .build(); return chatMessageRepository.save(message); @@ -118,13 +120,15 @@ private void notifyUnreadMessageCount(Long roomId, Long senderId) { @Transactional public void sendImage(Long senderId, Long chatRoomId, List multipartFileList) { - chatRoomRepository - .findById(chatRoomId) - .orElseThrow(() -> new CustomException(ErrorCode.CHATROOM_NOT_FOUND)); + ChatRoom chatRoom = + chatRoomRepository + .findById(chatRoomId) + .orElseThrow(() -> new CustomException(ErrorCode.CHATROOM_NOT_FOUND)); - memberRepository - .findById(senderId) - .orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND)); + Member sender = + memberRepository + .findById(senderId) + .orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND)); List imageUrlList = s3Service.uploadImages(multipartFileList); @@ -132,7 +136,17 @@ public void sendImage(Long senderId, Long chatRoomId, List multip ChatMessageRequestDto requestDto = new ChatMessageRequestDto(senderId, imageUrl); - sendMessage(chatRoomId, requestDto); + ChatMessage message = saveMessage(chatRoom, sender, requestDto.content(), "image"); + + CompletableFuture.runAsync( + () -> { + simpMessagingTemplate.convertAndSend( + "/room/" + chatRoomId, GetChatMessageResponseDto.fromChatMessage(message)); + }); + + chatRoomMemberRepository.incrementNotReadCount(chatRoomId, sender.getMemberId()); + + notifyUnreadMessageCount(chatRoomId, sender.getMemberId()); } } } From 5f626b7b7106f4a46829b2e2d70d9165c34fa989 Mon Sep 17 00:00:00 2001 From: SIWON990327 Date: Tue, 25 Feb 2025 19:08:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Feat]=20=EC=B1=84=ED=8C=85=20response=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java b/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java index 7afb1d7..0c24c69 100644 --- a/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java +++ b/src/main/java/kdt/web_ide/chat/dto/response/GetChatMessageResponseDto.java @@ -21,6 +21,7 @@ public static GetChatMessageResponseDto fromChatMessage(ChatMessage chatMessage) .memberNickname(chatMessage.getSender().getNickName()) .sendTime( chatMessage.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) + .type(chatMessage.getType()) .build(); } }