From 504927efd3bd35f12714cd6367e6f2a9c5d2d1dc Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Mon, 21 Feb 2022 11:51:14 +0800
Subject: [PATCH] 归档时间线

---
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 3 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 48e1960..47f6dc4 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
@@ -34,6 +34,7 @@
 import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
 import vip.xiaonuo.core.pojo.response.ResponseData;
 import vip.xiaonuo.core.pojo.response.SuccessResponseData;
+import vip.xiaonuo.modular.blogStatistics.vo.BlogArchiveDetailVo;
 import vip.xiaonuo.modular.blogStatistics.vo.BlogArchiveVo;
 import vip.xiaonuo.modular.blogStatistics.vo.BlogStatisticsVo;
 import vip.xiaonuo.modular.blogarticle.entity.BlogArticle;
@@ -41,6 +42,8 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * blog文章控制器 (提供给外部blog系统查询)
@@ -97,14 +100,12 @@
      */
     @GetMapping("/blog/archive")
     @BusinessLog(title = "外部blog系统_blog归档_查询", opType = LogAnnotionOpTypeEnum.QUERY)
-    public ResponseData archive(Integer year, Integer month) {
+    public ResponseData archive() {
         //不考虑数据太多的情况,这里应该可以把数据全部捞出来
 
         List<BlogArticle> articleList = blogArticleService.lambdaQuery()
                 .eq(BlogArticle::getIsEnable, MyConstant.Yes)
                 .eq(BlogArticle::getEditorStatus, MyConstant.Yes)
-//                .eq(year != null,BlogArticle::getSeparateYear, year)
-//                .eq(month != null, BlogArticle::getSeparateMonth, month)
                 .orderByDesc(BlogArticle::getSeparateYear)
                 .groupBy(BlogArticle::getSeparateYear)
                 .select(BlogArticle::getSeparateYear)
@@ -123,5 +124,61 @@
         return new SuccessResponseData(res);
     }
 
+    @GetMapping("/blog/archiveGroup")
+    @BusinessLog(title = "外部blog系统_blog归档组列表_查询", opType = LogAnnotionOpTypeEnum.QUERY)
+    public ResponseData archiveGroup(Integer year, Integer month) {
+
+        List<BlogArticle> articleList = blogArticleService.lambdaQuery()
+                .eq(BlogArticle::getIsEnable, MyConstant.Yes)
+                .eq(BlogArticle::getEditorStatus, MyConstant.Yes)
+                .eq(year != null, BlogArticle::getSeparateYear, year)
+                .eq(month != null, BlogArticle::getSeparateMonth, month)
+                .orderByDesc(BlogArticle::getSeparateYear)
+                .orderByDesc(BlogArticle::getSeparateMonth)
+                .select(BlogArticle::getId, BlogArticle::getTitle,
+                        BlogArticle::getAuthStatus,
+                        BlogArticle::getSeparateYear,
+                        BlogArticle::getSeparateMonth,
+                        BlogArticle::getSeparateDay)
+                .list();
+
+        Map<Integer, List<BlogArticle>> groupMap = articleList.stream()
+                .collect(Collectors.groupingBy(e -> e.getSeparateYear(), LinkedHashMap::new,
+                        Collectors.mapping(Function.identity(), Collectors.toList())));
+
+        List<BlogArchiveVo> res = new ArrayList<>(groupMap.size());
+        BlogArchiveVo archiveVo;
+
+        Map<String, List<BlogArchiveDetailVo.simpleVo>> detailGroup;
+        List<BlogArchiveDetailVo> tempDetailList;
+
+        for (Integer key : groupMap.keySet()) {
+            archiveVo = new BlogArchiveVo();
+            archiveVo.setYear(key.toString());
+
+            detailGroup = groupMap.get(key).stream()
+                    .collect(Collectors.groupingBy(e -> e.getSeparateMonth().toString() + "月" + e.getSeparateDay() + "日", LinkedHashMap::new,
+                            Collectors.mapping(e -> {
+                                BlogArchiveDetailVo.simpleVo simpleVo = new BlogArchiveDetailVo.simpleVo();
+                                simpleVo.setName(e.getTitle());
+                                simpleVo.setId(e.getId());
+                                simpleVo.setAuthStatus(e.getAuthStatus());
+                                return simpleVo;
+                            }, Collectors.toList())));
+
+            tempDetailList = new ArrayList<>(detailGroup.size());
+            archiveVo.setList(tempDetailList);
+            for (String monthAndDay : detailGroup.keySet()) {
+                BlogArchiveDetailVo detailVo = new BlogArchiveDetailVo();
+                detailVo.setMonth(monthAndDay);
+                detailVo.setList(detailGroup.get(monthAndDay));
+                tempDetailList.add(detailVo);
+            }
+
+            res.add(archiveVo);
+        }
+
+        return new SuccessResponseData(res);
+    }
 
 }

--
Gitblit v1.9.1