From 49dbcdadd860b7613063ee618fbe38a0593d5bd9 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 11 Jul 2022 15:45:29 +0800
Subject: [PATCH] fix
---
src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java | 97 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 97 insertions(+), 0 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 e886cb3..297e1d6 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
@@ -1,15 +1,112 @@
package com.xcong.farmer.cms.core.handler;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.configurations.properties.CmsProperties;
import com.xcong.farmer.cms.core.node.AttrNode;
+import com.xcong.farmer.cms.core.node.Template;
+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.Pagination;
+import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
+import com.xcong.farmer.cms.utils.SpringContextHolder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* @author wzy
* @date 2022-07-05
**/
+@Slf4j
public class PageDataParserHandler implements DataParserHandler {
+ private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
+ private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
@Override
public void dataParser(AttrNode attrNode) {
+ log.info("分页解析");
+ synchronized (this) {
+ Template.HAS_PAGING = true;
+ Long companyId = (Long) attrNode.getSystemDataValue("companyId");
+ Pagination param = (Pagination) attrNode.getParam();
+
+ 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);
+
+ 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);
+ }
+
+ 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 解二元一次方程 x-起点 y-终点
+ *
+ * @param index 当前页码
+ * @param totalPage 总页数
+ * @param size 分页大小
+ * @return
+ */
+ public int[] pageStartAndEnd(int index, int totalPage, int size) {
+ int[] page = new int[2];
+ int end = ((index * 2) + size) / 2;;
+
+ int start = end - size + 1;
+ if (start < 1) {
+ start = 1;
+ }
+
+ if (end > totalPage) {
+ end = totalPage;
+ }
+
+ page[0] = start;
+ page[1] = end;
+ return page;
+ }
+
}
--
Gitblit v1.9.1