From d3c982088fe7fd6f58775e4e2daf702c7e924d18 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 2 Jun 2020 16:25:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=20=E4=BF=AE=E6=94=B9publisherType=E7=B1=BB=E5=9E=8B;?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=86=85=E5=AE=B9=E6=8E=A5=E5=8F=A3=E6=9A=82?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/ArticleDTO.java | 5 +- .../src/main/java/com/epmet/dto/DraftDTO.java | 5 +- .../epmet/dto/form/DraftContentFromDTO.java | 98 ++++++++ .../epmet/controller/ArticleController.java | 14 +- .../controller/DraftContentController.java | 2 +- .../java/com/epmet/entity/ArticleEntity.java | 2 +- .../java/com/epmet/entity/DraftEntity.java | 2 +- .../java/com/epmet/excel/ArticleExcel.java | 2 +- .../main/java/com/epmet/excel/DraftExcel.java | 2 +- .../com/epmet/service/ArticleService.java | 8 + .../service/impl/ArticleServiceImpl.java | 226 +++++++++++++----- 11 files changed, 301 insertions(+), 65 deletions(-) create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleDTO.java index 79cb1bb2bd..4c72866e27 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -81,7 +82,7 @@ public class ArticleDTO implements Serializable { /** * 发布单位类型 机关:agency;部门:department;网格:grid */ - private Integer publisherType; + private String publisherType; /** * 发布时间 diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftDTO.java index 0e4ebd954b..c7a383a56d 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -76,7 +77,7 @@ public class DraftDTO implements Serializable { /** * 发布单位类型 机关:agency;部门:department;网格:grid */ - private Integer publisherType; + private String publisherType; /** * 发布时间 diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java new file mode 100644 index 0000000000..81d39fa698 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java @@ -0,0 +1,98 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + + +/** + * 保存文章内容form + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-06-02 + */ +@Data +public class DraftContentFromDTO implements Serializable { + + + private static final long serialVersionUID = -4206020151361420221L; + /** + * 文章ID 重新编辑时必填 + */ + private String articleId; + + /** + * 客户ID + */ + private String customerId; + + /** + * 草稿ID + */ + private String draftId; + + /** + * 文章标题 + */ + @NotBlank(message = "文章标题不能为空") + private String title; + + /** + * 内容列表 + */ + private List contentList; + + @Data + public static class DraftContentDTO { + public DraftContentDTO() { + } + + /** + * 内容Id + */ + private String draftId; + /** + * 内容 + */ + private String content; + + /** + * 内容类型 图片:img;文字:text + */ + private String contentType; + + /** + * 审核状态 通过:pass;失败:fail; + */ + private String auditStatus; + + /** + * 审核理由 + */ + private String auditReason; + + /** + * 内容顺序 从1开始 + */ + private Integer orderNum; + } +} \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index ed34ef585d..e72213a34d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -25,12 +25,13 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; -import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.ArticleDTO; import com.epmet.dto.form.LatestListFormDTO; import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.dto.result.LatestListResultDTO; +import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.excel.ArticleExcel; import com.epmet.service.ArticleService; import org.springframework.beans.factory.annotation.Autowired; @@ -107,4 +108,15 @@ public class ArticleController { return new Result().ok(articleService.agencyGridList(tokenDTO)); } + /** + * desc:保存或修改文章内容 + * @param fromDTO + * @throws Exception + */ + @GetMapping("savecontent") + public Result savecontent(@RequestBody DraftContentFromDTO fromDTO) throws Exception { + String draftId = articleService.saveOrUpdateContent(fromDTO); + return new Result().ok(draftId); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftContentController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftContentController.java index c05fda4cc7..82243e0e48 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftContentController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftContentController.java @@ -23,8 +23,8 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; -import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.DraftContentDTO; import com.epmet.excel.DraftContentExcel; import com.epmet.service.DraftContentService; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java index 5768366568..eb2b026fb7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleEntity.java @@ -81,7 +81,7 @@ public class ArticleEntity extends BaseEpmetEntity { /** * 发布单位类型 机关:agency;部门:department;网格:grid */ - private Integer publisherType; + private String publisherType; /** * 发布时间 diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftEntity.java index d7fd299501..b3c7fd96b6 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftEntity.java @@ -76,7 +76,7 @@ public class DraftEntity extends BaseEpmetEntity { /** * 发布单位类型 机关:agency;部门:department;网格:grid */ - private Integer publisherType; + private String publisherType; /** * 发布时间 diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/ArticleExcel.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/ArticleExcel.java index d1c47ccefb..a5f28f84a3 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/ArticleExcel.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/ArticleExcel.java @@ -59,7 +59,7 @@ public class ArticleExcel { private String publisherName; @Excel(name = "发布单位类型 机关:agency;部门:department;网格:grid") - private Integer publisherType; + private String publisherType; @Excel(name = "发布时间") private Date publishDate; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/DraftExcel.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/DraftExcel.java index 55cc07b78c..6f913525d7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/DraftExcel.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/excel/DraftExcel.java @@ -56,7 +56,7 @@ public class DraftExcel { private String publisherName; @Excel(name = "发布单位类型 机关:agency;部门:department;网格:grid") - private Integer publisherType; + private String publisherType; @Excel(name = "发布时间") private Date publishDate; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java index 10d6d9adb9..9cae7ed196 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.ArticleDTO; import com.epmet.dto.result.ArticleGridResultDTO; +import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.entity.ArticleEntity; import java.util.List; @@ -102,4 +103,11 @@ public interface ArticleService extends BaseService { * @Description 党建声音-政府端-可选发布范围 **/ ArticleGridResultDTO agencyGridList(TokenDto tokenDTO); + + /** + * desc:保存或修改文章内容 + * @param fromDTO + * @return + */ + String saveOrUpdateContent(DraftContentFromDTO fromDTO); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index f1ea163a90..3b082d2776 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -17,30 +17,43 @@ package com.epmet.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dao.ArticleDao; +import com.epmet.dao.DraftContentDao; +import com.epmet.dao.DraftDao; import com.epmet.dto.ArticleDTO; import com.epmet.dto.feign.GovOrgSelfFeignClient; import com.epmet.dto.result.ArticleGridResultDTO; +import com.epmet.dto.form.DraftContentFromDTO; import com.epmet.entity.ArticleEntity; +import com.epmet.entity.DraftContentEntity; +import com.epmet.entity.DraftEntity; import com.epmet.redis.ArticleRedis; import com.epmet.service.ArticleService; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.util.CollectionUtils; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 文章表 @@ -55,58 +68,68 @@ public class ArticleServiceImpl extends BaseServiceImpl page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, ArticleDTO.class); - } - - @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, ArticleDTO.class); - } - - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; - } - - @Override - public ArticleDTO get(String id) { - ArticleEntity entity = baseDao.selectById(id); - return ConvertUtils.sourceToTarget(entity, ArticleDTO.class); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void save(ArticleDTO dto) { - ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class); - insert(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ArticleDTO dto) { - ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class); - updateById(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(String[] ids) { - // 逻辑删除(@TableLogic 注解) - baseDao.deleteBatchIds(Arrays.asList(ids)); - } + private final Log logger = LogFactory.getLog(getClass()); + @Autowired + private ArticleRedis articleRedis; + + @Autowired + private DraftDao draftDao; + @Autowired + private DraftContentDao draftContentDao; + @Autowired + private ArticleDao articleDao; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ArticleDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ArticleDTO.class); + } + + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public ArticleDTO get(String id) { + ArticleEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, ArticleDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(ArticleDTO dto) { + ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ArticleDTO dto) { + ArticleEntity entity = ConvertUtils.sourceToTarget(dto, ArticleEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } /** * @param tokenDTO @@ -120,4 +143,97 @@ public class ArticleServiceImpl extends BaseServiceImpl articleParamMap = new HashMap<>(); + articleParamMap.put("ARTICLE_ID", fromDTO.getArticleId()); + articleParamMap.put("ARTICLE_ID", fromDTO.getArticleId()); + articleDao.selectByMap(articleParamMap); + } + + DraftEntity draftEntity = null; + List draftContentList = null; + if (StringUtils.isNotBlank(fromDTO.getDraftId())) { + //TODO + + draftEntity = draftDao.selectById(fromDTO.getDraftId()); + if (draftEntity == null) { + logger.warn("saveOrUpdateContent draftId is not exist in db"); + throw new RenException("参数错误"); + } + draftEntity.setTitle(draftEntity.getTitle()); + draftEntity.setUpdatedTime(new Date()); + draftDao.updateById(draftEntity); + + } else { + draftEntity = new DraftEntity(); + draftEntity.setTitle(fromDTO.getTitle()); + draftDao.insert(draftEntity); + } + + if (CollectionUtils.isEmpty(draftContentList)) { + logger.warn("saveOrUpdateContent contentList is empty"); + throw new RenException("参数错误"); + } + draftContentList = buildDraftContent(fromDTO, havePublished); + //TODO 改为批量插入 + draftContentList.forEach(content -> draftContentDao.insert(content)); + + String draftId = draftEntity.getId(); + + + return null; + } + + /** + * desc:构建 内容对象 + * + * @param fromDTO + * @param havePublished + * @return + */ + private List buildDraftContent(DraftContentFromDTO fromDTO, boolean havePublished) { + //如果已发布 则需要校验内容是否更改过 没有更改则 不对审核状态进行重置 + List newContentList = new ArrayList<>(); + Map oldContentMap = null; + Map draftIdMap = new HashMap<>(); + draftIdMap.put("DRAFT_ID", fromDTO.getDraftId()); + if (havePublished) { + List oldContentEntities = draftContentDao.selectByMap(draftIdMap); + oldContentMap = oldContentEntities.stream().collect(Collectors.toMap(DraftContentEntity::getId, content -> content)); + //删掉所有 + draftContentDao.deleteByMap(draftIdMap); + } + List contentList = fromDTO.getContentList(); + + Map finalOldContentMap = oldContentMap; + Set orderNumSet = new HashSet<>(); + contentList.forEach(content -> { + if (finalOldContentMap != null && finalOldContentMap.get(content.getDraftId()) != null) { + DraftContentEntity oldContent = finalOldContentMap.get(content.getDraftId()); + if (oldContent.getContent().equals(content.getContent())) { + content.setAuditReason(oldContent.getAuditReason()); + content.setAuditStatus(oldContent.getAuditStatus()); + } + } + DraftContentEntity entity = ConvertUtils.sourceToTarget(content, DraftContentEntity.class); + entity.setId(content.getDraftId()); + orderNumSet.add(content.getOrderNum()); + newContentList.add(entity); + }); + if (orderNumSet.size() != newContentList.size()) { + logger.warn("saveOrUpdateContent contentList orderNum is repeat"); + throw new RenException("参数错误"); + } + return newContentList; + } + } \ No newline at end of file From 448dbf7b3a1ebace39e568088c0317c23b48dfbd Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 2 Jun 2020 16:28:19 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=20=E4=BF=AE=E6=94=B9publisherType=E7=B1=BB=E5=9E=8B;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/migration/epmet_gov_voice.sql | 269 ++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql b/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql new file mode 100644 index 0000000000..d616dd51e2 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql @@ -0,0 +1,269 @@ +/* + Date: 2/06/2020 16:13:38 +*/ + +-- SET NAMES utf8mb4; +-- #SET FOREIGN_KEY_CHECKS = 0; + +CREATE DATABASE `epmet_gov_access` DEFAULT CHARACTER SET utf8mb4; +CREATE TABLE tag_default( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + TAG_NAME VARCHAR(32) NOT NULL COMMENT '标签名称' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '默认标签表 默认标签表'; + +ALTER TABLE tag_default COMMENT '默认标签表'; +CREATE TABLE tag_customer( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + TAG_NAME VARCHAR(32) NOT NULL COMMENT '标签名称' , + USE_COUNT INT NOT NULL DEFAULT 0 COMMENT '使用计数' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '客户标签表 客户标签表'; + +ALTER TABLE tag_customer ADD INDEX INX_TAG_NAME(TAG_NAME); +ALTER TABLE tag_customer COMMENT '客户标签表'; +CREATE TABLE tag_grid( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + TAG_ID VARCHAR(64) NOT NULL COMMENT '标签ID' , + TAG_NAME VARCHAR(32) NOT NULL COMMENT '标签名称' , + USE_COUNT INT NOT NULL DEFAULT 0 COMMENT '使用计数' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '网格标签表 网格标签表'; + +ALTER TABLE tag_grid COMMENT '网格标签表'; +CREATE TABLE article_tags( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + TAG_ID VARCHAR(64) NOT NULL COMMENT '标签ID' , + TAG_NAME VARCHAR(32) NOT NULL COMMENT '标签名称' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章标签表 文章标签表'; + +ALTER TABLE article_tags ADD INDEX IDX_ARTICLE_ID(ARTICLE_ID); +ALTER TABLE article_tags COMMENT '文章标签表'; +CREATE TABLE draft( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + TITLE VARCHAR(128) NOT NULL COMMENT '文章标题' , + PREVIEW_CONTENT VARCHAR(512) NOT NULL COMMENT '文章内容 精简内容' , + IS_TOP INT NOT NULL COMMENT '是否置顶' , + PUBLISH_RANGE_DESC VARCHAR(512) NOT NULL COMMENT '发布范围描述 所有发布范围集合' , + PUBLISHER_ID VARCHAR(64) NOT NULL COMMENT '发布单位ID' , + PUBLISHER_NAME VARCHAR(128) NOT NULL COMMENT '发布单位名称' , + PUBLISHER_TYPE VARCHAR(32) NOT NULL COMMENT '发布单位类型 机关:agency;部门:department;网格:grid' , + PUBLISH_DATE DATE NOT NULL COMMENT '发布时间' , + STATUS_FLAG VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published,审核中:auditing,审核失败:auditfail' , + TAGS VARCHAR(512) NOT NULL COMMENT '文章标签串 竖杠分割的标签名称' , + ORG_ID VARCHAR(64) COMMENT '组织ID' , + ORG_ID_PATH VARCHAR(512) COMMENT '组织ID路径 eg:字段为def:abc' , + GRID_ID VARCHAR(64) COMMENT '网格ID 数据权限使用' , + DEPARTMENT_ID VARCHAR(32) COMMENT '部门ID 数据权限使用' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '草稿表 草稿表'; + +ALTER TABLE draft COMMENT '草稿表'; +CREATE TABLE draft_content( + ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , + CONTENT VARCHAR(1024) NOT NULL COMMENT '内容' , + CONTENT_TYPE VARCHAR(32) NOT NULL COMMENT '内容类型 图片:img;文字:text' , + AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;' , + AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + ORDER_NUM INT NOT NULL COMMENT '内容顺序 从1开始' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '草稿内容表 草稿内容表'; + +ALTER TABLE draft_content COMMENT '草稿内容表'; +CREATE TABLE draft_publish_range( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + DRAFT_ID VARCHAR(64) NOT NULL COMMENT 'ID草稿' , + GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + OFF_LINE_TIME DATETIME COMMENT '下线时间' , + PUBLISH_STATUS VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '草稿发布范围表 草稿发布范围表'; + +ALTER TABLE draft_publish_range COMMENT '草稿发布范围表'; +CREATE TABLE draft_cover( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , + IMG_URL VARCHAR(512) NOT NULL COMMENT '封面图片地址 url地址' , + AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;' , + AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '草稿封面表 草稿封面表'; + +ALTER TABLE draft_cover COMMENT '草稿封面表'; +CREATE TABLE article( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , + TITLE VARCHAR(128) NOT NULL COMMENT '文章标题' , + PREVIEW_CONTENT VARCHAR(512) NOT NULL COMMENT '文章内容 精简内容' , + IS_TOP INT NOT NULL COMMENT '是否置顶' , + PUBLISH_RANGE_DESC VARCHAR(512) NOT NULL COMMENT '发布范围描述 所有发布范围集合' , + PUBLISHER_ID VARCHAR(64) NOT NULL COMMENT '发布单位ID' , + PUBLISHER_NAME VARCHAR(128) NOT NULL COMMENT '发布单位名称' , + PUBLISHER_TYPE VARCHAR(32) NOT NULL COMMENT '发布单位类型 机关:agency;部门:department;网格:grid' , + PUBLISH_DATE DATE NOT NULL COMMENT '发布时间' , + STATUS_FLAG VARCHAR(32) NOT NULL DEFAULT 0 COMMENT '发布状态 已发布:published;已下线:offline' , + OFF_LINE_TIME DATETIME COMMENT '下线时间' , + TAGS VARCHAR(512) COMMENT '文章标签串 竖杠分割的标签名称' , + ORG_ID VARCHAR(64) COMMENT '组织ID' , + ORG_ID_PATH VARCHAR(512) COMMENT '组织ID路径 eg:字段为def:abc' , + GRID_ID VARCHAR(64) COMMENT '网格ID 数据权限使用' , + DEPARTMENT_ID VARCHAR(32) COMMENT '部门ID 数据权限使用' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章表 正式文章表'; + +ALTER TABLE article COMMENT '文章表'; +CREATE TABLE article_content( + ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + CONTENT VARCHAR(1024) NOT NULL COMMENT '内容' , + CONTENT_TYPE VARCHAR(32) NOT NULL COMMENT '内容类型 图片:img;文字:text' , + AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing' , + AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + ORDER_NUM INT NOT NULL COMMENT '内容顺序 从1开始' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章内容表 文章内容表'; + +ALTER TABLE article_content COMMENT '文章内容表'; +CREATE TABLE article_cover( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + IMG_URL VARCHAR(512) NOT NULL COMMENT '封面图片地址 url地址' , + AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing' , + AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章封面表 文章封面表'; + +ALTER TABLE article_cover COMMENT '文章封面表'; +CREATE TABLE article_publish_range( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + OFF_LINE_TIME DATETIME COMMENT '下线时间' , + PUBLISH_STATUS VARCHAR(32) NOT NULL COMMENT '发布状态' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章发布范围表 文章发布范围表'; + +ALTER TABLE article_publish_range ADD INDEX IDX_ARTICLE_ID(ARTICLE_ID); +ALTER TABLE article_publish_range COMMENT '文章发布范围表'; +CREATE TABLE article_operate_record( + ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + OP_USER VARCHAR(128) NOT NULL COMMENT '执行人 xx街道-xx中心-姓名' , + CONTENT VARCHAR(512) NOT NULL COMMENT '操作内容 操作内容,eg:重新编辑文章;' , + OP_TYPE VARCHAR(32) NOT NULL COMMENT '操作类型 发布文章:publish;取消文章置顶:canceltop;设置置顶:settom;下线文章:offline;修改文章发布范围:updatepublishrange' , + OP_TIME DATETIME NOT NULL COMMENT '操作时间' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章操作记录表 文章操作记录表'; + +ALTER TABLE article_operate_record COMMENT '文章操作记录表'; +CREATE TABLE article_visit_record( + ID VARCHAR(64) NOT NULL COMMENT '主键ID' , + CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , + GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , + USER_ID VARCHAR(64) NOT NULL COMMENT '用户ID' , + DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , + REVISION INT NOT NULL COMMENT '乐观锁' , + CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , + CREATED_TIME DATETIME NOT NULL COMMENT '创建时间' , + UPDATED_BY VARCHAR(32) NOT NULL COMMENT '更新人' , + UPDATED_TIME DATETIME NOT NULL COMMENT '更新时间' , + PRIMARY KEY (ID) +) COMMENT = '文章访问记录表 文章访问记录表'; + +ALTER TABLE article_visit_record ADD UNIQUE UNX_INDEX(ARTICLE_ID,GRID_ID,USER_ID); +ALTER TABLE article_visit_record COMMENT '文章访问记录表'; From 880c67067f5049e2783321f1460be09ca99e30f3 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 3 Jun 2020 09:44:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=87=E7=AB=A0=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E5=85=B3=E7=B3=BB=E8=A1=A8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20=E7=BD=91=E6=A0=BC=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/ArticlePublishRangeDTO.java | 8 +- .../com/epmet/dto/DraftPublishRangeDTO.java | 8 +- .../epmet/dto/form/DraftContentFromDTO.java | 20 +---- .../epmet/controller/ArticleController.java | 8 +- .../entity/ArticlePublishRangeEntity.java | 5 ++ .../epmet/entity/DraftPublishRangeEntity.java | 5 ++ .../com/epmet/service/ArticleService.java | 4 +- .../service/impl/ArticleServiceImpl.java | 84 ++++++++----------- .../resources/migration/epmet_gov_voice.sql | 50 ++++++----- .../java/com/epmet/ArticleServiceTest.java | 45 ++++++++++ 10 files changed, 142 insertions(+), 95 deletions(-) create mode 100644 epmet-module/gov-voice/gov-voice-server/src/test/java/com/epmet/ArticleServiceTest.java diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticlePublishRangeDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticlePublishRangeDTO.java index 84a24f947b..02106d920b 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticlePublishRangeDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticlePublishRangeDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -53,6 +54,11 @@ public class ArticlePublishRangeDTO implements Serializable { */ private String gridId; + /** + * 组织-网格名称 + */ + private String agencyGridName; + /** * 下线时间 */ diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftPublishRangeDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftPublishRangeDTO.java index b0c57bb112..8457b400ea 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftPublishRangeDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftPublishRangeDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -53,6 +54,11 @@ public class DraftPublishRangeDTO implements Serializable { */ private String gridId; + /** + * 组织-网格名称 + */ + private String agencyGridName; + /** * 下线时间 */ diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java index 81d39fa698..5d933697d7 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java @@ -35,15 +35,7 @@ public class DraftContentFromDTO implements Serializable { private static final long serialVersionUID = -4206020151361420221L; - /** - * 文章ID 重新编辑时必填 - */ - private String articleId; - /** - * 客户ID - */ - private String customerId; /** * 草稿ID @@ -69,7 +61,7 @@ public class DraftContentFromDTO implements Serializable { /** * 内容Id */ - private String draftId; + private String draftContentId; /** * 内容 */ @@ -80,16 +72,6 @@ public class DraftContentFromDTO implements Serializable { */ private String contentType; - /** - * 审核状态 通过:pass;失败:fail; - */ - private String auditStatus; - - /** - * 审核理由 - */ - private String auditReason; - /** * 内容顺序 从1开始 */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index e72213a34d..48b7096595 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -28,10 +28,8 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.ArticleDTO; -import com.epmet.dto.form.LatestListFormDTO; -import com.epmet.dto.result.ArticleGridResultDTO; -import com.epmet.dto.result.LatestListResultDTO; import com.epmet.dto.form.DraftContentFromDTO; +import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.excel.ArticleExcel; import com.epmet.service.ArticleService; import org.springframework.beans.factory.annotation.Autowired; @@ -114,8 +112,8 @@ public class ArticleController { * @throws Exception */ @GetMapping("savecontent") - public Result savecontent(@RequestBody DraftContentFromDTO fromDTO) throws Exception { - String draftId = articleService.saveOrUpdateContent(fromDTO); + public Result saveOrUpdateContent(@LoginUser TokenDto tokenDto,@RequestBody DraftContentFromDTO fromDTO) throws Exception { + String draftId = articleService.saveOrUpdateContent(tokenDto, fromDTO); return new Result().ok(draftId); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticlePublishRangeEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticlePublishRangeEntity.java index 9ee3aa1afa..de4911067c 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticlePublishRangeEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticlePublishRangeEntity.java @@ -53,6 +53,11 @@ public class ArticlePublishRangeEntity extends BaseEpmetEntity { */ private String gridId; + /** + * 组织-网格名称 + */ + private String agencyGridName; + /** * 下线时间 */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftPublishRangeEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftPublishRangeEntity.java index 93833228cf..fb3233cbb1 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftPublishRangeEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftPublishRangeEntity.java @@ -53,6 +53,11 @@ public class DraftPublishRangeEntity extends BaseEpmetEntity { */ private String gridId; + /** + * 组织-网格名称 + */ + private String agencyGridName; + /** * 下线时间 */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java index 9cae7ed196..dd166a0b51 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -106,8 +106,10 @@ public interface ArticleService extends BaseService { /** * desc:保存或修改文章内容 + * + * @param tokenDto * @param fromDTO * @return */ - String saveOrUpdateContent(DraftContentFromDTO fromDTO); + String saveOrUpdateContent(TokenDto tokenDto, DraftContentFromDTO fromDTO); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index 3b082d2776..778a08b7b4 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -16,17 +16,16 @@ */ package com.epmet.service.impl; - import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; @@ -36,8 +35,8 @@ import com.epmet.dao.DraftContentDao; import com.epmet.dao.DraftDao; import com.epmet.dto.ArticleDTO; import com.epmet.dto.feign.GovOrgSelfFeignClient; -import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.dto.form.DraftContentFromDTO; +import com.epmet.dto.result.ArticleGridResultDTO; import com.epmet.entity.ArticleEntity; import com.epmet.entity.DraftContentEntity; import com.epmet.entity.DraftEntity; @@ -49,11 +48,9 @@ import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.util.CollectionUtils; import java.util.*; -import java.util.stream.Collectors; /** * 文章表 @@ -63,14 +60,12 @@ import java.util.stream.Collectors; */ @Service public class ArticleServiceImpl extends BaseServiceImpl implements ArticleService { - + private final Log logger = LogFactory.getLog(getClass()); @Autowired private ArticleRedis articleRedis; @Autowired private GovOrgSelfFeignClient govOrgSelfFeignClient; - private final Log logger = LogFactory.getLog(getClass()); - @Autowired - private ArticleRedis articleRedis; + @Autowired private DraftDao draftDao; @@ -145,25 +140,13 @@ public class ArticleServiceImpl extends BaseServiceImpl articleParamMap = new HashMap<>(); - articleParamMap.put("ARTICLE_ID", fromDTO.getArticleId()); - articleParamMap.put("ARTICLE_ID", fromDTO.getArticleId()); - articleDao.selectByMap(articleParamMap); - } DraftEntity draftEntity = null; List draftContentList = null; if (StringUtils.isNotBlank(fromDTO.getDraftId())) { - //TODO - draftEntity = draftDao.selectById(fromDTO.getDraftId()); if (draftEntity == null) { logger.warn("saveOrUpdateContent draftId is not exist in db"); @@ -176,56 +159,63 @@ public class ArticleServiceImpl extends BaseServiceImpl draftIdMap = new HashMap<>(); + draftIdMap.put("DRAFT_ID", fromDTO.getDraftId()); + draftContentDao.deleteByMap(draftIdMap); //TODO 改为批量插入 draftContentList.forEach(content -> draftContentDao.insert(content)); - String draftId = draftEntity.getId(); - - - return null; + return draftId; } /** * desc:构建 内容对象 * + * + * @param tokenDto * @param fromDTO - * @param havePublished * @return */ - private List buildDraftContent(DraftContentFromDTO fromDTO, boolean havePublished) { + private List buildDraftContent(TokenDto tokenDto, DraftContentFromDTO fromDTO) { //如果已发布 则需要校验内容是否更改过 没有更改则 不对审核状态进行重置 List newContentList = new ArrayList<>(); - Map oldContentMap = null; - Map draftIdMap = new HashMap<>(); - draftIdMap.put("DRAFT_ID", fromDTO.getDraftId()); - if (havePublished) { - List oldContentEntities = draftContentDao.selectByMap(draftIdMap); - oldContentMap = oldContentEntities.stream().collect(Collectors.toMap(DraftContentEntity::getId, content -> content)); - //删掉所有 - draftContentDao.deleteByMap(draftIdMap); - } + List contentList = fromDTO.getContentList(); - Map finalOldContentMap = oldContentMap; Set orderNumSet = new HashSet<>(); contentList.forEach(content -> { - if (finalOldContentMap != null && finalOldContentMap.get(content.getDraftId()) != null) { - DraftContentEntity oldContent = finalOldContentMap.get(content.getDraftId()); - if (oldContent.getContent().equals(content.getContent())) { - content.setAuditReason(oldContent.getAuditReason()); - content.setAuditStatus(oldContent.getAuditStatus()); - } - } DraftContentEntity entity = ConvertUtils.sourceToTarget(content, DraftContentEntity.class); - entity.setId(content.getDraftId()); + entity.setId(content.getDraftContentId()); + entity.setCustomerId(tokenDto.getCustomerId()); + entity.setDraftId(fromDTO.getDraftId()); orderNumSet.add(content.getOrderNum()); newContentList.add(entity); }); diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql b/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql index d616dd51e2..3a38eaa980 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/migration/epmet_gov_voice.sql @@ -1,11 +1,4 @@ -/* - Date: 2/06/2020 16:13:38 -*/ - --- SET NAMES utf8mb4; --- #SET FOREIGN_KEY_CHECKS = 0; - -CREATE DATABASE `epmet_gov_access` DEFAULT CHARACTER SET utf8mb4; +DROP TABLE tag_default;/*SkipError*/ CREATE TABLE tag_default( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , TAG_NAME VARCHAR(32) NOT NULL COMMENT '标签名称' , @@ -19,6 +12,7 @@ CREATE TABLE tag_default( ) COMMENT = '默认标签表 默认标签表'; ALTER TABLE tag_default COMMENT '默认标签表'; +DROP TABLE tag_customer;/*SkipError*/ CREATE TABLE tag_customer( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , @@ -35,6 +29,7 @@ CREATE TABLE tag_customer( ALTER TABLE tag_customer ADD INDEX INX_TAG_NAME(TAG_NAME); ALTER TABLE tag_customer COMMENT '客户标签表'; +DROP TABLE tag_grid;/*SkipError*/ CREATE TABLE tag_grid( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , @@ -52,6 +47,7 @@ CREATE TABLE tag_grid( ) COMMENT = '网格标签表 网格标签表'; ALTER TABLE tag_grid COMMENT '网格标签表'; +DROP TABLE article_tags;/*SkipError*/ CREATE TABLE article_tags( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , @@ -69,18 +65,19 @@ CREATE TABLE article_tags( ALTER TABLE article_tags ADD INDEX IDX_ARTICLE_ID(ARTICLE_ID); ALTER TABLE article_tags COMMENT '文章标签表'; +DROP TABLE draft;/*SkipError*/ CREATE TABLE draft( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , TITLE VARCHAR(128) NOT NULL COMMENT '文章标题' , PREVIEW_CONTENT VARCHAR(512) NOT NULL COMMENT '文章内容 精简内容' , - IS_TOP INT NOT NULL COMMENT '是否置顶' , + IS_TOP INT NOT NULL COMMENT '是否置顶 1是;0否;' , PUBLISH_RANGE_DESC VARCHAR(512) NOT NULL COMMENT '发布范围描述 所有发布范围集合' , PUBLISHER_ID VARCHAR(64) NOT NULL COMMENT '发布单位ID' , PUBLISHER_NAME VARCHAR(128) NOT NULL COMMENT '发布单位名称' , PUBLISHER_TYPE VARCHAR(32) NOT NULL COMMENT '发布单位类型 机关:agency;部门:department;网格:grid' , PUBLISH_DATE DATE NOT NULL COMMENT '发布时间' , - STATUS_FLAG VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published,审核中:auditing,审核失败:auditfail' , + STATUS_FLAG VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published,审核中:auditing;审核失败:auditfail' , TAGS VARCHAR(512) NOT NULL COMMENT '文章标签串 竖杠分割的标签名称' , ORG_ID VARCHAR(64) COMMENT '组织ID' , ORG_ID_PATH VARCHAR(512) COMMENT '组织ID路径 eg:字段为def:abc' , @@ -96,14 +93,15 @@ CREATE TABLE draft( ) COMMENT = '草稿表 草稿表'; ALTER TABLE draft COMMENT '草稿表'; +DROP TABLE draft_content;/*SkipError*/ CREATE TABLE draft_content( ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , CONTENT VARCHAR(1024) NOT NULL COMMENT '内容' , CONTENT_TYPE VARCHAR(32) NOT NULL COMMENT '内容类型 图片:img;文字:text' , - AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;' , - AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + AUDIT_STATUS VARCHAR(32) COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing;' , + AUDIT_REASON VARCHAR(128) COMMENT '审核理由' , ORDER_NUM INT NOT NULL COMMENT '内容顺序 从1开始' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , REVISION INT NOT NULL COMMENT '乐观锁' , @@ -115,11 +113,13 @@ CREATE TABLE draft_content( ) COMMENT = '草稿内容表 草稿内容表'; ALTER TABLE draft_content COMMENT '草稿内容表'; +DROP TABLE draft_publish_range;/*SkipError*/ CREATE TABLE draft_publish_range( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , DRAFT_ID VARCHAR(64) NOT NULL COMMENT 'ID草稿' , GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + AGENCY_GRID_NAME VARCHAR(64) NOT NULL COMMENT '组织-网格名称' , OFF_LINE_TIME DATETIME COMMENT '下线时间' , PUBLISH_STATUS VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , @@ -132,13 +132,14 @@ CREATE TABLE draft_publish_range( ) COMMENT = '草稿发布范围表 草稿发布范围表'; ALTER TABLE draft_publish_range COMMENT '草稿发布范围表'; +DROP TABLE draft_cover;/*SkipError*/ CREATE TABLE draft_cover( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , IMG_URL VARCHAR(512) NOT NULL COMMENT '封面图片地址 url地址' , - AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;' , - AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + AUDIT_STATUS VARCHAR(32) COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing;' , + AUDIT_REASON VARCHAR(128) COMMENT '审核理由' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , REVISION INT NOT NULL COMMENT '乐观锁' , CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , @@ -149,14 +150,15 @@ CREATE TABLE draft_cover( ) COMMENT = '草稿封面表 草稿封面表'; ALTER TABLE draft_cover COMMENT '草稿封面表'; +DROP TABLE article;/*SkipError*/ CREATE TABLE article( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , DRAFT_ID VARCHAR(64) NOT NULL COMMENT '草稿ID' , TITLE VARCHAR(128) NOT NULL COMMENT '文章标题' , PREVIEW_CONTENT VARCHAR(512) NOT NULL COMMENT '文章内容 精简内容' , - IS_TOP INT NOT NULL COMMENT '是否置顶' , - PUBLISH_RANGE_DESC VARCHAR(512) NOT NULL COMMENT '发布范围描述 所有发布范围集合' , + IS_TOP INT NOT NULL COMMENT '是否置顶 1是;0否;' , + PUBLISH_RANGE_DESC VARCHAR(512) NOT NULL COMMENT '发布范围描述 所有发布范围集合,顿号隔开' , PUBLISHER_ID VARCHAR(64) NOT NULL COMMENT '发布单位ID' , PUBLISHER_NAME VARCHAR(128) NOT NULL COMMENT '发布单位名称' , PUBLISHER_TYPE VARCHAR(32) NOT NULL COMMENT '发布单位类型 机关:agency;部门:department;网格:grid' , @@ -178,14 +180,15 @@ CREATE TABLE article( ) COMMENT = '文章表 正式文章表'; ALTER TABLE article COMMENT '文章表'; +DROP TABLE article_content;/*SkipError*/ CREATE TABLE article_content( ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , CONTENT VARCHAR(1024) NOT NULL COMMENT '内容' , CONTENT_TYPE VARCHAR(32) NOT NULL COMMENT '内容类型 图片:img;文字:text' , - AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing' , - AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + AUDIT_STATUS VARCHAR(32) COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing;' , + AUDIT_REASON VARCHAR(128) COMMENT '审核理由' , ORDER_NUM INT NOT NULL COMMENT '内容顺序 从1开始' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , REVISION INT NOT NULL COMMENT '乐观锁' , @@ -197,13 +200,14 @@ CREATE TABLE article_content( ) COMMENT = '文章内容表 文章内容表'; ALTER TABLE article_content COMMENT '文章内容表'; +DROP TABLE article_cover;/*SkipError*/ CREATE TABLE article_cover( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , IMG_URL VARCHAR(512) NOT NULL COMMENT '封面图片地址 url地址' , - AUDIT_STATUS VARCHAR(32) NOT NULL COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing' , - AUDIT_REASON VARCHAR(128) NOT NULL COMMENT '审核理由' , + AUDIT_STATUS VARCHAR(32) COMMENT '审核状态 通过:pass;失败:fail;审核中:auditing' , + AUDIT_REASON VARCHAR(128) COMMENT '审核理由' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , REVISION INT NOT NULL COMMENT '乐观锁' , CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , @@ -214,13 +218,15 @@ CREATE TABLE article_cover( ) COMMENT = '文章封面表 文章封面表'; ALTER TABLE article_cover COMMENT '文章封面表'; +DROP TABLE article_publish_range;/*SkipError*/ CREATE TABLE article_publish_range( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , ARTICLE_ID VARCHAR(64) NOT NULL COMMENT '文章ID' , GRID_ID VARCHAR(64) NOT NULL COMMENT '网格ID' , + AGENCY_GRID_NAME VARCHAR(64) NOT NULL COMMENT '组织-网格名称' , OFF_LINE_TIME DATETIME COMMENT '下线时间' , - PUBLISH_STATUS VARCHAR(32) NOT NULL COMMENT '发布状态' , + PUBLISH_STATUS VARCHAR(32) NOT NULL COMMENT '发布状态 未发布:unpublish ;已发布:published' , DEL_FLAG INT NOT NULL DEFAULT 0 COMMENT '删除标识 0.未删除 1.已删除' , REVISION INT NOT NULL COMMENT '乐观锁' , CREATED_BY VARCHAR(32) NOT NULL COMMENT '创建人' , @@ -232,6 +238,7 @@ CREATE TABLE article_publish_range( ALTER TABLE article_publish_range ADD INDEX IDX_ARTICLE_ID(ARTICLE_ID); ALTER TABLE article_publish_range COMMENT '文章发布范围表'; +DROP TABLE article_operate_record;/*SkipError*/ CREATE TABLE article_operate_record( ID VARCHAR(64) NOT NULL COMMENT '主键ID 主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , @@ -250,6 +257,7 @@ CREATE TABLE article_operate_record( ) COMMENT = '文章操作记录表 文章操作记录表'; ALTER TABLE article_operate_record COMMENT '文章操作记录表'; +DROP TABLE article_visit_record;/*SkipError*/ CREATE TABLE article_visit_record( ID VARCHAR(64) NOT NULL COMMENT '主键ID' , CUSTOMER_ID VARCHAR(64) NOT NULL COMMENT '客户ID' , diff --git a/epmet-module/gov-voice/gov-voice-server/src/test/java/com/epmet/ArticleServiceTest.java b/epmet-module/gov-voice/gov-voice-server/src/test/java/com/epmet/ArticleServiceTest.java new file mode 100644 index 0000000000..6d0903be34 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/test/java/com/epmet/ArticleServiceTest.java @@ -0,0 +1,45 @@ +package com.epmet; + +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.DraftContentFromDTO; +import com.epmet.service.ArticleService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; +import java.util.List; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ArticleServiceTest { + + + + @Autowired + private ArticleService articleService; + + @Test + public void genToken() { + TokenDto tokenDto = new TokenDto(); + tokenDto.setCustomerId("1"); + tokenDto.setUserId("1"); + DraftContentFromDTO draftContentFromDTO = new DraftContentFromDTO(); + //draftContentFromDTO.setDraftId("1"); + draftContentFromDTO.setTitle("testTitle"); + List list = new ArrayList<>(); + for (int i = 0; i <2 ; i++) { + DraftContentFromDTO.DraftContentDTO contentDTO = new DraftContentFromDTO.DraftContentDTO(); + contentDTO.setDraftContentId(""); + contentDTO.setContent("内容"+i); + contentDTO.setContentType("text"); + contentDTO.setOrderNum(1+i); + list.add(contentDTO); + } + draftContentFromDTO.setContentList(list); + String s = articleService.saveOrUpdateContent(tokenDto, draftContentFromDTO); + System.out.println(s); + } +}