From 2ddbd99aa5b2e396f96c6daba60fe1ac2573d9fb Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Sat, 18 May 2024 11:53:54 +0800
Subject: [PATCH] 新增RSS 订阅链接

---
 snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/service/impl/BlogArticleServiceImpl.java |   82 ++++++++++++++++++++++-------------------
 1 files changed, 44 insertions(+), 38 deletions(-)

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 b1a14aa..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
@@ -28,6 +28,7 @@
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.PageUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -51,6 +52,7 @@
 import vip.xiaonuo.modular.blogarticle.service.BlogArticleService;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Future;
@@ -185,60 +187,64 @@
     @Async
     @Override
     public Future<List<BlogArticleVo>> getAdjoiningRecord(BlogArticleQueryDto queryDto) {
-        int pageNum = 1;
-        Page<BlogArticle> queryPage = new Page<>(pageNum, 10);
+        int pageNo = 0;
+        int pageSize = 100;
+        Map<String, Object> param = new HashMap<>(16);
+        param.put("pageNo", PageUtil.getStart(pageNo, pageSize));
+        param.put("pageSize", pageSize);
+        param.put("typeId", queryDto.getTypeId());
+        param.put("fileType", queryDto.getFileType());
 
-        LambdaQueryWrapper<BlogArticle> queryWrapper = new LambdaQueryWrapper();
+        List<BlogArticleVo> result = new ArrayList(2) {{
+            add(null);
+            add(null);
+        }};
 
-        queryWrapper.eq(BlogArticle::getIsEnable, MyConstant.Yes)
-                .eq(BlogArticle::getEditorStatus, MyConstant.EditorStatus.status_1)
-                .le(BlogArticle::getPublishDate, DateUtil.date())
-                .eq(queryDto.getTypeId() != null, BlogArticle::getArticleTypeId, queryDto.getTypeId())
-                .eq(queryDto.getFileType() != null, BlogArticle::getArticleFileType, queryDto.getFileType())
-                .notIn(queryDto.getFileType() == null && queryDto.getTypeId() == null, BlogArticle::getArticleFileType, new Integer[]{3, 4})
-                .orderByDesc(BlogArticle::getIsTop)
-                .orderByAsc(BlogArticle::getTopValue)
-                .orderByAsc(queryDto.getTypeId() != null, BlogArticle::getPublishDate)
-                .orderByAsc(queryDto.getTypeId() == null, BlogArticle::getUpdateDate)
-                .select(BlogArticle::getId);
-
-        Long[] recordId = new Long[]{null, null};
-        List<BlogArticle> tempRecordList;
+        List<BlogArticleVo> tempRecordList;
         while (true) {
-            tempRecordList = this.page(queryPage, queryWrapper).getRecords();
+            tempRecordList = this.baseMapper.getAdjoiningRecord(param);
             if (CollUtil.isEmpty(tempRecordList)) {
                 break;
             }
 
             for (int i = 0; i < tempRecordList.size(); i++) {
-                if (queryDto.getId().equals(tempRecordList.get(i))) {
+                if (queryDto.getId().equals(tempRecordList.get(i).getId())) {
                     //防止边界
-                    recordId[0] = i - 1 >= 0 ? tempRecordList.get(i - 1).getId() : recordId[0];
-                    recordId[1] = i + 1 < tempRecordList.size() ? tempRecordList.get(i + 1).getId() : recordId[1];
+                    if (i - 1 >= 0) {
+                        result.set(0, tempRecordList.get(i - 1));
+                    }
+                    if (i + 1 < tempRecordList.size()) {
+                        result.set(1, tempRecordList.get(i + 1));
+                    } else {
+                        //记录恰好在队尾
+                        param.put("pageNo", PageUtil.getStart(++pageNo, pageSize));
+                        tempRecordList = this.baseMapper.getAdjoiningRecord(param);
+                        if (CollUtil.isNotEmpty(tempRecordList)) {
+                            result.set(1, tempRecordList.get(0));
+                        }
+                    }
+                    return new AsyncResult<>(result);
                 }
 
-                //记录此页最后一条作为下一页起始记录
-                recordId[0] = tempRecordList.get(i).getId();
+                //记录此页最后一条作为下一页起始记录(记录恰好在队头)
+                result.set(0, tempRecordList.get(i));
             }
 
-            queryPage = new Page<>(++pageNum, 10);
+            //下一页
+            param.put("pageNo", PageUtil.getStart(++pageNo, pageSize));
         }
 
-        List<BlogArticleVo> result = new ArrayList<>(2);
-        for (int i = 0; i < recordId.length; i++) {
-            if (recordId[i] != null) {
-                result.add(this.lambdaQuery()
-                        .eq(BlogArticle::getId, recordId[i])
-                        .oneOpt().map(e -> {
-                            BlogArticleVo vo = new BlogArticleVo();
-                            BeanUtil.copyProperties(e, vo);
-                            return vo;
-                        }).orElse(null));
-            } else {
-                result.add(null);
-            }
-        }
 
         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);
+    }
 }

--
Gitblit v1.9.1