src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java
New file @@ -0,0 +1,27 @@ package com.xcong.farmer.cms.conversion; import com.xcong.farmer.cms.core.tag.data.NavData; import com.xcong.farmer.cms.modules.system.entity.ColumnEntity; import com.xcong.farmer.cms.modules.test.mapper.TestUserEntityMapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import java.util.List; /** * @author wzy * @date 2022-07-04 **/ @Mapper public abstract class ColumnConversion { public static final ColumnConversion INSTANCE = Mappers.getMapper(ColumnConversion.class); @Mapping(target = "title", source = "columnName") @Mapping(target = "code", source = "columnCode") @Mapping(target = "image", source = "pic") public abstract NavData columnToNav(ColumnEntity column); public abstract List<NavData> columnsToNavs(List<ColumnEntity> column); } src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
@@ -1,8 +1,17 @@ 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; @@ -13,34 +22,80 @@ * @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) { System.out.println("NavDataParserHandler"); List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> aa = new HashMap<>(); aa.put("title", "导航1"); list.add(aa); log.info("导航栏解析"); Long companyId = (Long) node.getSystemDataValue("companyId"); Map<String, Object> bb = new HashMap<>(); bb.put("title", "导航2"); List<ColumnEntity> columns = columnMapper.selectColumnByParentId(0L, companyId); List<Map<String, Object>> sub = new ArrayList<>(); Map<String, Object> subBB = new HashMap<>(); subBB.put("title", "子导航1"); subBB.put("src", "http://1234"); sub.add(subBB); Map<String, Object> subAA = new HashMap<>(); subAA.put("title", "子导航2"); subAA.put("src", "http://123455555"); sub.add(subAA); if (CollUtil.isEmpty(columns)) { return; } bb.put("children", sub); list.add(bb); 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); } // List<Map<String, Object>> list = new ArrayList<>(); // Map<String, Object> aa = new HashMap<>(); // aa.put("title", "导航1"); // list.add(aa); // // Map<String, Object> bb = new HashMap<>(); // bb.put("title", "导航2"); // // List<Map<String, Object>> sub = new ArrayList<>(); // Map<String, Object> subBB = new HashMap<>(); // subBB.put("title", "子导航1"); // subBB.put("src", "http://1234"); // sub.add(subBB); // Map<String, Object> subAA = new HashMap<>(); // subAA.put("title", "子导航2"); // subAA.put("src", "http://123455555"); // sub.add(subAA); // // bb.put("children", sub); // list.add(bb); 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; } } src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -258,4 +258,8 @@ public void systemData(Map<String, Object> systemData) { this.systemData = systemData; } public Object getSystemDataValue(String key) { return this.systemData.get(key); } } src/main/java/com/xcong/farmer/cms/core/node/Template.java
File was renamed from src/main/java/com/xcong/farmer/cms/core/template/Template.java @@ -1,4 +1,4 @@ package com.xcong.farmer.cms.core.template; package com.xcong.farmer.cms.core.node; import cn.hutool.core.collection.CollUtil; import com.xcong.farmer.cms.core.node.PartNode; @@ -23,9 +23,10 @@ private Map<String, Map<String, Object>> params = new HashMap<>(); private Map<String, Object> system; private List<PartNode> partNodes = new ArrayList<>(); private static boolean hasPaging = false; public void parser() { Elements children = document.body().children(); if (CollUtil.isNotEmpty(children)) { src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java
New file @@ -0,0 +1,60 @@ package com.xcong.farmer.cms.core.tag.data; import java.util.List; /** * @author wzy * @date 2022-07-04 **/ public class NavData { private String title; private String code; private String url; private String image; private List<NavData> children; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } public List<NavData> getChildren() { return children; } public void setChildren(List<NavData> children) { this.children = children; } } src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -1,14 +1,12 @@ package com.xcong.farmer.cms.core.template; import cn.hutool.core.collection.CollUtil; import com.xcong.farmer.cms.core.node.PartNode; import com.xcong.farmer.cms.core.tag.TagsEnum; import com.xcong.farmer.cms.core.node.Template; import org.jsoup.nodes.Document; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
@@ -1,5 +1,6 @@ package com.xcong.farmer.cms.core.template; import com.xcong.farmer.cms.core.node.Template; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
@@ -25,7 +25,7 @@ public void articleProcess(Long id, String templateName) { Map<String, Object> data = new HashMap<>(); data.put("id", id); data.put("companyId", 0L); if (StrUtil.isEmpty(templateName)) { templateName = "artile.defualt.html"; } src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
@@ -1,5 +1,6 @@ package com.xcong.farmer.cms.modules.system.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.xcong.farmer.cms.common.system.base.BaseEntity; @@ -80,4 +81,10 @@ private String articleUrl; @TableField(exist = false) private String columnCode; @TableField(exist = false) private String columnName; } src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java
@@ -16,4 +16,6 @@ AdminSeeArticleInfoVo selectAdminArticleByid(@Param("id")Long id); ArticleEntity selectPrevOrNextArticle(@Param("id") Long id, @Param("columnId") Long columnId, @Param("type") Integer type); ArticleEntity selectArticleById(@Param("id") Long id); } src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
@@ -11,9 +11,11 @@ public interface ColumnMapper extends BaseMapper<ColumnEntity> { IPage<AdminColumnVo> selectAdminColumnVoInPage(Page<AdminColumnVo> page, @Param("record")ColumnEntity columnEntity); IPage<AdminColumnVo> selectAdminColumnVoInPage(Page<AdminColumnVo> page, @Param("record") ColumnEntity columnEntity); List<AdminColumnVo> selectColumnInListByParentId(@Param("parentId")Long parentidDefault,@Param("belongId")Long belongId); List<AdminColumnVo> selectColumnInListByParentId(@Param("parentId") Long parentidDefault, @Param("companyId") Long companyId); ColumnEntity selectByCodeAndCompanyId(@Param("code") String code, @Param("companyId") Long companyId); List<ColumnEntity> selectColumnByParentId(@Param("parentId") Long parentId, @Param("companyId") Long companyId); } src/main/resources/mapper/ArticleMapper.xml
@@ -47,4 +47,10 @@ </if> limit 1 </select> <select id="selectArticleById" resultType="com.xcong.farmer.cms.modules.system.entity.ArticleEntity"> select a.*, b.column_code, b.column_name from t_article a, t_column b where a.column_id=b.id and a.id=#{id} </select> </mapper> src/main/resources/mapper/ColumnMapper.xml
@@ -25,7 +25,7 @@ a.* FROM t_column a where a.parent_id = #{parentId} and a.company_id = #{belongId} where a.parent_id = #{parentId} and a.company_id = #{companyId} order by a.order_num ASC,a.create_time desc </select> @@ -33,4 +33,9 @@ select * from t_column where column_code=#{code} and company_id=#{companyId} </select> <select id="selectColumnByParentId" resultType="com.xcong.farmer.cms.modules.system.entity.ColumnEntity"> select * from t_column where parent_id=#{parentId} and company_id=#{companyId} </select> </mapper>