package com.xcong.farmer.cms.core.handler; import cn.hutool.core.collection.CollUtil; 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 BASE_URL = "http://192.168.0.1/"; @Override public void dataParser(AttrNode attrNode) { log.info("栏目解析"); Long companyId = (Long) attrNode.getSystemDataValue("companyId"); Column param = (Column) attrNode.getParam(); ColumnEntity columnEntity = columnMapper.selectByCodeAndCompanyId(param.getCode(), companyId); ColumnData columnData = columnToData(columnEntity); if (columnEntity.getParentId() == 0L) { List child = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId); 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(BASE_URL + columnData.getCode()); if (column.getType() == 2) { if (column.getTargetType() == 1) { ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl())); columnData.setUrl(BASE_URL + article.getColumnCode() + "/" + article.getId() + ".html"); } else if (column.getTargetType() == 2) { columnData.setUrl(BASE_URL + column.getTargetUrl()); } else { columnData.setUrl(column.getTargetUrl()); } } return columnData; } }