Browse Source

Merge remote-tracking branch 'origin/dev_group_act_notice' into dev_group_act_notice

master
yinzuomei 4 years ago
parent
commit
b4ca1ecaac
  1. 24
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/form/UnReadListFormDTO.java
  2. 55
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/result/UnReadListResultDTO.java
  3. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  4. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/controller/NoticeReadRecordController.java
  5. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/NoticeReadRecordService.java
  6. 53
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeReadRecordServiceImpl.java
  7. 3
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  8. 64
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

24
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/notice/form/UnReadListFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.resi.group.dto.notice.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/4/21 下午4:17
* @DESC
*/
@Data
public class UnReadListFormDTO implements Serializable {
private static final long serialVersionUID = 2312033892813352767L;
public interface UnReadListForm{}
@NotBlank(message = "小组ID不能为空",groups = UnReadListForm.class)
private String groupId;
private String userId;
}

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

@ -0,0 +1,55 @@
package com.epmet.resi.group.dto.notice.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/4/21 下午4:21
* @DESC
*/
@Data
public class UnReadListResultDTO implements Serializable {
private static final long serialVersionUID = -2614612434488988741L;
/**
* 话题通知活动Id
*/
private String id;
/**
* 发布者的全称街道-姓氏先生/女士专项组显示真实名
*/
private String releaseUserName;
/**
* 话题发布者的头像Url
*/
private String releaseUserHeadPhoto;
/**
* 发布时间yyyy-MM-dd HH:mm
*/
private String releaseTime;
/**
* 内容
*/
private String content;
/**
* 如果有图片后台只返回第一张没有图片此列为空
*/
private String firstPhoto;
/**
* 数据类型(topic:话题 notice:通知 act:活动)
*/
private String contentType;
@JsonIgnore
private String userId;
}

18
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.UnReadListResultDTO;
import com.epmet.resi.group.dto.topic.result.LatestTenResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -277,4 +278,21 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
* @date 2021/4/21 上午10:22
*/
List<UserUnReadResultDTO> selectUserUnReadById(@Param("groupId")String groupId,@Param("ids")List<String> ids);
/**
* @Description 根据用户ID查询小组下未读的 通知活动
* @Param groupId
* @Param userId
* @author zxc
* @date 2021/4/21 下午4:39
*/
List<UserReadFlagResultDTO> selectUnReadByUserId(@Param("groupId")String groupId,@Param("userId")String userId);
/**
* @Description 查询未读的通知和活动信息
* @Param ids
* @author zxc
* @date 2021/4/21 下午5:08
*/
List<UnReadListResultDTO> selectUnReadInfos(@Param("ids")List<String> ids);
}

18
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/controller/NoticeReadRecordController.java

@ -24,13 +24,17 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.notice.service.NoticeReadRecordService;
import com.epmet.resi.group.dto.notice.form.NoticeReadListFormDTO;
import com.epmet.resi.group.dto.notice.form.ReadTypeFormDTO;
import com.epmet.resi.group.dto.notice.form.UnReadListFormDTO;
import com.epmet.resi.group.dto.notice.result.NoticeReadListResultDTO;
import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 小组通知组成员阅读记录表
@ -71,4 +75,18 @@ public class NoticeReadRecordController {
return new Result();
}
/**
* @Description 当前人员未读(通知活动)列表查询
* @Param tokenDto
* @Param formDTO
* @author zxc
* @date 2021/4/21 下午4:23
*/
@PostMapping("unreadlist")
public Result<List<UnReadListResultDTO>> unReadList(@LoginUser TokenDto tokenDto, @RequestBody UnReadListFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, UnReadListFormDTO.UnReadListForm.class);
formDTO.setUserId(tokenDto.getUserId());
return new Result<List<UnReadListResultDTO>>().ok(noticeReafdRecordService.unReadList(formDTO));
}
}

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/NoticeReadRecordService.java

@ -21,7 +21,11 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.modules.notice.entity.NoticeReadRecordEntity;
import com.epmet.resi.group.dto.notice.form.NoticeReadListFormDTO;
import com.epmet.resi.group.dto.notice.form.ReadTypeFormDTO;
import com.epmet.resi.group.dto.notice.form.UnReadListFormDTO;
import com.epmet.resi.group.dto.notice.result.NoticeReadListResultDTO;
import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO;
import java.util.List;
/**
* 小组通知组成员阅读记录表
@ -46,4 +50,13 @@ public interface NoticeReadRecordService extends BaseService<NoticeReadRecordEnt
* @Description 小组通知阅读状态修改
**/
void readType(ReadTypeFormDTO formDTO);
/**
* @Description 当前人员未读(通知活动)列表查询
* @Param tokenDto
* @Param formDTO
* @author zxc
* @date 2021/4/21 下午4:23
*/
List<UnReadListResultDTO> unReadList(UnReadListFormDTO formDTO);
}

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

@ -22,21 +22,30 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.UserInfoResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.group.dao.ResiGroupDao;
import com.epmet.modules.group.entity.ResiGroupEntity;
import com.epmet.modules.notice.dao.NoticeDao;
import com.epmet.modules.notice.dao.NoticeReadRecordDao;
import com.epmet.modules.notice.entity.NoticeEntity;
import com.epmet.modules.notice.entity.NoticeReadRecordEntity;
import com.epmet.modules.notice.redis.NoticeReadRecordRedis;
import com.epmet.modules.notice.service.NoticeReadRecordService;
import com.epmet.modules.topic.service.impl.ResiTopicServiceImpl;
import com.epmet.resi.group.dto.group.result.UserReadFlagResultDTO;
import com.epmet.resi.group.dto.notice.NoticeReadRecordDTO;
import com.epmet.resi.group.dto.notice.form.NoticeReadListFormDTO;
import com.epmet.resi.group.dto.notice.form.ReadTypeFormDTO;
import com.epmet.resi.group.dto.notice.form.UnReadListFormDTO;
import com.epmet.resi.group.dto.notice.result.NoticeReadListResultDTO;
import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
@ -49,6 +58,7 @@ import java.util.stream.Collectors;
* @since v1.0.0 2021-04-19
*/
@Service
@Slf4j
public class NoticeReadRecordServiceImpl extends BaseServiceImpl<NoticeReadRecordDao, NoticeReadRecordEntity> implements NoticeReadRecordService {
@Autowired
@ -57,6 +67,10 @@ public class NoticeReadRecordServiceImpl extends BaseServiceImpl<NoticeReadRecor
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private NoticeDao noticeDao;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private ResiTopicServiceImpl topicServiceImpl;
/**
* @param formDTO
@ -150,4 +164,43 @@ public class NoticeReadRecordServiceImpl extends BaseServiceImpl<NoticeReadRecor
}
/**
* @Description 当前人员未读(通知活动)列表查询
* @Param tokenDto
* @Param formDTO
* @author zxc
* @date 2021/4/21 下午4:23
*/
@Override
public List<UnReadListResultDTO> unReadList(UnReadListFormDTO formDTO) {
// 查询用户小组内未读的 通知 和 活动
List<UserReadFlagResultDTO> userUnRead = resiGroupDao.selectUnReadByUserId(formDTO.getGroupId(), formDTO.getUserId());
if (CollectionUtils.isEmpty(userUnRead)){
return new ArrayList<>();
}
// 活动 通知ID集合
List<String> ids = userUnRead.stream().map(m -> m.getId()).collect(Collectors.toList());
// 查询未读的通知和活动信息
List<UnReadListResultDTO> result = resiGroupDao.selectUnReadInfos(ids);
if (CollectionUtils.isEmpty(result)){
log.debug("用户存在未读消息,但是查询未读的通知和活动信息的时候失败了");
return new ArrayList<>();
}
// 查询小组信息
ResiGroupEntity resiGroup = resiGroupDao.selectById(formDTO.getGroupId());
List<String> userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList());
List<UserInfoResultDTO> userInfos = topicServiceImpl.disPoseUserInfo(resiGroup.getGroupType(), userIds);
if (!CollectionUtils.isEmpty(userInfos)){
result.forEach(r -> {
userInfos.forEach(u -> {
if (r.getUserId().equals(u.getUserId())){
r.setReleaseUserName(u.getReleaseUserName());
r.setReleaseUserHeadPhoto(u.getReleaseUserHeadPhoto());
}
});
});
}
return result;
}
}

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

@ -2284,6 +2284,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
* @date 2021/4/20 下午5:54
*/
public List<UserInfoResultDTO> disPoseUserInfo(String groupType,List<String> userIds){
if (CollectionUtils.isEmpty(userIds)){
return new ArrayList<>();
}
List<UserInfoResultDTO> result = new ArrayList<>();
Result<List<UserBaseInfoResultDTO>> userInfo = userOpenFeignClient.queryUserBaseInfo(userIds);
if (!userInfo.success()){

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

@ -703,4 +703,68 @@
)
</select>
<!-- 根据用户ID查询小组下未读的 通知、活动 -->
<select id="selectUnReadByUserId" resultType="com.epmet.resi.group.dto.group.result.UserReadFlagResultDTO">
(SELECT
USER_ID,
GROUP_ACT_ID AS id
FROM act_read_record
WHERE DEL_FLAG = 0
AND READ_FLAG = 'un_read'
AND USER_ID = #{userId}
AND GROUP_ID = #{groupId}
)
UNION ALL
(SELECT
USER_ID,
NOTICE_ID AS id
FROM notice_read_record
WHERE DEL_FLAG = 0
AND READ_FLAG = 'un_read'
AND USER_ID = #{userId}
AND GROUP_ID = #{groupId}
)
</select>
<!-- 查询未读的通知和活动信息 -->
<select id="selectUnReadInfos" resultType="com.epmet.resi.group.dto.notice.result.UnReadListResultDTO">
SELECT id,userId,releaseTime,content,contentType,firstPhoto FROM
(
(SELECT
ai.ID,
ai.CREATED_BY AS userId,
DATE_FORMAT(ai.CREATED_TIME,'%Y-%m-%d %H:%m:%s') AS releaseTime,
IFNULL(ac.CONTENT,'') AS content,
'act' AS contentType,
IFNULL(ac2.CONTENT,'') AS firstPhoto
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
WHERE ai.DEL_FLAG = '0'
AND (
<foreach collection="ids" item="id" separator=" OR ">
ai.id = #{id}
</foreach>
)
)
UNION ALL
(SELECT
n.ID,
n.CREATED_BY AS userId,
DATE_FORMAT(n.CREATED_TIME,'%Y-%m-%d %H:%m:%s') AS releaseTime,
n.CONTENT AS content,
'notice' AS contentType,
IFNULL(na.ATTACHMENT_URL,'') AS firstPhoto
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'
AND (
<foreach collection="ids" item="id" separator=" OR ">
n.id = #{id}
</foreach>
)
)
)temp
</select>
</mapper>

Loading…
Cancel
Save