@@ -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;
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
Reference in New Issue
Block a user