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/blogarticle/controller/BlogArticleOutsideController.java |    9 +-
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogArchiveDetailVo.java               |   39 ++++--------
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogStatisticsVo.java                  |   23 -------
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml         |    1 
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java             |   63 ++++++++++++++++++++-
 5 files changed, 79 insertions(+), 56 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);
+    }
 
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogArchiveDetailVo.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogArchiveDetailVo.java
index fc60773..f3f6ba0 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogArchiveDetailVo.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogArchiveDetailVo.java
@@ -1,30 +1,10 @@
-/*
-Copyright [2020] [https://www.xiaonuo.vip]
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
-
-1.请不要删除和修改根目录下的LICENSE文件。
-2.请不要删除和修改Snowy源码头部的版权声明。
-3.请保留源码和相关描述文件的项目出处,作者声明等。
-4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
-5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
-6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
- */
 package vip.xiaonuo.modular.blogStatistics.vo;
 
 import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
 
 /**
  * blog 统计信息
@@ -36,6 +16,15 @@
 public class BlogArchiveDetailVo {
     private String month;
     private String count;
-    private String name;
-    private String remark;
+
+    private List<simpleVo> list;
+
+    @Data
+    @Accessors(chain = true)
+    public static class simpleVo {
+        private Long id;
+        private Integer authStatus;
+        private String name;
+        private String remark;
+    }
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogStatisticsVo.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogStatisticsVo.java
index 01c1659..4f58acf 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogStatisticsVo.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/vo/BlogStatisticsVo.java
@@ -1,27 +1,4 @@
-/*
-Copyright [2020] [https://www.xiaonuo.vip]
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
-
-1.请不要删除和修改根目录下的LICENSE文件。
-2.请不要删除和修改Snowy源码头部的版权声明。
-3.请保留源码和相关描述文件的项目出处,作者声明等。
-4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
-5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
-6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
- */
 package vip.xiaonuo.modular.blogStatistics.vo;
 
 import lombok.Data;
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java
index 8051173..108d6e1 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java
@@ -34,7 +34,6 @@
 import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.core.annotion.BusinessLog;
 import vip.xiaonuo.core.consts.MyConstant;
-import vip.xiaonuo.core.context.constant.ConstantContextHolder;
 import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
 import vip.xiaonuo.core.exception.BlogException;
 import vip.xiaonuo.core.exception.enums.BlogExceptionEnum;
@@ -79,11 +78,13 @@
         param.put("pageNo", PageUtil.getStart(queryDto.getPageNo() - 1, queryDto.getPageSize()));
         param.put("pageSize", queryDto.getPageSize());
         param.put("typeId", queryDto.getTypeId());
-        String fileUploadPathForLinux = ConstantContextHolder.getDefaultFileUploadPathForLinux();
+//        String fileUploadPathForLinux = ConstantContextHolder.getDefaultFileUploadPathForLinux();
 
         List<BlogArticleVo> resList = blogArticleService.searchList(param).stream().map(e -> {
-            if (StrUtil.isNotEmpty(e.getArticleFileURL())) {
-                e.setArticleFileURL(fileUploadPathForLinux + e.getArticleFileURL());
+            if (StrUtil.isNotEmpty(e.getCoverFileURL())) {
+                if (!e.getCoverFileURL().startsWith("http")) {
+                    //补上访问参数
+                }
             }
             return e;
         }).collect(Collectors.toList());
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml
index 1615954..e0cde2a 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml
@@ -39,7 +39,6 @@
     <select id="searchList" resultType="vip.xiaonuo.modular.blogarticle.param.BlogArticleVo">
         select
         <include refid="Base_Column_List"/>
-        ,CONCAT("/",f1.file_bucket,"/",f1.file_object_name) as articleFileURL
         ,IFNULL("",CONCAT("/",f2.file_bucket,"/",f2.file_object_name)) as coverFileURL
         ,t.type_name as articleTypeName
         from

--
Gitblit v1.9.1