From 124ca536917b5eebe059bb98745f6743c52a6836 Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Tue, 23 Aug 2022 18:47:32 +0800
Subject: [PATCH] 优化归档年份数据获取

---
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java
index 0b13726..2b95396 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java
@@ -24,6 +24,7 @@
  */
 package vip.xiaonuo.modular.blogStatistics;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -47,6 +48,7 @@
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * blog文章控制器 (提供给外部blog系统查询)
@@ -86,7 +88,7 @@
                 .select(BlogArticleComment::getId, BlogArticleComment::getCreateDate)
                 .one();
 
-        if (comment != null && comment.getUpdateDate() != null
+        if (comment != null && comment.getCreateDate() != null
                 && lastUpdateBlog != null
                 && lastUpdateBlog.getCreateDate().before(comment.getCreateDate())) {
             updateDate = DateUtil.formatDate(comment.getCreateDate());
@@ -123,26 +125,29 @@
     public ResponseData archive() {
         //不考虑数据太多的情况,这里应该可以把数据全部捞出来
 
-        List<BlogArticle> articleList = blogArticleService.lambdaQuery()
-                .eq(BlogArticle::getIsEnable, MyConstant.Yes)
-                .eq(BlogArticle::getEditorStatus, MyConstant.Yes)
-                .orderByDesc(BlogArticle::getSeparateYear)
-                .groupBy(BlogArticle::getSeparateYear)
-                .select(BlogArticle::getSeparateYear)
-                .list();
+        Integer thisYear = DateUtil.thisYear();
+        Integer startYear = blogArticleService.lambdaQuery().orderByAsc(BlogArticle::getSeparateYear).last(MyConstant.limit).one().getSeparateYear();
+        List<Integer> yearList = Stream.iterate(thisYear, n -> n - 1).limit(thisYear - startYear + 1).collect(Collectors.toList());
 
-        List<BlogArchiveVo> res = new ArrayList<>(articleList.size());
+        List<BlogArchiveVo> res = new ArrayList<>(yearList.size());
         BlogArchiveVo blogArchiveVo;
-        for (BlogArticle blogArticle : articleList) {
+        List<BlogArchiveDetailVo> tempVoList;
+        for (Integer year : yearList) {
 
+            tempVoList = blogArticleService.searchMonthCount(year);
+            if (CollUtil.isEmpty(tempVoList)) {
+                continue;
+            }
             blogArchiveVo = new BlogArchiveVo();
-            blogArchiveVo.setYear(blogArticle.getSeparateYear().toString());
-            blogArchiveVo.setList(blogArticleService.searchMonthCount(blogArticle.getSeparateYear()));
+            blogArchiveVo.setYear(year.toString());
+            blogArchiveVo.setList(tempVoList);
+
             res.add(blogArchiveVo);
         }
 
         return new SuccessResponseData(res);
     }
+
 
     @GetMapping("/blog/archiveGroup")
     @BusinessLog(title = "外部blog系统_blog归档组列表_查询", opType = LogAnnotionOpTypeEnum.QUERY)
@@ -153,6 +158,7 @@
                 .eq(BlogArticle::getEditorStatus, MyConstant.Yes)
                 .eq(year != null, BlogArticle::getSeparateYear, year)
                 .eq(month != null, BlogArticle::getSeparateMonth, month)
+                .le(BlogArticle::getPublishDate, DateUtil.date())
                 .orderByDesc(BlogArticle::getSeparateYear)
                 .orderByDesc(BlogArticle::getSeparateMonth)
                 .select(BlogArticle::getId, BlogArticle::getTitle,

--
Gitblit v1.9.1