Browse Source

Merge remote-tracking branch 'origin/dev_personal_center' into dev_personal_center

# Conflicts:
#	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
#	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
#	epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
#	epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
#	epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
#	epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
#	epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
#	epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java
#	epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java
#	epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java
dev_shibei_match
yinzuomei 5 years ago
parent
commit
2961f7038d
  1. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  2. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MyPubIssuesAuditingFormDTO.java
  3. 14
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  4. 6
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  5. 13
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  6. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  7. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  8. 37
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  9. 15
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  10. 4
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgInfoFormDTO.java
  11. 4
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java
  12. 23
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupInfoFormDTO.java
  13. 19
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupInfoResultDTO.java
  14. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java
  15. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java
  16. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java
  17. 7
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java
  18. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java
  19. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java
  20. 13
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  21. 7
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  22. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  23. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  24. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  25. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  26. 1
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java
  27. 116
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  28. 16
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  29. 4
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  30. 9
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java
  31. 5
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java
  32. 7
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java
  33. 18
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java
  34. 10
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java
  35. 22
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java
  36. 28
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java
  37. 3
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java
  38. 35
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java
  39. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyAdviceListResultDTO.java
  40. 36
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java
  41. 14
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  42. 16
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  43. 21
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java
  44. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java
  45. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java
  46. 49
      epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java
  47. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java
  48. 18
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java
  49. 3
      epmet-user/epmet-user-server/src/main/resources/mapper/UserAdviceDao.xml
  50. 48
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -84,6 +84,11 @@ public enum RequirePermissionEnum {
WORK_GRASSROOTS_ISSUE_SHIFT_PROJECT("work_grassroots_issue_shift_project", "基层治理:议题管理:转项目","转项目(选择处理部门api也需要添加此校验)"),
WORK_GRASSROOTS_ISSUE_CLOSE("work_grassroots_issue_close","基层治理:议题管理:关闭议题","关闭议题"),
/**
* 徽章
*/
WORK_GRASSROOTS_BADGE_AUDIT("work_grassroots_badge_audit","基层治理:徽章审核:徽章审核","徽章审核权限,目前这个模块的操作都用这一个权限控制,没有细分"),
/**
* 工作-项目跟踪
*/

5
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MyPubIssuesAuditingFormDTO.java

@ -3,6 +3,7 @@ package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
@ -16,10 +17,10 @@ public class MyPubIssuesAuditingFormDTO implements Serializable {
public interface MyPubIssuesAuditing{}
@NotBlank(message = "页码不能为空",groups = MyPubIssuesAuditing.class)
@NotNull(message = "页码不能为空",groups = MyPubIssuesAuditing.class)
private Integer pageNo;
@NotBlank(message = "每页数量不能为空",groups = MyPubIssuesAuditing.class)
@NotNull(message = "每页数量不能为空",groups = MyPubIssuesAuditing.class)
private Integer pageSize;
/**

14
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java

@ -6,6 +6,10 @@ import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.feign.fallback.GovIssueOpenFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
@ -33,6 +37,16 @@ public interface GovIssueOpenFeignClient {
@PostMapping("/gov/issue/issuevotestatistical/mypartissues")
Result<List<MyPartIssuesResultDTO>> myPartIssues(@RequestBody MyPartIssuesFormDTO myPartIssuesFormDTO);
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param tokenDto
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@PostMapping("/gov/issue/issue/mypubissuesauditing")
Result<List<MyPubIssuesAuditingResultDTO>> myPubIssuesAuditing(@RequestBody MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO);
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueDTO>>
* @param formDTO

6
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java

@ -7,6 +7,7 @@ import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.feign.GovIssueOpenFeignClient;
import org.springframework.stereotype.Component;
@ -25,6 +26,11 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"myPartIssues",myPartIssuesFormDTO);
}
@Override
public Result<List<MyPubIssuesAuditingResultDTO>> myPubIssuesAuditing(MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"myPubIssuesAuditing",myPubIssuesAuditingFormDTO);
}
@Override
public Result<List<IssueDTO>> getMyPubIssues(MyPubIssuesAuditingFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER,"getMyPubIssues",formDTO);

13
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java

@ -2,7 +2,6 @@ package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
@ -143,6 +142,18 @@ public class IssueController {
return new Result<Integer>().ok(issueService.checkTopicShiftIssue(formDTO));
}
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@PostMapping("mypubissuesauditing")
public Result<List<MyPubIssuesAuditingResultDTO>> myPubIssuesAuditing(@RequestBody MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO){
return new Result<List<MyPubIssuesAuditingResultDTO>>().ok(issueService.myPubIssuesAuditing(myPubIssuesAuditingFormDTO));
}
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.IssueDTO>>
* @param formDTO

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java

@ -145,6 +145,14 @@ public interface IssueDao extends BaseDao<IssueEntity> {
*/
Integer checkTopicShiftIssue(TopicInfoFormDTO formDTO);
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
List<MyPubIssuesAuditingResultDTO> myPubIssuesAuditing(@Param("userId")String userId);
/**
* @return java.util.List<com.epmet.dto.IssueDTO>
* @param pageNo

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java

@ -5,6 +5,8 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.dto.form.CommonIssueListFormDTO;
import com.epmet.dto.form.IssueShiftedFromTopicFormDTO;
import com.epmet.entity.IssueEntity;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
@ -217,6 +219,14 @@ public interface IssueService extends BaseService<IssueEntity> {
*/
Integer checkTopicShiftIssue(TopicInfoFormDTO formDTO);
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
List<MyPubIssuesAuditingResultDTO> myPubIssuesAuditing(MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO);
/**
* @return java.util.List<com.epmet.dto.IssueDTO>
* @param formDTO

37
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -17,6 +17,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.IssueConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.IssueDao;
@ -34,21 +35,27 @@ import com.epmet.entity.IssueProjectRelationEntity;
import com.epmet.feign.*;
import com.epmet.redis.GovIssueRedis;
import com.epmet.redis.IssueVoteDetailRedis;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.IssueProcessService;
import com.epmet.service.IssueProjectRelationService;
import com.epmet.service.IssueService;
import com.epmet.service.IssueVoteStatisticalService;
import com.epmet.utils.ModuleConstants;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.util.*;
import java.util.stream.Collectors;
@ -78,6 +85,10 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private IssueProjectRelationDao issueProjectRelationDao;
@Autowired
private IssueVoteDetailRedis issueVoteDetailRedis;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private ResiGroupOpenFeignClient resiGroupOpenFeignClient;
protected static final Logger logger = LoggerFactory.getLogger(IssueServiceImpl.class);
@ -841,6 +852,32 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return baseDao.checkTopicShiftIssue(formDTO);
}
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@Override
public List<MyPubIssuesAuditingResultDTO> myPubIssuesAuditing(MyPubIssuesAuditingFormDTO form) {
List<MyPubIssuesAuditingResultDTO> list = new ArrayList<>();
PageInfo<MyPubIssuesAuditingResultDTO> result = PageHelper.startPage(form.getPageNo(),form.getPageSize()).doSelectPageInfo(() -> baseDao.myPubIssuesAuditing(form.getUserId()));
if (!CollectionUtils.isEmpty(result.getList())){
list = result.getList();
Result<List<OrgInfoResultDTO>> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, list.stream().map(m -> m.getGridId()).collect(Collectors.toList())));
if (!gridNameList.success()){
throw new RenException("查询议题来源网格名称失败......");
}
list.forEach(l -> gridNameList.getData().stream().filter(o -> l.getGridId().equals(o.getOrgId())).forEach(o -> l.setTopicReleaseGridName(o.getOrgName())));
Result<List<GroupInfoResultDTO>> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(list.stream().map(m -> m.getTopicId()).collect(Collectors.toList())));
if (!groupNameList.success()){
throw new RenException("查询议题来源小组名称失败......");
}
list.forEach(l -> groupNameList.getData().stream().filter(g -> l.getTopicId().equals(g.getTopicId())).forEach(g -> l.setTopicReleaseGroupName(g.getTopicGroupName())));
}
return list;
}
/**
* @param formDTO
* @return java.util.List<com.epmet.dto.IssueDTO>

15
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -378,6 +378,21 @@
AND source_id = #{topicId}
</select>
<!-- 个人中心-我发起的议题列表-表决中 -->
<select id="myPubIssuesAuditing" resultType="com.epmet.dto.result.MyPubIssuesAuditingResultDTO">
SELECT
i.ID AS issueId,
i.SUGGESTION,
i.ISSUE_TITLE,
i.SOURCE_ID AS topicId,
i.GRID_ID AS gridId,
UNIX_TIMESTAMP(i.CREATED_TIME) AS shiftIssueTime
FROM issue i
WHERE i.DEL_FLAG = '0'
AND i.ISSUE_STATUS = 'voting'
AND i.CREATED_BY = #{userId}
</select>
<!-- 查询我发起的议题(可根据状态查询)-->
<select id="selectMyPubIssues" parameterType="map" resultType="com.epmet.dto.IssueDTO">
SELECT

4
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgInfoFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
@ -10,6 +11,7 @@ import java.util.List;
* @DateTime 2020/11/10 2:13 下午
*/
@Data
@AllArgsConstructor
public class OrgInfoFormDTO implements Serializable {
private static final long serialVersionUID = 4480485864711053393L;
@ -24,4 +26,6 @@ public class OrgInfoFormDTO implements Serializable {
*/
private List<String> orgIds;
public OrgInfoFormDTO() {
}
}

4
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java

@ -43,11 +43,11 @@ public class MyPartProjectsResultDTO implements Serializable {
/**
* 议题Id用户数据整合使用(项目出自哪个网格"组织-网格")
*/
@JsonIgnore
//@JsonIgnore
private String issueId;
/**
* 项目状态(待处理 pending结案closed)用于查询当前处理部门信息
*/
@JsonIgnore
//@JsonIgnore
private String status;
}

23
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupInfoFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.resi.group.dto.group.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/11/11 1:30 下午
*/
@Data
@AllArgsConstructor
public class GroupInfoFormDTO implements Serializable {
private static final long serialVersionUID = -7940077760343241658L;
private List<String> topicIds;
public GroupInfoFormDTO() {
}
}

19
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupInfoResultDTO.java

@ -0,0 +1,19 @@
package com.epmet.resi.group.dto.group.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2020/11/11 1:31 下午
*/
@Data
public class GroupInfoResultDTO implements Serializable {
private static final long serialVersionUID = 5508197256307317314L;
private String topicId;
private String topicGroupName;
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description
@ -51,4 +52,9 @@ public class GovHiddenTopicInfoResultDTO implements Serializable {
* 话题的第一张图片地址
* */
private String topicFirstPhoto;
/**
* 徽章Url集合
*/
private List<String> badgeList;
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -57,4 +58,9 @@ public class GovTopicInfoResultDTO implements Serializable {
* 话题的状态
* */
private String topicState;
/**
* 徽章Url集合
*/
private List<String> badgeList;
}

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

@ -56,4 +56,9 @@ public class ResiTopicDetailResultDTO implements Serializable {
* */
private List<String> topicImgs;
/**
* 徽章Url集合
*/
private List<String> badgeList;
}

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

@ -70,4 +70,11 @@ public class ResiTopicIncludeIssueDetailResultDTO implements Serializable {
* 关闭详情 如果没有关闭 对象里的字符串属性为String
* */
private ResiTopicClosingMsgResultDTO closeDetail;
/**
* 徽章Url列表
*/
private List<String> badgeList;
}

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

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description 话题信息返回DTO(包含议题Id和是否转为议题Flag)
@ -71,4 +72,9 @@ public class ResiTopicIncludeIssueInfoResultDTO implements Serializable {
* 议题Id当shiftIssueFlag为false时返回""
* */
private String issueId;
/**
* 用户徽章 当releaseUserFlag为"me"时为空
*/
private List<String> badgeList;
}

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

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description 查看历史话题返回对象
@ -62,4 +63,9 @@ public class ResiTopicInfoResultDTO implements Serializable{
* 第一张图片
* */
private String firstPhoto;
/**
* 用户勋章Url集合
*/
private List<String> badgeList;
}

13
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -2,11 +2,14 @@ package com.epmet.resi.group.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -17,6 +20,7 @@ import java.util.List;
* @date 2020/6/4 13:16
*/
@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class)
//@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class,url = "localhost:8095")
public interface ResiGroupOpenFeignClient {
/**
@ -26,4 +30,13 @@ public interface ResiGroupOpenFeignClient {
@PostMapping(value = "/resi/group/comment/topictoissuelist")
Result<List<IssueGridResultDTO>> topicToIssueList(MyPartProjectsFormDTO formDTO);
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
@PostMapping("resi/group/group/groupinfo")
Result<List<GroupInfoResultDTO>> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO);
}

7
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -3,6 +3,8 @@ package com.epmet.resi.group.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
@ -24,4 +26,9 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "topicToIssueList", formDTO);
}
@Override
public Result<List<GroupInfoResultDTO>> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectGroupInfo", groupInfoFormDTO);
}
}

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java

@ -359,4 +359,15 @@ public class ResiGroupController {
resiGroupStatisticalService.updateWhenAuditedResiRole(resiIdentityFormDTO);
return new Result();
}
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
@PostMapping("groupinfo")
public Result<List<GroupInfoResultDTO>> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO){
return new Result<List<GroupInfoResultDTO>>().ok(resiGroupService.selectGroupInfo(groupInfoFormDTO));
}
}

8
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java

@ -188,4 +188,12 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
* @date 2020.05.22 09:54
**/
List<ResiGroupDTO> selectGroupListByGridIds(@Param("gridIds") List<String> gridIds);
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
List<GroupInfoResultDTO> selectGroupInfo(@Param("topicIds")List<String> userIds);
}

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

@ -293,4 +293,12 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @return java.util.List<com.epmet.resi.group.dto.group.result.RecommendedListResultDTO>
*/
List<RecommendedListResultDTO> recommendedList(RecommendedListFormDTO formDTO);
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO);
}

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -1016,4 +1016,15 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,msg));
}
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
@Override
public List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) {
return baseDao.selectGroupInfo(groupInfoFormDTO.getTopicIds());
}
}

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

@ -97,6 +97,7 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
@Autowired
ResiGroupMemberDao resiGroupMemberDao;
@Autowired
ResiTopicDao resiTopicdDao;
@Value("${openapi.scan.server.url}")

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

@ -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);
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);
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();

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

@ -397,4 +397,20 @@
GRID_ID = #{gridId}
</foreach>
</select>
<!-- 查询话题所属小组名 -->
<select id="selectGroupInfo" resultType="com.epmet.resi.group.dto.group.result.GroupInfoResultDTO">
SELECT
rt.ID AS topicId,
rg.GROUP_NAME AS topicGroupName
FROM resi_topic rt
LEFT JOIN resi_group rg ON rg.ID = rt.GROUP_ID
WHERE rt.DEL_FLAG = '0'
AND rg.DEL_FLAG = '0'
AND
<foreach collection="topicIds" item="topicId" separator=" OR ">
rt.id = #{topicId}
</foreach>
</select>
</mapper>

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

@ -460,8 +460,8 @@
<select id="selectIssueList" resultType="com.epmet.resi.group.dto.topic.result.IssueGridResultDTO">
SELECT
rt.issue_id AS "gridId",
rg.grid_id AS "issueId"
rt.issue_id AS "issueId",
rg.grid_id AS "gridId"
FROM
resi_topic rt
INNER JOIN resi_group rg ON rt.group_id = rg.id

9
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java

@ -3,7 +3,9 @@ package com.epmet.modules.advice.controller;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.MyAdviceListFormDTO;
import com.epmet.dto.form.SubmitAdviceFormDTO;
import com.epmet.dto.result.MyAdviceListResultDTO;
import com.epmet.modules.advice.service.AdviceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
@ -42,13 +45,13 @@ public class AdviceController {
/**
* @Description 我的建议列表
* @param map
* @param dto
* @return com.epmet.commons.tools.utils.Result
* @Author liushaowen
* @Date 2020/11/5 13:26
*/
@PostMapping("myadvicelist")
public Result getMyAdviceList(@RequestBody Map<String,Integer> map){
return adviceService.getMyAdviceList(map);
public Result<List<MyAdviceListResultDTO>> getMyAdviceList(@RequestBody MyAdviceListFormDTO dto){
return adviceService.getMyAdviceList(dto);
}
}

5
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java

@ -1,12 +1,15 @@
package com.epmet.modules.advice.service;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.MyAdviceListFormDTO;
import com.epmet.dto.form.SubmitAdviceFormDTO;
import com.epmet.dto.result.MyAdviceListResultDTO;
import java.util.List;
import java.util.Map;
public interface AdviceService {
Result submitAdvice(SubmitAdviceFormDTO dto);
Result getMyAdviceList(Map<String,Integer> map);
Result<List<MyAdviceListResultDTO>> getMyAdviceList(MyAdviceListFormDTO dto);
}

7
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java

@ -1,6 +1,7 @@
package com.epmet.modules.advice.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.MyAdviceListFormDTO;
import com.epmet.dto.form.SubmitAdviceFormDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.advice.service.AdviceService;
@ -31,13 +32,13 @@ public class AdviceServiceImpl implements AdviceService {
/**
* @Description 我的建议列表
* @param map
* @param dto
* @return com.epmet.commons.tools.utils.Result
* @Author liushaowen
* @Date 2020/11/5 10:40
*/
@Override
public Result getMyAdviceList(Map<String, Integer> map) {
return epmetUserOpenFeignClient.myAdviceList(map);
public Result getMyAdviceList(MyAdviceListFormDTO dto) {
return epmetUserOpenFeignClient.myAdviceList(dto);
}
}

18
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java

@ -8,6 +8,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.result.MyPubIssuesClosedResultDTO;
import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO;
import com.epmet.modules.person.service.IssueService;
@ -49,12 +50,25 @@ public class IssueController {
* @author sun
*/
@PostMapping("my-part-projects")
public Result<List<MyPartProjectsResultDTO>> myPartProjects(@RequestBody MyPartProjectsFormDTO formDTO) {
public Result<List<MyPartProjectsResultDTO>> myPartProjects(@LoginUser TokenDto tokenDTO, @RequestBody MyPartProjectsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, MyPartProjectsFormDTO.MyProject.class);
formDTO.setUserId(loginUserUtil.getLoginUserId());
formDTO.setUserId(tokenDTO.getUserId());
return new Result<List<MyPartProjectsResultDTO>>().ok(issueService.myPartProjects(formDTO));
}
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param tokenDto
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@PostMapping("my-pub-issues/auditing")
public Result<List<MyPubIssuesAuditingResultDTO>> myPubIssuesAuditing(@LoginUser TokenDto tokenDto, @RequestBody MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO){
ValidatorUtils.validateEntity(myPubIssuesAuditingFormDTO, MyPubIssuesAuditingFormDTO.MyPubIssuesAuditing.class);
return new Result<List<MyPubIssuesAuditingResultDTO>>().ok(issueService.myPubIssuesAuditing(tokenDto,myPubIssuesAuditingFormDTO));
}
/**
* @param formDTO
* @author yinzuomei

10
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.result.MyPubIssuesClosedResultDTO;
import com.epmet.dto.result.MyPubIssuesShiftProjectResultDTO;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
@ -30,6 +31,15 @@ public interface IssueService {
*/
List<MyPartProjectsResultDTO> myPartProjects(MyPartProjectsFormDTO formDTO);
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param tokenDto
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
List<MyPubIssuesAuditingResultDTO> myPubIssuesAuditing(TokenDto tokenDto, MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO);
/**
* @param formDTO
* @author yinzuomei

22
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java

@ -8,6 +8,11 @@ import com.epmet.constant.IssueOpenConstant;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.*;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
@ -126,6 +131,23 @@ public class IssueServiceImpl implements IssueService {
return resultList;
}
/**
* @Description 个人中心-我发起的议题列表-表决中
* @Param tokenDto
* @Param myPubIssuesAuditingFormDTO
* @author zxc
* @date 2020/11/11 9:24 上午
*/
@Override
public List<MyPubIssuesAuditingResultDTO> myPubIssuesAuditing(TokenDto tokenDto, MyPubIssuesAuditingFormDTO myPubIssuesAuditingFormDTO) {
myPubIssuesAuditingFormDTO.setUserId(tokenDto.getUserId());
Result<List<MyPubIssuesAuditingResultDTO>> listResult = issueOpenFeignClient.myPubIssuesAuditing(myPubIssuesAuditingFormDTO);
if (!listResult.success()){
throw new RenException("查询我发起的议题列表-表决中失败......");
}
return listResult.getData();
}
/**
* @param formDTO
* @author yinzuomei

28
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java

@ -0,0 +1,28 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.Min;
import java.io.Serializable;
/**
* @description:
* @author: liushaowen
* @date: 2020/11/11 14:41
*/
@Data
public class MyAdviceListFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 页码
*/
@Min(1)
private int pageNo;
/**
* 页大小
*/
@Min(1)
private int pageSize;
}

3
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java

@ -6,7 +6,8 @@ import java.io.Serializable;
import java.util.Objects;
/**
* @Description 用户-徽章缓存单元(专为redis操作提供) 尽量不要使用这个DTO,因为重写了hashcode和equals
* @Description 用户-徽章缓存单元(专为redis操作提供) 尽量不要使用这个DTO,因为重写了hashcode和equals
* 在为单个用户查询时可以使用这个DTOFIXME 批量查询时不要用该类接收
* @ClassName UserBadgeUnitFormDTO
* @Auth wangc
* @Date 2020-11-05 10:00

35
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* @Description 传入一组用户Id
* @ClassName UserGroupFormDTO
* @Auth wangc
* @Date 2020-11-10 14:47
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserGroupFormDTO implements Serializable {
private static final long serialVersionUID = -8406380736895707328L;
/**
* 客户Id
*/
@NotBlank(message = "客户Id不能为空")
private String customerId;
/**
* 用户Id集合
*/
@NotEmpty(message = "用户Id不能为空")
private List<String> userIds;
}

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyAdviceListResultDTO.java

@ -18,6 +18,8 @@ public class MyAdviceListResultDTO implements Serializable {
private String adviceContent;
private String adviceType;
private List<String> imgList;
@JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")

36
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 用户勋章单位DTO
ClassName UserBadgeInfoResultDTO
* @Auth wangc
* @Date 2020-11-10 15:29
*/
@Data
public class UserBadgeInfoResultDTO implements Serializable {
private static final long serialVersionUID = -793619932269122320L;
/**
* 用户Id
*/
private String userId;
/**
* 徽章Id
*/
private String badgeId;
/**
* 徽章图标 url
*/
private String badgeIcon;
/**
* 徽章名称
*/
private String badgeName;
}

14
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -404,13 +404,13 @@ public interface EpmetUserOpenFeignClient {
/**
* @Description 个人中心-我的建议列表
* @param map pageSize,pageNo
* @param dto
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.MyAdviceListResultDTO>
* @Author liushaowen
* @Date 2020/11/11 10:35
*/
@PostMapping("/epmetuser/useradvice/myadvicelist")
Result<MyAdviceListResultDTO> myAdviceList(@RequestBody Map<String,Integer> map);
Result<List<MyAdviceListResultDTO>> myAdviceList(@RequestBody MyAdviceListFormDTO dto);
/**
* @Description 个人中心-提交建议
@ -421,4 +421,14 @@ public interface EpmetUserOpenFeignClient {
*/
@PostMapping("/epmetuser/useradvice/submitadvice")
Result submitAdvice(@RequestBody SubmitAdviceFormDTO dto);
/**
* @Description 供其他服务调用 查询指定用户需要显示的徽章信息(缓存补偿)
* @param param
* @return com.epmet.commons.tools.utils.Result<java.util.Map<java.lang.String,java.util.List<com.epmet.dto.form.UserBadgeUnitFormDTO>>>
* @author wangc
* @date 2020.11.10 15:59
*/
@PostMapping("/epmetuser/badge/usershowbadge")
Result<Map<String,List<UserBadgeUnitFormDTO>>> userShowBadge(@RequestBody UserGroupFormDTO param);
}

16
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -279,8 +279,8 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
}
@Override
public Result<MyAdviceListResultDTO> myAdviceList(Map<String, Integer> map) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "myAdviceList", map);
public Result<List<MyAdviceListResultDTO>> myAdviceList(MyAdviceListFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "myAdviceList", dto);
}
@ -288,4 +288,16 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result submitAdvice(SubmitAdviceFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "submitAdvice", dto);
}
/**
* @Description 供其他服务调用 查询指定用户需要显示的徽章信息(缓存补偿)
* @param param
* @return com.epmet.commons.tools.utils.Result<java.util.Map<java.lang.String,java.util.List<com.epmet.dto.form.UserBadgeUnitFormDTO>>>
* @author wangc
* @date 2020.11.10 15:59
*/
@Override
public Result<Map<String, List<UserBadgeUnitFormDTO>>> userShowBadge(UserGroupFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "userShowBadge", param);
}
}

21
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java

@ -4,10 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.AddBadgeFormDTO;
import com.epmet.dto.form.BadgeAuditFormDTO;
import com.epmet.dto.form.BadgeFormDTO;
import com.epmet.dto.form.EditBadgeFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.BadgeAuditRecordResultDTO;
import com.epmet.dto.result.BadgeAuditingResultDTO;
import com.epmet.dto.result.BadgeDetailResultDTO;
@ -18,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @author zhaoqifeng
@ -29,6 +27,8 @@ import java.util.List;
public class BadgeController {
@Autowired
private BadgeService badgeService;
@Autowired
private UserBadgeRedis badgeRedis;
/**
* 徽章列表
@ -152,4 +152,17 @@ public class BadgeController {
badgeService.audit(tokenDto, formDTO);
return new Result();
}
/**
* @Description 供其他服务调用 查询指定用户需要显示的徽章信息(缓存补偿)
* @param param
* @return com.epmet.commons.tools.utils.Result<java.util.Map<java.lang.String,java.util.List<com.epmet.dto.form.UserBadgeUnitFormDTO>>>
* @author wangc
* @date 2020.11.10 15:59
*/
@PostMapping("usershowbadge")
public Result<Map<String,List<UserBadgeUnitFormDTO>>> userShowBadge(@RequestBody UserGroupFormDTO param){
ValidatorUtils.validateEntity(param);
return new Result<Map<String,List<UserBadgeUnitFormDTO>>>().ok(badgeRedis.batchObtainUserBadge(param.getCustomerId(),param.getUserIds()));
}
}

15
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java

@ -29,6 +29,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.UserAdviceDTO;
import com.epmet.dto.form.AdviceListFormDTO;
import com.epmet.dto.form.MyAdviceListFormDTO;
import com.epmet.dto.form.ReplyAdviceFormDTO;
import com.epmet.dto.form.SubmitAdviceFormDTO;
import com.epmet.dto.result.AdviceDetailResultDTO;
@ -155,22 +156,14 @@ public class UserAdviceController {
/**
* @Description 居民端-我的建议列表
* @param map ->pageSize,pageNo
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.MyAdviceListResultDTO>>
* @Author liushaowen
* @Date 2020/11/9 17:35
*/
@PostMapping("myadvicelist")
public Result<List<MyAdviceListResultDTO>> myAdviceList(@RequestBody Map<String,Integer> map) {
int pageSize = map.get("pageSize");
int pageNo = map.get("pageNo");
if (pageSize == 0){
pageSize = 10;
}
if (pageNo == 0){
pageNo = 1;
}
return new Result<List<MyAdviceListResultDTO>>().ok(userAdviceService.myAdviceList(pageSize,pageNo,loginUserUtil.getLoginUserId()));
public Result<List<MyAdviceListResultDTO>> myAdviceList(@RequestBody MyAdviceListFormDTO dto) {
return new Result<List<MyAdviceListResultDTO>>().ok(userAdviceService.myAdviceList(dto.getPageSize(),dto.getPageNo(),loginUserUtil.getLoginUserId()));
}
@PostMapping("submitadvice")

15
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java

@ -5,10 +5,7 @@ import com.epmet.dto.form.AuthFieldFormDTO;
import com.epmet.dto.form.OpenedOrClosedFormDTO;
import com.epmet.dto.form.UserBadgeListFormDTO;
import com.epmet.dto.form.UserBadgeUnitFormDTO;
import com.epmet.dto.result.AuthFieldResultDTO;
import com.epmet.dto.result.CertificationDetailResultDTO;
import com.epmet.dto.result.UserBadgeListResultDTO;
import com.epmet.dto.result.UserOperListResultDTO;
import com.epmet.dto.result.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -112,4 +109,14 @@ public interface UserBadgeDao {
* @date 2020.11.09 14:14
*/
List<UserBadgeUnitFormDTO> selectUserSortedBadge(@Param("userId")String userId,@Param("customerId")String customerId);
/**
* @Description 批量查找用户全部的显示徽章(排序)
* @param customerId
* @param userIds
* @return java.util.List<com.epmet.dto.result.UserBadgeInfoResultDTO>
* @author wangc
* @date 2020.11.09 14:14
*/
List<UserBadgeInfoResultDTO> selectBatchUserSortedBadge(@Param("customerId")String customerId, @Param("userIds")List<String> userIds);
}

49
epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java

@ -10,6 +10,7 @@ import com.epmet.constant.BadgeConstant;
import com.epmet.constant.UserRedisKeys;
import com.epmet.dao.BadgeDao;
import com.epmet.dto.form.UserBadgeUnitFormDTO;
import com.epmet.dto.result.UserBadgeInfoResultDTO;
import com.epmet.dto.result.UserBadgeListResultDTO;
import com.epmet.service.UserBadgeService;
import lombok.extern.slf4j.Slf4j;
@ -23,9 +24,8 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import static com.epmet.commons.tools.redis.RedisUtils.MINUTE_THIRTY_EXPIRE;
@ -118,7 +118,6 @@ public class UserBadgeRedis {
final List<UserBadgeUnitFormDTO> sortedBadges = cache;
redisTemplate.executePipelined((RedisCallback<List<UserBadgeUnitFormDTO>>) connection ->{
sortedBadges.forEach(badge -> {
connection.listCommands().rPush(UserRedisKeys.getResiUserBadgeKey(customerId, userId).getBytes(),
redisTemplate.getValueSerializer().serialize(badge));
});
@ -128,6 +127,48 @@ public class UserBadgeRedis {
return cache;
}
/**
* @Description 批量获取用户显示徽章
* @param customerId
* @param userIds
* @return java.util.Map<java.lang.String,java.util.List<com.epmet.dto.form.UserBadgeUnitFormDTO>>
* @author wangc
* @date 2020.11.10 15:00
*/
public Map<String,List<UserBadgeUnitFormDTO>> batchObtainUserBadge(String customerId,List<String> userIds){
if(CollectionUtils.isEmpty(userIds)) return Collections.EMPTY_MAP;
Map<String,List<UserBadgeUnitFormDTO>> result = new HashMap<>();
//存放缓存为空的
List<String> cacheBlank = new LinkedList<>();
userIds.forEach(userId -> {
List<UserBadgeUnitFormDTO> badges =
redisUtils.lrange(UserRedisKeys.getResiUserBadgeKey(customerId,userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class);
if(CollectionUtils.isEmpty(badges)){cacheBlank.add(userId);}else{result.put(userId,badges);}
});
if(!CollectionUtils.isEmpty(cacheBlank)){
Map<String,List<UserBadgeInfoResultDTO>>
map = badgeService.getBatchUserSortedBadge(customerId,cacheBlank);
if(null != map && !map.isEmpty()){
map.forEach((k,v) -> {
List<UserBadgeUnitFormDTO> covert =
v.stream().map( o -> {
return ConvertUtils.sourceToTarget(o,UserBadgeUnitFormDTO.class);
}).collect(Collectors.toList());
result.put(k,covert);
redisTemplate.executePipelined((RedisCallback<List<UserBadgeUnitFormDTO>>) connection ->{
covert.forEach(badge -> {
connection.listCommands().rPush(UserRedisKeys.getResiUserBadgeKey(customerId, k).getBytes(),
redisTemplate.getValueSerializer().serialize(badge));
});
return null;
});
});
}
}
return result;
}
/**
* 用户点亮或取消徽章
* @param

15
epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java

@ -3,12 +3,10 @@ package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AuthFieldResultDTO;
import com.epmet.dto.result.CertificationDetailResultDTO;
import com.epmet.dto.result.UserBadgeListResultDTO;
import com.epmet.dto.result.UserOperListResultDTO;
import com.epmet.dto.result.*;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -91,4 +89,13 @@ public interface UserBadgeService {
*/
List<UserBadgeUnitFormDTO> getUserSortedBadge(String userId,String customerId);
/**
* @Description 批量获取用户显示徽章
* @param customerId
* @param userIds
* @return java.util.Map<java.lang.String,java.util.List< com.epmet.dto.result.UserBadgeInfoResultDTO>>
* @author wangc
* @date 2020.11.10 15:12
*/
Map<String,List<UserBadgeInfoResultDTO>> getBatchUserSortedBadge(String customerId, List<String> userIds);
}

18
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

@ -27,7 +27,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author zxc
@ -287,4 +290,19 @@ public class UserBadgeServiceImpl implements UserBadgeService {
return userBadgeDao.selectUserSortedBadge(userId,customerId);
}
/**
* @Description 批量获取用户显示徽章
* @param customerId
* @param userIds
* @return java.util.Map<java.lang.String,java.util.List< com.epmet.dto.result.UserBadgeInfoResultDTO>>
* @author wangc
* @date 2020.11.10 15:12
*/
@Override
public Map<String, List<UserBadgeInfoResultDTO>> getBatchUserSortedBadge(String customerId, List<String> userIds) {
List<UserBadgeInfoResultDTO> badges = userBadgeDao.selectBatchUserSortedBadge(customerId,userIds);
if(CollectionUtils.isEmpty(badges)) return Collections.EMPTY_MAP;
return badges.stream().collect(Collectors.groupingBy(UserBadgeInfoResultDTO :: getUserId));
}
}

3
epmet-user/epmet-user-server/src/main/resources/mapper/UserAdviceDao.xml

@ -46,6 +46,7 @@
<resultMap id="myAdviceListResultMap" type="com.epmet.dto.result.MyAdviceListResultDTO">
<id column="id"></id>
<result property="adviceContent" column="ADVICE_CONTENT"/>
<result property="adviceType" column="ADVICE_TYPE"/>
<result property="adviceTime" column="ADVICE_TIME"/>
<result property="replyContent" column="REPLY_CONTENT"/>
<result property="replyTime" column="REPLY_TIME"/>
@ -53,7 +54,7 @@
</resultMap>
<select id="myAdviceList" resultMap="myAdviceListResultMap">
select id,advice_content,advice_time,IFNULL(reply_content,''),IFNULL(reply_time,'')
select id,advice_type,advice_content,advice_time,IFNULL(reply_content,''),IFNULL(reply_time,'')
from user_advice
where del_flag = 0 and user_id = #{userId}
order by created_time desc

48
epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

@ -252,4 +252,52 @@
ORDER BY
userBadge.updated_time DESC
</select>
<select id="selectBatchUserSortedBadge" resultType="com.epmet.dto.result.UserBadgeInfoResultDTO">
SELECT
userBadge.user_id,
userBadge.badge_id,
badgeInfo.BADGE_NAME,
badgeInfo.BADGE_ICON
FROM
resi_user_badge userBadge
LEFT JOIN (
SELECT
id AS badgeId,
CUSTOMER_ID,
BADGE_NAME,
BADGE_ICON
FROM
(
SELECT
*
FROM
badge
WHERE
CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
AND BADGE_STATUS = 'online'
UNION ALL
SELECT
*
FROM
badge a
WHERE
CUSTOMER_ID = 'default'
AND a.DEL_FLAG = '0'
AND BADGE_STATUS = 'online'
AND NOT EXISTS ( SELECT ID FROM badge b WHERE CUSTOMER_ID = #{customerId} AND a.ID = b.ID )
) temp
) badgeInfo ON userBadge.badge_id = badgeInfo.badgeId
WHERE
userBadge.del_flag = '0'
<foreach collection="userIds" item="userId" open="AND ( " separator=" OR " close=" ) ">
userBadge.user_id = #{userId}
</foreach>
AND userBadge.customer_id = #{customerId}
AND userBadge.is_opened = 1
AND userBadge.certification_autid_status = 'approved'
ORDER BY
userBadge.user_id,userBadge.updated_time DESC
</select>
</mapper>

Loading…
Cancel
Save