From dc050f50a530ef7b0eaa378ca1790c26d4f0bfd5 Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Wed, 24 Aug 2022 03:44:06 +0800
Subject: [PATCH] 新增月台专用查询接口

---
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java |   84 ++++++++++++++++++++-
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/BlogArticleMapper.java                |    3 
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/BlogArticleService.java              |    4 +
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java               |    5 +
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java     |   10 ++
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/entity/BlogArticleVo.java                    |   18 ++++
 snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java                           |    9 ++
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticletype/mapper/mapping/BlogArticleTypeMapper.xml |    2 
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml         |   64 ++++++++++++++-
 9 files changed, 189 insertions(+), 10 deletions(-)

diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java
index c6bc94d..2d93102 100644
--- a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java
+++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java
@@ -41,6 +41,15 @@
         int status_1 = 1;
     }
 
+    /**
+     * 月台类型分类,暂时不考虑加入数据库
+     */
+    interface platformType {
+        int type_1 = 1;//片刻
+        int type_2 = 2;//流影
+        int type_3 = 3;//谱库
+    }
+
 
     /**
      * 文件类型
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 8c2ee6f..69f7351 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
@@ -25,6 +25,7 @@
 package vip.xiaonuo.modular.blogarticle.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.PageUtil;
@@ -36,6 +37,7 @@
 import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.core.annotion.BusinessLog;
 import vip.xiaonuo.core.consts.MyConstant;
+import vip.xiaonuo.core.consts.SymbolConstant;
 import vip.xiaonuo.core.context.constant.ConstantContextHolder;
 import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
 import vip.xiaonuo.core.exception.BlogException;
@@ -53,11 +55,9 @@
 import vip.xiaonuo.sys.modular.file.service.SysFileInfoService;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.Future;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -186,6 +186,61 @@
         return new SuccessResponseData(queryPage);
     }
 
+
+    /**
+     * 查询blog文章(月台专用列表)
+     *
+     * @author inleft
+     * @date 2022-02-09 18:20:22
+     */
+    @GetMapping("/blogArticle/platform")
+    @BusinessLog(title = "外部blog系统_blog月台_查询", opType = LogAnnotionOpTypeEnum.QUERY)
+    public ResponseData platform(BlogArticleQueryDto queryDto) {
+
+        Map<String, Object> param = new HashMap<>(16);
+        param.put("pageNo", PageUtil.getStart(queryDto.getPageNo() - 1, queryDto.getPageSize()));
+        param.put("pageSize", queryDto.getPageSize());
+
+        if (queryDto.getActiveKey().equals(MyConstant.platformType.type_2)) {
+            param.put("typeIds", new Long[]{10L});//临时id,后续需要修改(前方高能分类)
+            param.put("fileType", MyConstant.FileType.fileTypeVideo_3);
+        } else if (queryDto.getActiveKey().equals(MyConstant.platformType.type_3)) {
+            param.put("typeIds", new Long[]{99L});//临时id,后续需要修改
+            param.put("fileType", MyConstant.FileType.fileTypePhoto_9);
+        } else {
+            param.put("typeIds", new Long[]{4L});//临时id,后续需要修改(音乐分类)
+            param.put("fileType", MyConstant.FileType.fileTypeVideo_3);
+        }
+
+        String blogSourcePrefix = ConstantContextHolder.getBlogSourcePrefix();
+
+        //空类型查询条件,排除笔记系列,按更新时间倒序
+        //含有类型查询,按发布时间倒序
+        List<BlogArticleVo> resList = blogArticleService.searchPlatformList(param).stream().map(e -> {
+            if (StrUtil.isNotEmpty(e.getCoverFileURL())) {
+                if (!e.getCoverFileURL().startsWith("http")) {
+                    //补上访问参数
+                    e.setCoverFileURL(blogSourcePrefix + e.getCoverFileURL());
+                }
+            }
+
+            //补充视频组,图片组的url
+            if (StrUtil.isNotEmpty(e.getPictureIds())) {
+                e.setPictureUrlList(this.getBlogSourceURLBatch(Arrays.stream(e.getPictureIds().split(SymbolConstant.COMMA)).collect(Collectors.toList())));
+            }
+
+            return e;
+        }).collect(Collectors.toList());
+
+        long count = blogArticleService.searchPlatformListCount(param);
+
+        Page<BlogArticleVo> queryPage = new Page<>(queryDto.getPageNo(), queryDto.getPageSize());
+        queryPage.setRecords(resList);
+        queryPage.setTotal(count);
+
+        return new SuccessResponseData(queryPage);
+    }
+
     @GetMapping("/blogArticle/queryBlogArticleDetail")
     @BusinessLog(title = "外部blog系统_blog文章详情_查询", opType = LogAnnotionOpTypeEnum.QUERY)
     public ResponseData queryBlogArticleDetail(BlogArticleQueryDto queryDto) {
@@ -256,4 +311,25 @@
         }
     }
 
+    private List<String> getBlogSourceURLBatch(List<String> fileIds) {
+        Map<String, SysFileInfo> sysFileInfoMap = fileInfoService.listByIds(fileIds).stream().collect(Collectors.toMap(e -> e.getId().toString(), Function.identity(), (k1, k2) -> k1));
+        if (CollUtil.isEmpty(sysFileInfoMap)) {
+            return null;
+        } else {
+            List<String> urlList = new ArrayList<>(fileIds.size());
+            String blogSourcePrefix = ConstantContextHolder.getBlogSourcePrefix();
+
+            SysFileInfo sysFileInfo;
+            for (String fileId : fileIds) {
+                sysFileInfo = sysFileInfoMap.getOrDefault(fileId, null);
+                if (sysFileInfo == null) {
+                    urlList.add(null);
+                } else {
+                    urlList.add(blogSourcePrefix + sysFileInfo.getFileBucket() + "/" + sysFileInfo.getFileObjectName());
+                }
+            }
+            return urlList;
+        }
+    }
+
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/entity/BlogArticleVo.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/entity/BlogArticleVo.java
index 8708ded..0d23a6f 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/entity/BlogArticleVo.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/entity/BlogArticleVo.java
@@ -29,6 +29,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * blog文章主体
@@ -83,6 +84,7 @@
     @JsonIgnore
     private Long coverFileId;
 
+
     /**
      * 上次编辑时间
      */
@@ -136,4 +138,20 @@
      */
     private BlogArticleVo nextRecord;
 
+
+    /**
+     * 图库地址列表
+     */
+    private List<String> pictureUrlList;
+
+    /**
+     * 视频地址列表
+     */
+    private List<String> videoUrlList;
+
+    @JsonIgnore
+    private String videoIds;
+
+    @JsonIgnore
+    private String pictureIds;
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/BlogArticleMapper.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/BlogArticleMapper.java
index 95cf0a5..fd20921 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/BlogArticleMapper.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/BlogArticleMapper.java
@@ -49,4 +49,7 @@
 
     List<BlogArticleVo> getAdjoiningRecord(@Param("param") Map<String, Object> param);
 
+    List<BlogArticleVo> searchPlatformList(@Param("param") Map<String, Object> param);
+
+    long searchPlatformListCount(@Param("param") Map<String, Object> param);
 }
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 37d427e..c5b8025 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
@@ -26,9 +26,12 @@
        a.is_allowed_comment,
        a.jump_url as jumpURL,
        a.update_date,
-       a.create_date
+       a.create_date,
+       a.video_ids,
+       a.picture_ids
     </sql>
 
+    <!--首页通用的条件查询-->
     <sql id="queryListCondition">
         <trim prefix="WHERE" prefixOverrides="AND | OR">
             a.is_enable=1
@@ -60,6 +63,7 @@
 
     </sql>
 
+    <!-- 首页查询-->
     <select id="searchList" resultType="vip.xiaonuo.modular.blogarticle.entity.BlogArticleVo">
         select
         <include refid="Base_Column_List"/>
@@ -70,10 +74,6 @@
         inner join blog_article_type t
         on t.id =a.article_type_id
 
-        left join sys_file_info f1
-        on f1.id=a.article_file_id
-
-
         left join sys_file_info f2
         on f2.id=a.cover_file_id
 
@@ -82,6 +82,7 @@
         limit #{param.pageNo},#{param.pageSize}
     </select>
 
+    <!-- 首页查询个数统计-->
     <select id="searchListCount" resultType="java.lang.Long">
         select
         count(0)
@@ -91,6 +92,7 @@
 
     </select>
 
+    <!-- 月份归档统计-->
     <select id="searchMonthCount" resultType="vip.xiaonuo.modular.blogStatistics.vo.BlogArchiveDetailVo">
        SELECT
 	    separate_month AS `month`,
@@ -110,7 +112,8 @@
 
     </select>
 
-    <select id="getAdjoiningRecord"  resultType="vip.xiaonuo.modular.blogarticle.entity.BlogArticleVo">
+    <!-- 上下篇查询-->
+    <select id="getAdjoiningRecord" resultType="vip.xiaonuo.modular.blogarticle.entity.BlogArticleVo">
         select
         a.id,
         a.title
@@ -119,4 +122,53 @@
         <include refid="queryListCondition"/>
         limit #{param.pageNo},#{param.pageSize}
     </select>
+
+    <sql id="queryPlatformCondition">
+        <trim prefix="WHERE" prefixOverrides="AND | OR">
+            a.is_enable=1
+            and a.editor_status=1
+            and a.publish_date &lt; now()
+
+            <if test="param.fileType != null">
+                and a.article_file_type = #{param.fileType}
+            </if>
+
+            AND a.article_type_id in
+            <foreach collection="param.typeIds" item="obj" separator="," open="(" close=")">
+                #{obj}
+            </foreach>
+
+            order by a.is_top desc,a.top_value asc , a.publish_date desc
+        </trim>
+
+    </sql>
+
+    <!--月台列表查询-->
+    <select id="searchPlatformList" resultType="vip.xiaonuo.modular.blogarticle.entity.BlogArticleVo">
+        select
+        <include refid="Base_Column_List"/>
+        ,IF(a.cover_file_id is not null,CONCAT("/",f2.file_bucket,"/",f2.file_object_name),"") as coverFileURL
+        ,t.type_name as articleTypeName
+        from
+        blog_article a
+        inner join blog_article_type t
+        on t.id =a.article_type_id
+
+        left join sys_file_info f2
+        on f2.id=a.cover_file_id
+
+        <include refid="queryPlatformCondition"/>
+
+        limit #{param.pageNo},#{param.pageSize}
+    </select>
+
+    <select id="searchPlatformListCount" resultType="java.lang.Long">
+        select
+        count(0)
+        from
+        blog_article a
+        <include refid="queryPlatformCondition"/>
+    </select>
+
+
 </mapper>
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java
index fdffb13..c394b34 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java
@@ -30,5 +30,10 @@
      */
     private Long fileType;
 
+    /**
+     * 激活查询列
+     */
+    private Integer activeKey;
+
 
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/BlogArticleService.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/BlogArticleService.java
index f4f3d31..0058ab1 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/BlogArticleService.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/BlogArticleService.java
@@ -112,4 +112,8 @@
      */
     @Async
     Future<List<BlogArticleVo>> getAdjoiningRecord(BlogArticleQueryDto queryDto);
+
+    List<BlogArticleVo> searchPlatformList(Map<String, Object> param);
+
+    long searchPlatformListCount(Map<String, Object> param);
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java
index 4f0786a..011859d 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java
@@ -237,4 +237,14 @@
 
         return new AsyncResult<>(result);
     }
+
+    @Override
+    public List<BlogArticleVo> searchPlatformList(Map<String, Object> param) {
+        return this.baseMapper.searchPlatformList(param);
+    }
+
+    @Override
+    public long searchPlatformListCount(Map<String, Object> param) {
+        return this.baseMapper.searchPlatformListCount(param);
+    }
 }
diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticletype/mapper/mapping/BlogArticleTypeMapper.xml b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticletype/mapper/mapping/BlogArticleTypeMapper.xml
index f4f32da..4d3da7a 100644
--- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticletype/mapper/mapping/BlogArticleTypeMapper.xml
+++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticletype/mapper/mapping/BlogArticleTypeMapper.xml
@@ -21,6 +21,8 @@
 				AND a.is_enable = 1
 				AND a.editor_status = 1
 				AND t.is_enable = 1
+				AND a.publish_date &lt; now()
+
 				GROUP BY
 					t.id
 			) t2

--
Gitblit v1.9.1