From 8bee2f9c9cf7b016cebb2a99867fd9d9ed9d1af1 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Wed, 21 Apr 2021 14:20:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9110=E6=9D=A1=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/result/UserReadFlagResultDTO.java | 28 ++++ .../dto/group/result/UserUnReadResultDTO.java | 26 +++ .../topic/result/GetLatestV2ResultDTO.java | 10 +- .../dto/topic/result/LatestTenResultDTO.java | 4 +- .../epmet/modules/group/dao/ResiGroupDao.java | 36 +++++ .../member/dao/ResiGroupMemberDao.java | 9 ++ .../service/impl/ResiTopicServiceImpl.java | 106 +++++++++++- .../epmet/modules/utils/ModuleConstant.java | 5 + .../resources/mapper/group/ResiGroupDao.xml | 153 ++++++++++++++++++ .../mapper/member/ResiGroupMemberDao.xml | 11 ++ .../epmet/dto/result/UserInfoResultDTO.java | 28 ++++ 11 files changed, 408 insertions(+), 8 deletions(-) create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserReadFlagResultDTO.java create mode 100644 epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserUnReadResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoResultDTO.java diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserReadFlagResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserReadFlagResultDTO.java new file mode 100644 index 0000000000..aec2c9f63f --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserReadFlagResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.resi.group.dto.group.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/21 上午9:43 + * @DESC + */ +@Data +public class UserReadFlagResultDTO implements Serializable { + + private static final long serialVersionUID = -5727870985731706332L; + + /** + * 活动,通知 ID + */ + private String id; + + private String userId; + + /** + * 阅读状态,read:已读,un_read:未读 + */ + private String readFlag; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserUnReadResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserUnReadResultDTO.java new file mode 100644 index 0000000000..cf602385ea --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserUnReadResultDTO.java @@ -0,0 +1,26 @@ +package com.epmet.resi.group.dto.group.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/21 上午9:43 + * @DESC + */ +@Data +public class UserUnReadResultDTO implements Serializable { + + private static final long serialVersionUID = -5727870085731706332L; + + /** + * 活动,通知 ID + */ + private String id; + + /** + * 未读数量 + */ + private Integer unRead; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetLatestV2ResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetLatestV2ResultDTO.java index ee37afd1bf..5a5e707f73 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetLatestV2ResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetLatestV2ResultDTO.java @@ -26,19 +26,19 @@ public class GetLatestV2ResultDTO implements Serializable { private String groupType; /** - * 是否显示通知按钮 + * 是否显示通知按钮(当前人员是否为组长) */ - private String noticeBut; + private Boolean noticeBut = false; /** - * 是否显示活动按钮 + * 是否显示活动按钮(当前组为支部组且当前人是组长) */ - private String actBut; + private Boolean actBut = false; /** * 是否存在未读消息 */ - private Boolean unReadNews; + private Boolean unReadNews = false; /** * 近十条数据 diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/LatestTenResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/LatestTenResultDTO.java index 0f8d7c3222..8efe0feebe 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/LatestTenResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/LatestTenResultDTO.java @@ -53,7 +53,7 @@ public class LatestTenResultDTO implements Serializable { /** * 是否本人 */ - private String releaseUserFlag; + private Boolean releaseUserFlag; /** * 如果有图片,后台只返回第一张,没有图片此列为空 @@ -93,7 +93,7 @@ public class LatestTenResultDTO implements Serializable { this.releaseTimed = ""; this.content = ""; this.status = ""; - this.releaseUserFlag = ""; + this.releaseUserFlag = false; this.firstPhoto = ""; this.issueId = ""; this.shiftIssueFlag = false; 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 b15f08293f..59e959b97f 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 @@ -24,6 +24,7 @@ import com.epmet.resi.group.dto.group.ResiGroupDTO; import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; +import com.epmet.resi.group.dto.topic.result.LatestTenResultDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -241,4 +242,39 @@ public interface ResiGroupDao extends BaseDao { * @Description 分页查询网格下所有小组列表 **/ List selectAllGroupList(AllGroupListFormDTO formDTO); + + /** + * @Description 查询 话题、通知、活动最近10条数据 + * @Param groupId + * @author zxc + * @date 2021/4/20 下午4:14 + */ + List selectLatestTen(@Param("groupId")String groupId); + + /** + * @Description 查询此人在小组内未读数量 + * @Param groupId + * @Param userId + * @author zxc + * @date 2021/4/20 下午5:23 + */ + Integer selectUserUnRead(@Param("groupId")String groupId,@Param("userId")String userId); + + /** + * @Description 查询阅读状态 + * @Param groupId + * @Param userId + * @author zxc + * @date 2021/4/21 上午9:45 + */ + List selectUserReadFlag(@Param("groupId")String groupId,@Param("userIds")List userIds,@Param("ids")List ids); + + /** + * @Description 根据 活动或通知查询 未读人数 + * @Param groupId + * @Param ids + * @author zxc + * @date 2021/4/21 上午10:22 + */ + List selectUserUnReadById(@Param("groupId")String groupId,@Param("ids")List ids); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java index 6c6618cc9a..4205eb483d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java @@ -159,4 +159,13 @@ public interface ResiGroupMemberDao extends BaseDao { * @Date 2021/4/19 13:54 **/ Integer selectCountMember(String groupId); + + /** + * @Description 查询此人组内身份 + * @Param groupId + * @Param userId + * @author zxc + * @date 2021/4/20 下午4:03 + */ + String selectUserRole(@Param("groupId")String groupId, @Param("userId")String userId); } 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 f3a4bb6f71..ed1a9c2aaa 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 @@ -82,6 +82,8 @@ import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.ResiCommentResultDTO; import com.epmet.resi.group.dto.group.ResiGroupInfoRedisDTO; import com.epmet.resi.group.dto.group.ResiGroupStatisticalInfoRedisDTO; +import com.epmet.resi.group.dto.group.result.UserReadFlagResultDTO; +import com.epmet.resi.group.dto.group.result.UserUnReadResultDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; @@ -109,6 +111,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.validation.constraints.NotBlank; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -2190,7 +2193,108 @@ public class ResiTopicServiceImpl extends BaseServiceImpl NumConstant.ZERO){ + // 存在未读消息 + result.setUnReadNews(true); + } + // 查询 话题、通知、活动最近10条记录 + List latestTenData = resiGroupDao.selectLatestTen(groupId); + if (CollectionUtils.isEmpty(latestTenData)){ + result.setList(new ArrayList<>()); + return result; + } + // 活动、通知、话题 创建者ID集合 + List userIds = latestTenData.stream().map(m -> m.getUserId()).collect(Collectors.toList()); + // 活动、通知、话题 ID集合 + List ids = latestTenData.stream().map(m -> m.getId()).collect(Collectors.toList()); + List userInfos = disPoseUserInfo(result.getGroupType(), userIds); + // 查询用户的 活动或通知的 阅读状态 + List userReadFlag = resiGroupDao.selectUserReadFlag(groupId, userIds, ids); + // 查询小组下的 通知或活动 未读人数 + List userUnReadCount = resiGroupDao.selectUserUnReadById(groupId, ids); + latestTenData.forEach(l -> { + // 是否转议题,true:是,false:不是 + l.setShiftIssueFlag(StringUtils.isNotEmpty(l.getIssueId())); + // 是不是本人,true:是,false:不是 + l.setReleaseUserFlag(userId.equals(l.getUserId())); + // 用户的名字,头像赋值 + if (!CollectionUtils.isEmpty(userIds)){ + userInfos.forEach(u -> { + if (l.getUserId().equals(u.getUserId())){ + l.setReleaseUserName(u.getReleaseUserName()); + l.setReleaseUserHeadPhoto(u.getReleaseUserHeadPhoto()); + } + }); + } + // 用户已读,未读 + if (!CollectionUtils.isEmpty(userReadFlag)){ + userReadFlag.forEach(u -> { + if (l.getUserId().equals(u.getUserId()) && l.getId().equals(u.getId())){ + l.setReadOrUnRead(u.getReadFlag()); + } + }); + } + // 活动,通知未读人数 + if (!CollectionUtils.isEmpty(userUnReadCount)){ + userUnReadCount.forEach(u -> { + if (l.getId().equals(u.getId())){ + l.setUnReadCount(u.getUnRead()); + } + }); + } + }); + return result; + } + + /** + * @Description 查询用户信息【头像,名字】 + * @Param groupType + * @Param userIds + * @author zxc + * @date 2021/4/20 下午5:54 + */ + public List disPoseUserInfo(String groupType,List userIds){ + List result = new ArrayList<>(); + Result> userInfo = userOpenFeignClient.queryUserBaseInfo(userIds); + if (!userInfo.success()){ + throw new RenException(ModuleConstant.GET_USER_INFO_ERR); + } + List userInfos = userInfo.getData(); + if (CollectionUtils.isEmpty(userInfos)){ + return new ArrayList<>(); + } + userInfos.forEach(u -> { + UserInfoResultDTO ui = new UserInfoResultDTO(); + ui.setUserId(u.getUserId()); + ui.setReleaseUserHeadPhoto(u.getHeadImgUrl()); + if (groupType.equals(ModuleConstant.GROUP_TYPE_BRANCH)){ + ui.setReleaseUserName(u.getRealName()); + }else { + ui.setReleaseUserName(u.getShowName()); + } + result.add(ui); + }); + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + return result; } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java index 1d77920606..15334f14e9 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java @@ -387,4 +387,9 @@ public interface ModuleConstant extends Constant { String GROUP_TYPE_BRANCH = "branch"; String IS_PARTY_MEMBER_ERR = "查询此人是不是党员失败了"; + + String GROUP_MEMBER_FLAG = "leader"; + + String GET_USER_INFO_ERR = "查询用户信息失败了"; + } 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 fc8a6280f1..c077e284ac 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 @@ -550,4 +550,157 @@ #{pageNo}, #{pageSize} + + + + + + + + + + + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml index ac0217c6fe..7cf0ffb00a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml @@ -215,4 +215,15 @@ rgm.RESI_GROUP_ID = #{groupId} AND rgm.DEL_FLAG = '0' + + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoResultDTO.java new file mode 100644 index 0000000000..cccc7c04ce --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/20 下午5:51 + * @DESC + */ +@Data +public class UserInfoResultDTO implements Serializable { + + private static final long serialVersionUID = 6003815400792121273L; + + private String userId; + + /** + * 发布者的全称(街道-姓氏先生/女士)【专项组显示真实名】 + */ + private String releaseUserName; + + /** + * 话题发布者的头像Url + */ + private String releaseUserHeadPhoto; +}