From 121b0c399ab5fadd9cb3a46509d68fe1ba476c95 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 05 Jul 2022 09:59:41 +0800 Subject: [PATCH] fid:导航对接数据库解析 --- src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java | 27 ++++++ src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java | 1 src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java | 60 +++++++++++++++ src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java | 2 src/main/resources/mapper/ArticleMapper.xml | 6 + src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java | 93 ++++++++++++++++++---- src/main/resources/mapper/ColumnMapper.xml | 7 + src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java | 7 + src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java | 2 src/main/java/com/xcong/farmer/cms/core/node/Template.java | 5 src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java | 4 src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 4 + src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java | 6 + 13 files changed, 196 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java b/src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java new file mode 100644 index 0000000..a9dd7f7 --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java @@ -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); +} diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java index 74ff8d3..f0c4db8 100644 --- a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java +++ b/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; + } } diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java index ce47824..ebf2177 100644 --- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java +++ b/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); + } } diff --git a/src/main/java/com/xcong/farmer/cms/core/template/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java similarity index 94% rename from src/main/java/com/xcong/farmer/cms/core/template/Template.java rename to src/main/java/com/xcong/farmer/cms/core/node/Template.java index 2b389e0..d160592 100644 --- a/src/main/java/com/xcong/farmer/cms/core/template/Template.java +++ b/src/main/java/com/xcong/farmer/cms/core/node/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)) { diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java new file mode 100644 index 0000000..ca0b5fb --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java @@ -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; + } +} diff --git a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java index b951adb..f6b078a 100644 --- a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java +++ b/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; diff --git a/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java index 6eb9068..261d7a3 100644 --- a/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java +++ b/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; diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java index 5a2579b..fe34c50 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java +++ b/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"; } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java index ab5e558..349877d 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java +++ b/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; + } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java index d8709fa..3ced7bd 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java +++ b/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); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java index 8816587..ce9b2a6 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java +++ b/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); } diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml index 3d8f282..acc3a78 100644 --- a/src/main/resources/mapper/ArticleMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/ColumnMapper.xml b/src/main/resources/mapper/ColumnMapper.xml index ee49cf2..f5020c5 100644 --- a/src/main/resources/mapper/ColumnMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.1