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.NavData;
|
import com.xcong.farmer.cms.core.tag.model.Nav;
|
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.modules.system.vo.AdminColumnVo;
|
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-28
|
**/
|
@Slf4j
|
public class NavDataParserHandler 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 node) {
|
log.info("导航栏解析");
|
Long companyId = (Long) node.getSystemDataValue("companyId");
|
|
List<ColumnEntity> columns = columnMapper.selectColumnByParentId(0L, companyId);
|
|
if (CollUtil.isEmpty(columns)) {
|
return;
|
}
|
|
List<NavData> list = new ArrayList<>();
|
for (ColumnEntity column : columns) {
|
NavData navData = columnToNav(column);
|
|
List<ColumnEntity> child = columnMapper.selectColumnByParentId(column.getId(), companyId);
|
if (CollUtil.isNotEmpty(child)) {
|
List<NavData> childNavData = columnsToNavs(child);
|
navData.setChildren(childNavData);
|
}
|
list.add(navData);
|
}
|
node.setData(list);
|
}
|
|
public List<NavData> columnsToNavs(List<ColumnEntity> columns) {
|
List<NavData> list = new ArrayList<>();
|
for (ColumnEntity column : columns) {
|
list.add(columnToNav(column));
|
}
|
|
return list;
|
}
|
|
public NavData columnToNav(ColumnEntity column) {
|
NavData navData = ColumnConversion.INSTANCE.columnToNav(column);
|
|
navData.setUrl(BASE_URL + navData.getCode());
|
if (column.getType() == 2) {
|
if (column.getTargetType() == 1) {
|
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
|
navData.setUrl(BASE_URL + article.getColumnCode() + "/" + article.getId() + ".html");
|
} else if (column.getTargetType() == 2) {
|
navData.setUrl(BASE_URL + column.getTargetUrl());
|
} else {
|
navData.setUrl(column.getTargetUrl());
|
}
|
}
|
return navData;
|
}
|
}
|