From 51ea662e22121f9a0ddb5b40c4a8e93e098b34ec Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Wed, 10 Jan 2024 22:22:44 +0800
Subject: [PATCH] fxi

---
 src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java |  103 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 61 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
index 5ad116f..09b2ab5 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
@@ -10,9 +10,12 @@
 import com.xcong.farmer.cms.core.tag.data.PageChildData;
 import com.xcong.farmer.cms.core.tag.data.PageData;
 import com.xcong.farmer.cms.core.tag.model.Article;
+import com.xcong.farmer.cms.core.tag.model.Column;
 import com.xcong.farmer.cms.core.tag.model.Pagination;
 import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
 import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
+import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper;
 import com.xcong.farmer.cms.utils.SpringContextHolder;
 import lombok.extern.slf4j.Slf4j;
 
@@ -27,62 +30,78 @@
 public class PageDataParserHandler implements DataParserHandler {
 
     private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
-    private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
+    private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class);
     @Override
     public void dataParser(AttrNode attrNode) {
         log.info("分页解析");
-        Template.HAS_PAGING = true;
+        synchronized (this) {
+            Template.HAS_PAGING = true;
 
-        Long companyId = (Long) attrNode.getSystemDataValue("companyId");
-        Pagination param = (Pagination) attrNode.getParam();
+            String baseUrl = (String) attrNode.getSystemDataValue("baseUrl");
 
-        Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit()));
-        ArticleEntity article = new ArticleEntity();
-        article.setColumnCode(param.getCode());
-        article.setCompanyId(companyId);
-        IPage<ArticleEntity> pageList = articleMapper.selectArticleInPage(page, article);
+            Long companyId = (Long) attrNode.getSystemDataValue("companyId");
+            Pagination param = (Pagination) attrNode.getParam();
 
-        PageData pageData = new PageData();
-        pageData.setTotalPage((int) pageList.getPages());
-        pageData.setIndex(Integer.parseInt(param.getPage()));
-        pageData.setTotalCnt((int) pageList.getSize());
-
-        if (CollUtil.isNotEmpty(pageList.getRecords())) {
-            String path = cmsProperties.getBaseUrl() + "/" + param.getCode();
-            String filename = "index_{}.html";
-
-            List<PageChildData> list = new ArrayList<>();
-            int pageNo = Integer.parseInt(param.getPage());
-
-            // 计算出页面显示分页的最大和最小值
-            int[] startAndEnd = pageStartAndEnd(pageNo, (int) pageList.getPages(), Integer.parseInt(param.getSize()));
-            for (int i = startAndEnd[0]; i <= startAndEnd[1] ; i++) {
-                PageChildData child = new PageChildData();
-                child.setIndex(i);
-                if (pageNo == 1) {
-                    child.setPath(path + "/index.html");
-                } else {
-                    child.setPath(path + "/" + StrUtil.format(filename, i));
-                }
-                list.add(child);
+            Object pageNum = attrNode.getSystemDataValue("page");
+            if (pageNum != null) {
+                param.setPage(pageNum.toString());
             }
 
-            pageData.setChildren(list);
-        } else {
-            pageData.setNext("javascript:void(0)");
-            pageData.setPrev("javascript:void(0)");
-        }
+            Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit()));
+            ArticleEntity article = new ArticleEntity();
+            article.setColumnCode(param.getCode());
+            article.setCompanyId(companyId);
+            IPage<ArticleEntity> pageList = articleMapper.selectArticleInPage(page, article);
 
-        if (Integer.parseInt(param.getPage()) == pageList.getPages()) {
-            Template.HAS_PAGING = false;
-        }
+            PageData pageData = new PageData();
+            pageData.setTotalPage((int) pageList.getPages());
+            pageData.setIndex(Integer.parseInt(param.getPage()));
+            pageData.setTotalCnt((int) pageList.getSize());
 
-        attrNode.setData(pageData);
+            if (CollUtil.isNotEmpty(pageList.getRecords())) {
+                ColumnEntity parentColumn = columnMapper.selectParentColumnByCodeAndCompanyId(param.getCode(), companyId);
+                String path;
+                if (parentColumn == null) {
+                    path = baseUrl + "/" + param.getCode();
+                } else {
+                    path = baseUrl + "/" + parentColumn.getColumnCode() + "/" + param.getCode();
+                }
+
+                String filename = "index_{}.html";
+
+                List<PageChildData> list = new ArrayList<>();
+                int pageNo = Integer.parseInt(param.getPage());
+
+                // 计算出页面显示分页的最大和最小值
+                int[] startAndEnd = pageStartAndEnd(pageNo, (int) pageList.getPages(), Integer.parseInt(param.getSize()));
+                for (int i = startAndEnd[0]; i <= startAndEnd[1]; i++) {
+                    PageChildData child = new PageChildData();
+                    child.setIndex(i);
+                    if (i == 1) {
+                        child.setPath(path + "/index.html");
+                    } else {
+                        child.setPath(path + "/" + StrUtil.format(filename, i));
+                    }
+                    list.add(child);
+                }
+
+                pageData.setChildren(list);
+            } else {
+                pageData.setNext("javascript:void(0)");
+                pageData.setPrev("javascript:void(0)");
+            }
+
+            if (Integer.parseInt(param.getPage()) >= pageList.getPages()) {
+                Template.HAS_PAGING = false;
+            }
+
+            attrNode.setData(pageData);
+        }
     }
 
     /**
      * (x + y)/2 = index
-     * y - x= size  解二元一次方程
+     * y - x= size  解二元一次方程 x-起点 y-终点
      *
      * @param index 当前页码
      * @param totalPage 总页数

--
Gitblit v1.9.1