|  |  | @ -24,6 +24,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.FieldConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.page.PageData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.redis.RedisKeys; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.redis.RedisUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.security.dto.TokenDto; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
	
		
			
				
					|  |  | @ -39,6 +40,7 @@ import com.epmet.modules.group.entity.ResiGroupEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.group.entity.ResiGroupStatisticalEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.member.dao.ResiGroupMemberDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.member.entity.ResiGroupMemberEntity; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.member.redis.ResiGroupMemberRedis; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.member.service.ResiGroupMemberService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.topic.dao.ResiTopicAttachmentDao; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.topic.dao.ResiTopicCommentDao; | 
			
		
	
	
		
			
				
					|  |  | @ -53,7 +55,9 @@ import com.epmet.modules.utils.ModuleConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.resi.group.constant.MemberStateConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.resi.group.constant.TopicConstant; | 
			
		
	
		
			
				
					|  |  |  | 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.topic.ResiTopicDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.resi.group.dto.topic.form.ResiTopicOperationFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; | 
			
		
	
	
		
			
				
					|  |  | @ -63,12 +67,15 @@ import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.lang3.StringUtils; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.logging.Log; | 
			
		
	
		
			
				
					|  |  |  | import org.apache.commons.logging.LogFactory; | 
			
		
	
		
			
				
					|  |  |  | import org.bouncycastle.math.raw.Mod; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import java.text.SimpleDateFormat; | 
			
		
	
		
			
				
					|  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  | import java.util.stream.Collector; | 
			
		
	
		
			
				
					|  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  |  * 话题信息表 | 
			
		
	
	
		
			
				
					|  |  | @ -88,9 +95,6 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ResiTopicOperationDao resiTopicOperationDao; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ResiTopicCommentDao resiTopicCommentDao; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     EpmetUserFeignClient epmetUserFeignClient; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -104,7 +108,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |     ResiGroupStatisticalDao resiGroupStatisticalDao; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     RedisUtils redisUtil; | 
			
		
	
		
			
				
					|  |  |  |     private ResiGroupMemberRedis resiGroupMemberRedis; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private ResiTopicOperationService resiTopicOperationService; | 
			
		
	
	
		
			
				
					|  |  | @ -277,8 +281,8 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if(null != lastestTenTopics && lastestTenTopics.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2.遍历存储用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         List<String> userIdList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         //2.遍历存储用户信息 从数据库中查找
 | 
			
		
	
		
			
				
					|  |  |  |         /*List<String> userIdList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         for (ResiTopicInfoResultDTO topic : lastestTenTopics) { | 
			
		
	
		
			
				
					|  |  |  |             userIdList.add(topic.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  | @ -286,6 +290,10 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         formDTO.setUserIdList(userIdList); | 
			
		
	
		
			
				
					|  |  |  |         Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult = epmetUserFeignClient.getUserResiInfoList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         setUserInfo(userResiInfoDTOListResult, lastestTenTopics); | 
			
		
	
		
			
				
					|  |  |  |         */ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2.2从缓存中查找用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         setCacheUserInfo(groupId,lastestTenTopics); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicInfoResultDTO>>().ok(lastestTenTopics); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  | @ -316,7 +324,8 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if (null != pastTopics && pastTopics.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2.遍历用户信息
 | 
			
		
	
		
			
				
					|  |  |  |        /* | 
			
		
	
		
			
				
					|  |  |  |        //2.遍历用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         List<String> userIdList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         for (ResiTopicInfoResultDTO topic : pastTopics) { | 
			
		
	
		
			
				
					|  |  |  |             userIdList.add(topic.getUserId()); | 
			
		
	
	
		
			
				
					|  |  | @ -325,7 +334,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         formDTO.setUserIdList(userIdList); | 
			
		
	
		
			
				
					|  |  |  |         Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult = epmetUserFeignClient.getUserResiInfoList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         setUserInfo(userResiInfoDTOListResult, pastTopics); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         */ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |        //2.2 在缓存中拉取用户信息
 | 
			
		
	
		
			
				
					|  |  |  |        setCacheUserInfo(topicPageFormDTO.getGroupId(), pastTopics); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicInfoResultDTO>>().ok(pastTopics); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -506,24 +520,53 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         resultDTO.setTopicImgs(attachmentUrls); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //3.拿取用户信息
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         ResiTopicDTO topic = get(topicId); | 
			
		
	
		
			
				
					|  |  |  |         ResiGroupEntity group = resiGroupDao.selectById(topic.getGroupId()); | 
			
		
	
		
			
				
					|  |  |  |         UserResiInfoFormDTO userParam = new UserResiInfoFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |         userParam.setUserId(topic.getCreatedBy()); | 
			
		
	
		
			
				
					|  |  |  |         userParam.setCustomerId(group.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |         Result<UserResiInfoResultDTO> userInfo =  epmetUserFeignClient.getUserResiInfoDTO(userParam); | 
			
		
	
		
			
				
					|  |  |  |         if(userInfo.success()){ | 
			
		
	
		
			
				
					|  |  |  |             if(null != userInfo.getData()){ | 
			
		
	
		
			
				
					|  |  |  |                 resultDTO.setReleaseUserName(userInfo.getData().getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                 resultDTO.setReleaseUserHeadPhoto(userInfo.getData().getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         ResiGroupMemberInfoRedisDTO memberRedis = | 
			
		
	
		
			
				
					|  |  |  |         resiGroupMemberRedis.get(group.getId(),topic.getCreatedBy()); | 
			
		
	
		
			
				
					|  |  |  |         if(null != memberRedis && StringUtils.isNotBlank(memberRedis.getUserId())){ | 
			
		
	
		
			
				
					|  |  |  |             resultDTO.setReleaseUserName(memberRedis.getUserShowName()); | 
			
		
	
		
			
				
					|  |  |  |             resultDTO.setReleaseUserHeadPhoto(memberRedis.getUserHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |         }else{ | 
			
		
	
		
			
				
					|  |  |  |             logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); | 
			
		
	
		
			
				
					|  |  |  |             logger.warn(ModuleConstant.GROUP_MEMBER_NOT_EXISTS_IN_CACHE); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             UserResiInfoFormDTO userParam = new UserResiInfoFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |             userParam.setUserId(topic.getCreatedBy()); | 
			
		
	
		
			
				
					|  |  |  |             userParam.setCustomerId(group.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |             Result<UserResiInfoResultDTO> userInfo =  epmetUserFeignClient.getUserResiInfoDTO(userParam); | 
			
		
	
		
			
				
					|  |  |  |             if(userInfo.success()){ | 
			
		
	
		
			
				
					|  |  |  |                 if(null != userInfo.getData()){ | 
			
		
	
		
			
				
					|  |  |  |                     resultDTO.setReleaseUserName(userInfo.getData().getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                     resultDTO.setReleaseUserHeadPhoto(userInfo.getData().getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); | 
			
		
	
		
			
				
					|  |  |  |                     ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(group.getId(), userInfo.getData().getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setUserId(userInfo.getData().getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setUserHeadPhoto(userInfo.getData().getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setUserShowName(userInfo.getData().getShowName()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setEnterGroupType(memberMySql.getEnterGroupType()); | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setGroupLeaderFlag(memberMySql.getGroupLeaderFlag()); | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setMemberStatus(memberMySql.getStatus()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     memberRedisDTO.setGroupId(group.getId()); | 
			
		
	
		
			
				
					|  |  |  |                     resiGroupMemberRedis.set(memberRedisDTO); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             }else{ | 
			
		
	
		
			
				
					|  |  |  |                 logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return new Result<ResiTopicDetailResultDTO>().ok(resultDTO); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -549,14 +592,16 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         //2.遍历用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         if (null != hiddenTopics && hiddenTopics.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             List<String> userIdList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |             /*List<String> userIdList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |             for (ResiTopicInfoResultDTO topic : hiddenTopics) { | 
			
		
	
		
			
				
					|  |  |  |                 userIdList.add(topic.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             UserResiInfoListFormDTO formDTO = new UserResiInfoListFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |             formDTO.setUserIdList(userIdList); | 
			
		
	
		
			
				
					|  |  |  |             Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult = epmetUserFeignClient.getUserResiInfoList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             setUserInfo(userResiInfoDTOListResult, hiddenTopics); | 
			
		
	
		
			
				
					|  |  |  |             setUserInfo(userResiInfoDTOListResult, hiddenTopics);*/ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             setCacheUserInfo(topicPageFormDTO.getGroupId(), hiddenTopics); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicInfoResultDTO>>().ok(hiddenTopics); | 
			
		
	
	
		
			
				
					|  |  | @ -629,7 +674,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.10 17:47 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     public void setUserInfo(Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult,List<ResiTopicInfoResultDTO> topics){ | 
			
		
	
		
			
				
					|  |  |  |     private void setUserInfo(Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult,List<ResiTopicInfoResultDTO> topics){ | 
			
		
	
		
			
				
					|  |  |  |         if(userResiInfoDTOListResult.success() && null != userResiInfoDTOListResult.getData()){ | 
			
		
	
		
			
				
					|  |  |  |             if(userResiInfoDTOListResult.getData().size() > 0){ | 
			
		
	
		
			
				
					|  |  |  |                 for(UserResiInfoResultDTO resiUser : userResiInfoDTOListResult.getData()){ | 
			
		
	
	
		
			
				
					|  |  | @ -684,4 +729,75 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         resiTopicOperationService.insertBatch(topicOperationList); | 
			
		
	
		
			
				
					|  |  |  |         return result; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |      * @Description 将缓存中的用户信息存放到话题列表当中 | 
			
		
	
		
			
				
					|  |  |  |      * @Param  groupId | 
			
		
	
		
			
				
					|  |  |  |      * @Param List<ResiTopicInfoResultDTO> | 
			
		
	
		
			
				
					|  |  |  |      * @return void | 
			
		
	
		
			
				
					|  |  |  |      * @Author wangc | 
			
		
	
		
			
				
					|  |  |  |      * @Date 2020.04.14 10:32 | 
			
		
	
		
			
				
					|  |  |  |      **/ | 
			
		
	
		
			
				
					|  |  |  |     private void setCacheUserInfo(String groupId ,List<ResiTopicInfoResultDTO> topics) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //1.初始化存储缺失缓存信息的组员Id的容器,默认去重
 | 
			
		
	
		
			
				
					|  |  |  |         Set<String> usersNotInCache = new HashSet<>(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2.读取用户缓存信息
 | 
			
		
	
		
			
				
					|  |  |  |         ResiGroupMemberInfoRedisResultDTO memberRedis = resiGroupMemberRedis.getKeys(groupId); | 
			
		
	
		
			
				
					|  |  |  |         if (null != memberRedis && null != memberRedis.getMemberKeys() && null != memberRedis.getMemberMap()) { | 
			
		
	
		
			
				
					|  |  |  |             String keyPrefix = RedisKeys.getResiGroupMemberInfoKey(groupId, ""); | 
			
		
	
		
			
				
					|  |  |  |             for (ResiTopicInfoResultDTO topic : topics) { | 
			
		
	
		
			
				
					|  |  |  |                 //缓存中有该用户的key
 | 
			
		
	
		
			
				
					|  |  |  |                 if (memberRedis.getMemberKeys().contains(keyPrefix.concat(topic.getUserId()))) { | 
			
		
	
		
			
				
					|  |  |  |                     ResiGroupMemberInfoRedisDTO memberInfoCache = memberRedis.getMemberMap().get(topic.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                     if (null != memberInfoCache) { | 
			
		
	
		
			
				
					|  |  |  |                         //缓存中有该用户信息
 | 
			
		
	
		
			
				
					|  |  |  |                         topic.setReleaseUserName(memberInfoCache.getUserShowName()); | 
			
		
	
		
			
				
					|  |  |  |                         topic.setReleaseUserHeadPhoto(memberInfoCache.getUserHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |                         //缓存中没有该用户信息
 | 
			
		
	
		
			
				
					|  |  |  |                         usersNotInCache.add(topic.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |                     //缓存中没有该用户的key
 | 
			
		
	
		
			
				
					|  |  |  |                     usersNotInCache.add(topic.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //3.如果存在缺失缓存的组员,去数据库中查找,并存入缓存
 | 
			
		
	
		
			
				
					|  |  |  |         if (usersNotInCache.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |         Map<String, List<ResiTopicInfoResultDTO>> topicMap | 
			
		
	
		
			
				
					|  |  |  |                 = topics.stream().collect(Collectors.groupingBy(ResiTopicInfoResultDTO::getUserId)); | 
			
		
	
		
			
				
					|  |  |  |         List<String> userIds = new ArrayList<>(usersNotInCache); | 
			
		
	
		
			
				
					|  |  |  |         Result<List<UserResiInfoResultDTO>> result = | 
			
		
	
		
			
				
					|  |  |  |                 epmetUserFeignClient.getUserResiInfoList(new UserResiInfoListFormDTO(userIds)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if (result.success() && null != result.getData() && result.getData().size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |             for (UserResiInfoResultDTO user : result.getData()) { | 
			
		
	
		
			
				
					|  |  |  |                 ResiTopicInfoResultDTO topic = | 
			
		
	
		
			
				
					|  |  |  |                         topicMap.get(user.getUserId()).get(0); | 
			
		
	
		
			
				
					|  |  |  |                 topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                 topic.setReleaseUserName(user.getShowName()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 //存进缓存
 | 
			
		
	
		
			
				
					|  |  |  |                 ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); | 
			
		
	
		
			
				
					|  |  |  |                 ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setMemberStatus(memberMySql.getStatus()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setUserId(user.getUserId()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setUserShowName(user.getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setEnterGroupType(memberMySql.getEnterGroupType()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setGroupLeaderFlag(memberMySql.getGroupLeaderFlag()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setUserHeadPhoto(user.getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                 memberRedisDTO.setGroupId(groupId); | 
			
		
	
		
			
				
					|  |  |  |                 resiGroupMemberRedis.set(memberRedisDTO); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |