Helius
2022-07-05 121b0c399ab5fadd9cb3a46509d68fe1ba476c95
fid:导航对接数据库解析
2 files added
1 files renamed
10 files modified
224 ■■■■ changed files
src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java 93 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/node/Template.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/tag/data/NavData.java 60 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ArticleMapper.xml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/ColumnMapper.xml 7 ●●●● patch | view | raw | blame | history
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>