fixed response chats

This commit is contained in:
SlimusMinus
2026-08-13 00:34:24 +03:00
parent 1f4eb0faba
commit 8363d1602c
2 changed files with 15 additions and 0 deletions

View File

@@ -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;

View File

@@ -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 -> {