From 502e52eef19ff2076253d87a8d2ce985caefa7c4 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Wed, 28 Apr 2021 14:40:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=80=E6=9C=89=E4=BF=A1=E6=81=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=B7=A5=E4=BD=9C=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/ResiTopicController.java | 16 +++- .../com/epmet/service/ResiTopicService.java | 10 +++ .../service/impl/ResiTopicServiceImpl.java | 29 ++++++- .../dto/topic/form/AllMessagesFormDTO.java | 32 ++++++++ .../topic/result/AllMessagesResultDTO.java | 78 +++++++++++++++++++ .../group/feign/ResiGroupOpenFeignClient.java | 10 +++ .../ResiGroupOpenFeignClientFallback.java | 5 ++ .../epmet/modules/group/dao/ResiGroupDao.java | 9 +++ .../topic/controller/ResiTopicController.java | 13 ++++ .../topic/service/ResiTopicService.java | 9 +++ .../service/impl/ResiTopicServiceImpl.java | 50 ++++++++++++ .../resources/mapper/group/ResiGroupDao.xml | 67 ++++++++++++++++ 12 files changed, 323 insertions(+), 5 deletions(-) create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/AllMessagesFormDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/AllMessagesResultDTO.java diff --git a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiTopicController.java b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiTopicController.java index 6686e605f6..444b81dc02 100644 --- a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiTopicController.java +++ b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiTopicController.java @@ -6,8 +6,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.GovCommentResultDTO; +import com.epmet.resi.group.dto.topic.form.AllMessagesFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicDetailFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; +import com.epmet.resi.group.dto.topic.result.AllMessagesResultDTO; import com.epmet.resi.group.dto.topic.result.GovHiddenTopicInfoResultDTO; import com.epmet.resi.group.dto.topic.result.GovTopicInfoResultDTO; import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; @@ -70,6 +72,18 @@ public class ResiTopicController { return resiTopicService.topicDetail(topicDetailFormDTO); } - + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param tokenDto + * @Param topicPageFormDTO + * @author zxc + * @date 2021/4/28 上午10:41 + */ + @PostMapping("allmessages") + public Result> allMessages(@LoginUser TokenDto tokenDto, @RequestBody AllMessagesFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, AllMessagesFormDTO.AllMessagesForm.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(resiTopicService.allMessages(formDTO)); + } } diff --git a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/ResiTopicService.java b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/ResiTopicService.java index ac12a9fcfe..0b30bc2734 100644 --- a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/ResiTopicService.java +++ b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/ResiTopicService.java @@ -3,8 +3,10 @@ package com.epmet.service; import com.epmet.commons.tools.utils.Result; import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.GovCommentResultDTO; +import com.epmet.resi.group.dto.topic.form.AllMessagesFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicDetailFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; +import com.epmet.resi.group.dto.topic.result.AllMessagesResultDTO; import com.epmet.resi.group.dto.topic.result.GovHiddenTopicInfoResultDTO; import com.epmet.resi.group.dto.topic.result.GovTopicInfoResultDTO; import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; @@ -53,5 +55,13 @@ public interface ResiTopicService { **/ Result> topicComments(ResiQueryCommentFormDTO queryCommentFormDTO); + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param formDTO + * @author zxc + * @date 2021/4/28 下午1:29 + */ + List allMessages(AllMessagesFormDTO formDTO); + } diff --git a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/ResiTopicServiceImpl.java b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/ResiTopicServiceImpl.java index a51eebbed6..260dee432e 100644 --- a/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/ResiTopicServiceImpl.java @@ -1,20 +1,21 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.Result; import com.epmet.feign.ResiGroupFeignClient; import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.GovCommentResultDTO; import com.epmet.resi.group.dto.comment.result.ResiCommentResultDTO; +import com.epmet.resi.group.dto.topic.form.AllMessagesFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicDetailFormDTO; import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; -import com.epmet.resi.group.dto.topic.result.GovHiddenTopicInfoResultDTO; -import com.epmet.resi.group.dto.topic.result.GovTopicInfoResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; -import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; +import com.epmet.resi.group.dto.topic.result.*; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.service.ResiTopicService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; @@ -24,6 +25,8 @@ public class ResiTopicServiceImpl implements ResiTopicService { @Autowired private ResiGroupFeignClient resiGroupFeignClient; + @Autowired + private ResiGroupOpenFeignClient resiGroupOpenFeignClient; /** * @Description 政府端群组管理-屏蔽话题列表查询 @@ -125,4 +128,22 @@ public class ResiTopicServiceImpl implements ResiTopicService { return new Result>().ok(commentsResult); } + + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param formDTO + * @author zxc + * @date 2021/4/28 下午1:29 + */ + @Override + public List allMessages(AllMessagesFormDTO formDTO) { + Result> listResult = resiGroupOpenFeignClient.allMessages(formDTO); + if (!listResult.success()){ + throw new RenException(listResult.getMsg()); + } + if (CollectionUtils.isEmpty(listResult.getData())){ + return new ArrayList<>(); + } + return listResult.getData(); + } } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/AllMessagesFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/AllMessagesFormDTO.java new file mode 100644 index 0000000000..335790f7cd --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/AllMessagesFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.resi.group.dto.topic.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/28 上午10:43 + * @DESC + */ +@Data +public class AllMessagesFormDTO implements Serializable { + + private static final long serialVersionUID = -2658793886922936733L; + + public interface AllMessagesForm{} + + @NotBlank(message = "小组ID不能为空",groups = AllMessagesForm.class) + private String groupId; + + @NotNull(message = "pageNo不能为空",groups = AllMessagesForm.class) + private Integer pageNo; + + @NotNull(message = "pageSize不能为空",groups = AllMessagesForm.class) + private Integer pageSize; + + private String customerId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/AllMessagesResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/AllMessagesResultDTO.java new file mode 100644 index 0000000000..378b3ad861 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/AllMessagesResultDTO.java @@ -0,0 +1,78 @@ +package com.epmet.resi.group.dto.topic.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/4/28 上午10:51 + * @DESC + */ +@Data +public class AllMessagesResultDTO implements Serializable { + + private static final long serialVersionUID = -4123381714064953276L; + + /** + * 话题、通知、活动Id + */ + private String id; + + /** + * 发布者的全称(街道-姓氏先生/女士)【专项组显示真实名】 + */ + private String userNickName; + + /** + * 发布者的头像Url + */ + private String userHeadPhoto; + + /** + * 发布时间yyyy-MM-dd + */ + private String releaseTime; + + /** + * 内容 + */ + private String content; + + /** + * 话题状态(discussing进行中、closed已关闭) + */ + private String status; + + /** + * 数据类型(topic:话题 notice:通知 act:活动) + */ + private String contentType; + + /** + * 徽章Url集合 + */ + private List badgeList = new ArrayList<>(); + + /** + * 通知是否过期(true:是 false:否) + */ + private Boolean isExpirat; + + /** + * 是否变更,yes,no + */ + private String isChange = "no"; + + /** + * 发布者ID + */ + private String userId; + + /** + * 第一张图 + */ + private String firstPhoto; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java index d604e0abc6..26dab5da6b 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java @@ -216,4 +216,14 @@ public interface ResiGroupOpenFeignClient { **/ @PostMapping(value = "/resi/group/topic/topicattachmentlist") Result topicAttachmentList(@RequestBody TopicAttachmentFormDTO formDTO); + + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param tokenDto + * @Param topicPageFormDTO + * @author zxc + * @date 2021/4/28 上午10:41 + */ + @PostMapping("/resi/group/topic/allmessages") + Result> allMessages(@RequestBody AllMessagesFormDTO formDTO); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java index b53570bfa8..544e18c6ba 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java @@ -157,4 +157,9 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result topicAttachmentList(TopicAttachmentFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "topicAttachmentList", formDTO); } + + @Override + public Result> allMessages(AllMessagesFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "allMessages", formDTO); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java index 6404010230..44d94c04aa 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java @@ -26,6 +26,7 @@ import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.notice.result.ReadStatusResultDTO; import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO; +import com.epmet.resi.group.dto.topic.result.AllMessagesResultDTO; import com.epmet.resi.group.dto.topic.result.GetPastTopicListV2ResultDTO; import com.epmet.resi.group.dto.topic.result.LatestTenResultDTO; import org.apache.ibatis.annotations.Mapper; @@ -306,6 +307,14 @@ public interface ResiGroupDao extends BaseDao { */ List getPastTopicListV2ByIds(@Param("ids")List ids); + /** + * @Description 根据IDs查询 topic,act,notice信息【工作端】 + * @Param ids + * @author zxc + * @date 2021/4/28 下午1:56 + */ + List getAllMessagesOrg(@Param("ids")List ids); + /** * @Description 根据用户ID和【活动、通知ID】查询阅读状态 * @Param ids diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index aa8158ede0..d1b5a15106 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -470,4 +470,17 @@ public class ResiTopicController { formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result>().ok(topicService.getPastTopicListV2(formDTO)); } + + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param tokenDto + * @Param topicPageFormDTO + * @author zxc + * @date 2021/4/28 上午10:41 + */ + @PostMapping("allmessages") + public Result> allMessages(@RequestBody AllMessagesFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, GetPastTopicListV2FormDTO.GetPastTopicListV2Form.class); + return new Result>().ok(topicService.allMessages(formDTO)); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java index 134a4b9885..064255c04c 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java @@ -380,4 +380,13 @@ public interface ResiTopicService extends BaseService { * @date 2021/4/27 下午1:50 */ List disPoseUserInfo(String groupType, List userIds); + + /** + * @Description 小组内所有历史消息【话题,通知,活动】 + * @Param tokenDto + * @Param topicPageFormDTO + * @author zxc + * @date 2021/4/28 上午10:41 + */ + List allMessages(AllMessagesFormDTO formDTO); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index abecb8e4e6..9bb0d18e3c 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -2475,6 +2475,56 @@ public class ResiTopicServiceImpl extends BaseServiceImpl allMessages(AllMessagesFormDTO formDTO) { + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> groupMessageDao.selectNeedIds(formDTO.getGroupId())); + List ids = pageInfo.getList(); + if (CollectionUtils.isEmpty(ids)){ + return new ArrayList<>(); + } + // 根据IDs查询 topic,act,notice信息 + List allMessages = resiGroupDao.getAllMessagesOrg(ids); + if (CollectionUtils.isEmpty(allMessages)){ + return new ArrayList<>(); + } + // 查询小组类型 + ResiGroupEntity resiGroup = resiGroupDao.selectById(formDTO.getGroupId()); + List userIds = allMessages.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList()); + // 查询用户头像,姓名 + List userInfos = disPoseUserInfo(resiGroup.getGroupType(), userIds); + if (CollectionUtils.isEmpty(userInfos)){ + throw new RenException("未查询到用户信息"); + } + Result> badgeResult = epmetUserOpenFeignClient.userBadges(new UserBadgesFormDTO(formDTO.getCustomerId(),userIds)); + if (!badgeResult.success()){ + throw new RenException(ModuleConstant.GET_BADGE_INFO_ERR); + } + allMessages.forEach(a -> { + // 用户头像姓名赋值 + userInfos.forEach(u -> { + if (a.getUserId().equals(u.getUserId())){ + a.setUserNickName(u.getReleaseUserName()); + a.setUserHeadPhoto(u.getReleaseUserHeadPhoto()); + } + }); + // 徽章 + if (!CollectionUtils.isEmpty(badgeResult.getData())){ + badgeResult.getData().forEach(b -> { + if (a.getUserId().equals(b.getUserId())){ + a.setBadgeList(b.getBadgeIcons()); + } + }); + } + }); + return allMessages; + } + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml index 0abccca57f..a010334abd 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml @@ -870,4 +870,71 @@ ) + + +