Browse Source

涉及已读未读借口更正

dev_shibei_match
zxc 4 years ago
parent
commit
2695db6a7d
  1. 28
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/result/ReadStatusResultDTO.java
  2. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/result/UnReadListResultDTO.java
  3. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  4. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeReadRecordServiceImpl.java
  5. 19
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  6. 1
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/GroupMessageDao.xml
  7. 41
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

28
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/result/ReadStatusResultDTO.java

@ -0,0 +1,28 @@
package com.epmet.resi.group.dto.notice.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/4/25 上午9:06
* @DESC
*/
@Data
public class ReadStatusResultDTO implements Serializable {
private static final long serialVersionUID = 5013713195316328657L;
private String userId;
/**
* 活动通知ID
*/
private String id;
/**
* 阅读状态
*/
private String readFlag;
}

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/result/UnReadListResultDTO.java

@ -50,6 +50,11 @@ public class UnReadListResultDTO implements Serializable {
*/
private String contentType;
/**
* 通知是否过期(truefalse)
*/
private Boolean isExpirat;
@JsonIgnore
private String userId;
}

10
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.notice.result.ReadStatusResultDTO;
import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO;
import com.epmet.resi.group.dto.topic.result.GetPastTopicListV2ResultDTO;
import com.epmet.resi.group.dto.topic.result.LatestTenResultDTO;
@ -304,4 +305,13 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
* @date 2021/4/22 下午2:59
*/
List<GetPastTopicListV2ResultDTO> getPastTopicListV2ByIds(@Param("ids")List<String> ids);
/**
* @Description 根据用户ID和活动通知ID查询阅读状态
* @Param ids
* @Param userIds
* @author zxc
* @date 2021/4/25 上午9:10
*/
List<ReadStatusResultDTO> selectReadFlagByUserAndId(@Param("ids")List<String> ids,@Param("userIds")List<String> userIds);
}

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeReadRecordServiceImpl.java

@ -194,7 +194,7 @@ public class NoticeReadRecordServiceImpl extends BaseServiceImpl<NoticeReadRecor
}
// 查询小组信息
ResiGroupEntity resiGroup = resiGroupDao.selectById(formDTO.getGroupId());
List<String> userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList());
List<String> userIds = result.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList());
List<UserInfoResultDTO> userInfos = topicServiceImpl.disPoseUserInfo(resiGroup.getGroupType(), userIds);
if (!CollectionUtils.isEmpty(userInfos)){
result.forEach(r -> {

19
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -90,6 +90,7 @@ 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;
import com.epmet.resi.group.dto.member.result.ResiGroupMemberInfoRedisResultDTO;
import com.epmet.resi.group.dto.notice.result.ReadStatusResultDTO;
import com.epmet.resi.group.dto.topic.ResiTopicAttachmentDTO;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.TopicInfoDTO;
@ -2253,7 +2254,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
return result;
}
// 活动、通知、话题 创建者ID集合
List<String> userIds = latestTenData.stream().map(m -> m.getUserId()).collect(Collectors.toList());
List<String> userIds = latestTenData.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList());
// 活动、通知、话题 ID集合
List<String> ids = latestTenData.stream().map(m -> m.getId()).collect(Collectors.toList());
List<UserInfoResultDTO> userInfos = disPoseUserInfo(result.getGroupType(), userIds);
@ -2316,11 +2317,13 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
return new ArrayList<>();
}
ResiGroupEntity resiGroup = resiGroupDao.selectById(formDTO.getGroupId());
List<String> userIds = infos.stream().map(m -> m.getUserId()).collect(Collectors.toList());
List<String> userIds = infos.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList());
// 用户信息
List<UserInfoResultDTO> userInfos = this.disPoseUserInfo(resiGroup.getGroupType(), userIds);
// 根据用户ID和【活动、通知ID】查询阅读状态
List<ReadStatusResultDTO> readStatus = resiGroupDao.selectReadFlagByUserAndId(ids, userIds);
// 查询用户徽章信息
Result<List<UserBadgesResultDTO>> badgeResult = epmetUserOpenFeignClient.userBadges(new UserBadgesFormDTO());
Result<List<UserBadgesResultDTO>> badgeResult = epmetUserOpenFeignClient.userBadges(new UserBadgesFormDTO(formDTO.getCustomerId(),userIds));
if (!badgeResult.success()){
throw new RenException(ModuleConstant.GET_BADGE_INFO_ERR);
}
@ -2343,8 +2346,14 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
// 如果此贴是自己发布的,肯定是已读
i.setReadOrUnRead(ModuleConstant.READ_FLAG_YES);
}else {
// TODO 不是自己发布的
// 是否已读
if (!CollectionUtils.isEmpty(readStatus)){
readStatus.forEach(r -> {
if (i.getUserId().equals(r.getUserId()) && i.getId().equals(r.getId())){
i.setReadOrUnRead(r.getReadFlag());
}
});
}
}
// 徽章
if (!CollectionUtils.isEmpty(badgeResult.getData())){

1
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/GroupMessageDao.xml

@ -15,6 +15,7 @@
message_id
FROM group_message
WHERE DEL_FLAG = '0'
AND STATUS != 'hidden'
AND GROUP_ID = #{groupId}
order by created_time desc
</select>

41
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

@ -731,7 +731,7 @@
<!-- 查询未读的通知和活动信息 -->
<select id="selectUnReadInfos" resultType="com.epmet.resi.group.dto.notice.result.UnReadListResultDTO">
SELECT id,userId,releaseTime,content,contentType,firstPhoto FROM
SELECT id,userId,releaseTime,content,contentType,firstPhoto,isExpirat FROM
(
(SELECT
ai.ID,
@ -739,7 +739,8 @@
DATE_FORMAT(ai.CREATED_TIME,'%Y-%m-%d %H:%i:%s') AS releaseTime,
IFNULL(ac.CONTENT,'') AS content,
'act' AS contentType,
IFNULL(ac2.CONTENT,'') AS firstPhoto
IFNULL(ac2.CONTENT,'') AS firstPhoto,
false AS isExpirat
FROM group_act_info ai
LEFT JOIN group_act_content ac ON ac.GROUP_ACT_ID = ai.ID AND ac.CONTENT_TYPE = 'text'
LEFT JOIN group_act_content ac2 ON ac2.GROUP_ACT_ID = ai.ID AND ac2.CONTENT_TYPE = 'img' AND ac2.SORT = 1
@ -757,7 +758,8 @@
DATE_FORMAT(n.CREATED_TIME,'%Y-%m-%d %H:%i:%s') AS releaseTime,
n.CONTENT AS content,
'notice' AS contentType,
IFNULL(na.ATTACHMENT_URL,'') AS firstPhoto
IFNULL(na.ATTACHMENT_URL,'') AS firstPhoto,
(CASE WHEN UNIX_TIMESTAMP(n.EXPIRATION_TIME) <![CDATA[ < ]]> UNIX_TIMESTAMP(NOW()) THEN TRUE ELSE FALSE END) AS isExpirat
FROM notice n
LEFT JOIN notice_attachment na ON na.NOTICE_ID = n.ID AND na.DEL_FLAG = '0' AND na.ATTACHMENT_TYPE = 'image' AND na.SORT = 0
WHERE n.DEL_FLAG = '0'
@ -772,7 +774,7 @@
<!-- 根据IDs查询 topic,act,notice信息 -->
<select id="getPastTopicListV2ByIds" resultType="com.epmet.resi.group.dto.topic.result.GetPastTopicListV2ResultDTO">
SELECT id,userId,releaseTime,content,status,issueId,contentType FROM
SELECT id,userId,releaseTime,content,status,issueId,contentType,isExpirat FROM
((SELECT
t.ID,
t.CREATED_BY AS userId,
@ -832,4 +834,35 @@
ORDER BY releaseTime DESC
</select>
<!-- 根据用户ID和【活动、通知ID】查询阅读状态 -->
<select id="selectReadFlagByUserAndId" resultType="com.epmet.resi.group.dto.notice.result.ReadStatusResultDTO">
(SELECT USER_ID, read_flag, GROUP_ACT_ID AS id
FROM act_read_record WHERE DEL_FLAG = 0
AND (
<foreach collection="userIds" item="userId" separator=" OR ">
USER_ID = #{userId}
</foreach>
)
AND (
<foreach collection="ids" item="id" separator=" OR ">
GROUP_ACT_ID = #{id}
</foreach>
)
)
UNION ALL
(SELECT USER_ID, read_flag, NOTICE_ID AS id
FROM notice_read_record WHERE DEL_FLAG = 0
AND (
<foreach collection="userIds" item="userId" separator=" OR ">
USER_ID = #{userId}
</foreach>
)
AND (
<foreach collection="ids" item="id" separator=" OR ">
NOTICE_ID = #{id}
</foreach>
)
)
</select>
</mapper>

Loading…
Cancel
Save