diff --git a/src/main/java/com/krylov/refound/dto/ChatDto.java b/src/main/java/com/krylov/refound/dto/ChatDto.java index cde0a1d..4ab72fe 100644 --- a/src/main/java/com/krylov/refound/dto/ChatDto.java +++ b/src/main/java/com/krylov/refound/dto/ChatDto.java @@ -10,6 +10,7 @@ public class ChatDto { private String otherUserName; private String otherUserAvatar; private Long postId; + private ChatPostDto post; private String lastMessage; private LocalDateTime lastMessageAt; private long unreadCount; diff --git a/src/main/java/com/krylov/refound/service/ChatService.java b/src/main/java/com/krylov/refound/service/ChatService.java index 1164c8c..abfbafa 100644 --- a/src/main/java/com/krylov/refound/service/ChatService.java +++ b/src/main/java/com/krylov/refound/service/ChatService.java @@ -1,11 +1,14 @@ package com.krylov.refound.service; import com.krylov.refound.dto.ChatDto; +import com.krylov.refound.dto.ChatPostDto; import com.krylov.refound.dto.MessageDto; import com.krylov.refound.entity.Chat; +import com.krylov.refound.entity.Image; import com.krylov.refound.entity.Message; import com.krylov.refound.repository.ChatRepository; import com.krylov.refound.repository.MessageRepository; +import com.krylov.refound.repository.PostRepository; import com.krylov.refound.repository.UserRepository; import java.util.List; import java.util.Map; @@ -27,6 +30,7 @@ public class ChatService { private final MessageRepository messageRepository; private final SimpMessagingTemplate messagingTemplate; private final UserRepository userRepository; + private final PostRepository postRepository; // Создать чат с пользователем (или вернуть существующий) @Transactional @@ -134,6 +138,16 @@ public class ChatService { dto.setOtherUserAvatar(user.getAvatarUrl()); }); + if (chat.getPostId() != null) { + postRepository.findById(chat.getPostId()).ifPresent(post -> { + ChatPostDto postDto = new ChatPostDto(); + postDto.setId(post.getId()); + postDto.setTitle(post.getTitle()); + postDto.setImages(post.getImages().stream().map(Image::getUrl).toList()); + dto.setPost(postDto); + }); + } + // без N+1: берём только последнее сообщение, а не всю историю messageRepository.findFirstByChatIdOrderByCreatedAtDesc(chat.getId()) .ifPresent(last -> {