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