From 19befbb8b6ba0f12f7fec0e597edd0f9bce3ec0f Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 12 Jul 2022 11:39:35 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/farmer-cms
---
src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java | 14
src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java | 3
src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java | 8
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeWebSetInfoVo.java | 31 +
src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminWebSetController.java | 31 +
src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java | 13
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/dto/SetWebSettingDto.java | 40 +
src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java | 20
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java | 57 ++
src/main/java/com/xcong/farmer/cms/core/tag/model/TimeTag.java | 28 +
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java | 19
src/main/resources/mapper/ColumnMapper.xml | 3
src/main/resources/application-test.yml | 2
src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSettingService.java | 12
src/main/java/com/xcong/farmer/cms/core/template/Configuration.java | 6
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java | 14
src/test/java/com/xcong/farmer/cms/ArticleTest.java | 28 +
src/test/java/com/xcong/farmer/cms/KssframeworkApplicationTests.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java | 4
src/main/java/com/xcong/farmer/cms/conversion/WebSettingConversion.java | 20
src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java | 76 +-
src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java | 11
src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java | 27 +
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java | 161 +++++-
src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java | 7
src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java | 15
src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java | 40 +
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSettingServiceImpl.java | 50 ++
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java | 93 ++-
src/main/java/com/xcong/farmer/cms/core/node/Template.java | 22
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java | 13
src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 87 +--
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java | 3
src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java | 47 +
src/main/java/com/xcong/farmer/cms/configurations/properties/CmsProperties.java | 18
src/main/resources/mapper/ArticleMapper.xml | 30 +
src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java | 6
src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java | 11
src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java | 15
src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSettingEntity.java | 67 ++
src/test/java/com/xcong/farmer/cms/TemplateTest.java | 52 ++
/dev/null | 79 ---
src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java | 2
src/main/resources/mapper/WebSetMapper.xml | 27 +
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/mapper/WebSetMapper.java | 11
src/main/resources/application.yml | 12
49 files changed, 1,024 insertions(+), 319 deletions(-)
diff --git a/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java b/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java
index 32d768d..17c62ad 100644
--- a/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java
+++ b/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java
@@ -22,10 +22,14 @@
public static String path(String path, String fileName) {
File file = new File(path);
- if (!file.isDirectory()){
+ if (file.exists() && !file.isDirectory()){
return "";
}
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+
String dir = path(path);
return dir + fileName;
}
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java
index 8b5873f..5e2896e 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/CmsConfig.java
@@ -3,11 +3,15 @@
import com.xcong.farmer.cms.configurations.properties.CmsProperties;
import com.xcong.farmer.cms.core.template.TemplateConfiguration;
import com.xcong.farmer.cms.core.template.TemplateLoader;
+import com.xcong.farmer.cms.modules.system.entity.DataDictionaryCustom;
+import com.xcong.farmer.cms.modules.system.mapper.DataDictionaryCustomMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
/**
* @author wzy
@@ -23,7 +27,8 @@
@Bean
public TemplateConfiguration templateConfiguration() {
log.info("CMS管理系统");
- TemplateConfiguration cfg = new TemplateConfiguration(cmsProperties.getTemplatePath(), cmsProperties.getStaticPath(), cmsProperties.getOutputPath(), cmsProperties.getBaseUrl(), cmsProperties.getStaticUrl());
+
+ TemplateConfiguration cfg = new TemplateConfiguration(cmsProperties.getTemplatePath(), cmsProperties.getStaticPath(), cmsProperties.getOutputPath(), cmsProperties.getApiUrl(), cmsProperties.getStaticUrl());
TemplateLoader loader = new TemplateLoader(cfg);
cfg.templateLoader(loader);
return cfg;
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/properties/CmsProperties.java b/src/main/java/com/xcong/farmer/cms/configurations/properties/CmsProperties.java
index 22b0fc9..440a51c 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/properties/CmsProperties.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/properties/CmsProperties.java
@@ -3,19 +3,35 @@
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
@Data
@Configuration
@ConfigurationProperties(prefix = "cms")
public class CmsProperties {
+ /**
+ * 模板保存地址
+ */
private String templatePath;
+ /**
+ * 静态文件保存地址
+ */
private String staticPath;
+ /**
+ * html输出地址
+ */
private String outputPath;
+ /**
+ * 静态文件访问地址
+ */
private String staticUrl;
- private String baseUrl;
+ /**
+ * api请求地址
+ */
+ private String apiUrl;
}
diff --git a/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java b/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java
index cdb6610..9b65930 100644
--- a/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java
+++ b/src/main/java/com/xcong/farmer/cms/conversion/ArticleConversion.java
@@ -18,7 +18,9 @@
@Mapping(source = "visits", target = "views")
@Mapping(source = "mainDiagram", target = "thumb")
@Mapping(source = "releaseTime", target = "createTime")
+ @Mapping(source = "authorBelong", target = "company")
@Mapping(source = "articleDetails", target = "content")
@Mapping(source = "uploadFile", target = "filePath")
+ @Mapping(source = "remark", target = "description")
public abstract ArticleData entityToData(ArticleEntity article);
}
diff --git a/src/main/java/com/xcong/farmer/cms/conversion/WebSettingConversion.java b/src/main/java/com/xcong/farmer/cms/conversion/WebSettingConversion.java
new file mode 100644
index 0000000..b358a51
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/conversion/WebSettingConversion.java
@@ -0,0 +1,20 @@
+package com.xcong.farmer.cms.conversion;
+
+import com.xcong.farmer.cms.modules.system.dto.SetWebSettingDto;
+import com.xcong.farmer.cms.modules.system.entity.WebSettingEntity;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeWebSetInfoVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author wzy
+ * @date 2022-07-11
+ **/
+@Mapper
+public abstract class WebSettingConversion {
+ public static WebSettingConversion INSTANCE = Mappers.getMapper(WebSettingConversion.class);
+
+ public abstract WebSettingEntity dtoToEntity(SetWebSettingDto setWebSettingDto);
+
+ public abstract AdminSeeWebSetInfoVo entityToVo(WebSettingEntity webSettingEntity);
+}
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
index b5b5b7f..1beb535 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticleDataParserHandler.java
@@ -2,11 +2,15 @@
import com.alibaba.fastjson.JSONObject;
+import com.xcong.farmer.cms.configurations.properties.CmsProperties;
+import com.xcong.farmer.cms.conversion.ArticleConversion;
import com.xcong.farmer.cms.core.node.AttrNode;
+import com.xcong.farmer.cms.core.tag.data.ArticleData;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -17,25 +21,48 @@
* @author wzy
* @date 2022-06-24
**/
+@Slf4j
public class ArticleDataParserHandler implements DataParserHandler {
private final ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
-
@Override
public void dataParser(AttrNode node) {
- System.out.println("ArticleDataParserHandler");
+ log.info("######文章解析########");
+ String baseUrl = (String) node.getSystemDataValue("baseUrl");
+
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);
+ ArticleData articleData = ArticleConversion.INSTANCE.entityToData(data);
- Map map = JSONObject.parseObject(JSONObject.toJSONString(data), Map.class);
-// Map<String, Object> map = new HashMap<>();
-// map.put("title", "这是单个文章标题");
+ ArticleEntity prevEntity = articleMapper.selectPrevOrNextArticle(data.getId(), data.getColumnId(), 1);
+ if (prevEntity != null) {
+ ArticleData prev = ArticleConversion.INSTANCE.entityToData(prevEntity);
+ if (prevEntity.getType() == 2) {
+ prev.setUrl(prevEntity.getArticleUrl());
+ } else {
+ prev.setUrl(baseUrl + prevEntity.getPath() + "/" + prevEntity.getId() + ".html");
+ }
- map.put("prev", prev);
- map.put("next", next);
- node.setData(map);
+ articleData.setPrev(prev);
+ } else {
+ articleData.setPrev(new ArticleData());
+ }
+
+ ArticleEntity nextEntity = articleMapper.selectPrevOrNextArticle(data.getId(), data.getColumnId(), 2);
+ if (nextEntity != null) {
+ ArticleData next = ArticleConversion.INSTANCE.entityToData(nextEntity);
+ if (nextEntity.getType() == 2) {
+ next.setUrl(nextEntity.getArticleUrl());
+ } else {
+ next.setUrl(baseUrl + nextEntity.getPath() + "/" + nextEntity.getId() + ".html");
+ }
+
+ articleData.setNext(next);
+ } else {
+ articleData.setNext(new ArticleData());
+ }
+
+ node.setData(articleData);
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
index 9135964..df2f1e9 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ArticlesDataParserHandler.java
@@ -27,20 +27,19 @@
public class ArticlesDataParserHandler implements DataParserHandler {
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
@Override
public void dataParser(AttrNode node) {
log.info("文章列表解析");
Long companyId = (Long) node.getSystemDataValue("companyId");
- Articles param = (Articles) node.getParam();
+ String companyCode = (String) node.getSystemDataValue("companyCode");
+ String baseUrl = (String) node.getSystemDataValue("baseUrl");
+ Articles param = (Articles) node.getParam();
ArticleEntity article = new ArticleEntity();
Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit()));
if (StrUtil.isEmpty(param.getColId())) {
-
article.setColumnCode(param.getCode());
-
} else {
List<String> colIdsStr = StrUtil.split(param.getColId(), ',');
List<Long> colIds = new ArrayList<>();
@@ -51,24 +50,31 @@
article.setColumnIds(colIds);
}
article.setCompanyId(companyId);
+
+ if (StrUtil.isNotBlank(param.getType())) {
+ if ("hot".equals(param.getType())) {
+ article.setIsTop(1);
+ }
+ }
+
IPage<ArticleEntity> listPage = articleMapper.selectArticleInPage(page, article);
List<ArticleData> list = new ArrayList<>();
for (ArticleEntity record : listPage.getRecords()) {
- ArticleData articleData = entityToData(record);
+ ArticleData articleData = entityToData(record, baseUrl);
list.add(articleData);
}
node.setData(list);
}
- public ArticleData entityToData(ArticleEntity article) {
+ public ArticleData entityToData(ArticleEntity article, String baseUrl) {
ArticleData articleData = ArticleConversion.INSTANCE.entityToData(article);
if (article.getType() == 2) {
articleData.setUrl(article.getArticleUrl());
} else {
- articleData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
+ articleData.setUrl(baseUrl + article.getPath() + "/" + article.getId() + ".html");
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
index 94a06e2..7e27891 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ChildDataParserHandler.java
@@ -25,6 +25,9 @@
String obj = param.getObj();
Object o = parserData.get(obj);
+ if (o == null) {
+ return;
+ }
Object state = JSONObject.parseObject(JSONObject.toJSONString(o)).get("state");
List children = JSONObject.parseObject(JSONObject.toJSONString(state)).getObject("children", List.class);
attrNode.setData(children);
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
index 99705b7..2a2643f 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/ColumnDataParserHandler.java
@@ -26,12 +26,13 @@
private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class);
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
+ private String baseUrl = "";
@Override
public void dataParser(AttrNode attrNode) {
log.info("栏目解析");
Long companyId = (Long) attrNode.getSystemDataValue("companyId");
+ baseUrl = (String) attrNode.getSystemDataValue("baseUrl");
Column param = (Column) attrNode.getParam();
@@ -42,7 +43,7 @@
}
ColumnData columnData = columnToData(columnEntity);
if (columnEntity.getParentId() == 0L) {
- List<ColumnEntity> child = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId);
+ List<ColumnEntity> child = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId, 1);
if (CollUtil.isNotEmpty(child)) {
List<ColumnData> list = new ArrayList<>();
for (ColumnEntity entity : child) {
@@ -59,14 +60,14 @@
public ColumnData columnToData(ColumnEntity column) {
ColumnData columnData = ColumnConversion.INSTANCE.entityToData(column);
- columnData.setUrl(cmsProperties.getBaseUrl() + column.getPath());
+ columnData.setUrl(baseUrl + column.getPath());
if (column.getType() == 2) {
if (column.getTargetType() == 1) {
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
- columnData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
+ columnData.setUrl(baseUrl + article.getPath() + "/" + article.getId() + ".html");
} else if (column.getTargetType() == 2) {
ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId());
- columnData.setUrl(cmsProperties.getBaseUrl() + columnEntity.getPath());
+ columnData.setUrl(baseUrl + columnEntity.getPath());
} else {
columnData.setUrl(column.getTargetUrl());
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
index b50a231..fbb19e3 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/NavDataParserHandler.java
@@ -28,14 +28,15 @@
private ColumnMapper columnMapper = SpringContextHolder.getBean(ColumnMapper.class);
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
+ private String baseUrl = "";
@Override
public void dataParser(AttrNode node) {
log.info("导航栏解析");
Long companyId = (Long) node.getSystemDataValue("companyId");
+ baseUrl = (String) node.getSystemDataValue("baseUrl");
- List<ColumnEntity> columns = columnMapper.selectColumnByParentId(0L, companyId);
+ List<ColumnEntity> columns = columnMapper.selectColumnByParentId(0L, companyId, 1);
if (CollUtil.isEmpty(columns)) {
return;
@@ -45,14 +46,14 @@
NavData index = new NavData();
index.setTitle("首页");
- index.setUrl(cmsProperties.getBaseUrl());
+ index.setUrl(baseUrl);
index.setCode("index");
list.add(index);
for (ColumnEntity column : columns) {
NavData navData = columnToNav(column);
- List<ColumnEntity> child = columnMapper.selectColumnByParentId(column.getId(), companyId);
+ List<ColumnEntity> child = columnMapper.selectColumnByParentId(column.getId(), companyId, 1);
if (CollUtil.isNotEmpty(child)) {
List<NavData> childNavData = columnsToNavs(child);
navData.setChildren(childNavData);
@@ -75,14 +76,14 @@
public NavData columnToNav(ColumnEntity column) {
NavData navData = ColumnConversion.INSTANCE.columnToNav(column);
- navData.setUrl(cmsProperties.getBaseUrl() + column.getPath());
+ navData.setUrl(baseUrl + column.getPath());
if (column.getType() == 2) {
if (column.getTargetType() == 1) {
ArticleEntity article = this.articleMapper.selectArticleById(Long.parseLong(column.getTargetUrl()));
- navData.setUrl(cmsProperties.getBaseUrl() + article.getPath() + "/" + article.getId() + ".html");
+ navData.setUrl(baseUrl + article.getPath() + "/" + article.getId() + ".html");
} else if (column.getTargetType() == 2) {
ColumnEntity columnEntity = this.columnMapper.selectByCodeAndCompanyId(column.getTargetUrl(), column.getCompanyId());
- navData.setUrl(cmsProperties.getBaseUrl() + columnEntity.getPath());
+ navData.setUrl(baseUrl + columnEntity.getPath());
} else {
navData.setUrl(column.getTargetUrl());
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
index 4b97d98..e49892f 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/PageDataParserHandler.java
@@ -27,57 +27,59 @@
public class PageDataParserHandler implements DataParserHandler {
private ArticleMapper articleMapper = SpringContextHolder.getBean(ArticleMapper.class);
- private CmsProperties cmsProperties = SpringContextHolder.getBean(CmsProperties.class);
@Override
public void dataParser(AttrNode attrNode) {
log.info("分页解析");
- Template.HAS_PAGING = true;
+ synchronized (this) {
+ Template.HAS_PAGING = true;
+ String baseUrl = (String) attrNode.getSystemDataValue("baseUrl");
- Long companyId = (Long) attrNode.getSystemDataValue("companyId");
- Pagination param = (Pagination) attrNode.getParam();
+ Long companyId = (Long) attrNode.getSystemDataValue("companyId");
+ Pagination param = (Pagination) attrNode.getParam();
- Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit()));
- ArticleEntity article = new ArticleEntity();
- article.setColumnCode(param.getCode());
- article.setCompanyId(companyId);
- IPage<ArticleEntity> pageList = articleMapper.selectArticleInPage(page, article);
+ Page<ArticleEntity> page = new Page<>(Integer.parseInt(param.getPage()), Integer.parseInt(param.getLimit()));
+ ArticleEntity article = new ArticleEntity();
+ article.setColumnCode(param.getCode());
+ article.setCompanyId(companyId);
+ IPage<ArticleEntity> pageList = articleMapper.selectArticleInPage(page, article);
- PageData pageData = new PageData();
- pageData.setTotalPage((int) pageList.getPages());
- pageData.setIndex(Integer.parseInt(param.getPage()));
- pageData.setTotalCnt((int) pageList.getSize());
+ PageData pageData = new PageData();
+ pageData.setTotalPage((int) pageList.getPages());
+ pageData.setIndex(Integer.parseInt(param.getPage()));
+ pageData.setTotalCnt((int) pageList.getSize());
- if (CollUtil.isNotEmpty(pageList.getRecords())) {
- String path = cmsProperties.getBaseUrl() + "/" + param.getCode();
- String filename = "index_{}.html";
+ if (CollUtil.isNotEmpty(pageList.getRecords())) {
+ String path = baseUrl + "/" + param.getCode();
+ String filename = "index_{}.html";
- List<PageChildData> list = new ArrayList<>();
- int pageNo = Integer.parseInt(param.getPage());
+ List<PageChildData> list = new ArrayList<>();
+ int pageNo = Integer.parseInt(param.getPage());
- // 计算出页面显示分页的最大和最小值
- int[] startAndEnd = pageStartAndEnd(pageNo, (int) pageList.getPages(), Integer.parseInt(param.getSize()));
- for (int i = startAndEnd[0]; i <= startAndEnd[1] ; i++) {
- PageChildData child = new PageChildData();
- child.setIndex(i);
- if (pageNo == 1) {
- child.setPath(path + "/index.html");
- } else {
- child.setPath(path + "/" + StrUtil.format(filename, i));
+ // 计算出页面显示分页的最大和最小值
+ int[] startAndEnd = pageStartAndEnd(pageNo, (int) pageList.getPages(), Integer.parseInt(param.getSize()));
+ for (int i = startAndEnd[0]; i <= startAndEnd[1]; i++) {
+ PageChildData child = new PageChildData();
+ child.setIndex(i);
+ if (pageNo == 1) {
+ child.setPath(path + "/index.html");
+ } else {
+ child.setPath(path + "/" + StrUtil.format(filename, i));
+ }
+ list.add(child);
}
- list.add(child);
+
+ pageData.setChildren(list);
+ } else {
+ pageData.setNext("javascript:void(0)");
+ pageData.setPrev("javascript:void(0)");
}
- pageData.setChildren(list);
- } else {
- pageData.setNext("javascript:void(0)");
- pageData.setPrev("javascript:void(0)");
- }
+ if (Integer.parseInt(param.getPage()) >= pageList.getPages()) {
+ Template.HAS_PAGING = false;
+ }
- if (Integer.parseInt(param.getPage()) == pageList.getPages()) {
- Template.HAS_PAGING = false;
+ attrNode.setData(pageData);
}
-
- attrNode.setData(pageData);
}
/**
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
index c85e75e..436b082 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -2,20 +2,28 @@
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.xcong.farmer.cms.core.handler.DataParserHandler;
import com.xcong.farmer.cms.core.tag.TagsEnum;
+import com.xcong.farmer.cms.core.tag.model.TimeTag;
import com.xcong.farmer.cms.core.template.Configuration;
import com.xcong.farmer.cms.core.template.TemplateConfiguration;
+import com.xcong.farmer.cms.utils.GroovySingleton;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
+import groovy.lang.Script;
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.time.format.DateTimeFormatter;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -72,32 +80,7 @@
return false;
}
- public void staticPath() {
- // 设置img的链接访问
- if ("img".equals(this.element.tagName())) {
- String src = this.element.attr("src");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("src", STATIC_URL + src);
- }
- }
-
- if ("link".equals(this.element.tagName())) {
- String src = this.element.attr("href");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("href", STATIC_URL + src);
- }
- }
-
- if ("script".equals(this.element.tagName())) {
- String src = this.element.attr("src");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("src", STATIC_URL + src);
- }
- }
- }
-
public void parser() {
- staticPath();
// 判断是否为最小节点,如果是且没有特殊标签,则跳过清空
if (!isNeedEmpty()) {
return;
@@ -145,6 +128,7 @@
}
}
+
runDataInject();
}
@@ -158,15 +142,17 @@
String key = attribute.getKey().replaceAll("\\$", "");
String value = attribute.getValue();
+ String result = attrValueFormat(value);
// @{} 为java表达式; ${}为需要注入的数据项
if (value.startsWith("@{")) {
- value = value.replaceAll("\\@\\{", "").replaceAll("}", "");
+ value = result.replaceAll("\\@\\{", "").replaceAll("}", "");
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();
- binding.setProperty(fieldKey, data);
- binding.setVariable(fieldKey + ".index", 1);
+ binding.setProperty(fieldKey, data.get("state"));
+ int index = (int) data.get("index");
+ binding.setVariable( "index", index);
}
GroovyShell shell = new GroovyShell(binding);
String evaluate = (String) shell.evaluate(value);
@@ -174,9 +160,14 @@
this.element.removeAttr("class");
this.element.attr("class", evaluate);
} else if (value.contains( "${")) {
- String result = attrValueFormat(value);
if ("text".equals(key)) {
this.element.text(result);
+ } else if ("html".equals(key)) {
+ this.element.html(result);
+ } else if ("time".equals(key)) {
+ TimeTag time = parserTag(result, TimeTag.class);
+ String timeStr = DateUtil.format(DateUtil.parse(time.getDate(), DatePattern.NORM_DATETIME_PATTERN), time.getFormat());
+ this.element.text(timeStr);
} else {
this.element.attr(key, result);
}
@@ -191,24 +182,8 @@
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;
-// }
-//
-// 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());
-// }
-// }
-// }
+ GroovyShell groovyShell = GroovySingleton.getSingleton();
Binding binding = new Binding();
for (Map.Entry<String, Object> entry : this.parserData.entrySet()) {
String fieldKey = entry.getKey();
@@ -220,12 +195,20 @@
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());
+ synchronized (this) {
+ Script parse = groovyShell.parse(group);
+ parse.setBinding(binding);
+ Object evaluate = parse.run();
+ if (evaluate instanceof Date) {
+ evaluate = DateUtil.format((Date) evaluate, DatePattern.NORM_DATETIME_PATTERN);
+ }
+
+ if (evaluate == null) {
+ targetData.put(group, "");
+ } else {
+ targetData.put(group, evaluate.toString());
+ }
+ groovyShell.getClassLoader().clearCache();
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
index e1ef6e0..ab9b54e 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/Template.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
@@ -31,7 +31,7 @@
// 页面中包含的标签
public static Set<String> TAGS;
- public static boolean HAS_PAGING = false;
+ public volatile static boolean HAS_PAGING = false;
public Template() {
TAGS = new HashSet<>();
@@ -70,8 +70,20 @@
if (!new Integer(1).equals(page)) {
this.name = name + "_" + page;
}
- } else {
-
+ } else if ("search".equals(templateType)){
+ Object templateName = system.get("templateName");
+ if (templateName != null) {
+ this.name = String.valueOf(templateName);
+ } else {
+ this.name = "search";
+ }
+ } else if ("message".equals(templateType)) {
+ Object templateName = system.get("templateName");
+ if (templateName != null) {
+ this.name = String.valueOf(templateName);
+ } else {
+ this.name = "message";
+ }
}
}
@@ -97,7 +109,7 @@
sb.append(partNode.getHtml());
}
document = Jsoup.parse(sb.toString());
- String outPath = path(outputPath);
+ String outPath = path(outputPath) + system.get("companyCode");
String html = document.html();
try {
@@ -107,7 +119,7 @@
file.mkdirs();
}
- FileOutputStream outputStream = new FileOutputStream(path +this.name + suffix);
+ FileOutputStream outputStream = new FileOutputStream(path + this.name + suffix);
outputStream.write(html.getBytes());
outputStream.close();
} catch (IOException e) {
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java
index d0d345d..37f9d8f 100644
--- a/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/ArticleData.java
@@ -28,11 +28,43 @@
private String views;
+ private String company;
+
private String filePath;
private List<String> images;
private String url;
+
+ private String description;
+
+ private ArticleData next;
+
+ private ArticleData prev;
+
+ public String getCompany() {
+ return company;
+ }
+
+ public void setCompany(String company) {
+ this.company = company;
+ }
+
+ public ArticleData getNext() {
+ return next;
+ }
+
+ public void setNext(ArticleData next) {
+ this.next = next;
+ }
+
+ public ArticleData getPrev() {
+ return prev;
+ }
+
+ public void setPrev(ArticleData prev) {
+ this.prev = prev;
+ }
public String getFilePath() {
return filePath;
@@ -121,4 +153,12 @@
public void setViews(String views) {
this.views = views;
}
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
index 509e369..d7cc322 100644
--- a/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/Articles.java
@@ -28,6 +28,11 @@
private String field;
+ /**
+ * hot-热点
+ */
+ private String type;
+
public String getColId() {
return colId;
}
@@ -67,4 +72,12 @@
public void setField(String field) {
this.field = field;
}
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/model/TimeTag.java b/src/main/java/com/xcong/farmer/cms/core/tag/model/TimeTag.java
new file mode 100644
index 0000000..069d80f
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/model/TimeTag.java
@@ -0,0 +1,28 @@
+package com.xcong.farmer.cms.core.tag.model;
+
+/**
+ * @author wzy
+ * @date 2022-07-09
+ **/
+public class TimeTag {
+
+ private String date;
+
+ private String format;
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public void setFormat(String format) {
+ this.format = format;
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
index 766240b..ade1636 100644
--- a/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
@@ -6,7 +6,7 @@
public abstract class Configuration {
- protected static String BASE_URL;
+ protected static String API_URL;
protected static String STATIC_URL;
protected static String staticPath;
protected static String templatePath;
@@ -15,11 +15,11 @@
public Configuration() {
}
- public Configuration(String templatePath, String staticPath, String outputPath, String baseUrl, String staticUrl) {
+ public Configuration(String templatePath, String staticPath, String outputPath, String apiUrl, String staticUrl) {
Configuration.staticPath = staticPath;
Configuration.templatePath = templatePath;
Configuration.outputPath = outputPath;
- Configuration.BASE_URL = baseUrl;
+ Configuration.API_URL = apiUrl;
Configuration.STATIC_URL = staticUrl;
}
diff --git a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
index 7dbc81c..22ac0dc 100644
--- a/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -1,7 +1,9 @@
package com.xcong.farmer.cms.core.template;
+import com.xcong.farmer.cms.common.utils.FileUtils;
import com.xcong.farmer.cms.core.node.PartNode;
import com.xcong.farmer.cms.core.node.Template;
+import lombok.extern.slf4j.Slf4j;
import org.jsoup.nodes.Document;
import java.io.File;
@@ -14,6 +16,7 @@
* @author wzy
* @date 2022-07-01
**/
+@Slf4j
public class TemplateConfiguration extends Configuration{
private TemplateLoader templateLoader;
@@ -30,9 +33,13 @@
if (this.templateLoader == null) {
throw new RuntimeException("TemplateLoader do not able to be null");
}
+ map.put("apiUrl", API_URL);
+ String companyCode = (String) map.get("companyCode");
+
+ log.info("解析开始执行--#类型:{}#--#模板名称:{}#--#ID:{}#", map.get("templateType"), templateName, map.get("id"));
this.templateLoader.data(map);
- Template template = template(templateName);
+ Template template = template(FileUtils.path(templatePath, companyCode), templateName);
template.output(outputPath);
// 判断是否有分页,有则执行。从第二页开始
@@ -40,13 +47,13 @@
while(Template.HAS_PAGING) {
map.put("page", i);
this.templateLoader.data(map);
- Template pageTemplate = template(templateName);
+ Template pageTemplate = template(FileUtils.path(templatePath, companyCode), templateName);
pageTemplate.output(outputPath);
i++;
}
}
- public Template template(String templateName) {
+ public Template template(String templatePath, String templateName) {
return template(new File(path(templatePath) + templateName));
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java b/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
index 0212677..f65150f 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java
@@ -4,6 +4,7 @@
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
import com.xcong.farmer.cms.modules.system.service.IArticleService;
import com.xcong.farmer.cms.modules.system.service.IReleaseService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -17,7 +18,7 @@
**/
@Slf4j
@RestController
-@RequestMapping(value = "/cms")
+@RequestMapping(value = "/api")
@Api(value = "CmsCoreController", tags = "CMS核心类")
public class CmsCoreController {
@@ -27,21 +28,26 @@
@ApiOperation(value = "发布文章", notes = "发布文章")
@PostMapping(value = "releaseArticle/{id}")
public Result releaseArticle(@PathVariable("id") Long id) {
- releaseService.releaseArticle(id);
+ Long companyId = LoginUserUtil.getCompanyId();
+ releaseService.releaseArticle(id, companyId);
return Result.ok("success");
}
@ApiOperation(value = "发布栏目", notes = "发布栏目")
@PostMapping(value = "releaseColumn/{type}/{id}")
public Result releaseColumn(@PathVariable("id") Long id, @PathVariable("type") Integer type) {
- releaseService.releaseColumn(id, type);
+ Long companyId = LoginUserUtil.getCompanyId();
+ releaseService.releaseColumn(id, type, companyId);
return Result.ok("success");
}
@ApiOperation(value = "发布首页", notes = "发布首页")
@PostMapping(value = "/releaseIndex")
public Result releaseIndex() {
- releaseService.releaseIndex();
+ Long companyId = LoginUserUtil.getCompanyId();
+ releaseService.releaseIndex(companyId, true);
return Result.ok("success");
}
+
+
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
index 08b0e1e..9eceba7 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
@@ -38,4 +38,6 @@
void indexProcess(Map<String, Object> map, String templateName);
+ void process(Map<String, Object> map, String templateType, String templateName);
+
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
index a405ee4..21dd11e 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java
@@ -4,6 +4,7 @@
import cn.hutool.core.util.StrUtil;
import com.xcong.farmer.cms.core.template.TemplateConfiguration;
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
+import com.xcong.farmer.cms.modules.system.mapper.WebSetMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -28,17 +29,26 @@
@Autowired
private TemplateConfiguration cfg;
+ @Autowired
+ private WebSetMapper webSetMapper;
+
@Override
public void articleProcess(Map<String, Object> data, String templateName, String templatePath) {
data.put("templateType", "article");
data.put("templatePath", templatePath);
data.put("templateName", data.get("id"));
+ globalData(data);
if (StrUtil.isEmpty(templateName)) {
templateName = "defualt.article.html";
}
- cfg.process(data, templateName);
+ try {
+ cfg.process(data, templateName);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("发布文章出错", e);
+ }
}
@Override
@@ -69,19 +79,60 @@
public void columnProcess(Map<String, Object> data, String templateName) {
data.put("templateType", "column");
data.put("page", 1);
+ globalData(data);
if (StrUtil.isEmpty(templateName)) {
templateName = "defualt.list.html";
}
- cfg.process(data, templateName);
+ try {
+ cfg.process(data, templateName);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("发布栏目错误", e);
+ }
}
@Override
public void indexProcess(@NotNull Map<String, Object> data, String templateName) {
+ data.put("templateType", "index");
+ globalData(data);
if (StrUtil.isEmpty(templateName)) {
templateName = "index.html";
}
- cfg.process(data, templateName);
+ try {
+ cfg.process(data, templateName);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("发布首页错误", e);
+ }
+ }
+
+ @Override
+ public void process(Map<String, Object> data, String templateType, String templateName) {
+ data.put("templateType", templateType);
+ globalData(data);
+
+ if ("search".equals(templateType) && StrUtil.isBlank(templateName)) {
+ templateName = "search.html";
+ }
+
+ if ("message".equals(templateType) && StrUtil.isBlank(templateName)) {
+ templateName = "message.html";
+ }
+
+ try {
+ cfg.process(data, templateName);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("发布错误", e);
+ }
+ }
+
+ private void globalData(Map<String, Object> data) {
+ Long companyId = (Long) data.get("companyId");
+ Map<String, String> globalSetting = webSetMapper.selectSiteGlobalSetting(companyId);
+
+ data.putAll(globalSetting);
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java
index 2ae35b5..c90acb6 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java
@@ -4,6 +4,7 @@
import com.xcong.farmer.cms.modules.system.dto.*;
import com.xcong.farmer.cms.modules.system.service.IColumnService;
import com.xcong.farmer.cms.modules.system.service.IReleaseService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
import com.xcong.farmer.cms.modules.system.vo.AdminColumnVo;
import com.xcong.farmer.cms.modules.system.vo.AdminSeeColumnInfoVo;
import com.xcong.farmer.cms.modules.system.vo.WebColumnVo;
@@ -76,7 +77,8 @@
@ApiOperation(value = "发布栏目", notes = "发布栏目")
@PostMapping(value = "/release")
public Result release(@RequestBody @Valid ReleaseColumnDto releaseColumnDto) {
- releaseService.releaseColumn(releaseColumnDto.getId(), releaseColumnDto.getType());
+ Long companyId = LoginUserUtil.getCompanyId();
+ releaseService.releaseColumn(releaseColumnDto.getId(), releaseColumnDto.getType(), companyId);
return Result.ok("发布成功");
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminWebSetController.java b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminWebSetController.java
index 22e733e..9016746 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminWebSetController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminWebSetController.java
@@ -1,10 +1,15 @@
package com.xcong.farmer.cms.modules.system.controller;
import com.xcong.farmer.cms.common.response.Result;
-import com.xcong.farmer.cms.modules.system.dto.AdminUpdateWebSetDto;
-import com.xcong.farmer.cms.modules.system.service.IWebSetService;
+import com.xcong.farmer.cms.modules.system.dto.SetWebSettingDto;
+import com.xcong.farmer.cms.modules.system.service.IReleaseService;
+import com.xcong.farmer.cms.modules.system.service.IWebSettingService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeWebSetInfoVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -18,17 +23,31 @@
public class AdminWebSetController {
@Resource
- private IWebSetService iWebSetService;
+ private IWebSettingService iWebSetService;
+
+ @Resource
+ private IReleaseService releaseService;
@ApiOperation(value = "查看网页设置", notes = "查看网页设置")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = AdminSeeWebSetInfoVo.class)
+ })
@GetMapping(value = "/seeWebSetInfo")
public Result seeWebSetInfo() {
- return iWebSetService.seeWebSetInfo();
+ return iWebSetService.getWebSetting();
}
@ApiOperation(value = "更新网页设置", notes = "更新网页设置")
@PostMapping(value = "/updateWebSet")
- public Result updateWebSet(@RequestBody @Valid AdminUpdateWebSetDto adminUpdateWebSetDto) {
- return iWebSetService.updateWebSet(adminUpdateWebSetDto);
+ public Result updateWebSet(@RequestBody @Valid SetWebSettingDto setWebSettingDto) {
+ return iWebSetService.setWebSetting(setWebSettingDto);
+ }
+
+ @ApiOperation(value = "发布全站", notes = "发布全站")
+ @PostMapping(value = "/releaseAll")
+ public Result releaseAll() {
+ Long companyId = LoginUserUtil.getCompanyId();
+ releaseService.releaseAll(companyId);
+ return Result.ok("发布成功");
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateWebSetDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateWebSetDto.java
deleted file mode 100644
index d22e9a0..0000000
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateWebSetDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.xcong.farmer.cms.modules.system.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-
-@Data
-@ApiModel(value = "AdminUpdateWebSetDto", description = "参数接收类")
-public class AdminUpdateWebSetDto {
-
- @ApiModelProperty(value = "ID")
- private Long id;
-
- @ApiModelProperty(value = "网页标题")
- @NotBlank(message = "请输入网页标题")
- private String webTitle;
-
- @ApiModelProperty(value = "网页关键字")
- @NotBlank(message = "请输入网页关键字")
- private String webKeyword;
-
- @ApiModelProperty(value = "网页描述")
- private String webRemark;
-
- @ApiModelProperty(value = "网页LOGO")
- private String webPic;
-}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/SetWebSettingDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/SetWebSettingDto.java
new file mode 100644
index 0000000..e339339
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/SetWebSettingDto.java
@@ -0,0 +1,40 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@ApiModel(value = "AdminUpdateWebSetDto", description = "参数接收类")
+public class SetWebSettingDto {
+
+ @ApiModelProperty(value = "ID")
+ private Long id;
+
+ @ApiModelProperty(value = "网页标题")
+ @NotBlank(message = "请输入网页标题")
+ private String title;
+
+ @ApiModelProperty(value = "网页关键字")
+ private String seoTitle;
+
+ @ApiModelProperty(value = "网页描述")
+ private String seoDescription;
+
+ @ApiModelProperty(value = "网页描述")
+ private String seoKeyword;
+
+ @ApiModelProperty(value = "网页LOGO")
+ private String logoUrl;
+
+ @ApiModelProperty(value = "首页模板")
+ private String indexTemplate;
+
+ @ApiModelProperty(value = "搜索模板")
+ private String searchTemplate;
+
+ @ApiModelProperty(value = "在线留言模板")
+ private String msgTemplate;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
index 318d444..70d85ee 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
@@ -85,6 +85,11 @@
//内容类型 1:文章 2:图片 3:文件 4:音频"
private Integer contentType;
+ /**
+ * 更新前栏目编码
+ */
+ private Long beforeColumnId;
+
@TableField(exist = false)
private String columnCode;
@@ -103,4 +108,7 @@
@TableField(exist = false)
private String timeType;
+ @TableField(exist = false)
+ private Integer releaseType;
+
}
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 90fa975..f8c87d3 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
@@ -60,4 +60,19 @@
@TableField(exist = false)
private List<Long> ids;
+
+ /**
+ * 更新前栏目ID
+ */
+ private Long beforeParentId;
+
+ /**
+ * 更新前栏目编码
+ */
+ private String beforeColumnCode;
+
+ /**
+ * 发布状态 1-已发布 2-未发布
+ */
+ private Integer releaseState;
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSetEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSetEntity.java
deleted file mode 100644
index 451d831..0000000
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSetEntity.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.xcong.farmer.cms.modules.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-/**
- * 网页配置表
- */
-@Data
-@TableName("t_web_set")
-public class WebSetEntity {
- //ID
-
- @TableId(value = "id",type = IdType.AUTO)
- private Long id;
- //网页标题
- private String webTitle;
- //网页关键字
- private String webKeyword;
- //网页描述
- private String webRemark;
- //网页LOGO
- private String webPic;
- //所属ID
- private Long companyId;
-}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSettingEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSettingEntity.java
new file mode 100644
index 0000000..631923e
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/WebSettingEntity.java
@@ -0,0 +1,67 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 网页配置表
+ */
+@Data
+@TableName("t_web_setting")
+public class WebSettingEntity {
+ //ID
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 网站标题
+ */
+ private String title;
+
+ /**
+ * seo标题
+ */
+ private String seoTitle;
+
+ /**
+ * seo关键词
+ */
+ private String seoKeyword;
+
+ /**
+ * seo描述
+ */
+ private String seoDescription;
+
+ /**
+ * logo地址
+ */
+ private String logoUrl;
+
+ /**
+ * 首页模板
+ */
+ private String indexTemplate;
+
+ /**
+ * 搜索模板
+ */
+ private String searchTemplate;
+
+ /**
+ * 在线留言模板
+ */
+ private String msgTemplate;
+
+ private Long companyId;
+
+ @TableField(exist = false)
+ private String companyCode;
+
+ @TableField(exist = false)
+ private String companyUrl;
+}
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 a5ca4ce..d15896e 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
@@ -27,4 +27,6 @@
IPage<WebArticleVo> selectWebArticleInPage(Page<WebArticleVo> page, @Param("record") ArticleEntity articleEntity);
List<Long> selectArticleIdsByColumnId(@Param("columnId") Long columnId, @Param("companyId") Long companyId, @Param("type") Integer type);
+
+ List<ArticleEntity> selectArticleByColumnId(@Param("columnId") Long columnId, @Param("companyId") Long companyId, @Param("type") Integer type);
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
index 7c2327d..0ddbb20 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java
@@ -18,7 +18,7 @@
ColumnEntity selectByCodeAndCompanyId(@Param("code") String code, @Param("companyId") Long companyId);
- List<ColumnEntity> selectColumnByParentId(@Param("parentId") Long parentId, @Param("companyId") Long companyId);
+ List<ColumnEntity> selectColumnByParentId(@Param("parentId") Long parentId, @Param("companyId") Long companyId, @Param("isNav") Integer isNav);
IPage<ColumnEntity> selectColumnInPage(Page<ColumnEntity> page, @Param("record") ColumnEntity column);
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/WebSetMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/WebSetMapper.java
index a927324..fa83417 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/WebSetMapper.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/WebSetMapper.java
@@ -1,7 +1,14 @@
package com.xcong.farmer.cms.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xcong.farmer.cms.modules.system.entity.WebSetEntity;
+import com.xcong.farmer.cms.modules.system.entity.WebSettingEntity;
+import org.apache.ibatis.annotations.Param;
-public interface WebSetMapper extends BaseMapper<WebSetEntity> {
+import java.util.Map;
+
+public interface WebSetMapper extends BaseMapper<WebSettingEntity> {
+
+ WebSettingEntity selectByCompanyId(@Param("companyId") Long companyId);
+
+ Map<String, String> selectSiteGlobalSetting(@Param("companyId") Long companyId);
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
index 6d3f296..2af8ed0 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java
@@ -3,9 +3,14 @@
public interface IReleaseService {
- void releaseArticle(Long id);
+ void releaseArticle(Long id, Long companyId);
- void releaseColumn(Long id, int type);
+ void releaseColumn(Long id, int type, Long companyId);
- void releaseIndex();
+ void releaseColumns(int type, Long companyId);
+
+ void releaseIndex(Long companyId, boolean hasSearch);
+
+ void releaseAll(Long companyId);
+
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSetService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSetService.java
deleted file mode 100644
index cc4e59f..0000000
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSetService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.xcong.farmer.cms.modules.system.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.xcong.farmer.cms.common.response.Result;
-import com.xcong.farmer.cms.modules.system.dto.AdminUpdateWebSetDto;
-import com.xcong.farmer.cms.modules.system.entity.WebSetEntity;
-
-public interface IWebSetService extends IService<WebSetEntity> {
- Result seeWebSetInfo();
-
- Result updateWebSet(AdminUpdateWebSetDto adminUpdateWebSetDto);
-}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSettingService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSettingService.java
new file mode 100644
index 0000000..081cac9
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IWebSettingService.java
@@ -0,0 +1,12 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.SetWebSettingDto;
+import com.xcong.farmer.cms.modules.system.entity.WebSettingEntity;
+
+public interface IWebSettingService extends IService<WebSettingEntity> {
+ Result getWebSetting();
+
+ Result setWebSetting(SetWebSettingDto adminUpdateWebSetDto);
+}
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 eaf6ad1..13427ba 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
@@ -115,6 +115,9 @@
String atlas = adminAddArticleDto.getAtlas();
articleEntity.setAtlas(atlas);
Date releaseTime = adminAddArticleDto.getReleaseTime();
+ if (releaseTime == null) {
+ releaseTime = new Date();
+ }
articleEntity.setReleaseTime(releaseTime);
Integer isTop = adminAddArticleDto.getIsTop();
articleEntity.setIsTop(isTop);
@@ -178,7 +181,12 @@
if(ObjectUtil.isEmpty(columnEntity)){
return Result.fail("请选择文章栏目");
}
+
+ if (!articleEntity.getColumnId().equals(columnId) && articleEntity.getBeforeColumnId() == -1) {
+ articleEntity.setBeforeColumnId(articleEntity.getColumnId());
+ }
articleEntity.setColumnId(columnId);
+
Integer visits = adminUpdateArticleDto.getVisits() == null ? 0 : adminUpdateArticleDto.getVisits();
articleEntity.setVisits(visits);
String mainDiagram = adminUpdateArticleDto.getMainDiagram();
@@ -199,6 +207,7 @@
articleEntity.setArticleUrl(adminUpdateArticleDto.getArticleUrl());
articleEntity.setType(adminUpdateArticleDto.getType());
articleEntity.setContentType(adminUpdateArticleDto.getContentType());
+
String authorBelong = adminUpdateArticleDto.getAuthorBelong();
articleEntity.setAuthorBelong(authorBelong);
this.baseMapper.updateById(articleEntity);
@@ -229,6 +238,8 @@
}
articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_NO);
this.baseMapper.updateById(articleEntity);
+
+ releaseService.releaseColumn(articleEntity.getColumnId(), 2, articleEntity.getCompanyId());
return Result.ok("操作成功");
}
@@ -295,6 +306,7 @@
@Override
public Result updateStatusOn(Long id) {
+ Long companyId = LoginUserUtil.getCompanyId();
ArticleEntity articleEntity = this.baseMapper.selectById(id);
if(ObjectUtil.isEmpty(articleEntity)){
return Result.fail("文章不存在");
@@ -302,7 +314,7 @@
articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_YES);
this.baseMapper.updateById(articleEntity);
- releaseService.releaseArticle(articleEntity.getId());
+ releaseService.releaseArticle(articleEntity.getId(), companyId);
return Result.ok("操作成功");
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
index 5c20554..4c2a1bc 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
@@ -15,17 +15,22 @@
import com.xcong.farmer.cms.modules.system.dto.AdminSaveTemplateInfoDto;
import com.xcong.farmer.cms.modules.system.dto.TemplateListDto;
import com.xcong.farmer.cms.modules.system.entity.CmsTemplateEntity;
+import com.xcong.farmer.cms.modules.system.entity.CompanyEntity;
import com.xcong.farmer.cms.modules.system.mapper.CmsTemplateMapper;
+import com.xcong.farmer.cms.modules.system.mapper.CompanyMapper;
import com.xcong.farmer.cms.modules.system.service.ICmsTemplateService;
import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -43,6 +48,10 @@
@Autowired
private CmsProperties properties;
+ @Autowired
+ private CompanyMapper companyMapper;
+
+
private List<String> fileSuffix = Arrays.asList(".zip", ".html");
@Override
@@ -50,6 +59,11 @@
String templatePath = properties.getTemplatePath();
String staticPath = properties.getStaticPath();
Long companyId = LoginUserUtil.getCompanyId();
+ CompanyEntity company = companyMapper.selectById(companyId);
+
+ String companyCode = company.getCode();
+ templatePath = FileUtils.path(templatePath, companyCode);
+ staticPath = FileUtils.path(staticPath, companyCode);
String filename = upload.getOriginalFilename();
String suffix = filename.substring(filename.lastIndexOf("."));
@@ -88,46 +102,59 @@
continue;
}
- Document parse = Jsoup.parse(templateFile, null);
- String attr = parse.head().attr("name");
- CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
- cmsTemplate.setCompanyId(companyId);
- if (name.endsWith(".list.html")) {
- cmsTemplate.setType(2);
- } else if (name.endsWith(".article.html")) {
- cmsTemplate.setType(3);
- } else {
- cmsTemplate.setType(1);
- }
- cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : templateFile.getName());
- cmsTemplate.setPath(templateFile.getName());
-
- this.baseMapper.insert(cmsTemplate);
+ insertTemplate(templateFile, companyId, companyCode);
}
-
}
if (".html".equals(suffix)) {
FileUtil.touch(file);
- Document parse = Jsoup.parse(file, null);
- String attr = parse.head().attr("name");
- CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
- cmsTemplate.setCompanyId(companyId);
- if (file.getName().endsWith(".list.html")) {
- cmsTemplate.setType(2);
- } else if (file.getName().endsWith(".article.html")) {
- cmsTemplate.setType(3);
- } else {
- cmsTemplate.setType(1);
- }
- cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : file.getName());
- cmsTemplate.setPath(file.getName());
-
- this.baseMapper.insert(cmsTemplate);
+ insertTemplate(file, companyId, companyCode);
}
} catch (IOException e) {
e.printStackTrace();
+ throw new GlobalException("模板上传失败");
+ }
+ }
+
+ private void insertTemplate(File file, Long companyId, String companyCode) throws IOException {
+ Document parse = Jsoup.parse(file, null);
+ String attr = parse.head().attr("name");
+
+ staticPathParser(parse, "img", "src", companyCode);
+ staticPathParser(parse, "link", "href", companyCode);
+ staticPathParser(parse, "script", "src", companyCode);
+
+ FileOutputStream outputStream = new FileOutputStream(file);
+ outputStream.write(parse.html().getBytes());
+ outputStream.close();
+
+ CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
+ cmsTemplate.setCompanyId(companyId);
+ if (file.getName().endsWith(".list.html")) {
+ cmsTemplate.setType(2);
+ } else if (file.getName().endsWith(".article.html")) {
+ cmsTemplate.setType(3);
+ } else {
+ cmsTemplate.setType(1);
+ }
+ cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : file.getName());
+ cmsTemplate.setPath(file.getName());
+
+ this.baseMapper.insert(cmsTemplate);
+ }
+
+ private void staticPathParser(Document document, String tagName, String attrKey, String companyCode) {
+ Elements elements = document.getElementsByTag(tagName);
+ if (elements.isEmpty()) {
+ return;
+ }
+
+ for (Element element : elements) {
+ String attr = element.attr(attrKey);
+ if (StrUtil.isNotBlank(attr) && !attr.contains("http://") && !attr.contains("https://")) {
+ element.attr(attrKey, cmsProperties.getStaticUrl() + companyCode + "/" + attr);
+ }
}
}
@@ -162,8 +189,10 @@
@Override
public Result viewTemplateInfo(Long id) {
Result result = new Result();
+
+ CompanyEntity companyEntity = companyMapper.selectById(LoginUserUtil.getCompanyId());
CmsTemplateEntity cmsTemplateEntity = this.baseMapper.selectById(id);
- String templatePath = cmsProperties.getTemplatePath();
+ String templatePath = FileUtils.path(cmsProperties.getTemplatePath(), companyEntity.getCode());
String pathName = FileUtils.path(templatePath, cmsTemplateEntity.getPath());
byte[] bytes = new byte[0];
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
index 7510d74..7498eb2 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
@@ -164,14 +164,21 @@
adminSeeColumnInfoVo.setType(columnEntity.getType());
adminSeeColumnInfoVo.setTargetType(columnEntity.getTargetType());
adminSeeColumnInfoVo.setContentType(columnEntity.getContentType());
+
+ CompanyEntity companyEntity = companyMapper.selectById(LoginUserUtil.getCompanyId());
+
if (columnEntity.getType() == 2) {
if (columnEntity.getTargetType() == 1) {
ArticleEntity articleEntity = articleMapper.selectById(Long.parseLong(columnEntity.getTargetUrl()));
adminSeeColumnInfoVo.setTargetName(articleEntity.getTitle());
+ adminSeeColumnInfoVo.setUrl(companyEntity.getWebAddress() + columnEntity.getPath() + "/" + columnEntity.getTargetUrl() + ".html");
} else if (columnEntity.getTargetType() == 2) {
ColumnEntity column = this.baseMapper.selectByCodeAndCompanyId(columnEntity.getTargetUrl(), LoginUserUtil.getCompanyId());
adminSeeColumnInfoVo.setTargetName(column.getColumnName());
+ adminSeeColumnInfoVo.setUrl(companyEntity.getWebAddress() + column.getPath());
}
+ } else {
+ adminSeeColumnInfoVo.setUrl(companyEntity.getWebAddress() + columnEntity.getPath());
}
adminSeeColumnInfoVo.setTargetUrl(columnEntity.getTargetUrl());
return Result.ok(adminSeeColumnInfoVo);
@@ -202,7 +209,13 @@
if(CollUtil.isNotEmpty(columnEntities) && columnEntities.size() > 1){
return Result.fail("栏目编码不能重复");
}
+
+ // 判断是否编辑了栏目编码且此时栏目处于已发布的状态,然后保存之前的编码。因为如果是未发布状态,多次保存的话,容易覆盖真正的最开始的栏目编码
+ if (!columnEntity.getColumnCode().equals(columnCode) && columnEntity.getReleaseState() == 1) {
+ columnEntity.setBeforeColumnCode(columnCode);
+ }
columnEntity.setColumnCode(columnCode);
+
String remark = adminUpdateColumnDto.getRemark();
columnEntity.setRemark(remark);
String pic = adminUpdateColumnDto.getPic();
@@ -212,6 +225,11 @@
columnEntity.setOrderNum(orderNum);
}
Long parentId = adminUpdateColumnDto.getParentId();
+ // 同栏目编码
+ if (!columnEntity.getParentId().equals(parentId) && columnEntity.getReleaseState() == 1) {
+ columnEntity.setBeforeParentId(columnEntity.getParentId());
+ }
+
if(ObjectUtil.isEmpty(parentId)){
columnEntity.setParentId(ColumnEntity.PARENTID_DEFAULT);
columnEntity.setPath("/" + columnEntity.getColumnCode());
@@ -228,6 +246,7 @@
columnEntity.setTargetUrl(adminUpdateColumnDto.getTargetUrl());
columnEntity.setIsNav(adminUpdateColumnDto.getIsNav());
columnEntity.setContentType(adminUpdateColumnDto.getContentType());
+ columnEntity.setReleaseState(2);
this.baseMapper.updateById(columnEntity);
return Result.ok("更新成功");
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
index d156360..2c01d97 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java
@@ -4,8 +4,11 @@
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
import com.xcong.farmer.cms.modules.system.entity.ColumnEntity;
+import com.xcong.farmer.cms.modules.system.entity.WebSettingEntity;
import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper;
+import com.xcong.farmer.cms.modules.system.mapper.CompanyMapper;
+import com.xcong.farmer.cms.modules.system.mapper.WebSetMapper;
import com.xcong.farmer.cms.modules.system.service.IReleaseService;
import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
import lombok.extern.slf4j.Slf4j;
@@ -13,6 +16,7 @@
import org.springframework.stereotype.Service;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
@@ -22,6 +26,7 @@
/**
* @author wzy
+ * @TODO 发布时,index存在重复发布的情况,可优化。用线程notify唤醒。
* @date 2022-07-05
**/
@Slf4j
@@ -37,34 +42,125 @@
@Autowired
private ICmsCoreService cmsCoreService;
- private final Executor executor = new ThreadPoolExecutor(5, 10, 600, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
+ @Autowired
+ private WebSetMapper webSetMapper;
+
+ private final Executor executor = new ThreadPoolExecutor(5, 20, 600, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
@Override
- public void releaseArticle(Long id) {
- Long companyId = LoginUserUtil.getCompanyId();
+ public void releaseArticle(Long id, Long companyId) {
ArticleEntity article = articleMapper.selectById(id);
ColumnEntity column = columnMapper.selectById(article.getColumnId());
- Map<String, Object> data = new HashMap<>();
+ Long beforeColumnId = article.getBeforeColumnId();
+ article.setBeforeColumnId(-1L);
+ articleMapper.updateById(article);
+
+ Map<String, Object> data = new Hashtable<>();
data.put("id", article.getId());
data.put("companyId", companyId);
- executor.execute(()->{
+ executor.execute(() -> {
log.info("执行文章发布");
cmsCoreService.articleProcess(data, column.getArticleTemplate(), column.getPath());
- this.releaseColumn(column.getId(), 1);
+ this.releaseColumn(column.getId(), 1, companyId);
if (column.getParentId() != 0L) {
- releaseColumn(column.getParentId(), 1);
+ releaseColumn(column.getParentId(), 1, companyId);
}
- this.releaseIndex();
+
+ if (beforeColumnId != null && !article.getColumnId().equals(beforeColumnId)) {
+ ColumnEntity beforeColumn = columnMapper.selectById(beforeColumnId);
+ this.releaseColumn(beforeColumnId, 1, companyId);
+ if (beforeColumn.getParentId() != 0L) {
+ this.releaseColumn(beforeColumn.getParentId(), 1, companyId);
+ }
+ }
+
+ this.releaseIndex(companyId, false);
});
}
@Override
- public void releaseColumn(Long id, int type) {
- Long companyId = LoginUserUtil.getCompanyId();
+ public void releaseColumn(Long id, int type, Long companyId) {
ColumnEntity columnEntity = columnMapper.selectById(id);
- Map<String, Object> map = new HashMap<>();
+ Map<String, Object> map = buildColumnData(columnEntity);
+
+ executor.execute(() -> {
+ List<ArticleEntity> articles = articleMapper.selectArticleByColumnId(columnEntity.getId(), companyId, type);
+ if (CollUtil.isNotEmpty(articles)) {
+ for (ArticleEntity article : articles) {
+ if (article.getReleaseStatus() == 0) {
+ article.setReleaseStatus(1);
+ articleMapper.updateById(article);
+ }
+
+ if (article.getType() == 1) {
+ map.put("id", article.getId());
+ cmsCoreService.articleProcess(map, columnEntity.getArticleTemplate(), columnEntity.getPath());
+ }
+ }
+ }
+
+ map.put("id", columnEntity.getId());
+ cmsCoreService.columnProcess(map, columnEntity.getListTemplate());
+ if (columnEntity.getParentId() != 0L) {
+ ColumnEntity parentColumn = columnMapper.selectById(columnEntity.getParentId());
+ Map<String, Object> parentMap = buildColumnData(parentColumn);
+ parentMap.put("id", parentColumn.getId());
+ cmsCoreService.columnProcess(parentMap, parentColumn.getListTemplate());
+ }
+
+ releaseIndex(companyId, false);
+ });
+
+ if (type != 1) {
+ executor.execute(() -> {
+ if (columnEntity.getParentId() == 0L) {
+ List<ColumnEntity> columns = columnMapper.selectColumnByParentId(columnEntity.getId(), companyId, 2);
+ if (CollUtil.isNotEmpty(columns)) {
+ for (ColumnEntity column : columns) {
+ List<ArticleEntity> articles = articleMapper.selectArticleByColumnId(column.getId(), companyId, type);
+ if (CollUtil.isNotEmpty(articles)) {
+ for (ArticleEntity article : articles) {
+ if (article.getReleaseStatus() == 0) {
+ article.setReleaseStatus(1);
+ articleMapper.updateById(article);
+ }
+
+ if (article.getType() == 1) {
+ map.put("id", article.getId());
+ cmsCoreService.articleProcess(map, column.getArticleTemplate(), column.getPath());
+ }
+ }
+ }
+
+ Map<String, Object> data = buildColumnData(column);
+ cmsCoreService.columnProcess(data, column.getListTemplate());
+ }
+ }
+ }
+
+ releaseIndex(companyId, false);
+ });
+
+ }
+ }
+
+ @Override
+ public void releaseColumns(int type, Long companyId) {
+ List<ColumnEntity> columns = columnMapper.selectColumnByParentId(0L, companyId, 2);
+
+ if (CollUtil.isEmpty(columns)) {
+ return;
+ }
+
+ for (ColumnEntity column : columns) {
+ releaseColumn(column.getId(), type, companyId);
+ }
+ }
+
+ private Map<String, Object> buildColumnData(ColumnEntity columnEntity) {
+ Map<String, Object> map = new Hashtable<>();
map.put("id", columnEntity.getId());
map.put("code", columnEntity.getColumnCode());
if (columnEntity.getParentId() == 0L) {
@@ -73,43 +169,34 @@
ColumnEntity parent = columnMapper.selectById(columnEntity.getParentId());
map.put("parentCode", parent.getColumnCode());
}
+ map.put("columnTitle", columnEntity.getColumnName());
map.put("templatePath", columnEntity.getPath());
+ map.put("companyId", columnEntity.getCompanyId());
+ return map;
+ }
+
+ @Override
+ public void releaseIndex(Long companyId, boolean hasSearch) {
+ Map<String, Object> map = new HashMap<>();
map.put("companyId", companyId);
- if (type != 1) {
+ WebSettingEntity webSetting = webSetMapper.selectByCompanyId(companyId);
+
+ cmsCoreService.indexProcess(map, webSetting.getIndexTemplate());
+ if (hasSearch) {
executor.execute(() -> {
- if (columnEntity.getParentId() == 0L) {
- List<ColumnEntity> columns = columnMapper.selectColumnByParentId(columnEntity.getParentId(), companyId);
- if (CollUtil.isNotEmpty(columns)) {
- for (ColumnEntity column : columns) {
- map.put("id", column.getId());
- cmsCoreService.columnProcess(map, column.getListTemplate());
-
- List<Long> ids = articleMapper.selectArticleIdsByColumnId(column.getId(), companyId,type);
- cmsCoreService.articlesProcess(map, ids, column.getArticleTemplate(), column.getPath());
- }
- }
- }
-
- List<Long> ids = articleMapper.selectArticleIdsByColumnId(columnEntity.getId(), companyId, type);
- cmsCoreService.articlesProcess(map, ids, columnEntity.getArticleTemplate(), columnEntity.getPath());
-
- releaseIndex();
- });
-
- executor.execute(() -> {
- cmsCoreService.columnProcess(map, columnEntity.getListTemplate());
- releaseIndex();
+ cmsCoreService.process(map, "search", webSetting.getSearchTemplate());
+ cmsCoreService.process(map, "message", webSetting.getMsgTemplate());
});
}
}
@Override
- public void releaseIndex() {
+ public void releaseAll(Long companyId) {
Map<String, Object> map = new HashMap<>();
- Long companyId = LoginUserUtil.getCompanyId();
map.put("companyId", companyId);
- cmsCoreService.indexProcess(map, null);
+ releaseColumns(4, companyId);
+ releaseIndex(companyId, true);
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSetServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSetServiceImpl.java
deleted file mode 100644
index ed8d8bc..0000000
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSetServiceImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.xcong.farmer.cms.modules.system.service.Impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xcong.farmer.cms.common.response.Result;
-import com.xcong.farmer.cms.modules.system.dto.AdminUpdateWebSetDto;
-import com.xcong.farmer.cms.modules.system.entity.UserEntity;
-import com.xcong.farmer.cms.modules.system.entity.WebSetEntity;
-import com.xcong.farmer.cms.modules.system.mapper.WebSetMapper;
-import com.xcong.farmer.cms.modules.system.service.IWebSetService;
-import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
-import com.xcong.farmer.cms.modules.system.vo.AdminSeeWebSetInfoVo;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.core.collection.CollUtil;
-
-@Service
-@Slf4j
-public class WebSetServiceImpl extends ServiceImpl<WebSetMapper, WebSetEntity> implements IWebSetService {
- @Override
- public Result seeWebSetInfo() {
- UserEntity userlogin = LoginUserUtil.getLoginUser();
- long companyId = userlogin.getCompanyId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getCompanyId();
- AdminSeeWebSetInfoVo adminSeeWebSetInfoVo = new AdminSeeWebSetInfoVo();
- QueryWrapper<WebSetEntity> objectQueryWrapper = new QueryWrapper<>();
- objectQueryWrapper.eq("company_id",companyId);
- List<WebSetEntity> webSetEntities = this.baseMapper.selectList(objectQueryWrapper);
- if(CollUtil.isNotEmpty(webSetEntities)){
- WebSetEntity webSetEntity = webSetEntities.get(0);
- adminSeeWebSetInfoVo.setId(webSetEntity.getId());
- adminSeeWebSetInfoVo.setWebTitle(webSetEntity.getWebTitle());
- adminSeeWebSetInfoVo.setWebKeyword(webSetEntity.getWebKeyword());
- adminSeeWebSetInfoVo.setWebRemark(webSetEntity.getWebRemark());
- adminSeeWebSetInfoVo.setWebPic(webSetEntity.getWebPic());
- }
- return Result.ok(adminSeeWebSetInfoVo);
- }
-
- @Override
- public Result updateWebSet(AdminUpdateWebSetDto adminUpdateWebSetDto) {
- UserEntity userlogin = LoginUserUtil.getLoginUser();
- long companyId = userlogin.getCompanyId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getCompanyId();
- String webTitle = adminUpdateWebSetDto.getWebTitle();
- String webKeyword = adminUpdateWebSetDto.getWebKeyword();
- Long id = adminUpdateWebSetDto.getId() == null ? 0L : adminUpdateWebSetDto.getId();
- QueryWrapper<WebSetEntity> objectQueryWrapper = new QueryWrapper<>();
- objectQueryWrapper.eq("company_id",companyId);
- WebSetEntity webSetEntity = this.baseMapper.selectOne(objectQueryWrapper);
- if(ObjectUtil.isEmpty(webSetEntity)){
- WebSetEntity webSetEntityAdd = new WebSetEntity();
- webSetEntityAdd.setWebTitle(webTitle);
- webSetEntityAdd.setWebKeyword(webKeyword);
- String webRemark = adminUpdateWebSetDto.getWebRemark();
- if(StrUtil.isNotEmpty(webRemark)){
- webSetEntityAdd.setWebRemark(webRemark);
- }
- String webPic = adminUpdateWebSetDto.getWebPic();
- if(StrUtil.isNotEmpty(webPic)){
- webSetEntityAdd.setWebPic(webPic);
- }
- webSetEntityAdd.setCompanyId(companyId);
- this.baseMapper.insert(webSetEntityAdd);
- return Result.ok("保存成功");
- }
- webSetEntity.setWebTitle(webTitle);
- webSetEntity.setWebKeyword(webKeyword);
- String webRemark = adminUpdateWebSetDto.getWebRemark();
- webSetEntity.setWebRemark(webRemark);
- String webPic = adminUpdateWebSetDto.getWebPic();
- webSetEntity.setWebPic(webPic);
- this.baseMapper.updateById(webSetEntity);
- return Result.ok("保存成功");
- }
-}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSettingServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSettingServiceImpl.java
new file mode 100644
index 0000000..644e05d
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/WebSettingServiceImpl.java
@@ -0,0 +1,50 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.conversion.WebSettingConversion;
+import com.xcong.farmer.cms.modules.system.dto.SetWebSettingDto;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+import com.xcong.farmer.cms.modules.system.entity.WebSettingEntity;
+import com.xcong.farmer.cms.modules.system.mapper.WebSetMapper;
+import com.xcong.farmer.cms.modules.system.service.IWebSettingService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
+import com.xcong.farmer.cms.modules.system.vo.AdminSeeWebSetInfoVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class WebSettingServiceImpl extends ServiceImpl<WebSetMapper, WebSettingEntity> implements IWebSettingService {
+ @Override
+ public Result getWebSetting() {
+ Long companyId = LoginUserUtil.getCompanyId();
+ WebSettingEntity webSetting = this.baseMapper.selectByCompanyId(companyId);
+ if (webSetting == null) {
+ webSetting = new WebSettingEntity();
+ }
+
+ AdminSeeWebSetInfoVo adminSeeWebSetInfoVo = WebSettingConversion.INSTANCE.entityToVo(webSetting);
+ return Result.ok(adminSeeWebSetInfoVo);
+ }
+
+ @Override
+ public Result setWebSetting(SetWebSettingDto setWebSettingDto) {
+ Long companyId = LoginUserUtil.getCompanyId();
+
+ WebSettingEntity webSetting = WebSettingConversion.INSTANCE.dtoToEntity(setWebSettingDto);
+ webSetting.setCompanyId(companyId);
+ if (setWebSettingDto.getId() == null) {
+ WebSettingEntity hasExist = this.baseMapper.selectByCompanyId(companyId);
+ if (hasExist != null) {
+ webSetting.setId(hasExist.getId());
+ this.baseMapper.updateById(webSetting);
+ } else {
+ this.baseMapper.insert(webSetting);
+ }
+ } else {
+ this.baseMapper.updateById(webSetting);
+ }
+ return Result.ok("保存成功");
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
index c75d84a..ec74019 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java
@@ -52,4 +52,7 @@
@ApiModelProperty(value = "内容类型 1:文章 2:图片 3:文件 4:音频")
private Integer contentType;
+ @ApiModelProperty(value = "栏目地址")
+ private String url;
+
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeWebSetInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeWebSetInfoVo.java
index 3073ff3..ce9ccfb 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeWebSetInfoVo.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeWebSetInfoVo.java
@@ -1,5 +1,6 @@
package com.xcong.farmer.cms.modules.system.vo;
+import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -12,14 +13,32 @@
private Long id;
@ApiModelProperty(value = "网页标题")
- private String webTitle;
+ private String title;
- @ApiModelProperty(value = "网页关键字")
- private String webKeyword;
+ @ApiModelProperty(value = "seo关键字")
+ private String seoKeyword;
- @ApiModelProperty(value = "网页描述")
- private String webRemark;
+ @ApiModelProperty(value = "seo描述")
+ private String seoRemark;
+
+ @ApiModelProperty(value = "seo描述")
+ private String seoDescription;
@ApiModelProperty(value = "网页LOGO")
- private String webPic;
+ private String logoUrl;
+
+ @ApiModelProperty(value = "首页模板")
+ private String indexTemplate;
+
+ @ApiModelProperty(value = "搜索模板")
+ private String searchTemplate;
+
+ @ApiModelProperty(value = "在线留言模板")
+ private String msgTemplate;
+
+ @ApiModelProperty(value = "公司编码")
+ private String companyCode;
+
+ @ApiModelProperty(value = "公司URL")
+ private String companyUrl;
}
diff --git a/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java b/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java
new file mode 100644
index 0000000..744de71
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java
@@ -0,0 +1,27 @@
+package com.xcong.farmer.cms.utils;
+
+import groovy.lang.Binding;
+import groovy.lang.GroovyShell;
+
+/**
+ * @author wzy
+ * @date 2022-07-08
+ **/
+public class GroovySingleton {
+ private volatile static GroovyShell groovyShell;
+
+ private GroovySingleton (){}
+
+ public static GroovyShell getSingleton() {
+ if (groovyShell == null) {
+ synchronized (GroovySingleton.class) {
+ if (groovyShell == null) {
+ Binding binding = new Binding();
+ groovyShell = new GroovyShell(binding);
+ }
+ }
+ }
+ return groovyShell;
+ }
+
+}
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index a444118..3c2ef33 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -93,7 +93,7 @@
path: /home/javaweb/webresource/uploadeFile/image/
cms:
- base-url: http://120.27.238.55:8000/cms/output
+ api-url: http://120.27.238.55:8878
static-url: http://120.27.238.55:8000/cms/static/
template-path: /home/javaweb/webresource/cms/template
static-path: /home/javaweb/webresource/cms/static
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index fb5980a..6adb6f3 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -78,6 +78,8 @@
max-request-size: 100MB
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
+# configuration:
+# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
app:
@@ -97,9 +99,9 @@
path: /image/
cms:
- base-url: http://localhost
- static-url: http://localhost/
- template-path: /Users/helius/Desktop/template
- static-path: /Users/helius/Desktop/static
- output-path: /Users/helius/Desktop/web/output
+ api-url: http://120.27.238.55:8878
+ static-url: http://120.27.238.55:8000/cms/static/
+ template-path: /Users/helius/Desktop/template-online/template
+ static-path: /Users/helius/Desktop/template-online/static
+ output-path: /Users/helius/Desktop/template-online/output
diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml
index 32631ff..02ee778 100644
--- a/src/main/resources/mapper/ArticleMapper.xml
+++ b/src/main/resources/mapper/ArticleMapper.xml
@@ -48,14 +48,17 @@
<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}
+ where (a.column_id=b.id or a.column_id=b.parent_id) and a.column_id=#{columnId} and release_status=1
+ and del_status = 1
<!--上一篇-->
<if test="type == 1">
- order by a.id
+ and #{id} > a.id
+ order by a.id desc
</if>
<!--下一篇-->
<if test="type == 2">
- order by a.id desc
+ and a.id > #{id}
+ order by a.id
</if>
limit 1
</select>
@@ -76,7 +79,7 @@
inner join t_column b on a.column_id=b.id
inner join t_column c on b.parent_id=c.id or c.id=b.id
<where>
- a.company_id=#{record.companyId} and a.del_status = 1
+ a.company_id=#{record.companyId} and a.del_status = 1 and release_status = 1
<if test="record.columnCode != null and record.columnCode != ''">
and c.column_code=#{record.columnCode}
</if>
@@ -86,7 +89,11 @@
${item}
</foreach>
</if>
+ <if test="record.isTop != null and record.isTop != ''">
+ and a.is_top=#{record.isTop}
+ </if>
</where>
+ order by release_time desc
</select>
<select id="selectWebArticleInPage" resultType="com.xcong.farmer.cms.modules.system.vo.WebArticleVo">
@@ -122,8 +129,21 @@
</select>
<select id="selectArticleIdsByColumnId" resultType="java.lang.Long">
+ select a.id from t_article a
+ where a.column_id=#{columnId} and a.company_id=#{companyId} and a.del_status = 1
+ <if test="type != 4">
+ <if test="type == 2">
+ and release_status=1
+ </if>
+ <if test="type == 3">
+ and release_status=0
+ </if>
+ </if>
+ </select>
+
+ <select id="selectArticleByColumnId" resultType="com.xcong.farmer.cms.modules.system.entity.ArticleEntity">
select * from t_article a
- where a.column_id=#{columnId} and a.company_id=#{companyId}
+ where a.column_id=#{columnId} and a.company_id=#{companyId} and a.del_status = 1
<if test="type != 4">
<if test="type == 2">
and release_status=1
diff --git a/src/main/resources/mapper/ColumnMapper.xml b/src/main/resources/mapper/ColumnMapper.xml
index 9301d93..e4022c0 100644
--- a/src/main/resources/mapper/ColumnMapper.xml
+++ b/src/main/resources/mapper/ColumnMapper.xml
@@ -37,6 +37,9 @@
<select id="selectColumnByParentId" resultType="com.xcong.farmer.cms.modules.system.entity.ColumnEntity">
select * from t_column
where parent_id=#{parentId} and company_id=#{companyId}
+ <if test="isNav == 1">
+ and is_nav=1
+ </if>
</select>
<select id="selectColumnInPage" resultType="com.xcong.farmer.cms.modules.system.entity.ColumnEntity">
diff --git a/src/main/resources/mapper/WebSetMapper.xml b/src/main/resources/mapper/WebSetMapper.xml
new file mode 100644
index 0000000..c802dc4
--- /dev/null
+++ b/src/main/resources/mapper/WebSetMapper.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.WebSetMapper">
+
+ <select id="selectByCompanyId" resultType="com.xcong.farmer.cms.modules.system.entity.WebSettingEntity">
+ select
+ a.*,
+ b.web_address companyUrl,
+ b.code companyCode
+ from t_web_setting a, t_company b
+ where a.company_id=#{companyId} and a.company_id=b.id
+ </select>
+
+ <select id="selectSiteGlobalSetting" resultType="java.util.Map">
+ select
+ a.title title,
+ a.seo_title seoTitle,
+ a.seo_keyword seoKeyword,
+ a.seo_description seoDescription,
+ a.logo_url logo,
+ b.web_address baseUrl,
+ b.code companyCode
+ from t_web_setting a, t_company b
+ where a.company_id=#{companyId} and a.company_id=b.id
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/farmer/cms/ArticleTest.java b/src/test/java/com/xcong/farmer/cms/ArticleTest.java
new file mode 100644
index 0000000..12778d0
--- /dev/null
+++ b/src/test/java/com/xcong/farmer/cms/ArticleTest.java
@@ -0,0 +1,28 @@
+package com.xcong.farmer.cms;
+
+import com.xcong.farmer.cms.modules.system.entity.ArticleEntity;
+import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * @author wzy
+ * @date 2022-07-11
+ **/
+@SpringBootTest
+public class ArticleTest {
+
+ @Autowired
+ private ArticleMapper articleMapper;
+
+ @Test
+ public void articleColumnIdUpdateTest() {
+ Long columnId = 83L;
+ ArticleEntity article = articleMapper.selectById(88L);
+
+ article.setBeforeColumnId(-1L);
+ articleMapper.updateById(article);
+ }
+
+}
diff --git a/src/test/java/com/xcong/farmer/cms/KssframeworkApplicationTests.java b/src/test/java/com/xcong/farmer/cms/KssframeworkApplicationTests.java
index a571fb4..888ee4a 100644
--- a/src/test/java/com/xcong/farmer/cms/KssframeworkApplicationTests.java
+++ b/src/test/java/com/xcong/farmer/cms/KssframeworkApplicationTests.java
@@ -108,7 +108,7 @@
public void viewTemplateInfo() {
Long id = 4L;
CmsTemplateEntity cmsTemplateEntity = cmsTemplateMapper.selectById(id);
- String htmlUrl = cmsProperties.getBaseUrl() + cmsProperties.getTemplatePath();
+ String htmlUrl = "" + cmsProperties.getTemplatePath();
File uploadDir = new File(htmlUrl);
if (!uploadDir.isDirectory()) {
uploadDir.mkdir();
diff --git a/src/test/java/com/xcong/farmer/cms/TemplateTest.java b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
new file mode 100644
index 0000000..f072ef2
--- /dev/null
+++ b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
@@ -0,0 +1,52 @@
+package com.xcong.farmer.cms;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * @author wzy
+ * @date 2022-07-09
+ **/
+@SpringBootTest
+public class TemplateTest {
+
+ String baseUrl = "http://120.27.238.55:8000/cms/static/";
+
+ @Test
+ public void staticFileTest() throws IOException {
+ File file = new File("/Users/helius/Desktop/template-online/index-test.html");
+ Document parse = Jsoup.parse(file, "utf-8");
+
+ staticPathParser(parse, "img", "src");
+ staticPathParser(parse, "href", "link");
+ staticPathParser(parse, "script", "src");
+
+ FileOutputStream outputStream = new FileOutputStream(file);
+ outputStream.write(parse.html().getBytes());
+ outputStream.close();
+ }
+
+ public void staticPathParser(Document document, String tagName, String attrKey) {
+ Elements elements = document.getElementsByTag(tagName);
+ if (elements.isEmpty()) {
+ return;
+ }
+
+ for (Element element : elements) {
+ String attr = element.attr(attrKey);
+ if (StrUtil.isNotBlank(attr) && !attr.contains("http://") && !attr.contains("https://")) {
+ element.attr(attrKey, baseUrl + attr);
+ }
+ }
+ }
+}
--
Gitblit v1.9.1