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