|
@ -64,6 +64,8 @@ import com.epmet.resi.group.dto.topic.form.ResiTopicOperationFormDTO; |
|
|
import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; |
|
|
import com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO; |
|
|
import com.epmet.resi.group.dto.topic.form.ResiTopicPublishFormDTO; |
|
|
import com.epmet.resi.group.dto.topic.form.ResiTopicPublishFormDTO; |
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; |
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicDetailResultDTO; |
|
|
|
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueDetailResultDTO; |
|
|
|
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO; |
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; |
|
|
import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.logging.Log; |
|
|
import org.apache.commons.logging.Log; |
|
@ -274,36 +276,21 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
* @Date 2020.04.01 08:59 |
|
|
* @Date 2020.04.01 08:59 |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Result<List<ResiTopicInfoResultDTO>> getLatestTopics(TokenDto tokenDto, String groupId) { |
|
|
public Result<List<ResiTopicIncludeIssueInfoResultDTO>> getLatestTopics(TokenDto tokenDto, String groupId) { |
|
|
if (null == tokenDto) { |
|
|
if (null == tokenDto) { |
|
|
logger.error(ModuleConstant.USER_NOT_NULL); |
|
|
logger.error(ModuleConstant.USER_NOT_NULL); |
|
|
throw new RenException(ModuleConstant.USER_NOT_NULL); |
|
|
throw new RenException(ModuleConstant.USER_NOT_NULL); |
|
|
} |
|
|
} |
|
|
if (StringUtils.isBlank(groupId)) { |
|
|
|
|
|
return new Result<List<ResiTopicInfoResultDTO>>().error(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//1.查询话题列表
|
|
|
//1.查询话题列表
|
|
|
List<ResiTopicInfoResultDTO> lastestTenTopics = |
|
|
List<ResiTopicIncludeIssueInfoResultDTO> latestTenTopics = |
|
|
baseDao.getLatestTenTopics(groupId, tokenDto.getUserId()); |
|
|
baseDao.getLatestTenTopics(groupId, tokenDto.getUserId()); |
|
|
|
|
|
if(null != latestTenTopics && latestTenTopics.size() > 0) { |
|
|
|
|
|
|
|
|
if(null != lastestTenTopics && lastestTenTopics.size() > 0) { |
|
|
|
|
|
|
|
|
|
|
|
//2.遍历存储用户信息 从数据库中查找
|
|
|
|
|
|
/*List<String> userIdList = new ArrayList<>(); |
|
|
|
|
|
for (ResiTopicInfoResultDTO topic : lastestTenTopics) { |
|
|
|
|
|
userIdList.add(topic.getUserId()); |
|
|
|
|
|
} |
|
|
|
|
|
UserResiInfoListFormDTO formDTO = new UserResiInfoListFormDTO(); |
|
|
|
|
|
formDTO.setUserIdList(userIdList); |
|
|
|
|
|
Result<List<UserResiInfoResultDTO>> userResiInfoDTOListResult = epmetUserFeignClient.getUserResiInfoList(formDTO); |
|
|
|
|
|
setUserInfo(userResiInfoDTOListResult, lastestTenTopics); |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
//2.2从缓存中查找用户信息
|
|
|
//2.2从缓存中查找用户信息
|
|
|
setCacheUserInfo(groupId,lastestTenTopics); |
|
|
setCacheUserInfoWithIssue(groupId,latestTenTopics); |
|
|
} |
|
|
} |
|
|
return new Result<List<ResiTopicInfoResultDTO>>().ok(lastestTenTopics); |
|
|
return new Result<List<ResiTopicIncludeIssueInfoResultDTO>>().ok(latestTenTopics); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -315,36 +302,22 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
* @Date 2020.04.01 10:36 |
|
|
* @Date 2020.04.01 10:36 |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Result<List<ResiTopicInfoResultDTO>> getPastTopicList(TokenDto tokenDto, ResiTopicPageFormDTO topicPageFormDTO) { |
|
|
public Result<List<ResiTopicIncludeIssueInfoResultDTO>> getPastTopicList(TokenDto tokenDto, ResiTopicPageFormDTO topicPageFormDTO) { |
|
|
//1.查询历史话题列表
|
|
|
//1.查询历史话题列表
|
|
|
|
|
|
|
|
|
topicPageFormDTO.setUserId(topicPageFormDTO.getUserId()); |
|
|
topicPageFormDTO.setUserId(topicPageFormDTO.getUserId()); |
|
|
|
|
|
|
|
|
topicPageFormDTO.setPageNo((topicPageFormDTO.getPageNo() - NumConstant.ONE) * topicPageFormDTO.getPageSize()); |
|
|
topicPageFormDTO.setPageNo((topicPageFormDTO.getPageNo() - NumConstant.ONE) * topicPageFormDTO.getPageSize()); |
|
|
|
|
|
|
|
|
List<ResiTopicInfoResultDTO> pastTopics = |
|
|
List<ResiTopicIncludeIssueInfoResultDTO> pastTopics = |
|
|
baseDao.getPastTopics(topicPageFormDTO); |
|
|
baseDao.getTopicsIncludeIssueInfoByConditions(topicPageFormDTO); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (null != pastTopics && pastTopics.size() > 0) { |
|
|
if (null != pastTopics && pastTopics.size() > 0) { |
|
|
|
|
|
|
|
|
/* |
|
|
//2. 在缓存中拉取用户信息
|
|
|
//2.遍历用户信息
|
|
|
setCacheUserInfoWithIssue(topicPageFormDTO.getGroupId(), pastTopics); |
|
|
List<String> userIdList = new ArrayList<>(); |
|
|
|
|
|
for (ResiTopicInfoResultDTO topic : pastTopics) { |
|
|
|
|
|
userIdList.add(topic.getUserId()); |
|
|
|
|
|
} |
|
|
|
|
|
UserResiInfoListFormDTO formDTO = new UserResiInfoListFormDTO(); |
|
|
|
|
|
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); |
|
|
return new Result<List<ResiTopicIncludeIssueInfoResultDTO>>().ok(pastTopics); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -505,19 +478,21 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
* @Date 2020.04.01 15:56 |
|
|
* @Date 2020.04.01 15:56 |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Result<ResiTopicDetailResultDTO> getTopicDetail(TokenDto tokenDto, String topicId) { |
|
|
public Result<ResiTopicIncludeIssueDetailResultDTO> getTopicDetail(TokenDto tokenDto, String topicId) { |
|
|
//1.获取话题基本信息
|
|
|
//1.获取话题基本信息
|
|
|
ResiTopicEntity topicDetail = baseDao.selectById(topicId); |
|
|
ResiTopicEntity topicDetail = baseDao.selectById(topicId); |
|
|
if(null == topicDetail || !StringUtils.equals(topicDetail.getId(),topicId)){ |
|
|
if(null == topicDetail || !StringUtils.equals(topicDetail.getId(),topicId)){ |
|
|
logger.error(ModuleConstant.NO_SUCH_TOPIC); |
|
|
logger.error(ModuleConstant.NO_SUCH_TOPIC); |
|
|
throw new RenException(ModuleConstant.NO_SUCH_TOPIC); |
|
|
throw new RenException(ModuleConstant.NO_SUCH_TOPIC); |
|
|
} |
|
|
} |
|
|
ResiTopicDetailResultDTO resultDTO = new ResiTopicDetailResultDTO(); |
|
|
ResiTopicIncludeIssueDetailResultDTO resultDTO = |
|
|
|
|
|
ConvertUtils.sourceToTarget(topicDetail,ResiTopicIncludeIssueDetailResultDTO.class); |
|
|
resultDTO.setTopicId(topicId); |
|
|
resultDTO.setTopicId(topicId); |
|
|
resultDTO.setReleaseTime(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(topicDetail.getCreatedTime())); |
|
|
resultDTO.setReleaseTime(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(topicDetail.getCreatedTime())); |
|
|
resultDTO.setTopicContent(topicDetail.getTopicContent()); |
|
|
resultDTO.setTopicContent(topicDetail.getTopicContent()); |
|
|
resultDTO.setReleaseAddress(topicDetail.getAddress()); |
|
|
resultDTO.setReleaseAddress(topicDetail.getAddress()); |
|
|
resultDTO.setTopicStatus(topicDetail.getStatus()); |
|
|
resultDTO.setTopicStatus(topicDetail.getStatus()); |
|
|
|
|
|
resultDTO.setShiftIssueFlag(topicDetail.getShiftIssue()); |
|
|
//2.查询话题附件
|
|
|
//2.查询话题附件
|
|
|
QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>(); |
|
|
QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>(); |
|
|
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR); |
|
|
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR); |
|
@ -537,11 +512,11 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
ResiGroupMemberInfoRedisDTO memberRedis = |
|
|
ResiGroupMemberInfoRedisDTO memberRedis = |
|
|
resiGroupMemberRedis.get(group.getId(),topic.getCreatedBy()); |
|
|
resiGroupMemberRedis.get(group.getId(),topic.getCreatedBy()); |
|
|
if(null != memberRedis && StringUtils.isNotBlank(memberRedis.getUserId())){ |
|
|
if(null != memberRedis && StringUtils.isNotBlank(memberRedis.getUserId())){ |
|
|
resultDTO.setReleaseUserName(memberRedis.getUserShowName()); |
|
|
resultDTO.setReleaseUserName(StringUtils.isBlank(memberRedis.getUserShowName()) ? "" : memberRedis.getUserShowName()); |
|
|
resultDTO.setReleaseUserHeadPhoto(memberRedis.getUserHeadPhoto()); |
|
|
resultDTO.setReleaseUserHeadPhoto(StringUtils.isBlank(memberRedis.getUserHeadPhoto()) ? "" : memberRedis.getUserHeadPhoto()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return new Result<ResiTopicDetailResultDTO>().ok(resultDTO); |
|
|
return new Result<ResiTopicIncludeIssueDetailResultDTO>().ok(resultDTO); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -703,7 +678,22 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Result<List<ResiTopicInfoResultDTO>> getPastTopicListGov(ResiTopicPageFormDTO topicPageFormDTO) { |
|
|
public Result<List<ResiTopicInfoResultDTO>> getPastTopicListGov(ResiTopicPageFormDTO topicPageFormDTO) { |
|
|
return getPastTopicList(null,topicPageFormDTO); |
|
|
//1.查询历史话题列表
|
|
|
|
|
|
|
|
|
|
|
|
topicPageFormDTO.setUserId(topicPageFormDTO.getUserId()); |
|
|
|
|
|
|
|
|
|
|
|
topicPageFormDTO.setPageNo((topicPageFormDTO.getPageNo() - NumConstant.ONE) * topicPageFormDTO.getPageSize()); |
|
|
|
|
|
|
|
|
|
|
|
List<ResiTopicInfoResultDTO> pastTopics = |
|
|
|
|
|
baseDao.getPastTopics(topicPageFormDTO); |
|
|
|
|
|
|
|
|
|
|
|
if (null != pastTopics && pastTopics.size() > 0) { |
|
|
|
|
|
|
|
|
|
|
|
//2. 在缓存中拉取用户信息
|
|
|
|
|
|
setCacheUserInfo(topicPageFormDTO.getGroupId(), pastTopics); |
|
|
|
|
|
} |
|
|
|
|
|
return new Result<List<ResiTopicInfoResultDTO>>().ok(pastTopics); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -720,7 +710,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Result<ResiTopicDetailResultDTO> getTopicDetailGov(String topicId) { |
|
|
public Result<ResiTopicDetailResultDTO> getTopicDetailGov(String topicId) { |
|
|
return getTopicDetail(null,topicId); |
|
|
Result<ResiTopicIncludeIssueDetailResultDTO> result = getTopicDetail(null,topicId); |
|
|
|
|
|
if(result.success() && null != result.getData() && StringUtils.isNotBlank(result.getData().getTopicId())){ |
|
|
|
|
|
return new Result<ResiTopicDetailResultDTO>().ok(ConvertUtils.sourceToTarget(result.getData(),ResiTopicDetailResultDTO.class)); |
|
|
|
|
|
} |
|
|
|
|
|
logger.error(ModuleConstant.NO_SUCH_TOPIC); |
|
|
|
|
|
throw new RenException(ModuleConstant.NO_SUCH_TOPIC); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -794,6 +789,77 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @Description 将缓存中的用户信息存放到话题列表当中 |
|
|
|
|
|
* @Param groupId |
|
|
|
|
|
* @Param List<ResiTopicIncludeIssueInfoResultDTO> |
|
|
|
|
|
* @return void |
|
|
|
|
|
* @Author wangc |
|
|
|
|
|
* @Date 2020.04.14 10:32 |
|
|
|
|
|
**/ |
|
|
|
|
|
private void setCacheUserInfoWithIssue(String groupId ,List<ResiTopicIncludeIssueInfoResultDTO> 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 (ResiTopicIncludeIssueInfoResultDTO topic : topics) { |
|
|
|
|
|
//缓存中有该用户的key
|
|
|
|
|
|
if (memberRedis.getMemberKeys().contains(keyPrefix.concat(topic.getUserId()))) { |
|
|
|
|
|
ResiGroupMemberInfoRedisDTO memberInfoCache = memberRedis.getMemberMap().get(topic.getUserId()); |
|
|
|
|
|
if (null != memberInfoCache) { |
|
|
|
|
|
//缓存中有该用户信息
|
|
|
|
|
|
topic.setReleaseUserName(StringUtils.isBlank(memberInfoCache.getUserShowName())?"":memberInfoCache.getUserShowName()); |
|
|
|
|
|
topic.setReleaseUserHeadPhoto(StringUtils.isBlank(memberInfoCache.getUserHeadPhoto())?"":memberInfoCache.getUserHeadPhoto()); |
|
|
|
|
|
} else { |
|
|
|
|
|
//缓存中没有该用户信息
|
|
|
|
|
|
usersNotInCache.add(topic.getUserId()); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
//缓存中没有该用户的key
|
|
|
|
|
|
usersNotInCache.add(topic.getUserId()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//3.如果存在缺失缓存的组员,去数据库中查找,并存入缓存
|
|
|
|
|
|
if (usersNotInCache.size() > 0) { |
|
|
|
|
|
Map<String, List<ResiTopicIncludeIssueInfoResultDTO>> topicMap |
|
|
|
|
|
= topics.stream().collect(Collectors.groupingBy(ResiTopicIncludeIssueInfoResultDTO::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()) { |
|
|
|
|
|
ResiTopicIncludeIssueInfoResultDTO 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); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @Description 更新组统计缓存信息 |
|
|
* @Description 更新组统计缓存信息 |
|
|
* @Param groupId |
|
|
* @Param groupId |
|
|