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.conversion.ArticleConversion; import com.xcong.farmer.cms.core.node.AttrNode; import com.xcong.farmer.cms.core.tag.data.ArticleData; import com.xcong.farmer.cms.core.tag.model.Articles; 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.HashMap; import java.util.List; import java.util.Map; /** * @author wzy * @date 2022-06-24 **/ @Slf4j public class ArticlesDataParserHandler implements DataParserHandler { private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class); @Override public void dataParser(AttrNode node) { log.info("文章列表解析"); Long companyId = (Long) node.getSystemDataValue("companyId"); String companyCode = (String) node.getSystemDataValue("companyCode"); String baseUrl = (String) node.getSystemDataValue("baseUrl"); Articles param = (Articles) node.getParam(); ArticleEntity article = new ArticleEntity(); Page page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit())); if (StrUtil.isEmpty(param.getColId())) { article.setColumnCode(param.getCode()); } else { List colIdsStr = StrUtil.split(param.getColId(), ','); List colIds = new ArrayList<>(); colIdsStr.forEach(item -> { colIds.add(Long.parseLong(item)); }); article.setColumnIds(colIds); } article.setCompanyId(companyId); if (StrUtil.isNotBlank(param.getType())) { if ("hot".equals(param.getType())) { article.setIsTop(1); } } IPage listPage = articleMapper.selectArticleInPage(page, article); List list = new ArrayList<>(); for (ArticleEntity record : listPage.getRecords()) { ArticleData articleData = entityToData(record, baseUrl); list.add(articleData); } node.setData(list); } public ArticleData entityToData(ArticleEntity article, String baseUrl) { ArticleData articleData = ArticleConversion.INSTANCE.entityToData(article); if (article.getType() == 2) { articleData.setUrl(article.getArticleUrl()); } else { articleData.setUrl(baseUrl + article.getPath() + "/" + article.getId() + ".html"); } return articleData; } }