From 29ba18680a81a11ef645467607b5bc142eaa064a Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 30 Jun 2022 16:49:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=87=E7=AB=A0=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/PublishedListResultDTO.java | 35 +++++++++++++++- .../epmet/controller/ArticleController.java | 12 ++++++ .../com/epmet/service/ArticleService.java | 2 + .../service/impl/ArticleServiceImpl.java | 40 +++++++++++++++++++ .../src/main/resources/mapper/ArticleDao.xml | 15 ++++++- 5 files changed, 101 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java index 5ab17bbd61..94b190c799 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.LinkedList; import java.util.List; /** @@ -25,10 +26,26 @@ public class PublishedListResultDTO implements Serializable { * 文章标题 */ private String title; + /** + * 是否置顶 1是;0否; + */ + private String isTop; + /** + * 是否置顶 1是;0否; + */ + private String isTopName; + /** + * 发布单位ID + */ + private String publisherId; /** * 发布单位 */ private String publisherName; + /** + * 发布单位类型 机关:agency;部门:department;网格:grid + */ + private String publisherType; /** * 发布时间 */ @@ -39,9 +56,13 @@ public class PublishedListResultDTO implements Serializable { @JsonIgnore private String tags; /** - * 文章标签列表 + * 文章标签名列表 */ private List tagNameList; + /** + * 文章标签Id列表 + */ + private List tagIdList; /** * 概要内容 */ @@ -66,4 +87,16 @@ public class PublishedListResultDTO implements Serializable { * 文章创建人 */ private String createdBy; + /** + * 封面图片url + */ + private String imgUrl; + /** + * 发布范围网格Id集合 + */ + private List gridIdList; + /** + * 文章内容 + */ + private LinkedList contentList; } 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 860b9cca2c..0ae720155c 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 @@ -419,4 +419,16 @@ public class ArticleController { return new Result>().ok(articleService.articleListV2(formDTO)); } + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 数字平台-党建声音-文章详情 + **/ + @PostMapping("detailV2") + public Result detailV2(@LoginUser TokenDto tokenDTO, @RequestBody ArticleListFormDTO formDTO) { + formDTO.setCustomerId(tokenDTO.getCustomerId()); + return new Result().ok(articleService.detailV2(formDTO)); + } + } 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 31f292136d..c54d0fe6e5 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 @@ -245,4 +245,6 @@ public interface ArticleService extends BaseService { List getArticleListByTag(String tagId, Integer pageNo, Integer pageSize); PageData articleListV2(ArticleListFormDTO formDTO); + + PublishedListResultDTO detailV2(ArticleListFormDTO formDTO); } \ 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 e9b7c2b4c1..047d9584c4 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 @@ -18,6 +18,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; @@ -1477,4 +1478,43 @@ public class ArticleServiceImpl extends BaseServiceImpl(list, pageInfo.getTotal()); } + + @Override + public PublishedListResultDTO detailV2(ArticleListFormDTO formDTO) { + PublishedListResultDTO resultDTO = new PublishedListResultDTO(); + //1.查询文章主表信息 + List list = baseDao.selectAllArticle(formDTO); + + if (!CollectionUtils.isEmpty(list)) { + resultDTO = list.get(NumConstant.ZERO); + //查询文章涉及的发布范围网络Id列表 + LambdaQueryWrapper tWrapper = new LambdaQueryWrapper<>(); + tWrapper.eq(ArticlePublishRangeEntity::getArticleId, formDTO.getArticleId()); + tWrapper.eq(ArticlePublishRangeEntity::getDelFlag, NumConstant.ZERO_STR); + //【文章下线的查所有发布范围,文章没下线的只查还没下线的发布范围】 + if("offline".equals(resultDTO.getStatusFlag())){ + tWrapper.eq(ArticlePublishRangeEntity::getPublishStatus, "offline"); + }else { + tWrapper.eq(ArticlePublishRangeEntity::getPublishStatus, "published"); + } + List entityList = articlePublishRangeDao.selectList(tWrapper); + if (!CollectionUtils.isEmpty(entityList)) { + List contentList = entityList.stream().map(ArticlePublishRangeEntity::getGridId).collect(Collectors.toList()); + resultDTO.setGridIdList(contentList); + } + + //查询文章内容 + LambdaQueryWrapper tWrapper1 = new LambdaQueryWrapper<>(); + tWrapper1.eq(ArticleContentEntity::getArticleId, formDTO.getArticleId()); + tWrapper1.eq(ArticleContentEntity::getDelFlag, NumConstant.ZERO_STR); + tWrapper1.orderByDesc(ArticleContentEntity::getOrderNum); + List contentEntityList = articleContentDao.selectList(tWrapper1); + if (!CollectionUtils.isEmpty(entityList)) { + LinkedList contentList = (LinkedList)contentEntityList.stream().map(ArticleContentEntity::getContent).collect(Collectors.toList()); + resultDTO.setContentList(contentList); + } + } + + return resultDTO; + } } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index 3a95b47397..e9cfdce2b8 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -431,17 +431,28 @@ a.id AS "articleId", a.title AS "title", IFNULL(a.preview_content, "") AS "previewContent", + a.publisher_id AS "publisherId", a.publisher_name AS "publisherName", + a.publisher_type AS "publisherType", a.publish_date AS "publishDate", IFNULL(a.tags, "") AS "tags", a.status_flag AS "statusFlag", a.rich_text_flag AS "richTextFlag", - a.created_by AS "createdBy" + a.created_by AS "createdBy", + a.is_top AS "isTop", + IF (a.is_top = '0', '否', '是') "isTopName", + ac.img_url AS "imgUrl" FROM article a + LEFT JOIN article_cover ac ON a.id = ac.article_id AND ac.del_flag = '0' WHERE a.del_flag = '0' - AND a.customer_id = #{customerId} + + AND id = #{articleId} + + + AND a.customer_id = #{customerId} + AND a.org_id_path like concat('%',#{agencyId},'%') From 2c02614be1836287944a10cd550f7e10a70b9360 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 30 Jun 2022 17:06:12 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B9=E6=B3=95=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/DraftListFormDTO.java | 23 +++- .../dto/result/DraftPcListResultDTO.java | 101 ++++++++++++++++++ .../com/epmet/controller/DraftController.java | 34 +++++- .../java/com/epmet/service/DraftService.java | 5 + .../epmet/service/impl/DraftServiceImpl.java | 10 ++ .../src/main/resources/mapper/ArticleDao.xml | 1 + 6 files changed, 168 insertions(+), 6 deletions(-) create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftListFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftListFormDTO.java index 02dd80d4df..95167469f2 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftListFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftListFormDTO.java @@ -12,12 +12,31 @@ import java.io.Serializable; @Data public class DraftListFormDTO implements Serializable { private static final long serialVersionUID = 7957826609741967502L; + + /** + * 文章标题 + */ + private String title; + /** + * 开始日期 yyyy-MM-dd HH:mm:ss + */ + private String startDate; + /** + * 结束日期 yyyy-MM-dd HH:mm:ss + */ + private String endDate; /** * 页码 */ - private Integer pageNo; + private Integer pageNo = 1; /** * 每页显示数量 */ - private Integer pageSize; + private Integer pageSize = 20; + + private Boolean isPage = true; + private String draftId; + private String customerId; + private String agencyId; + private String staffId; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java new file mode 100644 index 0000000000..196e629fed --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java @@ -0,0 +1,101 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.LinkedList; +import java.util.List; + +/** + * @author sun + */ +@NoArgsConstructor +@Data +public class DraftPcListResultDTO implements Serializable { + + private static final long serialVersionUID = -8525181219822398750L; + /** + * 文章草稿ID + */ + private String draftId; + /** + * 文章标题 + */ + private String title; + /** + * 是否置顶 1是;0否; + */ + private String isTop; + /** + * 是否置顶 1是;0否; + */ + private String isTopName; + /** + * 发布单位ID + */ + private String publisherId; + /** + * 发布单位 + */ + private String publisherName; + /** + * 发布单位类型 机关:agency;部门:department;网格:grid + */ + private String publisherType; + /** + * 发布时间 + */ + private String publishDate; + /** + * 文章标签串 + */ + @JsonIgnore + private String tags; + /** + * 文章标签名列表 + */ + private List tagNameList; + /** + * 文章标签Id列表 + */ + private List tagIdList; + /** + * 概要内容 + */ + private String previewContent; + /** + * 上下线状态,上线:published,下线:offline + */ + private String statusFlag; + /** + * 是不是我发布 + */ + private Boolean isMePublished; + /** + * 发布范围 + */ + private String publishRangeDesc; + /** + * 1:是否富文本类型【】富文本;0:不是】 + */ + private String richTextFlag; + /** + * 文章创建人 + */ + private String createdBy; + /** + * 封面图片url + */ + private String imgUrl; + /** + * 发布范围网格Id集合 + */ + private List gridIdList; + /** + * 文章内容 + */ + private LinkedList contentList; + +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java index b7ffc4a382..b0cd066b27 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/DraftController.java @@ -20,15 +20,15 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.enums.RequirePermissionEnum; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dto.form.DeleteDraftFormDTO; -import com.epmet.dto.form.DraftDetailFormDTO; -import com.epmet.dto.form.DraftListFormDTO; -import com.epmet.dto.form.GovArticleDetailFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.DraftDetailResultDTO; import com.epmet.dto.result.DraftListResultDTO; +import com.epmet.dto.result.DraftPcListResultDTO; +import com.epmet.dto.result.PublishedListResultDTO; import com.epmet.service.DraftService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -86,4 +86,30 @@ public class DraftController { DraftDetailResultDTO draftDetailResultDTO = draftService.queryDraftDetail(formDTO); return new Result().ok(draftDetailResultDTO); } + + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 数字平台-党建声音-草稿列表 + **/ + @PostMapping("draftListV2") + public Result> draftListV2(@LoginUser TokenDto tokenDTO, @RequestBody DraftListFormDTO formDTO) { + formDTO.setCustomerId(tokenDTO.getCustomerId()); + formDTO.setStaffId(tokenDTO.getUserId()); + return new Result>().ok(draftService.draftListV2(formDTO)); + } + + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 数字平台-党建声音-草稿详情 + **/ + @PostMapping("detailV2") + public Result detailV2(@LoginUser TokenDto tokenDTO, @RequestBody DraftListFormDTO formDTO) { + formDTO.setCustomerId(tokenDTO.getCustomerId()); + return new Result().ok(draftService.detailV2(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java index a11c1361a3..f34898f749 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/DraftService.java @@ -27,6 +27,7 @@ import com.epmet.dto.form.DraftListFormDTO; import com.epmet.dto.result.DraftAttrResultDTO; import com.epmet.dto.result.DraftContentResultDTO; import com.epmet.dto.result.DraftDetailResultDTO; +import com.epmet.dto.result.DraftPcListResultDTO; import com.epmet.entity.DraftEntity; import java.util.List; @@ -148,4 +149,8 @@ public interface DraftService extends BaseService { * @date 2020-06-03 */ DraftDetailResultDTO queryDraftDetail(DraftDetailFormDTO formDTO); + + PageData draftListV2(DraftListFormDTO formDTO); + + DraftPcListResultDTO detailV2(DraftListFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java index c2f755e901..53ab778879 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java @@ -201,4 +201,14 @@ public class DraftServiceImpl extends BaseServiceImpl imp return draftDetailResultDTO; } + @Override + public PageData draftListV2(DraftListFormDTO formDTO) { + return null; + } + + @Override + public DraftPcListResultDTO detailV2(DraftListFormDTO formDTO) { + return null; + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index e9cfdce2b8..922c54c044 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -431,6 +431,7 @@ a.id AS "articleId", a.title AS "title", IFNULL(a.preview_content, "") AS "previewContent", + a.publish_range_desc AS "publishRangeDesc", a.publisher_id AS "publisherId", a.publisher_name AS "publisherName", a.publisher_type AS "publisherType", From b22c87134d274ab8e083136db1e1a5362714a725 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 30 Jun 2022 17:07:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=85=9A=E5=BB=BA=E5=A3=B0=E9=9F=B3?= =?UTF-8?q?=E6=9A=82=E5=AD=98=E4=B8=80=E6=B3=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/AddOrSaveDraftFormDTO.java | 72 +++++++++ .../com/epmet/constant/ArticleConstant.java | 10 ++ .../epmet/controller/ArticleController.java | 14 ++ .../com/epmet/service/ArticleService.java | 8 + .../service/impl/ArticleServiceImpl.java | 146 +++++++++++++++--- 5 files changed, 232 insertions(+), 18 deletions(-) create mode 100644 epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java new file mode 100644 index 0000000000..702a9dd677 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java @@ -0,0 +1,72 @@ +package com.epmet.dto.form; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/6/30 13:41 + * @DESC + */ +@Data +public class AddOrSaveDraftFormDTO implements Serializable { + + public interface AddOrSaveDraftForm{} + + /** + * 类型 发布文章:article;存草稿:draft + */ + @NotBlank(message = "类型不能为空",groups = AddOrSaveDraftForm.class) + private String type; + + @NotBlank(message = "标题不能为空",groups = AddOrSaveDraftForm.class) + @Length(max = 50, message = "标题最长为50个字") + private String title; + + /** + * 发布范围IDs + */ + private List gridIdList; + + /** + * 发布范围Names + */ + private List publishRangeDesc; + + /** + * 文章标签 + */ + private List tagNameList; + + @NotBlank(message = "发布单位不能为空",groups = AddOrSaveDraftForm.class) + private String publisher; + + @NotBlank(message = "发布单位名称不能为空",groups = AddOrSaveDraftForm.class) + private String publisherName; + /** + * 发布单位类型 机关:agency;部门:department;网格:grid + */ + @NotBlank(message = "发布单位类型不能为空",groups = AddOrSaveDraftForm.class) + private String publisherType; + + @NotNull(message = "发布时间不能为空",groups = AddOrSaveDraftForm.class) + private Date publishDate; + + @NotBlank(message = "文章内容不能为空",groups = AddOrSaveDraftForm.class) + private String content; + + /** + * 是否置顶 1是;0否; + */ + private Integer isTop; + + private String userId; + + private String customerId; +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java index 65a7f54855..29d8bca111 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java @@ -19,6 +19,8 @@ public interface ArticleConstant { * 发布状态-已发布 */ String PUBLISHED = "published"; + String PUBLISH = "publish"; + String PUBLISH_CONTENT = "发布文章"; /** * 发布状态-已下线 */ @@ -66,4 +68,12 @@ public interface ArticleConstant { * 发布方式 api审核后自动发布 */ String PUBLISH_WAY_AUTO_AUDIT = "autoAudit"; + + /** + * 未审核 + */ + String AUDIT_WAY_NO_AUDIT = "noAudit"; + + String SAVE_TYPE_ARTICLE = "article"; + String SAVE_TYPE_DRAFT = "draft"; } 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 0ae720155c..6dcd4f2af5 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 @@ -431,4 +431,18 @@ public class ArticleController { return new Result().ok(articleService.detailV2(formDTO)); } + /** + * Desc: 发布文章/存草稿 + * @param formDTO + * @author zxc + * @date 2022/6/30 14:03 + */ + @PostMapping("addOrSaveDraft") + public Result addOrSaveDraft(@LoginUser TokenDto tokenDto,@RequestBody AddOrSaveDraftFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, AddOrSaveDraftFormDTO.AddOrSaveDraftForm.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + articleService.addOrSaveDraft(formDTO); + return new Result(); + } } 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 c54d0fe6e5..127e7422ee 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 @@ -244,6 +244,14 @@ public interface ArticleService extends BaseService { */ List getArticleListByTag(String tagId, Integer pageNo, Integer pageSize); + /** + * Desc: 发布文章/存草稿 + * @param formDTO + * @author zxc + * @date 2022/6/30 14:03 + */ + void addOrSaveDraft(AddOrSaveDraftFormDTO formDTO); + PageData articleListV2(ArticleListFormDTO formDTO); PublishedListResultDTO detailV2(ArticleListFormDTO formDTO); 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 047d9584c4..30bfcaf86b 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 @@ -30,6 +30,10 @@ import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.scan.param.ImgScanParamDTO; import com.epmet.commons.tools.scan.param.ImgTaskDTO; @@ -126,6 +130,8 @@ public class ArticleServiceImpl extends BaseServiceImpl tagsInfo = formDto.getTagsInfo(); String userId = tokenDto.getUserId(); //根据草稿id查询发布范围id集合 List gridIds = draftPublishRangeDao.selectGridIdByDraftId(draftId); if (gridIds.size() == NumConstant.ZERO) { throw new RenException(TagConstant.SELECT_GRIDIDLIST_FAILURE); } + return updateGridTagV2(formDto,customerId,gridIds,userId); + } + + public List updateGridTagV2(UpdateCustomerTagCacheDTO formDto,String customerId,List gridIds,String userId){ + List tagsInfo = formDto.getTagsInfo(); List gridTags = new ArrayList<>(); List gridTagCache = new ArrayList<>(); gridIds.forEach(gridId -> { @@ -1380,23 +1397,22 @@ public class ArticleServiceImpl extends BaseServiceImpl addArticleTags = new ArrayList<>(); - List tagsInfo = formDto.getTagsInfo(); DraftDTO draft = draftService.get(draftId); String customerId = draft.getCustomerId(); - String userId = tokenDto.getUserId(); String articleId = articleDao.getArticleIdByDraftId(draftId); + addArticleTagsV2(formDto,customerId,articleId); + } + + public void addArticleTagsV2(UpdateCustomerTagCacheDTO formDto,String customerId,String articleId){ + List articleTags = new ArrayList<>(); + List tagsInfo = formDto.getTagsInfo(); tagsInfo.forEach(resultDTO -> { - AddArticleTagsFormDTO addArticleTag = new AddArticleTagsFormDTO(); - addArticleTag.setCreatedBy(userId); - addArticleTag.setUpdatedBy(userId); - addArticleTag.setCustomerId(customerId); - addArticleTag.setArticleId(articleId); - BeanUtils.copyProperties(resultDTO, addArticleTag); - addArticleTag.setCreatedTime(createdTime); - addArticleTags.add(addArticleTag); + ArticleTagsEntity e = ConvertUtils.sourceToTarget(resultDTO, ArticleTagsEntity.class); + e.setCustomerId(customerId); + e.setArticleId(articleId); + articleTags.add(e); }); - articleTagsDao.addArticleTags(addArticleTags); + articleTagsService.insertBatch(articleTags); } /** @@ -1454,6 +1470,100 @@ public class ArticleServiceImpl extends BaseServiceImpl DraftConstant.PREVIEW_CONTENT_MAX_LENGTH ? formDTO.getContent().substring(NumConstant.ZERO,DraftConstant.PREVIEW_CONTENT_MAX_LENGTH) : formDTO.getContent()); + article.setPublisherId(formDTO.getPublisher()); + article.setPublishRangeDesc(formDTO.getPublishRangeDesc().stream().collect(Collectors.joining("、"))); + article.setTags(CollectionUtils.isEmpty(formDTO.getTagNameList()) ? "" : formDTO.getTagNameList().stream().collect(Collectors.joining("|"))); + article.setOrgId(staffInfo.getAgencyId()); + article.setOrgIdPath(StringUtils.isBlank(agencyInfo.getPids()) || agencyInfo.getPids().equals(NumConstant.ZERO_STR) ? agencyInfo.getId() : agencyInfo.getPids().concat(":").concat(agencyInfo.getId())); + baseDao.insert(article); + // 2.内容 + ArticleContentEntity articleContent = ConvertUtils.sourceToTarget(article, ArticleContentEntity.class); + articleContent.setCustomerId(customerId); + articleContent.setArticleId(article.getId()); + articleContent.setContent(formDTO.getContent()); + articleContent.setContentType("rich_text"); + articleContent.setAuditStatus(ArticleConstant.AUDIT_WAY_NO_AUDIT); + articleContent.setOrderNum(NumConstant.ZERO); + articleContentDao.insert(articleContent); + // 3.操作记录 + ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity(); + articleOperateRecord.setCustomerId(customerId); + articleOperateRecord.setArticleId(article.getId()); + articleOperateRecord.setGridIds(formDTO.getGridIdList().stream().collect(Collectors.joining(":"))); + articleOperateRecord.setOpUser(staffInfo.getAgencyName().concat("-").concat(staffInfo.getRealName())); + articleOperateRecord.setContent(formDTO.getContent()); + articleOperateRecord.setOpType(ArticleConstant.PUBLISH); + articleOperateRecord.setOpTime(new Date()); + articleOperateRecordService.insert(articleOperateRecord); + // 4.发布范围 + List rangeList = new ArrayList<>(); + formDTO.getGridIdList().forEach(g -> { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(g); + if (null == gridInfo){ + throw new EpmetException("未查询到网格信息:"+g); + } + ArticlePublishRangeEntity articlePublishRange = ConvertUtils.sourceToTarget(gridInfo,ArticlePublishRangeEntity.class); + articlePublishRange.setCustomerId(customerId); + articlePublishRange.setArticleId(article.getId()); + articlePublishRange.setGridId(g); + articlePublishRange.setAgencyGridName(gridInfo.getGridNamePath()); + articlePublishRange.setAgencyId(gridInfo.getPid()); + articlePublishRange.setPublishStatus(ArticleConstant.PUBLISHED); + articlePublishRange.setId(null); + rangeList.add(articlePublishRange); + }); + articlePublishRangeService.insertBatch(rangeList); + // 5.文章标签 + UpdateCustomerTagCacheDTO updateCustomerTagCacheDTO = updateCustomerTagV2(formDTO.getUserId(), formDTO.getCustomerId(), article.getTags()); + addArticleTagsV2(updateCustomerTagCacheDTO,customerId,article.getId()); + // 6.更新网格tag + List updateGridTagCacheDTOS = updateGridTagV2(updateCustomerTagCacheDTO, customerId, formDTO.getGridIdList(), formDTO.getUserId()); + // 7.更新redis + try { + this.updateCacheCustomerTag(updateCustomerTagCacheDTO); + this.updateCacheGridTag(updateGridTagCacheDTOS); + } catch (Exception e) { + log.error("scanAllPassPublishArticle update redis exception", e); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + }else {// 存草稿 + + } + } + + @Override public PageData articleListV2(ArticleListFormDTO formDTO) { //1.获取工作人员缓存信息