Browse Source

resi_topic话题查询接口增加议题相关属性

master
wangchao 5 years ago
parent
commit
af5a5ac4b5
  1. 68
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java
  2. 74
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java
  3. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java
  4. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java
  5. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  6. 14
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  7. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/ResiTopicEntity.java
  8. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  9. 160
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  10. 57
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  11. 2
      epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/excel/IssueExcel.java

68
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java

@ -0,0 +1,68 @@
package com.epmet.resi.group.dto.topic.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 话题详情DTO(包含议题Id和是否转为议题Flag)
* @ClassName ResiTopicIncludeIssueDetailResultDTO
* @Auth wangc
* @Date 2020-05-11 17:31
*/
@Data
public class ResiTopicIncludeIssueDetailResultDTO implements Serializable {
private static final long serialVersionUID = -6790536784979922200L;
/**
* 话题Id
* */
private String topicId;
/**
* 发布人名称
* */
private String releaseUserName;
/**
* 发布人头像
* */
private String releaseUserHeadPhoto;
/**
* 发布时间 yyyy-MM-dd HH:mm
* */
private String releaseTime;
/**
* 发布地址
* */
private String releaseAddress;
/**
* 话题内容
* */
private String topicContent;
/**
* 话题状态
* */
private String topicStatus;
/**
* 图片访问地址
* */
private List<String> topicImgs;
/**
* 是否被转为议题true,false
* */
private Boolean shiftIssueFlag;
/**
* 议题Id当shiftIssueFlag为false时返回""
* */
private String issueId;
}

74
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java

@ -0,0 +1,74 @@
package com.epmet.resi.group.dto.topic.result;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Description 话题信息返回DTO(包含议题Id和是否转为议题Flag)
* @ClassName ResiTopicIncludeIssueInfoResultDTO
* @Auth wangc
* @Date 2020-05-11 15:56
*/
@Data
public class ResiTopicIncludeIssueInfoResultDTO implements Serializable {
private static final long serialVersionUID = -7029232911456325417L;
/**
* 话题Id
* */
private String topicId;
/**
* 用户Id 话题发布人
* */
private String userId;
/**
* 发布人名称
* */
private String releaseUserName;
/**
* 发布人头像
* */
private String releaseUserHeadPhoto;
/**
* 发布时间 yyyy-MM-dd HH:mm
* */
@JSONField(format="yyyy-MM-dd HH:mm")
private Date releaseTime;
/**
* 话题内容
* */
private String topicContent;
/**
* 话题状态 讨论中 已关闭
* */
private String status;
/**
* 是否本人 me other
* */
private String releaseUserFlag;
/**
* 第一张图片
* */
private String firstPhoto;
/**
* 是否被转为议题true,false
* */
private Boolean shiftIssueFlag;
/**
* 议题Id当shiftIssueFlag为false时返回""
* */
private String issueId;
}

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java

@ -53,11 +53,6 @@ public class ResiTopicInfoResultDTO implements Serializable{
* */ * */
private String status; private String status;
/**
* 网格名称
* */
private String gridName;
/** /**
* 是否本人 me other * 是否本人 me other
* */ * */

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java

@ -96,7 +96,7 @@ public class ResiGroupMemberRedis {
ResiGroupMemberInfoRedisDTO memberCache = ResiGroupMemberInfoRedisDTO memberCache =
(ResiGroupMemberInfoRedisDTO) redisUtils.get(RedisKeys.getResiGroupMemberInfoKey(groupId,userId)); (ResiGroupMemberInfoRedisDTO) redisUtils.get(RedisKeys.getResiGroupMemberInfoKey(groupId,userId));
//如果缓存中没有该成员数据 //如果缓存中没有该成员数据
if(null == memberCache && StringUtils.isNotBlank(memberCache.getUserId())){ if(null == memberCache || StringUtils.isNotBlank(memberCache.getUserId())){
Map<String,Object> param = new HashMap<>(); Map<String,Object> param = new HashMap<>();
param.put(TopicConstant.CUSTOMER_USER_ID,userId); param.put(TopicConstant.CUSTOMER_USER_ID,userId);
param.put(TopicConstant.RESI_GROUP_ID,groupId); param.put(TopicConstant.RESI_GROUP_ID,groupId);

10
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java

@ -7,6 +7,8 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.topic.service.ResiTopicService; import com.epmet.modules.topic.service.ResiTopicService;
import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.form.*;
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.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -54,7 +56,7 @@ public class ResiTopicController {
* @Date 2020.04.01 23:48 * @Date 2020.04.01 23:48
**/ **/
@PostMapping("gettopicdetail") @PostMapping("gettopicdetail")
public Result<ResiTopicDetailResultDTO> getTopicDetail(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicDetailFormDTO topicDetailFormDTO ){ public Result<ResiTopicIncludeIssueDetailResultDTO> getTopicDetail(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicDetailFormDTO topicDetailFormDTO ){
ValidatorUtils.validateEntity(topicDetailFormDTO); ValidatorUtils.validateEntity(topicDetailFormDTO);
return topicService.getTopicDetail(tokenDto,topicDetailFormDTO.getTopicId()); return topicService.getTopicDetail(tokenDto,topicDetailFormDTO.getTopicId());
} }
@ -68,7 +70,7 @@ public class ResiTopicController {
* @Date 2020.04.01 10:36 * @Date 2020.04.01 10:36
**/ **/
@PostMapping("getpasttopiclist") @PostMapping("getpasttopiclist")
public Result<List<ResiTopicInfoResultDTO>> getPastTopicList(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicPageFormDTO topicPageFormDTO){ public Result<List<ResiTopicIncludeIssueInfoResultDTO>> getPastTopicList(@LoginUser TokenDto tokenDto, @RequestBody ResiTopicPageFormDTO topicPageFormDTO){
topicPageFormDTO.setUserId(tokenDto.getUserId()); topicPageFormDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(topicPageFormDTO); ValidatorUtils.validateEntity(topicPageFormDTO);
return topicService.getPastTopicList(tokenDto,topicPageFormDTO); return topicService.getPastTopicList(tokenDto,topicPageFormDTO);
@ -78,12 +80,12 @@ public class ResiTopicController {
* @Description 查看组内最近十条话题 * @Description 查看组内最近十条话题
* @Param tokenDto * @Param tokenDto
* @Param ResiTopicDefaultPageFormDTO * @Param ResiTopicDefaultPageFormDTO
* @return Result<List<ResiTopicInfoResultDTO>> * @return Result<List<ResiTopicIncludeIssueInfoResultDTO>>
* @Author wangc * @Author wangc
* @Date 2020.04.02 00:01 * @Date 2020.04.02 00:01
**/ **/
@PostMapping("getlatesttopics") @PostMapping("getlatesttopics")
public Result<List<ResiTopicInfoResultDTO>> getLatestTopics(@LoginUser TokenDto tokenDto,@RequestBody ResiTopicDefaultPageFormDTO topicDefaultPageFormDTO){ public Result<List<ResiTopicIncludeIssueInfoResultDTO>> getLatestTopics(@LoginUser TokenDto tokenDto,@RequestBody ResiTopicDefaultPageFormDTO topicDefaultPageFormDTO){
ValidatorUtils.validateEntity(topicDefaultPageFormDTO); ValidatorUtils.validateEntity(topicDefaultPageFormDTO);
return topicService.getLatestTopics(tokenDto,topicDefaultPageFormDTO.getGroupId()); return topicService.getLatestTopics(tokenDto,topicDefaultPageFormDTO.getGroupId());
} }

14
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java

@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.topic.entity.ResiTopicEntity; import com.epmet.modules.topic.entity.ResiTopicEntity;
import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO;
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.result.ResiTopicIncludeIssueInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO; import com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -49,11 +50,11 @@ public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
/** /**
* @Description 查询该组内最近十条话题信息 * @Description 查询该组内最近十条话题信息
* @Param groupId * @Param groupId
* @return List<ResiTopicInfoResultDTO> * @return List<ResiTopicIncludeIssueInfoResultDTO>
* @Author wangc * @Author wangc
* @Date 2020.04.01 09:40 * @Date 2020.04.01 09:40
**/ **/
List<ResiTopicInfoResultDTO> getLatestTenTopics(@Param("groupId")String groupId,@Param("userId")String userId); List<ResiTopicIncludeIssueInfoResultDTO> getLatestTenTopics(@Param("groupId")String groupId,@Param("userId")String userId);
/** /**
* @Description 查看历史话题(分页,允许状态筛选) * @Description 查看历史话题(分页,允许状态筛选)
@ -64,6 +65,15 @@ public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
**/ **/
List<ResiTopicInfoResultDTO> getPastTopics(ResiTopicPageFormDTO topicPageFormDTO); List<ResiTopicInfoResultDTO> getPastTopics(ResiTopicPageFormDTO topicPageFormDTO);
/**
* @Description 查看历史话题(分页,允许状态筛选)
* @param topicPageFormDTO
* @return List<ResiTopicIncludeIssueInfoResultDTO> 每个实体类里包含shiftIssueFlag和issueId字段
* @author wangc
* @date 2020.05.11 16:06
**/
List<ResiTopicIncludeIssueInfoResultDTO> getTopicsIncludeIssueInfoByConditions(ResiTopicPageFormDTO topicPageFormDTO);
/** /**
* @Description 修改话题 * @Description 修改话题
* @Param ResiTopicEntity.class * @Param ResiTopicEntity.class

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/ResiTopicEntity.java

@ -23,7 +23,7 @@ import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* 话题信息表 * 话题信息表
@ -83,4 +83,14 @@ public class ResiTopicEntity extends BaseEpmetEntity {
*/ */
private String dimension; private String dimension;
/**
* 议题Id
*/
private String issueId;
/**
* 是否转为议题标识 true已转为议题 false未转为议题
* */
private Boolean shiftIssue;
} }

8
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java

@ -30,6 +30,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;
@ -122,7 +124,7 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @Author wangc * @Author wangc
* @Date 2020.04.01 08:59 * @Date 2020.04.01 08:59
**/ **/
Result<List<ResiTopicInfoResultDTO>> getLatestTopics(TokenDto tokenDto, String groupId); Result<List<ResiTopicIncludeIssueInfoResultDTO>> getLatestTopics(TokenDto tokenDto, String groupId);
/** /**
* @return Result<List < ResiTopicInfoResultDTO>> * @return Result<List < ResiTopicInfoResultDTO>>
@ -132,7 +134,7 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @Author wangc * @Author wangc
* @Date 2020.04.01 10:36 * @Date 2020.04.01 10:36
**/ **/
Result<List<ResiTopicInfoResultDTO>> getPastTopicList(TokenDto tokenDto, ResiTopicPageFormDTO topicPageFormDTO); Result<List<ResiTopicIncludeIssueInfoResultDTO>> getPastTopicList(TokenDto tokenDto, ResiTopicPageFormDTO topicPageFormDTO);
/** /**
* @return Result * @return Result
@ -172,7 +174,7 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @Author wangc * @Author wangc
* @Date 2020.04.01 15:56 * @Date 2020.04.01 15:56
**/ **/
Result<ResiTopicDetailResultDTO> getTopicDetail(TokenDto tokenDto, String topicId); Result<ResiTopicIncludeIssueDetailResultDTO> getTopicDetail(TokenDto tokenDto, String topicId);
/** /**
* @return List<ResiTopicInfoResultDTO> * @return List<ResiTopicInfoResultDTO>

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

@ -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

57
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

@ -109,7 +109,7 @@
</insert> </insert>
<!-- 查询最近十条话题 --> <!-- 查询最近十条话题 -->
<select id="getLatestTenTopics" parameterType="string" resultType="com.epmet.resi.group.dto.topic.result.ResiTopicInfoResultDTO"> <select id="getLatestTenTopics" parameterType="string" resultType="com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO">
SELECT SELECT
topic.ID AS topicId, topic.ID AS topicId,
topic.GROUP_ID, topic.GROUP_ID,
@ -117,7 +117,9 @@
topic.STATUS, topic.STATUS,
topic.CREATED_TIME AS releaseTime, topic.CREATED_TIME AS releaseTime,
topic.CREATED_BY AS userId, topic.CREATED_BY AS userId,
attachement2.firstPhoto, topic.SHIFT_ISSUE AS shiftIssueFlag,
IFNULL(topic.ISSUE_ID,'') AS issueId,
IFNULL(attachement2.firstPhoto,'') AS firstPhoto,
CASE CASE
WHEN topic.CREATED_BY = #{userId} THEN 'me' WHEN topic.CREATED_BY = #{userId} THEN 'me'
ELSE 'other' ELSE 'other'
@ -157,7 +159,56 @@
topic.STATUS, topic.STATUS,
topic.CREATED_TIME AS releaseTime, topic.CREATED_TIME AS releaseTime,
topic.CREATED_BY AS userId, topic.CREATED_BY AS userId,
attachement2.firstPhoto, IFNULL(attachement2.firstPhoto,'') AS firstPhoto,
CASE
WHEN topic.CREATED_BY = #{userId} THEN 'me'
ELSE 'other'
END AS releaseUserFlag
FROM
RESI_TOPIC topic
LEFT JOIN
(
SELECT
attachment.TOPIC_ID AS attachmentTopicId,
attachment.ATTACHMENT_URL as firstPhoto,
MIN(attachment.SORT)
FROM
RESI_TOPIC_ATTACHMENT attachment
WHERE
attachment.DEL_FLAG = '0'
GROUP BY attachment.TOPIC_ID
) attachement2
ON
topic.ID = attachement2.attachmentTopicId
<where>
topic.DEL_FLAG = '0'
AND topic.GROUP_ID = #{groupId}
<if test='"hidden" != status'>
AND <![CDATA[ topic.STATUS <> 'hidden' ]]>
</if>
<if test='null != status and "" != status'>
AND topic.STATUS = #{status}
</if>
</where>
ORDER BY
topic.CREATED_TIME DESC
LIMIT #{pageNo},#{pageSize}
</select>
<!-- 查询历史话题,分页,参数查询 ,返回时携带shift_issue、issue_id字段-->
<select id="getTopicsIncludeIssueInfoByConditions" parameterType="com.epmet.resi.group.dto.topic.form.ResiTopicPageFormDTO" resultType="com.epmet.resi.group.dto.topic.result.ResiTopicIncludeIssueInfoResultDTO">
SELECT
topic.ID AS topicId,
topic.GROUP_ID,
topic.TOPIC_CONTENT,
topic.STATUS,
topic.CREATED_TIME AS releaseTime,
topic.CREATED_BY AS userId,
topic.SHIFT_ISSUE AS shiftIssueFlag,
IFNULL(topic.ISSUE_ID,'') AS issueId,
IFNULL(attachement2.firstPhoto,'') AS firstPhoto,
CASE CASE
WHEN topic.CREATED_BY = #{userId} THEN 'me' WHEN topic.CREATED_BY = #{userId} THEN 'me'
ELSE 'other' ELSE 'other'

2
epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/excel/IssueExcel.java

@ -40,7 +40,7 @@ public class IssueExcel {
@Excel(name = "来源类型 eg:resi_topic") @Excel(name = "来源类型 eg:resi_topic")
private String sourceType; private String sourceType;
@Excel(name = "来源ID eg:2223232(当SOURCE_TYPE为"resi_topic"时,这里指话题的ID)") @Excel(name = "来源ID eg:2223232(当SOURCE_TYPE为\"resi_topic\"时,这里指话题的ID)")
private String sourceId; private String sourceId;
@Excel(name = "关闭理由 【未关闭时可以为空】关闭议题时必填的理由,转项目后而且已经结案,这个字段不回写") @Excel(name = "关闭理由 【未关闭时可以为空】关闭议题时必填的理由,转项目后而且已经结案,这个字段不回写")

Loading…
Cancel
Save