From 801957b18d01265e162c9ab5e14c8a5d7c6db389 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 05 Jul 2022 11:57:44 +0800
Subject: [PATCH] fix:栏目解析

---
 src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java                    |    9 +
 src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java                              |    3 
 src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java                   |    1 
 src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java                            |   47 +++++++
 src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java   |   17 +-
 src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java      |   16 ++
 src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java           |   71 +++++++++++
 src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java                       |   70 +++++++++++
 src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java             |   15 ++
 src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java         |    9 +
 src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java              |   20 ---
 src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java         |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java |   50 ++++++++
 src/main/java/com/xcong/farmer/cms/core/node/Template.java                             |    2 
 src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java           |   13 -
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java |    8 -
 src/main/java/com/xcong/farmer/cms/core/node/PartNode.java                             |    2 
 17 files changed, 301 insertions(+), 53 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
index a9dd7f7..f8a3217 100644
--- a/src/main/java/com/xcong/farmer/cms/conversion/ColumnConversion.java
+++ b/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);
 }
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
new file mode 100644
index 0000000..db0ebb5
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
@@ -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;
+    }
+}
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 f0c4db8..48ed2c0 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
@@ -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);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
new file mode 100644
index 0000000..e886cb3
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
@@ -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) {
+
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/PartNode.java b/src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
index cad2a97..630fa71 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
+++ b/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);
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
index d160592..98501ea 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/Template.java
+++ b/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();
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java b/src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java
index 24e8f20..6445382 100644
--- a/src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java
+++ b/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;
 
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java
new file mode 100644
index 0000000..063db03
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/ColumnData.java
@@ -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;
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java
new file mode 100644
index 0000000..d16bc79
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Page.java
@@ -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;
+    }
+}
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 261d7a3..647da06 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
@@ -13,7 +13,6 @@
 public class TemplateLoader {
 
     private Configuration cfg;
-    private List<Template> templates = new ArrayList<>();
     private Map<String, Object> systemData;
 
     public TemplateLoader() {}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java b/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
index 23bc571..938022c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
+++ b/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");
     }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
index 0611e81..4814a0a 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
+++ b/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);
 }
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 fe34c50..331ebe6 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,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);
     }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
index 595af44..81c3cd5 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java
@@ -30,5 +30,4 @@
 
     Result updateIstopOff(Long id);
 
-    void releaseArticle(Long id);
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
new file mode 100644
index 0000000..19fc9fc
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
@@ -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);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
index ef72a33..8ff8743 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
+++ b/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());
-    }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
new file mode 100644
index 0000000..89ad1d8
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
@@ -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);
+    }
+}

--
Gitblit v1.9.1