diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatRoomResponseDto.java b/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatRoomResponseDto.java index 974462b..5a1567e 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatRoomResponseDto.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatRoomResponseDto.java @@ -19,6 +19,7 @@ public class ChatRoomResponseDto { private boolean exited; private Long otherId; private String otherUserNickname; + private Long lastSenderid; public static ChatRoomResponseDto fromEntity(ChatRoom chatRoom, Long unreadCount, boolean exited, Long myId) { boolean isSenderMe = chatRoom.getSender().getId().equals(myId); @@ -31,6 +32,8 @@ public static ChatRoomResponseDto fromEntity(ChatRoom chatRoom, Long unreadCount ? chatRoom.getReceiver().getNickName() : chatRoom.getSender().getNickName(); + Long lastSenderId = chatRoom.getLastSenderId(); + return new ChatRoomResponseDto( chatRoom.getRoomId(), List.of(chatRoom.getSender().getNickName(), chatRoom.getReceiver().getNickName()), @@ -39,7 +42,8 @@ public static ChatRoomResponseDto fromEntity(ChatRoom chatRoom, Long unreadCount unreadCount, exited, otherId, - otherUserNickname + otherUserNickname, + lastSenderId ); } diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/entity/ChatRoom.java b/src/main/java/com/goorm/team9/icontact/domain/chat/entity/ChatRoom.java index bbf818b..a25094c 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/entity/ChatRoom.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/entity/ChatRoom.java @@ -46,6 +46,9 @@ public class ChatRoom { @Column(name = "last_message_time") private LocalDateTime lastMessageTime; + @Column(name = "last_sender_id") + private Long lastSenderId; + @OneToMany(mappedBy = "chatRoom", cascade = CascadeType.REMOVE, orphanRemoval = true) private List messages = new ArrayList<>(); @@ -55,12 +58,14 @@ public static ChatRoom createChatRoom(ClientEntity sender, ClientEntity receiver chatRoom.setReceiver(receiver); chatRoom.setLastMessage(null); chatRoom.setLastMessageTime(null); + chatRoom.setLastSenderId(null); return chatRoom; } - public void updateLastMessage(String lastMessage, LocalDateTime lastMessageTime) { + public void updateLastMessage(String lastMessage, LocalDateTime lastMessageTime, Long senderId) { this.lastMessage = lastMessage; this.lastMessageTime = lastMessageTime; + this.lastSenderId = senderId; } } diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java b/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java index 5cea040..2a3f4ba 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java @@ -71,7 +71,7 @@ public void sendMessage(ChatMessageDto chatMessageDto) { .build(); chatMessageRepository.save(chatMessage); - chatRoom.updateLastMessage(chatMessage.getContent(), chatMessage.getCreated_at()); + chatRoom.updateLastMessage(chatMessage.getContent(), chatMessage.getCreated_at(), sender.getId()); chatRoomRepository.save(chatRoom); String destination = "/queue/" + chatMessageDto.getRoomId();