Browse Source

近10条记录

dev_shibei_match
zxc 4 years ago
parent
commit
8bee2f9c9c
  1. 28
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserReadFlagResultDTO.java
  2. 26
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/UserUnReadResultDTO.java
  3. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetLatestV2ResultDTO.java
  4. 4
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/LatestTenResultDTO.java
  5. 36
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  6. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java
  7. 106
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  8. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java
  9. 153
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  10. 11
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml
  11. 28
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoResultDTO.java

28
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;
}

26
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;
}

10
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;
/**
* 近十条数据

4
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;

36
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<ResiGroupEntity> {
* @Description 分页查询网格下所有小组列表
**/
List<AllGroupListResultDTO> selectAllGroupList(AllGroupListFormDTO formDTO);
/**
* @Description 查询 话题通知活动最近10条数据
* @Param groupId
* @author zxc
* @date 2021/4/20 下午4:14
*/
List<LatestTenResultDTO> 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<UserReadFlagResultDTO> selectUserReadFlag(@Param("groupId")String groupId,@Param("userIds")List<String> userIds,@Param("ids")List<String> ids);
/**
* @Description 根据 活动或通知查询 未读人数
* @Param groupId
* @Param ids
* @author zxc
* @date 2021/4/21 上午10:22
*/
List<UserUnReadResultDTO> selectUserUnReadById(@Param("groupId")String groupId,@Param("ids")List<String> ids);
}

9
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<ResiGroupMemberEntity> {
* @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);
}

106
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<ResiTopicDao, ResiTopi
*/
@Override
public GetLatestV2ResultDTO getLatestV2(GetLatestV2FormDTO formDTO) {
return null;
GetLatestV2ResultDTO result = new GetLatestV2ResultDTO();
String userId = formDTO.getUserId();
String groupId = formDTO.getGroupId();
// 查询此人在小组内的身份
String leaderFlag = resiGroupMemberDao.selectUserRole(groupId, userId);
result.setUserRole(leaderFlag);
ResiGroupEntity resiGroup = resiGroupDao.selectById(groupId);
result.setGroupType(resiGroup.getGroupType());
if (leaderFlag.equals(ModuleConstant.GROUP_MEMBER_FLAG)){
// 当前人员是组长,显示通知按钮
result.setNoticeBut(true);
}
if (result.getGroupType().equals(ModuleConstant.GROUP_TYPE_BRANCH) && leaderFlag.equals(ModuleConstant.GROUP_MEMBER_FLAG)){
// 当前组为支部组且当前人是组长,显示活动按钮
result.setActBut(true);
}
Integer unRead = resiGroupDao.selectUserUnRead(groupId, userId);
if (unRead > NumConstant.ZERO){
// 存在未读消息
result.setUnReadNews(true);
}
// 查询 话题、通知、活动最近10条记录
List<LatestTenResultDTO> latestTenData = resiGroupDao.selectLatestTen(groupId);
if (CollectionUtils.isEmpty(latestTenData)){
result.setList(new ArrayList<>());
return result;
}
// 活动、通知、话题 创建者ID集合
List<String> userIds = latestTenData.stream().map(m -> m.getUserId()).collect(Collectors.toList());
// 活动、通知、话题 ID集合
List<String> ids = latestTenData.stream().map(m -> m.getId()).collect(Collectors.toList());
List<UserInfoResultDTO> userInfos = disPoseUserInfo(result.getGroupType(), userIds);
// 查询用户的 活动或通知的 阅读状态
List<UserReadFlagResultDTO> userReadFlag = resiGroupDao.selectUserReadFlag(groupId, userIds, ids);
// 查询小组下的 通知或活动 未读人数
List<UserUnReadResultDTO> 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<UserInfoResultDTO> disPoseUserInfo(String groupType,List<String> userIds){
List<UserInfoResultDTO> result = new ArrayList<>();
Result<List<UserBaseInfoResultDTO>> userInfo = userOpenFeignClient.queryUserBaseInfo(userIds);
if (!userInfo.success()){
throw new RenException(ModuleConstant.GET_USER_INFO_ERR);
}
List<UserBaseInfoResultDTO> 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;
}
}

5
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 = "查询用户信息失败了";
}

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

@ -550,4 +550,157 @@
#{pageNo}, #{pageSize}
</select>
<!-- 查询 话题、通知、活动最近10条数据 -->
<select id="selectLatestTen" resultType="com.epmet.resi.group.dto.topic.result.LatestTenResultDTO">
SELECT id,userId,releaseTime,content,status,issueId,contentType,firstPhoto FROM
((SELECT
t.ID,
t.CREATED_BY AS userId,
t.CREATED_TIME AS releaseTime,
t.TOPIC_CONTENT AS content,
t.`STATUS` AS status,
IFNULL(t.ISSUE_ID,'') AS issueId,
'topic' AS contentType,
IFNULL(ta.ATTACHMENT_URL,'') AS firstPhoto
FROM resi_topic t
LEFT JOIN resi_topic_attachment ta ON ta.TOPIC_ID = t.ID AND ta.ATTACHMENT_TYPE = 'image' AND ta.SORT = 0
WHERE t.DEL_FLAG = '0'
AND t.`STATUS` != 'hidden'
AND t.GROUP_ID = #{groupId}
ORDER BY t.CREATED_TIME DESC
LIMIT 10)
UNION ALL
(SELECT
ai.ID,
ai.CREATED_BY AS userId,
ai.CREATED_TIME AS releaseTime,
IFNULL(ac.CONTENT,'') AS content,
ai.`STATUS` AS status,
'' AS issueId,
'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 ai.GROUP_ID = #{groupId}
ORDER BY ai.CREATED_TIME DESC
LIMIT 10)
UNION ALL
(SELECT
n.ID,
n.CREATED_BY AS userId,
n.CREATED_TIME AS releaseTime,
n.CONTENT AS content,
'' AS status,
'' AS issueId,
'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 n.GROUP_ID = #{groupId}
ORDER BY n.CREATED_TIME DESC
LIMIT 10)
)temp
ORDER BY releaseTime DESC
LIMIT 10
</select>
<!-- 查询此人在小组内未读数量 -->
<select id="selectUserUnRead" resultType="java.lang.Integer">
SELECT IFNULL(SUM(unRead),0) FROM
((SELECT
COUNT( 1 ) AS unRead
FROM act_read_record
WHERE DEL_FLAG = 0
AND `READ_FLAG` = 'un_read'
AND USER_ID = #{userId}
AND GROUP_ID = #{groupId})
UNION ALL
(SELECT
COUNT( 1 ) AS unRead
FROM notice_read_record
WHERE DEL_FLAG = 0
AND READ_FLAG = 'un_read'
AND USER_ID = #{userId}
AND GROUP_ID = #{groupId})) temp
</select>
<!-- 查询阅读状态 -->
<select id="selectUserReadFlag" resultType="com.epmet.resi.group.dto.group.result.UserReadFlagResultDTO">
(SELECT
READ_FLAG,
USER_ID,
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>
)
AND GROUP_ID = #{groupId}
)
UNION ALL
(SELECT
READ_FLAG,
USER_ID,
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>
)
AND GROUP_ID = #{groupId}
)
</select>
<!-- 根据 活动或通知查询 未读人数 -->
<select id="selectUserUnReadById" resultType="com.epmet.resi.group.dto.group.result.UserUnReadResultDTO">
(SELECT
GROUP_ACT_ID AS id,
COUNT( 1 ) AS unRead
FROM act_read_record
WHERE DEL_FLAG = 0
AND (
<foreach collection="ids" item="id" separator=" OR ">
GROUP_ACT_ID = #{id}
</foreach>
)
AND `READ_FLAG` = 'un_read'
AND GROUP_ID = #{groupId}
GROUP BY GROUP_ACT_ID
)
UNION ALL
(SELECT
NOTICE_ID AS id,
COUNT( 1 ) AS unRead
FROM notice_read_record
WHERE DEL_FLAG = 0
AND (
<foreach collection="ids" item="id" separator=" OR ">
NOTICE_ID = #{id}
</foreach>
)
AND `READ_FLAG` = 'un_read'
AND GROUP_ID = #{groupId}
GROUP BY NOTICE_ID
)
</select>
</mapper>

11
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'
</select>
<!-- 查询此人组内身份 -->
<select id="selectUserRole" resultType="java.lang.String">
SELECT
GROUP_LEADER_FLAG
FROM
resi_group_member
WHERE DEL_FLAG = '0'
AND CUSTOMER_USER_ID = #{userId}
AND RESI_GROUP_ID = #{groupId}
</select>
</mapper>

28
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;
}
Loading…
Cancel
Save