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