From eaf26c265f8882b2e100428d942ac377330cc114 Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Thu, 04 Aug 2022 18:47:07 +0800 Subject: [PATCH] 新增:消息盒子功能 --- snowy-main/src/main/java/vip/xiaonuo/modular/blogStatistics/BlogStatisticsController.java | 158 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 142 insertions(+), 16 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 a315ead..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 @@ -63,28 +72,38 @@ @BusinessLog(title = "外部blog系统_统计_查询", opType = LogAnnotionOpTypeEnum.QUERY) public ResponseData statistics() { - //相差一个月,31天 - long betweenDay = DateUtil.between(DateUtil.parseDate("2020-05-27"), new Date(), DateUnit.DAY); - String updateDate; - BlogArticle lastUpdateBlog = blogArticleService.lambdaQuery().orderByDesc(BlogArticle::getUpdateDate) - .last(" limit 1 ").one(); + String updateDate = "--"; + BlogArticle lastUpdateBlog = blogArticleService.lambdaQuery().orderByDesc(BlogArticle::getUpdateDate).last(MyConstant.limit).one(); if (lastUpdateBlog != null && lastUpdateBlog.getUpdateDate() != null) { updateDate = DateUtil.formatDate(lastUpdateBlog.getUpdateDate()); - } else { - updateDate = "--"; } + + //新增最近的评论时间 + 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 = "已稳定运行:" + betweenDay + "天"; - String lastUpdateDate = "上次更新:" + updateDate; - String visitCount = "累计访问:1010次"; - String visitorCount = "累计访客:1001名"; + String aliveDayCount = "已稳定运行:" + DateUtil.between(DateUtil.parseDate("2022-02-14"), new Date(), DateUnit.DAY) + "天"; + String lastUpdateDate = "上次活跃于:" + updateDate; + String visitCount = "累计访问:1010次"; //24小时ip 访问次数 + String visitorCount = "累计访客:1001名";//所有时间ip个数 List<BlogStatisticsVo.simpleVo> res = new ArrayList<>(); 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); @@ -93,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