|  |  | @ -42,6 +42,7 @@ import com.epmet.dto.form.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.CommonDataFilterResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.IssueInitiatorResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.UserResiInfoResultDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.feign.EpmetUserOpenFeignClient; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.constant.GroupMemberConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.constant.ResiGroupRedisKeys; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.modules.feign.EpmetUserFeignClient; | 
			
		
	
	
		
			
				
					|  |  | @ -88,6 +89,7 @@ import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
			
				
					|  |  |  | import org.springframework.util.CollectionUtils; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import java.text.SimpleDateFormat; | 
			
		
	
		
			
				
					|  |  |  | import java.util.*; | 
			
		
	
	
		
			
				
					|  |  | @ -142,6 +144,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private GovIssueFeignClient govIssueFeignClient; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private EpmetUserOpenFeignClient userOpenFeignClient; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Value("${openapi.scan.server.url}") | 
			
		
	
		
			
				
					|  |  |  |     private String scanApiUrl; | 
			
		
	
		
			
				
					|  |  |  |     @Value("${openapi.scan.method.textSyncScan}") | 
			
		
	
	
		
			
				
					|  |  | @ -386,7 +391,38 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2. 在缓存中拉取用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         setCacheUserInfoWithIssue(topicPageFormDTO.getGroupId(), pastTopics); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             //3.用户徽章
 | 
			
		
	
		
			
				
					|  |  |  |             //3.1首先需要拿到客户Id
 | 
			
		
	
		
			
				
					|  |  |  |             ResiGroupEntity group = resiGroupDao.selectById(topicPageFormDTO.getGroupId()); | 
			
		
	
		
			
				
					|  |  |  |             if(null != group && StringUtils.isNotBlank(group.getCustomerId())){ | 
			
		
	
		
			
				
					|  |  |  |                 Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR | 
			
		
	
		
			
				
					|  |  |  |                         = userOpenFeignClient.userShowBadge( | 
			
		
	
		
			
				
					|  |  |  |                         new UserGroupFormDTO(group.getCustomerId(), | 
			
		
	
		
			
				
					|  |  |  |                                 pastTopics.stream() | 
			
		
	
		
			
				
					|  |  |  |                                         .filter(top -> StringUtils.equals("other",top.getReleaseUserFlag())) | 
			
		
	
		
			
				
					|  |  |  |                                         .map(ResiTopicIncludeIssueInfoResultDTO::getUserId) | 
			
		
	
		
			
				
					|  |  |  |                                         .distinct().collect(Collectors.toList()))); | 
			
		
	
		
			
				
					|  |  |  |                 if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){ | 
			
		
	
		
			
				
					|  |  |  |                     Map<String, List<UserBadgeUnitFormDTO>> badgeM = badgeR.getData(); | 
			
		
	
		
			
				
					|  |  |  |                     pastTopics.forEach(top -> { | 
			
		
	
		
			
				
					|  |  |  |                         if(StringUtils.equals("other",top.getReleaseUserFlag())){ | 
			
		
	
		
			
				
					|  |  |  |                             top.setBadgeList( | 
			
		
	
		
			
				
					|  |  |  |                                     CollectionUtils.isEmpty(badgeM.get(top.getUserId())) ? | 
			
		
	
		
			
				
					|  |  |  |                                             Collections.EMPTY_LIST : | 
			
		
	
		
			
				
					|  |  |  |                                             badgeM.get(top.getUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) | 
			
		
	
		
			
				
					|  |  |  |                             ); | 
			
		
	
		
			
				
					|  |  |  |                         }else top.setBadgeList(Collections.EMPTY_LIST); | 
			
		
	
		
			
				
					|  |  |  |                     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 }else pastTopics.forEach(top -> top.setBadgeList(Collections.EMPTY_LIST)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicIncludeIssueInfoResultDTO>>().ok(pastTopics); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -616,6 +652,18 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         resultDTO.setCloseDetail(closeDetail); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //4.获取用户徽章的信息
 | 
			
		
	
		
			
				
					|  |  |  |         List<String> userId = new LinkedList<>();userId.add(topicDetail.getCreatedBy()); | 
			
		
	
		
			
				
					|  |  |  |         Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR | 
			
		
	
		
			
				
					|  |  |  |                 = userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userId)); | 
			
		
	
		
			
				
					|  |  |  |         if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){ | 
			
		
	
		
			
				
					|  |  |  |             resultDTO.setBadgeList( | 
			
		
	
		
			
				
					|  |  |  |                     CollectionUtils.isEmpty(badgeR.getData().get(topicDetail.getCreatedBy())) ? | 
			
		
	
		
			
				
					|  |  |  |                             Collections.EMPTY_LIST: | 
			
		
	
		
			
				
					|  |  |  |                             badgeR.getData().get(topicDetail.getCreatedBy()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) | 
			
		
	
		
			
				
					|  |  |  |             ); | 
			
		
	
		
			
				
					|  |  |  |         }else resultDTO.setBadgeList(Collections.EMPTY_LIST); | 
			
		
	
		
			
				
					|  |  |  |         return new Result<ResiTopicIncludeIssueDetailResultDTO>().ok(resultDTO); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -641,6 +689,36 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  |         //2.遍历用户信息
 | 
			
		
	
		
			
				
					|  |  |  |         if (null != hiddenTopics && hiddenTopics.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |             setCacheUserInfo(topicPageFormDTO.getGroupId(), hiddenTopics); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             //3.用户徽章
 | 
			
		
	
		
			
				
					|  |  |  |             //3.1首先需要拿到客户Id
 | 
			
		
	
		
			
				
					|  |  |  |             ResiGroupEntity group = resiGroupDao.selectById(topicPageFormDTO.getGroupId()); | 
			
		
	
		
			
				
					|  |  |  |             if(null != group && StringUtils.isNotBlank(group.getCustomerId())){ | 
			
		
	
		
			
				
					|  |  |  |                 Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR | 
			
		
	
		
			
				
					|  |  |  |                         = userOpenFeignClient.userShowBadge( | 
			
		
	
		
			
				
					|  |  |  |                         new UserGroupFormDTO(group.getCustomerId(), | 
			
		
	
		
			
				
					|  |  |  |                                 hiddenTopics.stream() | 
			
		
	
		
			
				
					|  |  |  |                                         .filter(top -> StringUtils.equals("other",top.getReleaseUserFlag())) | 
			
		
	
		
			
				
					|  |  |  |                                         .map(ResiTopicInfoResultDTO::getUserId) | 
			
		
	
		
			
				
					|  |  |  |                                         .distinct().collect(Collectors.toList()))); | 
			
		
	
		
			
				
					|  |  |  |                 if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){ | 
			
		
	
		
			
				
					|  |  |  |                     Map<String, List<UserBadgeUnitFormDTO>> badgeM = badgeR.getData(); | 
			
		
	
		
			
				
					|  |  |  |                     hiddenTopics.forEach(top -> { | 
			
		
	
		
			
				
					|  |  |  |                         if(StringUtils.equals("other",top.getReleaseUserFlag())){ | 
			
		
	
		
			
				
					|  |  |  |                             top.setBadgeList( | 
			
		
	
		
			
				
					|  |  |  |                                     CollectionUtils.isEmpty(badgeM.get(top.getUserId())) ? | 
			
		
	
		
			
				
					|  |  |  |                                             Collections.EMPTY_LIST : | 
			
		
	
		
			
				
					|  |  |  |                                             badgeM.get(top.getUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) | 
			
		
	
		
			
				
					|  |  |  |                             ); | 
			
		
	
		
			
				
					|  |  |  |                         }else top.setBadgeList(Collections.EMPTY_LIST); | 
			
		
	
		
			
				
					|  |  |  |                     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 }else hiddenTopics.forEach(top -> top.setBadgeList(Collections.EMPTY_LIST)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicInfoResultDTO>>().ok(hiddenTopics); | 
			
		
	
	
		
			
				
					|  |  | @ -791,6 +869,30 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             //2. 在缓存中拉取用户信息
 | 
			
		
	
		
			
				
					|  |  |  |             setCacheUserInfo(topicPageFormDTO.getGroupId(), pastTopics); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             //3.用户徽章
 | 
			
		
	
		
			
				
					|  |  |  |             //3.1首先需要拿到客户Id
 | 
			
		
	
		
			
				
					|  |  |  |             ResiGroupEntity group = resiGroupDao.selectById(topicPageFormDTO.getGroupId()); | 
			
		
	
		
			
				
					|  |  |  |             if (null != group && StringUtils.isNotBlank(group.getCustomerId())) { | 
			
		
	
		
			
				
					|  |  |  |                 Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR | 
			
		
	
		
			
				
					|  |  |  |                         = userOpenFeignClient.userShowBadge( | 
			
		
	
		
			
				
					|  |  |  |                         new UserGroupFormDTO(group.getCustomerId(), | 
			
		
	
		
			
				
					|  |  |  |                                 pastTopics.stream() | 
			
		
	
		
			
				
					|  |  |  |                                         .map(ResiTopicInfoResultDTO::getUserId) | 
			
		
	
		
			
				
					|  |  |  |                                         .distinct().collect(Collectors.toList()))); | 
			
		
	
		
			
				
					|  |  |  |                 if (null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()) { | 
			
		
	
		
			
				
					|  |  |  |                     Map<String, List<UserBadgeUnitFormDTO>> badgeM = badgeR.getData(); | 
			
		
	
		
			
				
					|  |  |  |                     pastTopics.forEach(top -> { | 
			
		
	
		
			
				
					|  |  |  |                         top.setBadgeList( | 
			
		
	
		
			
				
					|  |  |  |                                 CollectionUtils.isEmpty(badgeM.get(top.getUserId())) ? | 
			
		
	
		
			
				
					|  |  |  |                                         Collections.EMPTY_LIST : | 
			
		
	
		
			
				
					|  |  |  |                                         badgeM.get(top.getUserId()).stream().map(UserBadgeUnitFormDTO::getBadgeIcon).collect(Collectors.toList()) | 
			
		
	
		
			
				
					|  |  |  |                         ); | 
			
		
	
		
			
				
					|  |  |  |                     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 } else pastTopics.forEach(top -> top.setBadgeList(Collections.EMPTY_LIST)); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         return new Result<List<ResiTopicInfoResultDTO>>().ok(pastTopics); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -864,11 +966,13 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         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()); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 if(!CollectionUtils.isEmpty(topicMap.get(user.getUserId()))){ | 
			
		
	
		
			
				
					|  |  |  |                     topicMap.get(user.getUserId()).forEach( topic -> { | 
			
		
	
		
			
				
					|  |  |  |                         topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                         topic.setReleaseUserName(user.getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                     }); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 //存入缓存
 | 
			
		
	
		
			
				
					|  |  |  |                 ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); | 
			
		
	
		
			
				
					|  |  |  |                 ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId()); | 
			
		
	
	
		
			
				
					|  |  | @ -936,10 +1040,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             if (result.success() && null != result.getData() && result.getData().size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |                 for (UserResiInfoResultDTO user : result.getData()) { | 
			
		
	
		
			
				
					|  |  |  |                     ResiTopicIncludeIssueInfoResultDTO topic = | 
			
		
	
		
			
				
					|  |  |  |                             topicMap.get(user.getUserId()).get(0); | 
			
		
	
		
			
				
					|  |  |  |                     topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                     topic.setReleaseUserName(user.getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                     if(!CollectionUtils.isEmpty(topicMap.get(user.getUserId()))){ | 
			
		
	
		
			
				
					|  |  |  |                         topicMap.get(user.getUserId()).forEach( topic -> { | 
			
		
	
		
			
				
					|  |  |  |                             topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); | 
			
		
	
		
			
				
					|  |  |  |                             topic.setReleaseUserName(user.getShowName()); | 
			
		
	
		
			
				
					|  |  |  |                         }); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                     //存入缓存
 | 
			
		
	
		
			
				
					|  |  |  |                     ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); | 
			
		
	
	
		
			
				
					|  |  | 
 |