Helius
2022-07-05 801957b18d01265e162c9ab5e14c8a5d7c6db389
fix:栏目解析
6 files added
11 files modified
354 ■■■■ changed files
src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java 71 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/node/PartNode.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/node/Template.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java 70 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java 47 ●●●●● 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/controller/CmsCoreController.java 16 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java 17 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java
@@ -1,6 +1,8 @@
package com.xcong.farmer.cms.conversion;
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.ColumnEntity;
import com.xcong.farmer.cms.modules.test.mapper.TestUserEntityMapper;
import org.mapstruct.Mapper;
@@ -24,4 +26,11 @@
    public abstract NavData columnToNav(ColumnEntity column);
    public abstract List<NavData> columnsToNavs(List<ColumnEntity> column);
    @Mapping(target = "title", source = "columnName")
    @Mapping(target = "code", source = "columnCode")
    @Mapping(target = "image", source = "pic")
    public abstract ColumnData entityToData(ColumnEntity column);
    public abstract List<ColumnData> entitiesToDatas(List<ColumnEntity> list);
}
src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
New file
@@ -0,0 +1,71 @@
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.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 String BASE_URL = "http://192.168.0.1/";
    @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);
        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(BASE_URL + columnData.getCode());
        if (column.getType() == 2) {
            if (column.getTargetType() == 1) {
                ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
                columnData.setUrl(BASE_URL + article.getColumnCode() + "/" + article.getId() + ".html");
            } else if (column.getTargetType() == 2) {
                columnData.setUrl(BASE_URL + column.getTargetUrl());
            } else {
                columnData.setUrl(column.getTargetUrl());
            }
        }
        return columnData;
    }
}
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
@@ -50,26 +50,6 @@
            }
            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);
    }
src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
New file
@@ -0,0 +1,15 @@
package com.xcong.farmer.cms.core.handler;
import com.xcong.farmer.cms.core.node.AttrNode;
/**
 * @author wzy
 * @date 2022-07-05
 **/
public class PageDataParserHandler implements DataParserHandler {
    @Override
    public void dataParser(AttrNode attrNode) {
    }
}
src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
@@ -71,7 +71,7 @@
                        i++;
                    }
                } else if (parseData instanceof Map) {
                } else if (parseData instanceof Object) {
                    if (StrUtil.isNotBlank(attrNode.getField())) {
                        Map<String, Object> data = new HashMap<>();
                        data.put("index", 1);
src/main/java/com/xcong/farmer/cms/core/node/Template.java
@@ -25,7 +25,7 @@
    private Map<String, Object> system;
    private List<PartNode> partNodes = new ArrayList<>();
    private static boolean hasPaging = false;
    private static boolean HAS_PAGING = false;
    public void parser() {
        Elements children = document.body().children();
src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java
@@ -10,9 +10,10 @@
    ARTICLES("@articles", "com.xcong.farmer.cms.core.tag.model.Articles", "com.xcong.farmer.cms.core.handler.ArticlesDataParserHandler",2),
    ARTICLE("@article", "com.xcong.farmer.cms.core.tag.model.Article", "com.xcong.farmer.cms.core.handler.ArticleDataParserHandler",2),
    CHILD("@child", "com.xcong.farmer.cms.core.tag.model.Child", "com.xcong.farmer.cms.core.handler.ChildDataParserHandler",2),
    PAGE("@page", "com.xcong.farmer.cms.core.tag.model.Page", "com.xcong.farmer.cms.core.handler.PageDataParserHandler",2),
//    AD("@ad", "com.xcong.farmer.cms.core.tag.model.Ad", "",2),
//    COLUMNS("@columns", "com.xcong.farmer.cms.core.tag.model.Columns", "",2),
    COLUMN("@column", "com.xcong.farmer.cms.core.tag.model.Column", "",2);
    COLUMN("@column", "com.xcong.farmer.cms.core.tag.model.Column", "com.xcong.farmer.cms.core.handler.ColumnDataParserHandler",2);
    private String name;
src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java
New file
@@ -0,0 +1,70 @@
package com.xcong.farmer.cms.core.tag.data;
import java.util.List;
/**
 * @author wzy
 * @date 2022-07-05
 **/
public class ColumnData {
    private Long id;
    private String title;
    private String code;
    private String url;
    private String image;
    private List<ColumnData> children;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    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<ColumnData> getChildren() {
        return children;
    }
    public void setChildren(List<ColumnData> children) {
        this.children = children;
    }
}
src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java
New file
@@ -0,0 +1,47 @@
package com.xcong.farmer.cms.core.tag.model;
/**
 * @author wzy
 * @date 2022-07-05
 **/
public class Page {
    /**
     * 栏目ID
     */
    private String colId;
    /**
     * 分页数字显示几个
     */
    private String size;
    /**
     * 对象名称
     */
    private String field;
    public String getColId() {
        return colId;
    }
    public void setColId(String colId) {
        this.colId = colId;
    }
    public String getSize() {
        return size;
    }
    public void setSize(String size) {
        this.size = size;
    }
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
}
src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
@@ -13,7 +13,6 @@
public class TemplateLoader {
    private Configuration cfg;
    private List<Template> templates = new ArrayList<>();
    private Map<String, Object> systemData;
    public TemplateLoader() {}
src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
@@ -3,6 +3,7 @@
import com.xcong.farmer.cms.common.response.Result;
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
import com.xcong.farmer.cms.modules.system.service.IArticleService;
import com.xcong.farmer.cms.modules.system.service.IReleaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -21,12 +22,23 @@
public class CmsCoreController {
    @Autowired
    private IArticleService articleService;
    private IReleaseService releaseService;
    @ApiOperation(value = "发布文章", notes = "发布文章")
    @PostMapping(value = "releaseArticle/{id}")
    public Result releaseArticle(@PathVariable("id") Long id) {
        articleService.releaseArticle(id);
        releaseService.releaseArticle(id);
        return Result.ok("success");
    }
    @ApiOperation(value = "发布栏目", notes = "发布栏目")
    @PostMapping(value = "releaseColumn/{type}/{id}")
    public Result releaseColumn(@PathVariable("id") Long id, @PathVariable("type") Integer type) {
        boolean article = false;
        if (type == 1) {
            article = true;
        }
        releaseService.releaseColumn(id, article);
        return Result.ok("success");
    }
}
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
@@ -1,5 +1,7 @@
package com.xcong.farmer.cms.modules.core.service;
import java.util.Map;
public interface ICmsCoreService {
    /**
@@ -12,17 +14,10 @@
    /**
     * 栏目编译
     * @param code 栏目代码
     * @param map 栏目页面参数(如: 栏目ID/CODE)
     * @param templateName 模板名称
     * @param columnOnly 是否只编译当前栏目列表页(如果false,则会编译栏目下所有子栏目或者所有文章)
     */
    void columnProcess(String code, String templateName, boolean columnOnly);
    void columnProcess(Map<String, Object> map, String templateName, boolean columnOnly);
    /**
     * 栏目编译
     * @param id 栏目ID
     * @param templateName 模板名称
     * @param columnOnly 是否只编译当前栏目列表页(如果false,则会编译栏目下所有子栏目或者所有文章)
     */
    void columnProcess(Long id, String templateName, boolean columnOnly);
}
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
@@ -25,20 +25,19 @@
    public void articleProcess(Long id, String templateName) {
        Map<String, Object> data = new HashMap<>();
        data.put("id", id);
        data.put("companyId", 0L);
        data.put("companyId", 23L);
        if (StrUtil.isEmpty(templateName)) {
            templateName = "artile.defualt.html";
            templateName = "defualt.artile.html";
        }
        cfg.process(data, templateName);
    }
    @Override
    public void columnProcess(String code, String templateName, boolean article) {
    }
    @Override
    public void columnProcess(Long id, String templateName, boolean article) {
    public void columnProcess(Map<String, Object> data, String templateName, boolean article) {
        data.put("companyId", 23L);
        if (StrUtil.isEmpty(templateName)) {
            templateName = "defualt.list.html";
        }
        cfg.process(data, templateName);
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
@@ -30,5 +30,4 @@
    Result updateIstopOff(Long id);
    void releaseArticle(Long id);
}
src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
New file
@@ -0,0 +1,9 @@
package com.xcong.farmer.cms.modules.system.service;
public interface IReleaseService {
    void releaseArticle(Long id);
    void releaseColumn(Long id, boolean article);
}
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
@@ -242,12 +242,4 @@
        this.baseMapper.updateById(articleEntity);
        return Result.ok("操作成功");
    }
    @Override
    public void releaseArticle(Long id) {
        ArticleEntity article = this.baseMapper.selectById(id);
        ColumnEntity column = columnMapper.selectById(article.getColumnId());
        cmsCoreService.articleProcess(article.getId(), column.getArticleTemplate());
    }
}
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
New file
@@ -0,0 +1,50 @@
package com.xcong.farmer.cms.modules.system.service.Impl;
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
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.service.IReleaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wzy
 * @date 2022-07-05
 **/
@Slf4j
@Service
public class ReleaseServiceImpl implements IReleaseService {
    @Autowired
    private ArticleMapper articleMapper;
    @Autowired
    private ColumnMapper columnMapper;
    @Autowired
    private ICmsCoreService cmsCoreService;
    @Override
    public void releaseArticle(Long id) {
        ArticleEntity article = articleMapper.selectById(id);
        ColumnEntity column = columnMapper.selectById(article.getColumnId());
        cmsCoreService.articleProcess(article.getId(), column.getArticleTemplate());
    }
    @Override
    public void releaseColumn(Long id, boolean article) {
        ColumnEntity columnEntity = columnMapper.selectById(id);
        Map<String, Object> map = new HashMap<>();
        map.put("id", columnEntity.getId());
        map.put("code", columnEntity.getColumnCode());
        cmsCoreService.columnProcess(map, columnEntity.getListTemplate(), article);
    }
}