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 1594d07c7d..71a1af6278 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 @@ -244,4 +244,14 @@ public interface ResiGroupOpenFeignClient { */ @PostMapping("resi/group/group/groupPointDetail/{groupId}") Result groupPointDetail(@PathVariable String groupId); + + /** + * @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 f281181414..5ed4b1549a 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 @@ -205,4 +205,9 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result groupPointDetail(String groupId) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId); } + + @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 258c117534..9bbd85cdff 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 com.epmet.resi.group.dto.member.result.GroupAchievementDTO; @@ -316,6 +317,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/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 2bf04ad54d..3f767abd43 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java @@ -39,6 +39,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.constant.ReadFlagConstant; import com.epmet.dto.form.*; +import com.epmet.dto.result.UserInfoResultDTO; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.dto.result.UserRoleResultDTO; import com.epmet.feign.EpmetMessageOpenFeignClient; @@ -873,12 +874,24 @@ public class ResiGroupServiceImpl extends BaseServiceImpl groupLeaderUserInfo = this.getGroupLeaderUserInfo(formDTO.getGroupId()); - if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { - resultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); + if("branch".equals(entity.getGroupType())){ + //获取组长信息 + if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { + String street = groupLeaderUserInfo.getData().getStreet() == null ? "" : groupLeaderUserInfo.getData().getStreet() + "-"; + resultDTO.setLeaderName(street + groupLeaderUserInfo.getData().getSurname() + groupLeaderUserInfo.getData().getName()); + } else { + logger.warn("组长注册信息查询失败,msg:{},groupId:{}", groupLeaderUserInfo.getMsg(), formDTO.getGroupId()); + } } else { - logger.warn("组长注册信息查询失败,msg:{},groupId:{}", groupLeaderUserInfo.getMsg(), formDTO.getGroupId()); + //获取组长信息 + if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { + resultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); + } else { + logger.warn("组长注册信息查询失败,msg:{},groupId:{}", groupLeaderUserInfo.getMsg(), formDTO.getGroupId()); + } } return new Result().ok(resultDTO); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java index 36a20ffde6..c0e8521ef2 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java @@ -479,8 +479,8 @@ public class NoticeServiceImpl extends BaseServiceImpl url.append(user.getHeadImgUrl()); } }); - resultDTO.setReleaseUserName(name.toString()); - resultDTO.setReleaseUserHeadPhoto(url.toString()); + resultDTO.setReleaseUserName(String.valueOf(name)); + resultDTO.setReleaseUserHeadPhoto(String.valueOf(url)); fileList.forEach(f -> { if ("image".equals(f.getType())) { imageList.add(f); 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 f47871a741..af230b27e3 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 @@ -471,4 +471,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 93275aaccf..d8f48aa3ea 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 @@ -382,4 +382,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 f10c4bb617..8b9a4329cf 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 @@ -1222,9 +1222,26 @@ public class ResiTopicServiceImpl extends BaseServiceImpl top.setBadgeList(Collections.EMPTY_LIST)); + } else { + pastTopics.forEach(top -> top.setBadgeList(Collections.EMPTY_LIST)); + } } + + //支部小组人员返真实姓名 + ResiGroupEntity entity = resiGroupDao.selectById(topicPageFormDTO.getGroupId()); + if("".equals(entity.getGroupType())){ + List userIds = pastTopics.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList()); + List userInfos = resiTopicService.disPoseUserInfo(entity.getGroupType(), userIds); + pastTopics.forEach(item -> { + userInfos.forEach(u->{ + if(item.getUserId().equals(u.getUserId())){ + item.setReleaseUserName(u.getReleaseUserName()); + } + }); + }); + } + } return new Result>().ok(pastTopics); @@ -2630,6 +2647,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 88bc6edc7a..6055f8c243 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 @@ -886,4 +886,71 @@ ) + + +