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