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 CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
|
|
@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);
|
|
if (columnEntity == null) {
|
return;
|
}
|
ColumnData columnData = columnToData(columnEntity);
|
if (columnEntity.getParentId() == 0L) {
|
List<ColumnEntity> child = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId);
|
if (CollUtil.isNotEmpty(child)) {
|
List<ColumnData> 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(cmsProperties.getBaseUrl() + column.getPath());
|
if (column.getType() == 2) {
|
if (column.getTargetType() == 1) {
|
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
|
columnData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
|
} else if (column.getTargetType() == 2) {
|
ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId());
|
columnData.setUrl(cmsProperties.getBaseUrl() + columnEntity.getPath());
|
} else {
|
columnData.setUrl(column.getTargetUrl());
|
}
|
}
|
return columnData;
|
}
|
}
|