From f5116aa98e881ea98381f62b737d52bc4d115c09 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 07 Jul 2022 19:36:33 +0800
Subject: [PATCH] fix 修改栏目及文章发布
---
src/main/java/com/xcong/farmer/cms/modules/core/service/impl/CmsCoreServiceImpl.java | 36 +++++++++--
src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminColumnController.java | 8 ++
src/main/resources/mapper/ArticleMapper.xml | 13 ++++
src/main/java/com/xcong/farmer/cms/modules/core/controller/CmsCoreController.java | 6 -
src/main/java/com/xcong/farmer/cms/modules/system/service/IReleaseService.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java | 2
src/main/resources/mapper/ColumnMapper.xml | 9 +++
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ReleaseServiceImpl.java | 51 ++++++++++++++--
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ArticleMapper.java | 2
src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java | 20 ++++++
src/main/java/com/xcong/farmer/cms/modules/system/dto/ReleaseColumnDto.java | 6 +
src/main/java/com/xcong/farmer/cms/modules/system/mapper/ColumnMapper.java | 2
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java | 6 +
13 files changed, 135 insertions(+), 28 deletions(-)
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 8c5ae0f..0212677 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
@@ -34,11 +34,7 @@
@ApiOperation(value = "发布栏目", notes = "发布栏目")
@PostMapping(value = "releaseColumn/{type}/{id}")
public Result releaseColumn(@PathVariable("id") Long id, @PathVariable("type") Integer type) {
- boolean article = false;
- if (type == 1) {
- article = true;
- }
- releaseService.releaseColumn(id, article);
+ releaseService.releaseColumn(id, type);
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 9f37a90..08b0e1e 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/core/service/ICmsCoreService.java
@@ -1,5 +1,6 @@
package com.xcong.farmer.cms.modules.core.service;
+import java.util.List;
import java.util.Map;
public interface ICmsCoreService {
@@ -7,7 +8,6 @@
/**
* 文章编译
*
- * @param id
* @param templateName
*/
void articleProcess(Map<String, Object> data, String templateName, String templatePath);
@@ -16,10 +16,26 @@
* 栏目编译
* @param map 栏目页面参数(如: 栏目ID/CODE)
* @param templateName 模板名称
- * @param columnOnly 是否只编译当前栏目列表页(如果false,则会编译栏目下所有子栏目或者所有文章)
*/
void columnProcess(Map<String, Object> map, String templateName);
+ /**
+ * 批量发布文章
+ *
+ * @param data
+ * @param templateName
+ * @param templatePath
+ */
+ void articlesProcess(Map<String, Object> data, List<Long> ids, String templateName, String templatePath);
+
+ /**
+ * 批量发布栏目
+ *
+ * @param map
+ * @param templateName
+ */
+ void columnsProcess(Map<String, Object> map, List<Long> ids, String templateName);
+
void indexProcess(Map<String, Object> map, 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 433f90a..409bf70 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
@@ -1,5 +1,6 @@
package com.xcong.farmer.cms.modules.core.service.impl;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.xcong.farmer.cms.core.template.TemplateConfiguration;
import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
@@ -9,6 +10,7 @@
import javax.validation.constraints.NotNull;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
@@ -25,7 +27,6 @@
@Autowired
private TemplateConfiguration cfg;
- private final Executor executor = new ThreadPoolExecutor(5, 10, 600, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
@Override
@@ -37,8 +38,31 @@
templateName = "defualt.artile.html";
}
- String finalTemplateName = templateName;
- executor.execute(() -> cfg.process(data, finalTemplateName));
+ cfg.process(data, templateName);
+ }
+
+ @Override
+ public void articlesProcess(Map<String, Object> data, List<Long> ids, String templateName, String templatePath) {
+ if (CollUtil.isEmpty(ids)) {
+ return;
+ }
+
+ for (Long id : ids) {
+ data.put("id", id);
+ articleProcess(data, templateName, templatePath);
+ }
+ }
+
+ @Override
+ public void columnsProcess(Map<String, Object> data, List<Long> ids, String templateName) {
+ if (CollUtil.isEmpty(ids)) {
+ return;
+ }
+
+ for (Long id : ids) {
+ data.put("id", id);
+ columnProcess(data, templateName);
+ }
}
@Override
@@ -49,8 +73,7 @@
templateName = "defualt.list.html";
}
- String finalTemplateName = templateName;
- executor.execute(() -> cfg.process(data, finalTemplateName));
+ cfg.process(data, templateName);
}
@Override
@@ -59,7 +82,6 @@
templateName = "index.html";
}
- String finalTemplateName = templateName;
- executor.execute(() -> cfg.process(data, finalTemplateName));
+ cfg.process(data, templateName);
}
}
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 fec1746..2ae35b5 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
@@ -3,6 +3,7 @@
import com.xcong.farmer.cms.common.response.Result;
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.vo.AdminColumnVo;
import com.xcong.farmer.cms.modules.system.vo.AdminSeeColumnInfoVo;
import com.xcong.farmer.cms.modules.system.vo.WebColumnVo;
@@ -12,6 +13,7 @@
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -26,6 +28,9 @@
@Resource
private IColumnService iColumnService;
+
+ @Autowired
+ private IReleaseService releaseService;
@ApiOperation(value = "栏目分页列表", notes = "栏目分页列表")
@ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminColumnVo.class)})
@@ -70,7 +75,8 @@
@ApiOperation(value = "发布栏目", notes = "发布栏目")
@PostMapping(value = "/release")
- public Result release(@RequestBody ReleaseColumnDto releaseColumnDto) {
+ public Result release(@RequestBody @Valid ReleaseColumnDto releaseColumnDto) {
+ releaseService.releaseColumn(releaseColumnDto.getId(), releaseColumnDto.getType());
return Result.ok("发布成功");
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/ReleaseColumnDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/ReleaseColumnDto.java
index ba1464a..89c9c99 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/ReleaseColumnDto.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/ReleaseColumnDto.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import javax.validation.constraints.NotNull;
+
/**
* @author wzy
* @date 2022-07-07
@@ -12,9 +14,11 @@
@ApiModel(value = "ReleaseColumnDto", description = "发布栏目接收参数类")
public class ReleaseColumnDto {
+ @NotNull(message = "参数不为空")
@ApiModelProperty(value = "栏目ID", example = "1")
private Long id;
- @ApiModelProperty(value = "是否编译子栏目和栏目下所有文章 1-是 ,2-否", example = "1")
+ @NotNull(message = "参数不为空")
+ @ApiModelProperty(value = "1-仅发布该栏目 2-发布栏目下已发布文章 3-发布栏目下未发布文章 4-发布栏目下所有", example = "1")
private Integer type;
}
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 10da8d6..9a4fdd6 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
@@ -25,4 +25,6 @@
IPage<ArticleEntity> selectArticleInPage(Page<ArticleEntity> page, @Param("record") ArticleEntity article);
IPage<WebArticleVo> selectWebArticleInPage(Page<WebArticleVo> page, ArticleEntity articleEntity);
+
+ List<Long> selectArticleIdsByColumnId(@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 119dd3b..7c2327d 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
@@ -23,4 +23,6 @@
IPage<ColumnEntity> selectColumnInPage(Page<ColumnEntity> page, @Param("record") ColumnEntity column);
List<WebColumnVo> selectWebColumnInListByParentId(@Param("parentId") Long parentidDefault, @Param("companyId") Long companyId);
+
+ List<Long> selectColumnIdsByParentId(@Param("parentId") Long parentId, @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 786eccb..6d3f296 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
@@ -5,7 +5,7 @@
void releaseArticle(Long id);
- void releaseColumn(Long id, boolean article);
+ void releaseColumn(Long id, int type);
void releaseIndex();
}
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 7bd87b9..8435fda 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
@@ -14,6 +14,7 @@
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.service.IArticleService;
+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.AdminArticleVo;
import com.xcong.farmer.cms.modules.system.vo.AdminSeeArticleInfoVo;
@@ -44,8 +45,7 @@
private CompanyMapper companyMapper;
@Autowired
- private ICmsCoreService cmsCoreService;
-
+ private IReleaseService releaseService;
@Override
public Result getArticleInPage(AdminArticleDto adminArticleDto) {
@@ -301,6 +301,8 @@
articleEntity.setReleaseStatus(ArticleEntity.RELEASE_STATUS_YES);
articleEntity.setReleaseTime(new Date());
this.baseMapper.updateById(articleEntity);
+
+ releaseService.releaseArticle(articleEntity.getId());
return Result.ok("操作成功");
}
}
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 18d34a9..d114308 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
@@ -123,7 +123,7 @@
columnEntity.setIsNav(adminAddColumnDto.getIsNav());
columnEntity.setContentType(adminAddColumnDto.getContentType());
this.baseMapper.insert(columnEntity);
- return Result.ok("添加成功");
+ return Result.ok("添加成功", columnEntity.getId());
}
@Override
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 0b1587b..ae44d80 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
@@ -1,5 +1,6 @@
package com.xcong.farmer.cms.modules.system.service.Impl;
+import cn.hutool.core.collection.CollUtil;
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;
@@ -12,7 +13,12 @@
import org.springframework.stereotype.Service;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
/**
* @author wzy
@@ -31,6 +37,8 @@
@Autowired
private ICmsCoreService cmsCoreService;
+ private final Executor executor = new ThreadPoolExecutor(5, 10, 600, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
+
@Override
public void releaseArticle(Long id) {
Long companyId = LoginUserUtil.getCompanyId();
@@ -41,16 +49,18 @@
data.put("id", article.getId());
data.put("companyId", companyId);
- cmsCoreService.articleProcess(data, column.getArticleTemplate(), column.getPath());
- this.releaseColumn(column.getId(), false);
- if (column.getParentId() != 0L) {
- releaseColumn(column.getParentId(), false);
- }
- this.releaseIndex();
+ executor.execute(()->{
+ cmsCoreService.articleProcess(data, column.getArticleTemplate(), column.getPath());
+ this.releaseColumn(column.getId(), 1);
+ if (column.getParentId() != 0L) {
+ releaseColumn(column.getParentId(), 1);
+ }
+ this.releaseIndex();
+ });
}
@Override
- public void releaseColumn(Long id, boolean article) {
+ public void releaseColumn(Long id, int type) {
Long companyId = LoginUserUtil.getCompanyId();
ColumnEntity columnEntity = columnMapper.selectById(id);
Map<String, Object> map = new HashMap<>();
@@ -65,7 +75,32 @@
map.put("templatePath", columnEntity.getPath());
map.put("companyId", companyId);
- cmsCoreService.columnProcess(map, columnEntity.getListTemplate());
+ if (type != 1) {
+ 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();
+ });
+ }
}
@Override
diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml
index 6564050..1f2c4e7 100644
--- a/src/main/resources/mapper/ArticleMapper.xml
+++ b/src/main/resources/mapper/ArticleMapper.xml
@@ -113,4 +113,17 @@
</where>
order by a.is_top desc,a.create_time desc
</select>
+
+ <select id="selectArticleIdsByColumnId" resultType="java.lang.Long">
+ select * from t_article a
+ where a.column_id=#{columnId} and a.company_id=#{companyId}
+ <if test="type != 4">
+ <if test="type == 2">
+ and release_status=1
+ </if>
+ <if test="type == 3">
+ and release_status=0
+ </if>
+ </if>
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/ColumnMapper.xml b/src/main/resources/mapper/ColumnMapper.xml
index 90eba2e..9301d93 100644
--- a/src/main/resources/mapper/ColumnMapper.xml
+++ b/src/main/resources/mapper/ColumnMapper.xml
@@ -61,4 +61,13 @@
where a.parent_id = #{parentId} and a.company_id = #{companyId}
order by a.order_num ASC,a.create_time desc
</select>
+
+ <select id="selectColumnIdsByParentId" resultType="java.lang.Long">
+ select
+ a.id
+ FROM
+ t_column a
+ where a.parent_id = #{parentId} and a.company_id = #{companyId}
+ order by a.id desc
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1