Enhance user timeline grouping and post metadata

This commit is contained in:
Tim
2025-09-19 00:22:34 +08:00
parent 4cc2800f09
commit b6c2471bc3
5 changed files with 307 additions and 104 deletions

View File

@@ -1,6 +1,7 @@
package com.openisle.dto;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;
/** Lightweight post metadata used in user profile lists. */
@@ -11,6 +12,8 @@ public class PostMetaDto {
private String title;
private String snippet;
private LocalDateTime createdAt;
private String category;
private CategoryDto category;
private List<TagDto> tags;
private long views;
private long commentCount;
}

View File

@@ -5,6 +5,7 @@ import com.openisle.model.Comment;
import com.openisle.model.Post;
import com.openisle.model.User;
import com.openisle.service.*;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
@@ -23,6 +24,8 @@ public class UserMapper {
private final PostReadService postReadService;
private final LevelService levelService;
private final MedalService medalService;
private final TagMapper tagMapper;
private final CategoryMapper categoryMapper;
@Value("${app.snippet-length}")
private int snippetLength;
@@ -88,7 +91,12 @@ public class UserMapper {
dto.setSnippet(content);
}
dto.setCreatedAt(post.getCreatedAt());
dto.setCategory(post.getCategory().getName());
dto.setCategory(categoryMapper.toDto(post.getCategory()));
dto.setTags(post.getTags().stream().map(tagMapper::toDto).collect(Collectors.toList()));
if (post.getLastReplyAt() == null) {
commentService.updatePostCommentStats(post);
}
dto.setCommentCount(post.getCommentCount());
dto.setViews(post.getViews());
return dto;
}