From ff14c4edc7aa41db4b8fd8722486027b8ff84af0 Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Fri, 12 Aug 2022 14:11:39 +0800
Subject: [PATCH] 友链弹窗添加

---
 snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java |  144 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 137 insertions(+), 7 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 d5d77d3..0b13726 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
@@ -30,17 +30,23 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.core.annotion.BusinessLog;
+import vip.xiaonuo.core.consts.MyConstant;
 import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
+import vip.xiaonuo.core.exception.BlogException;
 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;
 import vip.xiaonuo.modular.blogarticle.service.BlogArticleService;
+import vip.xiaonuo.modular.blogarticlecomment.entity.BlogArticleComment;
+import vip.xiaonuo.modular.blogarticlecomment.service.BlogArticleCommentService;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * blog文章控制器 (提供给外部blog系统查询)
@@ -55,6 +61,9 @@
     @Resource
     private BlogArticleService blogArticleService;
 
+    @Resource
+    private BlogArticleCommentService commentService;
+
     /**
      * @author inleft
      * @date 2022-02-09 18:20:22
@@ -64,14 +73,28 @@
     public ResponseData statistics() {
 
         String updateDate = "--";
-        BlogArticle lastUpdateBlog = blogArticleService.lambdaQuery().orderByDesc(BlogArticle::getUpdateDate).last(" limit 1 ").one();
+        BlogArticle lastUpdateBlog = blogArticleService.lambdaQuery().orderByDesc(BlogArticle::getUpdateDate).last(MyConstant.limit).one();
         if (lastUpdateBlog != null && lastUpdateBlog.getUpdateDate() != null) {
             updateDate = DateUtil.formatDate(lastUpdateBlog.getUpdateDate());
         }
 
+        //新增最近的评论时间
+        BlogArticleComment comment = commentService.lambdaQuery()
+                .eq(BlogArticleComment::getVisitorNickName, MyConstant.inleft)
+                .orderByDesc(BlogArticleComment::getCreateDate)
+                .last(MyConstant.limit)
+                .select(BlogArticleComment::getId, BlogArticleComment::getCreateDate)
+                .one();
+
+        if (comment != null && comment.getUpdateDate() != null
+                && lastUpdateBlog != null
+                && lastUpdateBlog.getCreateDate().before(comment.getCreateDate())) {
+            updateDate = DateUtil.formatDate(comment.getCreateDate());
+        }
+
         String startFrom = "从这开始: 2020-05-27 ";
         String aliveDayCount = "已稳定运行:" + DateUtil.between(DateUtil.parseDate("2022-02-14"), new Date(), DateUnit.DAY) + "天";
-        String lastUpdateDate = "上次更新:" + updateDate;
+        String lastUpdateDate = "上次活跃于:" + updateDate;
         String visitCount = "累计访问:1010次"; //24小时ip 访问次数
         String visitorCount = "累计访客:1001名";//所有时间ip个数
 
@@ -79,8 +102,8 @@
         res.add(new BlogStatisticsVo.simpleVo().setName(startFrom));
         res.add(new BlogStatisticsVo.simpleVo().setName(aliveDayCount));
         res.add(new BlogStatisticsVo.simpleVo().setName(lastUpdateDate));
-        res.add(new BlogStatisticsVo.simpleVo().setName(visitCount));
-        res.add(new BlogStatisticsVo.simpleVo().setName(visitorCount));
+//        res.add(new BlogStatisticsVo.simpleVo().setName(visitCount));
+//        res.add(new BlogStatisticsVo.simpleVo().setName(visitorCount));
 
         BlogStatisticsVo statisticsVo = new BlogStatisticsVo();
         statisticsVo.setList(res);
@@ -89,5 +112,112 @@
 
     }
 
+    /**
+     * 查询blog归档
+     *
+     * @author inleft
+     * @date 2022-02-09 18:20:22
+     */
+    @GetMapping("/blog/archive")
+    @BusinessLog(title = "外部blog系统_blog归档_查询", opType = LogAnnotionOpTypeEnum.QUERY)
+    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();
+
+        List<BlogArchiveVo> res = new ArrayList<>(articleList.size());
+        BlogArchiveVo blogArchiveVo;
+        for (BlogArticle blogArticle : articleList) {
+
+            blogArchiveVo = new BlogArchiveVo();
+            blogArchiveVo.setYear(blogArticle.getSeparateYear().toString());
+            blogArchiveVo.setList(blogArticleService.searchMonthCount(blogArticle.getSeparateYear()));
+            res.add(blogArchiveVo);
+        }
+
+        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().sorted(
+                    Comparator.comparing(BlogArticle::getSeparateMonth)
+                            .thenComparing(BlogArticle::getSeparateDay).reversed())
+                    .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);
+    }
+
+
+    @GetMapping("/blog/option")
+    @BusinessLog(title = "外部blog系统_blog统计数据_添加", opType = LogAnnotionOpTypeEnum.EDIT)
+    public ResponseData option(Long articleId, Integer option) {
+        BlogArticle find = blogArticleService.lambdaQuery()
+                .eq(BlogArticle::getIsEnable, MyConstant.Yes)
+                .eq(BlogArticle::getEditorStatus, MyConstant.Yes)
+                .eq(BlogArticle::getId, articleId)
+                .one();
+        if (find == null) {
+            throw new BlogException("查询不到相关日志");
+        }
+        /**
+         * 同一个ip,24小时之内只统计一次 访问次数,访问人数(ip)
+         */
+        return null;
+    }
 }

--
Gitblit v1.9.1