Przeglądaj źródła

更新 search-service blog 模块

reghao 3 miesięcy temu
rodzic
commit
0d51e70c0d

+ 2 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/controller/AdminArticleController.java

@@ -56,7 +56,8 @@ public class AdminArticleController {
             title = "";
         }
 
-        Page<AdminArticle> page1 = articleQuery.findAdminArticleByPage(pageSize, pageNumber, categoryId, published, title);
+        int postType = 1; // 文章
+        Page<AdminArticle> page1 = articleQuery.findAdminArticleByPage(pageSize, pageNumber, postType, categoryId, published, title);
         PageList<AdminArticle> pageList = getPageList(page1);
         return WebResult.success(pageList);
     }

+ 12 - 4
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/controller/AdminQuestionController.java

@@ -1,6 +1,8 @@
 package cn.reghao.tnb.search.app.blog.controller;
 
+import cn.reghao.tnb.search.app.blog.model.vo.AdminArticle;
 import cn.reghao.tnb.search.app.blog.model.vo.QuestionView;
+import cn.reghao.tnb.search.app.blog.service.ArticleQuery;
 import cn.reghao.tnb.search.app.blog.service.QuestionService;
 import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.jutil.jdk.web.result.WebResult;
@@ -20,10 +22,12 @@ import java.util.List;
 @RestController
 @RequestMapping("/api/blog/v2/question")
 public class AdminQuestionController {
+    private final ArticleQuery articleQuery;
     private final QuestionService questionService;
     private int pageSize = 100;
 
-    public AdminQuestionController(QuestionService questionService) {
+    public AdminQuestionController(ArticleQuery articleQuery, QuestionService questionService) {
+        this.articleQuery = articleQuery;
         this.questionService = questionService;
     }
 
@@ -34,16 +38,20 @@ public class AdminQuestionController {
         if (categoryId == null) {
             categoryId = 0;
         }
-        Page<QuestionView> page0 = questionService.findQuestionByPage(pageSize, pageNumber, categoryId);
+
+        int published = 0;
+        String title = "";
+        int postType = 2;
+        Page<AdminArticle> page0 = articleQuery.findAdminArticleByPage(pageSize, pageNumber, postType, categoryId, published, title);
         PageList<QuestionView> pageList = getPageList(page0);
         return WebResult.success(pageList);
     }
 
-    private PageList<QuestionView> getPageList(Page<QuestionView> page) {
+    private PageList<QuestionView> getPageList(Page<AdminArticle> page) {
         int pageNumber = page.getNumber() + 1;
         int pageSize = page.getSize();
         long total = page.getTotalElements();
-        List<QuestionView> list = page.getContent();
+        List<QuestionView> list = page.getContent().stream().map(QuestionView::new).toList();
         return PageList.pageList(pageNumber, pageSize, (int) total, list);
     }
 

+ 6 - 0
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/model/vo/AdminArticle.java

@@ -16,6 +16,7 @@ import java.util.List;
 @Setter
 @Getter
 public class AdminArticle {
+    private int id;
     private String articleId;
     private String title;
     private String category;
@@ -25,8 +26,11 @@ public class AdminArticle {
     private String editor;
     private int views;
     private String url;
+    private String content;
+    private int weight;
 
     public AdminArticle(Article article, int viewCount, String category, List<String> tags, String domain) {
+        this.id = article.getId();
         this.articleId = article.getArticleId();
         this.title = article.getTitle();
         this.category = category;
@@ -36,5 +40,7 @@ public class AdminArticle {
         this.editor = article.getEditor();
         this.views = viewCount;
         this.url = String.format("//%s/post/%s", domain, this.articleId);
+        this.content = article.getContent();
+        this.weight = article.getWeight();
     }
 }

+ 3 - 3
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/model/vo/QuestionView.java

@@ -20,12 +20,12 @@ public class QuestionView {
     private String content;
     private int weight;
 
-    public QuestionView(Article question, String category, String tag) {
+    public QuestionView(AdminArticle question) {
         this.id = question.getId();
         this.questionId = question.getArticleId();
         this.title = question.getTitle();
-        this.category = category;
-        this.tag = tag;
+        this.category = question.getCategory();
+        this.tag = question.getTags().toString();
         this.content = question.getContent();
         this.weight = question.getWeight();
     }

+ 5 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/service/ArticleQuery.java

@@ -228,7 +228,7 @@ public class ArticleQuery {
         return new PageImpl<>(list1, pageable, total);
     }
 
-    public Page<AdminArticle> findAdminArticleByPage(int pageSize, int pageNumber, int categoryId, int published, String title) {
+    public Page<AdminArticle> findAdminArticleByPage(int pageSize, int pageNumber, int postType, int categoryId, int published, String title) {
         Specification<Article> specification = (root, query, cb) -> {
             List<Predicate> predicates = new ArrayList<>();
             if (!title.isBlank()) {
@@ -245,6 +245,10 @@ public class ArticleQuery {
                 predicates.add(cb.equal(root.get("published"), false));
             }
 
+            if (postType != 0) {
+                predicates.add(cb.equal(root.get("postType"), postType));
+            }
+
             return cb.and(predicates.toArray(new Predicate[0]));
         };
 

+ 1 - 73
search/search-service/src/main/java/cn/reghao/tnb/search/app/blog/service/QuestionService.java

@@ -1,23 +1,11 @@
 package cn.reghao.tnb.search.app.blog.service;
 
 import cn.reghao.tnb.search.app.blog.db.repository.ArticleRepository;
-import cn.reghao.tnb.search.app.blog.db.repository.ArticleTagRepository;
-import cn.reghao.tnb.search.app.blog.db.repository.CategoryRepository;
 import cn.reghao.tnb.search.app.blog.model.dto.QuestionUpdateDto;
 import cn.reghao.tnb.search.app.blog.model.po.Article;
-import cn.reghao.tnb.search.app.blog.model.po.ArticleTag;
-import cn.reghao.tnb.search.app.blog.model.po.Category;
-import cn.reghao.tnb.search.app.blog.model.vo.QuestionCount;
-import cn.reghao.tnb.search.app.blog.model.vo.QuestionView;
-import cn.reghao.tnb.search.app.blog.util.MarkdownUtil;
-import jakarta.persistence.criteria.Predicate;
-import org.springframework.data.domain.*;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -26,14 +14,9 @@ import java.util.stream.Collectors;
 @Service
 public class QuestionService {
     private final ArticleRepository articleRepository;
-    private final CategoryRepository categoryRepository;
-    private final ArticleTagRepository articleTagRepository;
 
-    public QuestionService(ArticleRepository articleRepository, CategoryRepository categoryRepository,
-                           ArticleTagRepository articleTagRepository) {
+    public QuestionService(ArticleRepository articleRepository) {
         this.articleRepository = articleRepository;
-        this.categoryRepository = categoryRepository;
-        this.articleTagRepository = articleTagRepository;
     }
 
     public void updateQuestion(QuestionUpdateDto questionUpdateDto) {
@@ -72,59 +55,4 @@ public class QuestionService {
             }
         });
     }
-
-    public Page<QuestionView> findQuestionByPage(int pageSize, int pageNumber, int categoryId) {
-        Specification<Article> specification = (root, query, cb) -> {
-            List<Predicate> predicates = new ArrayList<>();
-            if (categoryId != 0) {
-                predicates.add(cb.equal(root.get("categoryId"), categoryId));
-            }
-
-            return cb.and(predicates.toArray(new Predicate[0]));
-        };
-
-        Pageable pageable = PageRequest.of(pageNumber-1, pageSize, Sort.by(Sort.Direction.DESC, "weight"));
-        Page<Article> page = articleRepository.findAll(specification, pageable);
-        List<QuestionView> list1 = page.stream().map(question -> {
-            Category category = categoryRepository.findById(question.getCategoryId()).orElse(null);
-            String categoryName = category.getName();
-            String tagName = getTagName(question.getArticleId());
-            return new QuestionView(question, categoryName, tagName);
-        }).collect(Collectors.toList());
-
-        return new PageImpl<>(list1, pageable, page.getTotalElements());
-    }
-
-    private String getTagName(String questionId) {
-        String tagName = "";
-        List<ArticleTag> articleTags = articleTagRepository.findByArticleId(questionId);
-        if (!articleTags.isEmpty()) {
-            Category category1 = categoryRepository.findById(articleTags.get(0).getTagId()).orElse(null);
-            tagName = category1 != null ? category1.getName() : "";
-        }
-
-        return tagName;
-    }
-
-    public List<Category> getCategories() {
-        List<QuestionCount> questionCounts = articleRepository.findQuestionCountByGroup();
-        List<Integer> ids = questionCounts.stream().map(QuestionCount::getCategoryId).collect(Collectors.toList());
-        return categoryRepository.findAllById(ids);
-    }
-
-    public Article findByQuestionId(String questionId) {
-        return articleRepository.findByArticleId(questionId);
-    }
-
-    public QuestionView getQuestionView(String questionId) {
-        Article question = articleRepository.findByArticleId(questionId);
-        Category category = categoryRepository.findById(question.getCategoryId()).orElse(null);
-        String categoryName = category.getName();
-        String tagName = getTagName(question.getArticleId());
-
-        QuestionView questionView = new QuestionView(question, categoryName, tagName);
-        String html = MarkdownUtil.getHtml(question.getContent());
-        questionView.setContent(html);
-        return questionView;
-    }
 }