package com.xcong.farmer.cms.core.handler; import cn.hutool.core.collection.CollUtil; import com.xcong.farmer.cms.configurations.properties.CmsProperties; import com.xcong.farmer.cms.conversion.ColumnConversion; import com.xcong.farmer.cms.core.node.AttrNode; import com.xcong.farmer.cms.core.tag.data.ColumnData; import com.xcong.farmer.cms.core.tag.data.NavData; import com.xcong.farmer.cms.core.tag.model.Column; 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; import java.util.ArrayList; import java.util.List; /** * @author wzy * @date 2022-07-05 **/ @Slf4j public class ColumnDataParserHandler implements DataParserHandler { private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class); private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class); private String baseUrl = ""; @Override public void dataParser(AttrNode attrNode) { log.info("栏目解析"); Long companyId = (Long) attrNode.getSystemDataValue("companyId"); baseUrl = (String) attrNode.getSystemDataValue("baseUrl"); Column param = (Column) attrNode.getParam(); ColumnEntity columnEntity = columnMapper.selectByCodeAndCompanyId(param.getCode(), companyId); if (columnEntity == null) { return; } ColumnData columnData = columnToData(columnEntity); if (columnEntity.getParentId() == 0L) { List child = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId, 1); if (CollUtil.isNotEmpty(child)) { List list = new ArrayList<>(); for (ColumnEntity entity : child) { ColumnData childData = columnToData(entity); list.add(childData); } columnData.setChildren(list); } } attrNode.setData(columnData); } public ColumnData columnToData(ColumnEntity column) { ColumnData columnData = ColumnConversion.INSTANCE.entityToData(column); columnData.setUrl(baseUrl + column.getPath()); if (column.getType() == 2) { if (column.getTargetType() == 1) { ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl())); columnData.setUrl(baseUrl + article.getPath() + "/" + article.getId() + ".html"); } else if (column.getTargetType() == 2) { ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId()); columnData.setUrl(baseUrl + columnEntity.getPath()); } else { columnData.setUrl(column.getTargetUrl()); } } return columnData; } }