historyviewUpdate
Change-Id: I1a333931b6c999a5b267a51287d745a369ee58a6
diff --git a/src/main/java/com/example/g8backend/controller/PostController.java b/src/main/java/com/example/g8backend/controller/PostController.java
index d53db64..68e0f95 100644
--- a/src/main/java/com/example/g8backend/controller/PostController.java
+++ b/src/main/java/com/example/g8backend/controller/PostController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.g8backend.dto.PostCreateDTO;
+import com.example.g8backend.dto.PostHistoryDTO;
import com.example.g8backend.entity.PostView;
import com.example.g8backend.mapper.PostViewMapper;
import org.springframework.beans.factory.annotation.Autowired;
@@ -115,17 +116,15 @@
@RequestParam(required = false) String author) {
return postService.searchPosts(keyword, tags, author);
}
+
@GetMapping("/history")
- public ResponseEntity<List<PostView>> getViewHistory() {
+ public ResponseEntity<List<PostHistoryDTO>> getViewHistory() {
// 获取当前用户ID
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
long userId = (long) authentication.getPrincipal();
- // 查询历史记录(按时间倒序)
- List<PostView> history = postViewMapper.selectList(
- new QueryWrapper<PostView>()
- .eq("user_id", userId)
- .orderByDesc("view_time")
- );
+
+ // 调用Service层
+ List<PostHistoryDTO> history = postService.getViewHistoryWithTitles(userId);
return ResponseEntity.ok(history);
}
@GetMapping("/recommended")
@@ -139,7 +138,6 @@
Page<Post> pageResult = postService.getRecommendedPosts(page, size, userId);
return ResponseEntity.ok(pageResult);
}
- // PostController.java - 新增标签推荐接口
@GetMapping("/recommended-by-tags")
public ResponseEntity<Page<Post>> getRecommendedByTags(
@RequestParam(defaultValue = "1") int page,
diff --git a/src/main/java/com/example/g8backend/dto/PostHistoryDTO.java b/src/main/java/com/example/g8backend/dto/PostHistoryDTO.java
new file mode 100644
index 0000000..2afc7b3
--- /dev/null
+++ b/src/main/java/com/example/g8backend/dto/PostHistoryDTO.java
@@ -0,0 +1,13 @@
+// com.example.g8backend.dto.PostHistoryDTO.java
+package com.example.g8backend.dto;
+
+import lombok.Data;
+import java.time.LocalDateTime;
+
+@Data
+public class PostHistoryDTO {
+ private Long viewId;
+ private Long postId;
+ private String postTitle; // 新增标题字段
+ private LocalDateTime viewTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/g8backend/service/IPostService.java b/src/main/java/com/example/g8backend/service/IPostService.java
index 855952e..cd82ef4 100644
--- a/src/main/java/com/example/g8backend/service/IPostService.java
+++ b/src/main/java/com/example/g8backend/service/IPostService.java
@@ -1,6 +1,7 @@
package com.example.g8backend.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.example.g8backend.dto.PostHistoryDTO;
import com.example.g8backend.entity.Post;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.scheduling.annotation.Scheduled;
@@ -30,4 +31,6 @@
Page<Post> getRecommendedPosts(int page, int size, Long userId);
Page<Post> getRecommendedByTags(int page, int size, Long userId);
+
+ List<PostHistoryDTO> getViewHistoryWithTitles(Long userId);
}
diff --git a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
index 5faa4ac..1fda1e2 100644
--- a/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/PostServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.g8backend.dto.PostHistoryDTO;
import com.example.g8backend.entity.*;
import com.example.g8backend.mapper.*;
import com.example.g8backend.service.IPostService;
@@ -177,4 +178,30 @@
.orderByDesc("hot_score"); // 确保排序条件正确
return postMapper.selectPage(new Page<>(page, size), queryWrapper);
}
+
+ @Override
+ public List<PostHistoryDTO> getViewHistoryWithTitles(Long userId) {
+ // 1. 查询浏览记录(按时间倒序)
+ List<PostView> history = postViewMapper.selectList(
+ new QueryWrapper<PostView>()
+ .eq("user_id", userId)
+ .orderByDesc("view_time")
+ );
+
+
+ // 2. 转换为DTO并填充标题
+ return history.stream().map(view -> {
+ PostHistoryDTO dto = new PostHistoryDTO();
+ dto.setViewId(view.getViewId());
+ dto.setPostId(view.getPostId());
+ dto.setViewTime(view.getViewTime());
+
+ // 3. 查询帖子标题
+ Post post = postMapper.selectById(view.getPostId());
+ if (post != null) {
+ dto.setPostTitle(post.getPostTitle());
+ }
+ return dto;
+ }).collect(Collectors.toList());
+ }
}
\ No newline at end of file