From f32a53f5534aa9f9a8591e8b197bb1f8acd9e6c0 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sun, 03 Jul 2022 21:42:36 +0800
Subject: [PATCH] fix cms core
---
src/main/java/com/xcong/farmer/cms/core/tag/model/Ad.java | 2
src/main/java/com/xcong/farmer/cms/core/tag/model/Article.java | 2
src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java | 32 ++
src/main/java/com/xcong/farmer/cms/modules/system/entity/DataDictionaryCustom.java | 22 +
src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java | 4
src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java | 25 ++
src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java | 22 +
src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java | 3
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java | 45 +--
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java | 28 ++
src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 92 ++++++-
src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java | 4
src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java | 41 +++
src/main/java/com/xcong/farmer/cms/core/node/PartNode.java | 11
src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java | 1
src/main/java/com/xcong/farmer/cms/core/tag/model/Columns.java | 2
src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java | 60 +++++
src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java | 49 ++++
src/main/java/com/xcong/farmer/cms/core/tag/model/Column.java | 2
src/main/resources/mapper/DataDictionaryCustomMapper.xml | 27 ++
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java | 44 +++
src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsTemplateMapper.java | 7
src/main/resources/mapper/ArticleMapper.xml | 14 +
src/main/java/com/xcong/farmer/cms/core/tag/model/Nav.java | 2
src/main/java/com/xcong/farmer/cms/core/handler/TemplateCodeDataParserHandler.java | 4
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java | 4
src/main/java/com/xcong/farmer/cms/modules/system/service/IArticleService.java | 2
/dev/null | 66 -----
src/main/java/com/xcong/farmer/cms/core/template/Configuration.java | 4
src/main/java/com/xcong/farmer/cms/modules/core/Test.java | 8
src/main/resources/mapper/CmsTemplateMapper.xml | 5
src/main/java/com/xcong/farmer/cms/modules/system/entity/CmsTemplateEntity.java | 25 ++
src/main/java/com/xcong/farmer/cms/core/template/Template.java | 11
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java | 13 +
src/main/java/com/xcong/farmer/cms/core/handler/DataParserHandler.java | 10
src/main/java/com/xcong/farmer/cms/core/tag/model/Child.java | 2
src/main/java/com/xcong/farmer/cms/core/tag/model/Include.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/mapper/DataDictionaryCustomMapper.java | 18 +
39 files changed, 569 insertions(+), 148 deletions(-)
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/ArticleDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/cms/handler/ArticleDataParserHandler.java
deleted file mode 100644
index 9e54a40..0000000
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/ArticleDataParserHandler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.xcong.farmer.cms.cms.handler;
-
-
-import com.xcong.farmer.cms.cms.node.AttrNode;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author wzy
- * @date 2022-06-24
- **/
-public class ArticleDataParserHandler implements DataParserHandler {
-
- @Override
- public void dataParser(AttrNode node) {
- System.out.println("ArticleDataParserHandler");
- Map<String, Object> map = new HashMap<>();
- map.put("title", "这是单个文章标题");
- node.setData(map);
- }
-}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/DataParserHandler.java b/src/main/java/com/xcong/farmer/cms/cms/handler/DataParserHandler.java
deleted file mode 100644
index 7a3ee0d..0000000
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/DataParserHandler.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.xcong.farmer.cms.cms.handler;
-
-
-import com.xcong.farmer.cms.cms.node.AttrNode;
-
-public interface DataParserHandler {
-
- void dataParser(AttrNode attrNode);
-
-}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/TagsEnum.java b/src/main/java/com/xcong/farmer/cms/cms/tag/TagsEnum.java
deleted file mode 100644
index e782e0e..0000000
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/TagsEnum.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.xcong.farmer.cms.cms.tag;
-
-/**
- * @author wzy
- * @date 2022-06-20
- **/
-public enum TagsEnum {
- INCLUDE("@include", "com.xcong.farmer.cms.cms.tag.model.Include", "com.xcong.farmer.cms.cms.handler.TemplateCodeDataParserHandler", 1),
- NAV("@nav", "com.xcong.farmer.cms.cms.tag.model.Nav", "com.xcong.farmer.cms.cms.handler.NavDataParserHandler", 2),
- ARTICLES("@articles", "com.xcong.farmer.cms.cms.tag.model.Articles", "com.xcong.farmer.cms.cms.handler.ArticlesDataParserHandler",2),
- ARTICLE("@article", "com.xcong.farmer.cms.cms.tag.model.Article", "com.xcong.farmer.cms.cms.handler.ArticleDataParserHandler",2),
- CHILD("@child", "com.xcong.farmer.cms.cms.tag.model.Child", "com.xcong.farmer.cms.cms.handler.ChildDataParserHandler",2);
-// AD("@ad", "com.xcong.farmer.cms.cms.tag.model.Ad", "",2),
-// COLUMNS("@columns", "com.xcong.farmer.cms.cms.tag.model.Columns", "",2),
-// COLUMN("@column", "com.xcong.farmer.cms.cms.tag.model.Column", "",2);
-
- private String name;
-
- private String className;
-
- private String handler;
-
- // 标签类型 1-模板标签 2-数据标签
- // 模板标签 : 该标签可以变为通用模板,在各个页面引入
- // 数据模板 : 该标签需要注入数据
- private int type;
-
- TagsEnum(String name, String className, String handler, int type) {
- this.name = name;
- this.className = className;
- this.type = type;
- this.handler = handler;
- }
-
- public String getName() {
- return name;
- }
-
- public String getClassName() {
- return className;
- }
-
- public int getType() {
- return type;
- }
-
- public String getHandler() {
- return handler;
- }
-
- public static TagsEnum getEnumByName(String name) {
- for (TagsEnum value : values()) {
- if (name.equals(value.getName())) {
- return value;
- }
- }
-
- return null;
- }
-}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/template/TemplateLoader.java b/src/main/java/com/xcong/farmer/cms/cms/template/TemplateLoader.java
deleted file mode 100644
index 154732e..0000000
--- a/src/main/java/com/xcong/farmer/cms/cms/template/TemplateLoader.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.xcong.farmer.cms.cms.template;
-
-import cn.hutool.core.collection.CollUtil;
-import com.xcong.farmer.cms.cms.node.AttrNode;
-import com.xcong.farmer.cms.cms.node.PartNode;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class TemplateLoader {
-
- private Configuration cfg;
- private List<Template> templates = new ArrayList<>();
-
- public TemplateLoader() {}
-
- public TemplateLoader(Configuration cfg) {
- this.cfg = cfg;
- }
-
- public Template template(File file) {
- Document document = null;
- try {
- document = Jsoup.parse(file, "utf-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- if (document == null) {
- throw new NullPointerException();
- }
-
- Template template = new Template();
- template.setDocument(document);
- template.setName(file.getName());
-
- template.parser();
- return template;
- }
-
- public List<Template> templates(String templatePath) {
- File files = new File(templatePath);
- if (files.listFiles() == null) {
- return null;
- }
-
- for (File file : files.listFiles()) {
- if (file.isDirectory()) {
- continue;
- }
- templates.add(template(file));
- }
-
- return templates;
- }
-
- public List<Template> templates() {
- return templates(cfg.getTemplatePath());
- }
-}
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java
new file mode 100644
index 0000000..cfbfc5b
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java
@@ -0,0 +1,25 @@
+package com.xcong.farmer.cms.configurations;
+
+import com.xcong.farmer.cms.core.template.TemplateConfiguration;
+import com.xcong.farmer.cms.core.template.TemplateLoader;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author wzy
+ * @date 2022-07-03
+ **/
+@Slf4j
+@Configuration
+public class CmsConfig {
+
+ @Bean
+ public TemplateConfiguration templateConfiguration() {
+ log.info("CMS管理系统");
+ TemplateConfiguration cfg = new TemplateConfiguration("/Users/helius/Desktop/court-web", "", "/Users/helius/Desktop/web/output");
+ TemplateLoader loader = new TemplateLoader(cfg);
+ cfg.templateLoader(loader);
+ return cfg;
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
index e3de21a..0f63511 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
@@ -43,6 +43,7 @@
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("/login").permitAll()
+ .antMatchers("/cms/**").permitAll()
.antMatchers("/html").permitAll()
.antMatchers("/swagger**/**").permitAll()
.antMatchers("/webjars/**").permitAll()
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java
new file mode 100644
index 0000000..b5b5b7f
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java
@@ -0,0 +1,41 @@
+package com.xcong.farmer.cms.core.handler;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.xcong.farmer.cms.core.node.AttrNode;
+import com.xcong.farmer.cms.core.tag.model.Article;
+import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
+import com.xcong.farmer.cms.utils.SpringContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2022-06-24
+ **/
+public class ArticleDataParserHandler implements DataParserHandler {
+
+ private final ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
+
+ @Override
+ public void dataParser(AttrNode node) {
+ System.out.println("ArticleDataParserHandler");
+ Article tag = (Article) node.getParam();
+ ArticleEntity data = articleMapper.selectById(tag.getId());
+
+ ArticleEntity prev = articleMapper.selectPrevOrNextArticle(data.getId(), data.getColumnId(), 1);
+ ArticleEntity next = articleMapper.selectPrevOrNextArticle(data.getId(), data.getColumnId(), 2);
+
+ Map map = JSONObject.parseObject(JSONObject.toJSONString(data), Map.class);
+// Map<String, Object> map = new HashMap<>();
+// map.put("title", "这是单个文章标题");
+
+ map.put("prev", prev);
+ map.put("next", next);
+ node.setData(map);
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/ArticlesDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
similarity index 89%
rename from src/main/java/com/xcong/farmer/cms/cms/handler/ArticlesDataParserHandler.java
rename to src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
index 69a2178..acfed60 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/ArticlesDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
@@ -1,6 +1,6 @@
-package com.xcong.farmer.cms.cms.handler;
+package com.xcong.farmer.cms.core.handler;
-import com.xcong.farmer.cms.cms.node.AttrNode;
+import com.xcong.farmer.cms.core.node.AttrNode;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/ChildDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
similarity index 90%
rename from src/main/java/com/xcong/farmer/cms/cms/handler/ChildDataParserHandler.java
rename to src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
index 5f78333..72c52e1 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/ChildDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
@@ -1,8 +1,8 @@
-package com.xcong.farmer.cms.cms.handler;
+package com.xcong.farmer.cms.core.handler;
import com.alibaba.fastjson.JSONObject;
-import com.xcong.farmer.cms.cms.node.AttrNode;
+import com.xcong.farmer.cms.core.node.AttrNode;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/DataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/DataParserHandler.java
new file mode 100644
index 0000000..b681dd7
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/DataParserHandler.java
@@ -0,0 +1,10 @@
+package com.xcong.farmer.cms.core.handler;
+
+
+import com.xcong.farmer.cms.core.node.AttrNode;
+
+public interface DataParserHandler {
+
+ void dataParser(AttrNode attrNode);
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/NavDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
similarity index 91%
rename from src/main/java/com/xcong/farmer/cms/cms/handler/NavDataParserHandler.java
rename to src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
index 222da87..35e5f18 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/NavDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
@@ -1,6 +1,6 @@
-package com.xcong.farmer.cms.cms.handler;
+package com.xcong.farmer.cms.core.handler;
-import com.xcong.farmer.cms.cms.node.AttrNode;
+import com.xcong.farmer.cms.core.node.AttrNode;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/com/xcong/farmer/cms/cms/handler/TemplateCodeDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/TemplateCodeDataParserHandler.java
similarity index 73%
rename from src/main/java/com/xcong/farmer/cms/cms/handler/TemplateCodeDataParserHandler.java
rename to src/main/java/com/xcong/farmer/cms/core/handler/TemplateCodeDataParserHandler.java
index 10b89d6..5640737 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/handler/TemplateCodeDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/TemplateCodeDataParserHandler.java
@@ -1,6 +1,6 @@
-package com.xcong.farmer.cms.cms.handler;
+package com.xcong.farmer.cms.core.handler;
-import com.xcong.farmer.cms.cms.node.AttrNode;
+import com.xcong.farmer.cms.core.node.AttrNode;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
similarity index 67%
rename from src/main/java/com/xcong/farmer/cms/cms/node/AttrNode.java
rename to src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
index adf7a84..ce47824 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/node/AttrNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -1,17 +1,18 @@
-package com.xcong.farmer.cms.cms.node;
+package com.xcong.farmer.cms.core.node;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
-import com.xcong.farmer.cms.cms.handler.DataParserHandler;
-import com.xcong.farmer.cms.cms.tag.TagsEnum;
-import com.xcong.farmer.cms.cms.tag.model.Articles;
-import com.xcong.farmer.cms.cms.template.Configuration;
+import com.xcong.farmer.cms.core.handler.DataParserHandler;
+import com.xcong.farmer.cms.core.tag.TagsEnum;
+import com.xcong.farmer.cms.core.template.Configuration;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import org.apache.commons.text.StringSubstitutor;
import org.jsoup.nodes.Attribute;
import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
import java.util.HashMap;
import java.util.Map;
@@ -28,11 +29,14 @@
private Object data;
// 用于给这个标签attr注入的数据
private Map<String, Object> parserData;
+ private Map<String, Object> systemData;
+
// Tag参数 {id=[1,2,3], page=1, limit=5, field=art}
private Object param;
private Element element;
private Element originalElement;
+ private boolean processContinue = true;
public AttrNode() {
}
@@ -64,7 +68,30 @@
System.out.println(1);
}
+ private boolean isNeedEmpty() {
+ Elements children = this.element.children();
+ if (CollUtil.isNotEmpty(children)) {
+ return true;
+ }
+ Attributes attributes = this.element.attributes();
+ if (CollUtil.isEmpty(attributes)) {
+ return false;
+ }
+
+ for (Attribute attribute : attributes) {
+ if (attribute.getKey().contains("@") || attribute.getKey().contains("$")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public void parser() {
+ // 判断是否为最小节点,如果是且没有特殊标签,则跳过清空
+ if (!isNeedEmpty()) {
+ return;
+ }
+
this.element.empty();
Attributes attributes = this.element.attributes();
if (attributes.isEmpty()) {
@@ -101,6 +128,9 @@
}
this.tag = tagsEnum.getName();
+ if (this.data == null) {
+ this.processContinue = false;
+ }
}
runDataInject();
@@ -127,9 +157,10 @@
this.element.removeAttr("class");
this.element.attr("class", evaluate);
- } else if (value.startsWith("${")) {
+ } else if (value.contains( "${")) {
String result = attrValueFormat(value);
+ System.out.println(result);
if ("text".equals(key)) {
this.element.text(result);
} else {
@@ -146,22 +177,41 @@
Map<String, String> targetData = new HashMap<>();
while (matcher.find()) {
String group = matcher.group();
- String splitValue = group.replaceAll("\\$\\{", "").replaceAll("}", "");
- String[] split = splitValue.split("\\.");
- if (split.length == 0) {
- continue;
- }
+// String splitValue = group.replaceAll("\\$\\{", "").replaceAll("}", "");
+// String[] split = splitValue.split("\\.");
+// if (split.length == 0) {
+// continue;
+// }
+//
+// for (Map.Entry<String, Object> entry : this.parserData.entrySet()) {
+// String fieldKey = entry.getKey();
+// Map<String, Object> data = (Map<String, Object>) entry.getValue();
+// JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data.get("state")));
+//
+// for (Map.Entry<String, Object> map : jsonObject.entrySet()) {
+// if (map.getValue() instanceof String) {
+// targetData.put(fieldKey + "." + map.getKey(), (String) map.getValue());
+// }
+// }
+// }
+ Binding binding = new Binding();
for (Map.Entry<String, Object> entry : this.parserData.entrySet()) {
String fieldKey = entry.getKey();
Map<String, Object> data = (Map<String, Object>) entry.getValue();
- JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data.get("state")));
+ binding.setProperty(fieldKey, data.get("state"));
+ }
- for (Map.Entry<String, Object> map : jsonObject.entrySet()) {
- if (map.getValue() instanceof String) {
- targetData.put(fieldKey + "." + map.getKey(), (String) map.getValue());
- }
- }
+ if (systemData != null) {
+ binding.setProperty("system", systemData);
+ }
+
+ GroovyShell shell = new GroovyShell(binding);
+ Object evaluate = shell.evaluate(group);
+ if (evaluate == null) {
+ targetData.put(group, "");
+ } else {
+ targetData.put(group, evaluate.toString());
}
}
@@ -200,4 +250,12 @@
public String getTag() {
return tag;
}
+
+ public boolean processContinue() {
+ return processContinue;
+ }
+
+ public void systemData(Map<String, Object> systemData) {
+ this.systemData = systemData;
+ }
}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java b/src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
similarity index 91%
rename from src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java
rename to src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
index 3866f09..cad2a97 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/PartNode.java
@@ -1,8 +1,8 @@
-package com.xcong.farmer.cms.cms.node;
+package com.xcong.farmer.cms.core.node;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
-import com.xcong.farmer.cms.cms.template.Configuration;
+import com.xcong.farmer.cms.core.template.Configuration;
import org.jsoup.nodes.Element;
import java.util.HashMap;
@@ -14,10 +14,12 @@
private Element element;
private Element originalElement;
private String html;
+ private Map<String, Object> system;
- public PartNode(Element element) {
+ public PartNode(Element element, Map<String, Object> data) {
this.element = element.clone();
this.originalElement = element;
+ this.system = data;
}
public void parser() {
@@ -26,6 +28,7 @@
public String parser(Element element, Map<String, Object> tagDataMap) {
AttrNode attrNode = new AttrNode(element, tagDataMap);
+ attrNode.systemData(this.system);
attrNode.parser();
// attrNode.runDataInject();
@@ -38,7 +41,7 @@
if (parseData == null) {
// 特殊处理。 如果有子节点标签@child,但数据中没有子节点数据,则将该子节点直接删除即直接返回空字符串
- if (!"@child".equals(attrNode.getTag())) {
+ if (attrNode.processContinue()) {
for (Element children : element.children()) {
String html = parser(children, tagDataMap);
result.append(html);
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
new file mode 100644
index 0000000..24e8f20
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/TagsEnum.java
@@ -0,0 +1,60 @@
+package com.xcong.farmer.cms.core.tag;
+
+/**
+ * @author wzy
+ * @date 2022-06-20
+ **/
+public enum TagsEnum {
+// INCLUDE("@include", "com.xcong.farmer.cms.core.tag.model.Include", "com.xcong.farmer.cms.core.handler.TemplateCodeDataParserHandler", 1),
+ NAV("@nav", "com.xcong.farmer.cms.core.tag.model.Nav", "com.xcong.farmer.cms.core.handler.NavDataParserHandler", 2),
+ 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),
+// 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);
+
+ private String name;
+
+ private String className;
+
+ private String handler;
+
+ // 标签类型 1-模板标签 2-数据标签
+ // 模板标签 : 该标签可以变为通用模板,在各个页面引入
+ // 数据模板 : 该标签需要注入数据
+ private int type;
+
+ TagsEnum(String name, String className, String handler, int type) {
+ this.name = name;
+ this.className = className;
+ this.type = type;
+ this.handler = handler;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public String getHandler() {
+ return handler;
+ }
+
+ public static TagsEnum getEnumByName(String name) {
+ for (TagsEnum value : values()) {
+ if (name.equals(value.getName())) {
+ return value;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Ad.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Ad.java
similarity index 88%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Ad.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Ad.java
index 4e0f869..779dbf2 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Ad.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Ad.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Article.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Article.java
similarity index 89%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Article.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Article.java
index a0c72c1..2e865ae 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Article.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Article.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Articles.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
similarity index 93%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Articles.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
index e93e0ef..002f9ce 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Articles.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Child.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Child.java
similarity index 89%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Child.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Child.java
index 7ae44fa..fae1d79 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Child.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Child.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Column.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Column.java
similarity index 93%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Column.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Column.java
index 18b0146..4937df2 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Column.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Column.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Columns.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Columns.java
similarity index 61%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Columns.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Columns.java
index ed62f0b..1609a6e 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Columns.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Columns.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Include.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Include.java
similarity index 89%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Include.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Include.java
index 47e9c6a..4d5da63 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Include.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Include.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Nav.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Nav.java
similarity index 82%
rename from src/main/java/com/xcong/farmer/cms/cms/tag/model/Nav.java
rename to src/main/java/com/xcong/farmer/cms/core/tag/model/Nav.java
index 45e5707..a02713b 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/tag/model/Nav.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Nav.java
@@ -1,4 +1,4 @@
-package com.xcong.farmer.cms.cms.tag.model;
+package com.xcong.farmer.cms.core.tag.model;
/**
* @author wzy
diff --git a/src/main/java/com/xcong/farmer/cms/cms/template/Configuration.java b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
similarity index 96%
rename from src/main/java/com/xcong/farmer/cms/cms/template/Configuration.java
rename to src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
index 76a24e6..f2c97b0 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/template/Configuration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
@@ -1,6 +1,4 @@
-package com.xcong.farmer.cms.cms.template;
-
-import com.xcong.farmer.cms.cms.node.AttrNode;
+package com.xcong.farmer.cms.core.template;
import java.lang.reflect.Field;
import java.util.HashMap;
diff --git a/src/main/java/com/xcong/farmer/cms/cms/template/Template.java b/src/main/java/com/xcong/farmer/cms/core/template/Template.java
similarity index 82%
rename from src/main/java/com/xcong/farmer/cms/cms/template/Template.java
rename to src/main/java/com/xcong/farmer/cms/core/template/Template.java
index f0a20f0..2b389e0 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/template/Template.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/Template.java
@@ -1,7 +1,7 @@
-package com.xcong.farmer.cms.cms.template;
+package com.xcong.farmer.cms.core.template;
import cn.hutool.core.collection.CollUtil;
-import com.xcong.farmer.cms.cms.node.PartNode;
+import com.xcong.farmer.cms.core.node.PartNode;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
@@ -22,6 +22,7 @@
private Document document;
private Map<String, Map<String, Object>> params = new HashMap<>();
+ private Map<String, Object> system;
private List<PartNode> partNodes = new ArrayList<>();
@@ -29,7 +30,7 @@
Elements children = document.body().children();
if (CollUtil.isNotEmpty(children)) {
for (Element child : children) {
- PartNode partNode = new PartNode(child);
+ PartNode partNode = new PartNode(child, this.system);
partNode.parser();
this.add(partNode);
@@ -68,4 +69,8 @@
public void putParams(String key, Map<String, Object> value) {
this.params.put(key, value);
}
+
+ public void systemData(Map<String, Object> data) {
+ this.system = data;
+ }
}
diff --git a/src/main/java/com/xcong/farmer/cms/cms/template/TemplateConfiguration.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
similarity index 67%
rename from src/main/java/com/xcong/farmer/cms/cms/template/TemplateConfiguration.java
rename to src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
index 4162af3..b951adb 100644
--- a/src/main/java/com/xcong/farmer/cms/cms/template/TemplateConfiguration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -1,8 +1,8 @@
-package com.xcong.farmer.cms.cms.template;
+package com.xcong.farmer.cms.core.template;
import cn.hutool.core.collection.CollUtil;
-import com.xcong.farmer.cms.cms.node.PartNode;
-import com.xcong.farmer.cms.cms.tag.TagsEnum;
+import com.xcong.farmer.cms.core.node.PartNode;
+import com.xcong.farmer.cms.core.tag.TagsEnum;
import org.jsoup.nodes.Document;
import java.io.File;
@@ -28,25 +28,15 @@
this.templateLoader = templateLoader;
}
- public void process() {
+ public void process(Map<String, Object> map, String templateName) {
if (this.templateLoader == null) {
throw new RuntimeException("TemplateLoader do not able to be null");
}
- List<Template> templates = templateLoader.templates();
-
- if (CollUtil.isEmpty(templates)) {
- return;
- }
-
- for (Template template : templates) {
- output(template);
- }
+ this.templateLoader.data(map);
+ output(template(templateName));
}
- public List<Template> templates() {
- return this.templateLoader.templates();
- }
public Template template(String templateName) {
return template(new File(path(this.templatePath) + templateName));
@@ -60,21 +50,14 @@
return this.templateLoader.template(file);
}
- public void columnProcess(Long id, String templateName) {
- Template template = template(templateName);
- }
-
- public void columnProcess(String code, String templateName) {
-
- }
-
- public void articleProcess(Long id, String templateName) {
- Map<String, Map<String, Object>> map = new HashMap<>();
-
- Map<String, Object> data = new HashMap<>();
- data.put("id", id);
- map.put(TagsEnum.ARTICLE.getName(), data);
- }
+// public void columnProcess(Map<String, Object> data, String templateName) {
+// process;
+// }
+//
+//
+// public void articleProcess(Map<String, Object> data, String templateName) {
+// process(data, templateName);
+// }
public void output(Template template) {
Document document = template.getDocument();
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
new file mode 100644
index 0000000..6eb9068
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/template/TemplateLoader.java
@@ -0,0 +1,49 @@
+package com.xcong.farmer.cms.core.template;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class TemplateLoader {
+
+ private Configuration cfg;
+ private List<Template> templates = new ArrayList<>();
+ private Map<String, Object> systemData;
+
+ public TemplateLoader() {}
+
+ public TemplateLoader(Configuration cfg) {
+ this.cfg = cfg;
+ }
+
+ public Template template(File file) {
+ Document document = null;
+ try {
+ document = Jsoup.parse(file, "utf-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ if (document == null) {
+ throw new NullPointerException();
+ }
+
+ Template template = new Template();
+ template.setDocument(document);
+ template.setName(file.getName());
+ template.systemData(this.systemData);
+
+ template.parser();
+ return template;
+ }
+
+ public void data(Map<String, Object> systemData) {
+ this.systemData = systemData;
+ }
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/Test.java b/src/main/java/com/xcong/farmer/cms/modules/core/Test.java
new file mode 100644
index 0000000..ef70753
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/Test.java
@@ -0,0 +1,8 @@
+package com.xcong.farmer.cms.modules.core;
+
+/**
+ * @author wzy
+ * @date 2022-07-03
+ **/
+public class Test {
+}
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
new file mode 100644
index 0000000..23bc571
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
@@ -0,0 +1,32 @@
+package com.xcong.farmer.cms.modules.core.controller;
+
+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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author wzy
+ * @date 2022-07-03
+ **/
+@Slf4j
+@RestController
+@RequestMapping(value = "/cms")
+@Api(value = "CmsCoreController", tags = "CMS核心类")
+public class CmsCoreController {
+
+ @Autowired
+ private IArticleService articleService;
+
+ @ApiOperation(value = "发布文章", notes = "发布文章")
+ @PostMapping(value = "releaseArticle/{id}")
+ public Result releaseArticle(@PathVariable("id") Long id) {
+ articleService.releaseArticle(id);
+ 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
new file mode 100644
index 0000000..0611e81
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
@@ -0,0 +1,28 @@
+package com.xcong.farmer.cms.modules.core.service;
+
+public interface ICmsCoreService {
+
+ /**
+ * 文章编译
+ *
+ * @param id
+ * @param templateName
+ */
+ void articleProcess(Long id, String templateName);
+
+ /**
+ * 栏目编译
+ * @param code 栏目代码
+ * @param templateName 模板名称
+ * @param columnOnly 是否只编译当前栏目列表页(如果false,则会编译栏目下所有子栏目或者所有文章)
+ */
+ void columnProcess(String code, 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
new file mode 100644
index 0000000..5a2579b
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
@@ -0,0 +1,44 @@
+package com.xcong.farmer.cms.modules.core.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.xcong.farmer.cms.core.template.TemplateConfiguration;
+import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
+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-03
+ **/
+@Slf4j
+@Service
+public class CmsCoreServiceImpl implements ICmsCoreService {
+
+ @Autowired
+ private TemplateConfiguration cfg;
+
+ @Override
+ public void articleProcess(Long id, String templateName) {
+ Map<String, Object> data = new HashMap<>();
+ data.put("id", id);
+
+ if (StrUtil.isEmpty(templateName)) {
+ templateName = "artile.defualt.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) {
+
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/CmsTemplateEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/CmsTemplateEntity.java
new file mode 100644
index 0000000..8d8dfa1
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/CmsTemplateEntity.java
@@ -0,0 +1,25 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.farmer.cms.common.system.base.BaseEntity;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2022-07-03
+ **/
+@Data
+@TableName("cms_template")
+public class CmsTemplateEntity extends BaseEntity {
+
+ private String name;
+
+ private String path;
+
+ private String code;
+
+ /**
+ * 类型 1-文件 2-代码
+ */
+ private Integer type;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
index e13666a..99d1b6b 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
@@ -9,24 +9,30 @@
*/
@Data
@TableName("t_column")
-public class ColumnEntity extends BaseEntity {
+public class ColumnEntity extends BaseEntity {
/**
* 导航栏 - 默认上级类目ID
*/
public static final Long PARENTID_DEFAULT = 0L;
- //栏目名称
+ // 栏目名称
private String columnName;
- //栏目编码
+ // 栏目编码
private String columnCode;
- //描述
+ // 描述
private String remark;
- //排序
+ // 排序
private Integer orderNum;
- //图片
+ // 图片
private String pic;
- //上级类目ID
+ // 上级类目ID
private Long parentId;
- //所属ID
+ // 所属ID
private Long companyId;
+
+ // 列表页模板
+ private String listTemplate;
+
+ // 文章页模板
+ private String articleTemplate;
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/DataDictionaryCustom.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/DataDictionaryCustom.java
new file mode 100644
index 0000000..e437402
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/DataDictionaryCustom.java
@@ -0,0 +1,22 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.farmer.cms.common.system.base.BaseEntity;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Data
+@TableName("data_dictionary_custom")
+public class DataDictionaryCustom extends BaseEntity {
+
+ private String type;
+
+ private String code;
+
+ private String value;
+
+ private String description;
+}
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 277dfb8..d8709fa 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
@@ -6,6 +6,7 @@
import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
+import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
public interface ArticleMapper extends BaseMapper<ArticleEntity> {
@@ -13,4 +14,6 @@
IPage<AdminArticleVo> selectAdminArticleInPage(Page<AdminArticleVo> page, @Param("record")ArticleEntity articleEntity);
AdminSeeArticleInfoVo selectAdminArticleByid(@Param("id")Long id);
+
+ ArticleEntity selectPrevOrNextArticle(@Param("id") Long id, @Param("columnId") Long columnId, @Param("type") Integer type);
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsTemplateMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsTemplateMapper.java
new file mode 100644
index 0000000..64d67fb
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsTemplateMapper.java
@@ -0,0 +1,7 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.farmer.cms.modules.system.entity.CmsTemplateEntity;
+
+public interface CmsTemplateMapper extends BaseMapper<CmsTemplateEntity> {
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/DataDictionaryCustomMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/DataDictionaryCustomMapper.java
new file mode 100644
index 0000000..e82bf6b
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/DataDictionaryCustomMapper.java
@@ -0,0 +1,18 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.modules.system.entity.DataDictionaryCustom;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DataDictionaryCustomMapper extends BaseMapper<DataDictionaryCustom> {
+
+ List<DataDictionaryCustom> selectDicByType(String type);
+
+ DataDictionaryCustom selectDicDataByTypeAndCode(@Param("type") String type, @Param("code") String code);
+
+ int updateDicValueByTypeAndCode(@Param("type") String type, @Param("code") String code, @Param("value") String value);
+}
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 1113a5e..595af44 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
@@ -29,4 +29,6 @@
Result updateIstop(Long id);
Result updateIstopOff(Long id);
+
+ void releaseArticle(Long id);
}
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 d2dcdc1..601c2bc 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
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
import com.xcong.farmer.cms.modules.system.dto.AdminAddArticleDto;
import com.xcong.farmer.cms.modules.system.dto.AdminArticleDto;
import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
@@ -21,6 +22,7 @@
import com.xcong.farmer.cms.modules.system.vo.AdminArticleVo;
import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -39,6 +41,9 @@
@Resource
private ColumnMapper columnMapper;
+
+ @Autowired
+ private ICmsCoreService cmsCoreService;
@Override
public Result getArticleInPage(AdminArticleDto adminArticleDto) {
@@ -231,4 +236,12 @@
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/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml
index 37193fb..3d8f282 100644
--- a/src/main/resources/mapper/ArticleMapper.xml
+++ b/src/main/resources/mapper/ArticleMapper.xml
@@ -33,4 +33,18 @@
t_article a where id = #{id}
</select>
+ <select id="selectPrevOrNextArticle" resultType="com.xcong.farmer.cms.modules.system.entity.ArticleEntity">
+ select *
+ from t_article a, t_column b
+ where a.id!=#{id} and (a.column_id=b.id or a.column_id=b.parent_id) and a.column_id=#{columnId}
+ <!--上一篇-->
+ <if test="type == 1">
+ order by a.id
+ </if>
+ <!--下一篇-->
+ <if test="type == 2">
+ order by a.id desc
+ </if>
+ limit 1
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/CmsTemplateMapper.xml b/src/main/resources/mapper/CmsTemplateMapper.xml
new file mode 100644
index 0000000..3b8d2c5
--- /dev/null
+++ b/src/main/resources/mapper/CmsTemplateMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.farmer.cms.modules.system.mapper.CmsTemplateMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/DataDictionaryCustomMapper.xml b/src/main/resources/mapper/DataDictionaryCustomMapper.xml
new file mode 100644
index 0000000..fda4d0e
--- /dev/null
+++ b/src/main/resources/mapper/DataDictionaryCustomMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.farmer.cms.modules.system.mapper.DataDictionaryCustomMapper">
+
+ <select id="selectDicByType" resultType="com.xcong.farmer.cms.modules.system.entity.DataDictionaryCustom">
+ select * from data_dictionary_custom where type=#{type}
+ </select>
+
+ <select id="selectDicDataByTypeAndCode" resultType="com.xcong.farmer.cms.modules.system.entity.DataDictionaryCustom">
+ select * from data_dictionary_custom a
+ where a.type=#{type} and a.code=#{code}
+ </select>
+
+ <update id="updateDicValueByTypeAndCode">
+ update data_dictionary_custom
+ set value=#{value}
+ <where>
+ 1=1
+ <if test="code != null and code != ''">
+ and code = #{code}
+ </if>
+ <if test="type != null and type != ''">
+ and type = #{type}
+ </if>
+ </where>
+ </update>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.1