Browse Source

Merge branch 'dev_temp' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_temp

dev_shibei_match
sunyuchao 5 years ago
parent
commit
1427597cdc
  1. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  2. 6
      epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java
  3. 5
      epmet-gateway/src/main/java/com/epmet/filter/CpProperty.java
  4. 4
      epmet-gateway/src/main/resources/bootstrap.yml
  5. 2
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java
  6. 35
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java
  7. 17
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  8. 13
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/MyPubIssuesAuditingFormDTO.java
  9. 30
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  10. 13
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  11. 42
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  12. 23
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  13. 31
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  14. 52
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  15. 43
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  16. 1
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  17. 4
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgInfoFormDTO.java
  18. 8
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java
  19. 46
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPubIssuesClosedResultDTO.java
  20. 46
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPubIssuesShiftProjectResultDTO.java
  21. 19
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java
  22. 13
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java
  23. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  24. 3
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  25. 43
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  26. 23
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupInfoFormDTO.java
  27. 19
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupInfoResultDTO.java
  28. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java
  29. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java
  30. 30
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CustomerPageFormDTO.java
  31. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java
  32. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java
  33. 1
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java
  34. 26
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ParticipatedTopicUnitResultDTO.java
  35. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java
  36. 7
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java
  37. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java
  38. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java
  39. 30
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  40. 14
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  41. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  42. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  43. 8
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  44. 23
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  45. 49
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  46. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  47. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  48. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  49. 175
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  50. 16
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  51. 24
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  52. 7
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java
  53. 3
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java
  54. 7
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java
  55. 42
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java
  56. 29
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/IssueService.java
  57. 130
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java
  58. 28
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java
  59. 3
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java
  60. 35
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java
  61. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyAdviceListResultDTO.java
  62. 36
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java
  63. 14
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  64. 16
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  65. 21
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java
  66. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java
  67. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java
  68. 49
      epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java
  69. 15
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java
  70. 18
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java
  71. 42
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql
  72. 3
      epmet-user/epmet-user-server/src/main/resources/mapper/UserAdviceDao.xml
  73. 48
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

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

@ -87,6 +87,12 @@ 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","基层治理:徽章审核:徽章审核","徽章审核"),
WORK_GRASSROOTS_BADGE_AUDITING_LIST("work_grassroots_badge_auditing_list","基层治理:徽章审核:待审核列表","待审核徽章列表"),
/**
* 工作-项目跟踪
*/
@ -141,7 +147,15 @@ public enum RequirePermissionEnum {
* 爱心互助-自定义配置
*/
MORE_HEART_CUSTOMIZED_VIEW("more_heart_customized_view","更多:爱心互助:自定义配置:查看","更多-爱心互助-自定义配置-查看"),
MORE_HEART_CUSTOMIZED_SAVE("more_heart_customized_save","更多:爱心互助:自定义配置:保存修改","更多-爱心互助-自定义配置-保存修改");
MORE_HEART_CUSTOMIZED_SAVE("more_heart_customized_save","更多:爱心互助:自定义配置:保存修改","更多-爱心互助-自定义配置-保存修改"),
/**
* 徽章管理
*/
MORE_BADGE_MANAGE_LIST("more_badge_manage_list","更多:徽章:徽章管理:列表","徽章列表"),
MORE_BADGE_MANAGE_CREATE("more_badge_manage_create","更多:徽章:徽章管理:添加","添加徽章"),
MORE_BADGE_MANAGE_EDIT("more_badge_manage_edit","更多:徽章:徽章管理:编辑","编辑徽章"),
MORE_BADGE_MANAGE_DELETE("more_badge_manage_delete","更多:徽章:徽章管理:删除","删除徽章");
private String key;
private String name;

6
epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java

@ -131,6 +131,12 @@ public class InternalAuthProcessor extends AuthProcessor {
* @return
*/
private boolean needAuth(String requestUri) {
for (String url : cpProperty.getInternalAuthUrlsWhiteList()) {
if (antPathMatcher.match(url, requestUri)) {
return false;
}
}
for (String url : cpProperty.getInternalAuthUrls()) {
if (antPathMatcher.match(url, requestUri)) {
return true;

5
epmet-gateway/src/main/java/com/epmet/filter/CpProperty.java

@ -22,6 +22,11 @@ public class CpProperty {
*/
private List<String> internalAuthUrls;
/**
* 内部认证url白名单
*/
private List<String> internalAuthUrlsWhiteList;
/**
* 对外部应用开放的url列表
*/

4
epmet-gateway/src/main/resources/bootstrap.yml

@ -439,6 +439,10 @@ epmet:
- /resi/home/**
- /data/report/**
# 内部认证url白名单(在白名单中的,就不会再校验登录了)
internalAuthUrlsWhiteList:
- /epmetuser/customerstaff/customerlist
# 外部应用认证,使用AccessToken等头进行认证
externalOpenUrls:
- /data/report/**

2
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java

@ -365,7 +365,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService {
StringBuilder govKey = new StringBuilder(customerId).append(":").append(WxmpMessageConstant.GOV_REDIS);
authorizerRefreshToken = new HashMap<>();
try {
authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(resiKey.toString());
authorizerRefreshToken = wxmpMessageRedis.getAuthorizerRefreshToken(govKey.toString());
} catch (Exception e) {
errorMsg = e.getMessage();
}

35
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java

@ -0,0 +1,35 @@
package com.epmet.constant;
/**
* 议题相关常亮其它服务可用
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/11 14:10
*/
public interface IssueOpenConstant {
/**
* 议题状态-表决中
*/
String ISSUE_VOTING = "voting";
/**
* 议题状态-已转项目
*/
String ISSUE_SHIFT_PROJECT = "shift_project";
/**
* 议题状态-已关闭
*/
String ISSUE_CLOSED = "closed";
/**
* 议题解决类型-已解决
*/
String ISSUE_RESOLVED = "resolved";
/**
* 议题解决类型-未解决
*/
String ISSUE_UNRESOLVED = "unresolved";
/**
* 议题来源类型 eg:resi_topic
*/
String SOURCE_TYPE_RT="resi_topic";
}

17
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -143,4 +144,18 @@ public class IssueDTO implements Serializable {
*/
private Date updatedTime;
/**
* 转项目日期 服务间调用日期一致性
*/
private Long shiftedTimeStamp;
/**
* 关闭日期
*/
private Long closedTimeStamp;
/**
* 议题转项目后-对应的项目id
*/
private String projectId;
}

13
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,11 +17,19 @@ 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;
/**
* 拓展参数前端不传值内部传输用
*/
private String userId;
/**
* 拓展参数前端不传值内部传输用
*/
private String issueStatus;
}

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

@ -1,12 +1,15 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import com.epmet.feign.fallback.GovIssueOpenFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -19,7 +22,7 @@ import java.util.List;
* @date 2020/6/4 13:37
*/
@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class)
//@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
// @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
public interface GovIssueOpenFeignClient {
/**
@ -31,4 +34,23 @@ 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
* @author yinzuomei
* @description 查询我发起的议题可根据状态查询
* @Date 2020/11/11 14:13
**/
@PostMapping(value = "/gov/issue/issue/getmypubissues", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<IssueDTO>> getMyPubIssues(@RequestBody MyPubIssuesAuditingFormDTO formDTO);
}

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

@ -3,8 +3,11 @@ package com.epmet.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.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;
@ -22,4 +25,14 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<List<MyPartIssuesResultDTO>> myPartIssues(MyPartIssuesFormDTO myPartIssuesFormDTO) {
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);
}
}

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

@ -1,27 +1,19 @@
package com.epmet.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.*;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.excel.IssueExcel;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import com.epmet.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @Description 居民端党群议事
@ -151,5 +143,29 @@ 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
* @author yinzuomei
* @description 查询我发起的议题可根据状态查询
* @Date 2020/11/11 14:49
**/
@PostMapping("getmypubissues")
public Result<List<IssueDTO>> getMyPubIssues(@RequestBody MyPubIssuesAuditingFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO);
return new Result<List<IssueDTO>>().ok(issueService.getMyPubIssues(formDTO));
}
}

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

@ -144,4 +144,27 @@ public interface IssueDao extends BaseDao<IssueEntity> {
* @author zxc
*/
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
* @param pageSize
* @param userId 当前用户
* @param issueStatus 议题状态 表决中voting 已转项目shift_project 已关闭closed
* @author yinzuomei
* @description 查询我发起的议题可根据状态查询
* @Date 2020/11/11 15:11
**/
List<IssueDTO> selectMyPubIssues(@Param("pageNo") Integer pageNo,
@Param("pageSize") Integer pageSize,
@Param("userId") String userId,
@Param("issueStatus") String issueStatus);
}

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

@ -2,27 +2,13 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.CloseIssueFormDTO;
import com.epmet.dto.form.DepartmentStaffListFormDTO;
import com.epmet.dto.form.IssueDetailFormDTO;
import com.epmet.dto.form.IssueIdFormDTO;
import com.epmet.dto.result.DepartmentStaffListResultDTO;
import com.epmet.dto.result.GridIdResultDTO;
import com.epmet.dto.result.GridVotingIssueCountResultDTO;
import com.epmet.dto.result.IssueResultDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.dto.form.CloseIssueFormDTO;
import com.epmet.dto.form.DepartmentStaffListFormDTO;
import com.epmet.dto.form.CommonIssueListFormDTO;
import com.epmet.dto.form.IssueDetailFormDTO;
import com.epmet.dto.result.*;
import com.epmet.dto.form.IssueShiftedFromTopicFormDTO;
import com.epmet.entity.IssueEntity;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
@ -232,4 +218,21 @@ public interface IssueService extends BaseService<IssueEntity> {
* @author zxc
*/
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
* @author yinzuomei
* @description 查询我发起的议题可根据状态查询
* @Date 2020/11/11 14:57
**/
List<IssueDTO> getMyPubIssues(MyPubIssuesAuditingFormDTO formDTO);
}

52
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,4 +852,45 @@ 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>
* @author yinzuomei
* @description 查询我发起的议题可根据状态查询
* @Date 2020/11/11 14:57
**/
@Override
public List<IssueDTO> getMyPubIssues(MyPubIssuesAuditingFormDTO formDTO) {
formDTO.setPageNo(null == formDTO.getPageNo() ? NumConstant.ZERO :
(formDTO.getPageNo() - NumConstant.ONE)*formDTO.getPageSize()
);
return baseDao.selectMyPubIssues(formDTO.getPageNo(),formDTO.getPageSize(),formDTO.getUserId(),formDTO.getIssueStatus());
}
}

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

@ -378,4 +378,47 @@
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}
ORDER BY i.CREATED_TIME DESC
</select>
<!-- 查询我发起的议题(可根据状态查询)-->
<select id="selectMyPubIssues" parameterType="map" resultType="com.epmet.dto.IssueDTO">
SELECT
i.*,
UNIX_TIMESTAMP(i.CLOSED_TIME) AS closedTimeStamp,
UNIX_TIMESTAMP(i.SHIFTED_TIME) AS shiftedTimeStamp,
m.PROJECT_ID
FROM
issue i
left join issue_project_relation m
on(i.id=m.ISSUE_ID and m.del_flag='0')
WHERE
i.DEL_FLAG = '0'
AND i.CREATED_BY = #{userId}
<if test ='null != issueStatus and "" != issueStatus'>
and i.ISSUE_STATUS=#{issueStatus}
</if>
<if test="issueStatus == 'shift_project'">
ORDER BY
m.CREATED_TIME DESC
</if>
<if test="issueStatus == 'closed'">
ORDER BY
i.CLOSED_TIME DESC
</if>
LIMIT #{pageNo}, #{pageSize}
</select>
</mapper>

1
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -85,5 +85,6 @@
WHERE i.DEL_FLAG = '0'
AND vd.DEL_FLAG = '0'
AND vd.CREATED_BY = #{userId}
ORDER BY i.CREATED_TIME DESC
</select>
</mapper>

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() {
}
}

8
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java

@ -17,9 +17,11 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import java.util.List;
/**
@ -113,4 +115,8 @@ public class ProjectDTO implements Serializable {
*/
private Date updatedTime;
/**
* 当前处理部门名称列表
*/
private List<String> currentDepartmentNameList;
}

46
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPubIssuesClosedResultDTO.java

@ -0,0 +1,46 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 个人中心-我发起的议题列表-已关闭返参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/11 13:39
*/
@Data
public class MyPubIssuesClosedResultDTO implements Serializable {
private static final long serialVersionUID = -265465326846671555L;
/**
* 议题id
*/
private String issueId;
/**
* 议题标题
*/
private String issueTitle;
/**
* 建议
*/
private String suggestion;
/**
* 议题关闭时间时间戳
*/
private Long closedTime;
/**
* 话题发表于哪个组
*/
private String topicReleaseGroupName;
/**
* 话题发表于哪个网格
*/
private String topicReleaseGridName;
}

46
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPubIssuesShiftProjectResultDTO.java

@ -0,0 +1,46 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 个人中心-我发起的议题列表-已转项目 返参DTO
*
* @author yinzuomei@elink-cn.com
* @date 2020/11/11 12:18
*/
@Data
public class MyPubIssuesShiftProjectResultDTO implements Serializable {
private static final long serialVersionUID = -7183751225506622772L;
/**
* 项目id
*/
private String projectId;
/**
* 话题发表网格id
*/
private String topicReleaseGridName;
/**
* 当前处理部门名称列表
*/
private List<String> departmentNameList;
/**
* 项目标题
*/
private String projectTitle;
/**
* 转项目时间时间戳
*/
private Long shiftProjectTime;
/**
* 话题发表于哪个组
*/
private String topicReleaseGroupName;
}

19
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java

@ -1,18 +1,16 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.ProcessListFormDTO;
import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.PendProjectListResultDTO;
import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO;
import com.epmet.dto.result.ProcesslistResultDTO;
import com.epmet.feign.fallback.GovProjectOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.feign.fallback.GovProjectOpenFeignClientFallback;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -24,6 +22,7 @@ import java.util.List;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:32
*/
// @FeignClient(name = ServiceConstant.GOV_PROJECT_SERVER, fallback = GovProjectOpenFeignClientFallback.class,url = "localhost:8102")
@FeignClient(name = ServiceConstant.GOV_PROJECT_SERVER, fallback = GovProjectOpenFeignClientFallback.class)
public interface GovProjectOpenFeignClient {
/**
@ -55,4 +54,14 @@ public interface GovProjectOpenFeignClient {
*/
@PostMapping("gov/project/project/issuetoprojectlist")
Result<List<MyPartProjectsResultDTO>> issueToProjectList(MyPartProjectsFormDTO formDTO);
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.ProjectDTO>>
* @param projectIds 项目id数组
* @author yinzuomei
* @description 根据项目id查询项目基本信息
* @Date 2020/11/11 17:40
**/
@PostMapping("gov/project/project/queryprojectinfobyids")
Result<List<ProjectDTO>> queryProjectInfoByIds(@RequestBody List<String> projectIds);
}

13
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java

@ -9,7 +9,6 @@ import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.PendProjectListResultDTO;
import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO;
import com.epmet.dto.result.ProcesslistResultDTO;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
@ -51,4 +50,16 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli
public Result<List<MyPartProjectsResultDTO>> issueToProjectList(MyPartProjectsFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "issueToProjectList", formDTO);
}
/**
* @param projectIds 项目id数组
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.ProjectDTO>>
* @author yinzuomei
* @description 根据项目id查询项目基本信息
* @Date 2020/11/11 17:40
**/
@Override
public Result<List<ProjectDTO>> queryProjectInfoByIds(List<String> projectIds) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "queryProjectInfoByIds", projectIds);
}
}

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -17,18 +17,14 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.LatestListFormDTO;
import com.epmet.dto.form.ProjectListFromDTO;
@ -192,4 +188,8 @@ public class ProjectController {
return new Result<List<MyPartProjectsResultDTO>>().ok(projectService.issueToProjectList(formDTO));
}
@PostMapping("queryprojectinfobyids")
public Result<List<ProjectDTO>> queryProjectInfoByIds(@RequestBody List<String> projectIds){
return new Result<List<ProjectDTO>>().ok(projectService.queryProjectInfoByIds(projectIds));
}
}

3
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -19,7 +19,6 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -224,4 +223,6 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @Description 根据议题Id集合查询对应的项目信息
**/
List<MyPartProjectsResultDTO> issueToProjectList(MyPartProjectsFormDTO formDTO);
List<ProjectDTO> queryProjectInfoByIds(List<String> projectIds);
}

43
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -688,6 +688,18 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return detentionDays.getData().get(NumConstant.ZERO).getDetentionDays();
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 获取客户下已结案项目列表按结案时间倒序(结案时间结案说明处理部门)
**/
@Override
public List<LatestListResultDTO> getClosedProjectList(LatestListFormDTO formDTO) {
return baseDao.selectClosedProjectList(formDTO);
}
/**
* @param formDTO
* @return
@ -804,7 +816,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//7:初始化机关-项目时间关联数据
Date current = new Date();
Date current = new Date();
List<String> projectStaffIds = entityList.stream().map(ProjectStaffEntity::getId).distinct().collect(Collectors.toList());
if(!CollectionUtils.isEmpty(projectStaffIds)){
List<ProjectOrgRelationEntity> container = new LinkedList<>();
@ -842,18 +854,6 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return issueProjectResultDTO;
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 获取客户下已结案项目列表按结案时间倒序(结案时间结案说明处理部门)
**/
@Override
public List<LatestListResultDTO> getClosedProjectList(LatestListFormDTO formDTO) {
return baseDao.selectClosedProjectList(formDTO);
}
@Override
public void response(ProjectResponseFormDTO formDTO) {
//公开回复内容审核
@ -1388,4 +1388,21 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return list;
}
@Override
public List<ProjectDTO> queryProjectInfoByIds(List<String> projectIds) {
List<ProjectEntity> entityList=baseDao.selectBatchIds(projectIds);
List<ProjectDTO> projectDTOList=ConvertUtils.sourceToTarget(entityList, ProjectDTO.class);
//2.使用已有方法查询项目当前处理部门信息
projectDTOList.forEach(l -> {
if (ProjectConstant.CLOSED.equals(l.getStatus())) {
l.setCurrentDepartmentNameList(new ArrayList<String>());
} else {
ProjectDTO dto = new ProjectDTO();
dto.setId(l.getId());
l.setCurrentDepartmentNameList(baseDao.selectDepartmentNameList(dto));
}
});
return projectDTOList;
}
}

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/member/result/ApplyingMemberResultDTO.java

@ -3,6 +3,7 @@ package com.epmet.resi.group.dto.member.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
@ -45,4 +46,9 @@ public class ApplyingMemberResultDTO implements Serializable {
* 入群被拒 - rejected
*/
private String status;
/**
* 用户徽章Url列表
*/
private List<String> badgeList;
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java

@ -4,6 +4,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description
@ -43,4 +44,9 @@ public class GroupMemberListResultDTO implements Serializable {
* 审核通过 - approved 已禁言 - silent
*/
private String status;
/**
* 用户徽章列表
*/
private List<String> badgeList;
}

30
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CustomerPageFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.resi.group.dto.topic.form;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 客户Id 用户Id 分页
* @ClassName CustomerPageFormDTO
* @Auth wangc
* @Date 2020-11-11 23:15
*/
@Data
public class CustomerPageFormDTO implements Serializable {
private static final long serialVersionUID = 8678047078015445193L;
@NotBlank(message = "客户Id不能为空")
private String customerId;
@NotBlank(message = "用户Id不能为空")
private String userId;
@Min(1)
private Integer pageNo;
@Min(1)
private Integer pageSize;
}

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;
}

1
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java

@ -9,6 +9,7 @@ public class MyTopicsResultDTO {
private Long releaseTime;
private String topicContent;
private String releaseGroupName;
private String releaseGridId;
private String releaseGridName;
}

26
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ParticipatedTopicUnitResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.resi.group.dto.topic.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 个人中心 参与过的话题返参DTO
* @ClassName ParticipatedTopicUnitResultDTO
* @Auth wangc
* @Date 2020-11-11 23:00
*/
@Data
public class ParticipatedTopicUnitResultDTO implements Serializable {
private static final long serialVersionUID = 1392205563783715932L;
private String topicId;
private String topicReleaseGridName;
private String topicContent;
private Long releaseTime;
private String topicReleaseGroupName;
}

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;
}

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

@ -1,7 +1,13 @@
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.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO;
@ -10,14 +16,13 @@ import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -28,6 +33,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 {
/**
@ -37,6 +43,15 @@ 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);
@PostMapping("/resi/group/group/gov-edit-auditing-list")
@ -62,4 +77,13 @@ public interface ResiGroupOpenFeignClient {
@PostMapping("/resi/group/group/gov-audit-edit")
Result govAuditEdit(@RequestBody GroupEditionAuditFormDTO param);
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@PostMapping("resi/group/topic/my-part-topics")
Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(@RequestBody CustomerPageFormDTO param);
}

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

@ -11,7 +11,11 @@ import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
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.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
@ -46,4 +50,14 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
public Result govAuditEdit(GroupEditionAuditFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govAuditEdit", param);
}
@Override
public Result<List<GroupInfoResultDTO>> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectGroupInfo", groupInfoFormDTO);
}
@Override
public Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(CustomerPageFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "myPartTopics", param);
}
}

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

@ -422,4 +422,15 @@ public class ResiGroupController {
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

@ -202,4 +202,12 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
int countExistsGroupNameBeforeEdit(@Param("groupId") String groupId,
@Param("gridId") String gridId,
@Param("groupName") String groupName);
/**
* @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

@ -324,4 +324,12 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @date 2020.11.03 16:02
*/
void auditEdit(GroupEditionAuditFormDTO param);
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO);
}

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

@ -609,6 +609,18 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName())));
}
//发送微信订阅消息
WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO();
wxSubscribeMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId());
wxSubscribeMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy());
wxSubscribeMessageFormDTO.setClientType(AppClientConstant.APP_RESI);
wxSubscribeMessageFormDTO.setGridId(resiGroupDTO.getGridId());
wxSubscribeMessageFormDTO.setBehaviorType(UserMessageConstant.WX_APPLY_CREATE_GROUP_BEHAVIOR);
wxSubscribeMessageFormDTO.setMessageContent(String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName()));
wxSubscribeMessageFormDTO.setMessageTime(new Date());
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//更新政府端:工作-基层治理-党员认证reddot
resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(resiGroupDTO.getGridId());
return new Result();
@ -1040,6 +1052,17 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
}
/**
* @Description 查询话题所属小组名
* @Param groupInfoFormDTO
* @author zxc
* @date 2020/11/11 1:36 下午
*/
@Override
public List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO) {
return baseDao.selectGroupInfo(groupInfoFormDTO.getTopicIds());
}
@Override
public GroupDetailResultDTO getGroupDetail(String groupId) {
GroupDetailResultDTO groupDetail = new GroupDetailResultDTO();

49
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -31,12 +31,10 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.form.UserResiInfoFormDTO;
import com.epmet.dto.form.UserResiInfoListFormDTO;
import com.epmet.dto.form.WxSubscribeMessageFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserResiInfoResultDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.constant.GroupMemberConstant;
import com.epmet.modules.constant.UserMessageConstant;
import com.epmet.modules.feign.EpmetUserFeignClient;
@ -65,6 +63,7 @@ import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.epmet.resi.group.dto.member.form.*;
import com.epmet.resi.group.dto.member.form.CommonGridIdListFormDTO;
import com.epmet.resi.group.dto.member.result.ApplyingMemberResultDTO;
import com.epmet.resi.group.dto.member.result.GridVotableCountResultDTO;
import com.epmet.resi.group.dto.member.result.GroupMemberListResultDTO;
@ -75,10 +74,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 群组成员关系表
@ -118,6 +119,8 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
private ResiGroupRedis resiGroupRedis;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Override
public PageData<ResiGroupMemberDTO> page(Map<String, Object> params) {
@ -329,6 +332,24 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
userResiInfoDTOListResult.getCode(),
userResiInfoDTOListResult.getMsg()));
}
//徽章信息
ResiGroupEntity group = resiGroupDao.selectById(groupMemberListFormDTO.getGroupId());
if(null != group && StringUtils.isNotBlank(group.getCustomerId())){
Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR
= userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList));
if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){
Map<String, List<UserBadgeUnitFormDTO>> map = badgeR.getData();
list.forEach(member -> {
member.setBadgeList(
CollectionUtils.isEmpty(map.get(member.getUserId())) ?
Collections.EMPTY_LIST:
map.get(member.getUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) );
});
}else{
list.forEach(member -> member.setBadgeList(Collections.EMPTY_LIST));
}
}
return list;
}
@ -368,6 +389,26 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
}else{
logger.warn(String.format("居民端组长【%s】查看入群待审核列表调用%s服务,获取用户头像显示昵称失败,错误码%s,错误提示%s",applyingMemberFormDTO.getUserId(), ServiceConstant.EPMET_USER_SERVER, userResiInfoDTOListResult.getCode(), userResiInfoDTOListResult.getMsg()));
}
//徽章信息
ResiGroupEntity group = resiGroupDao.selectById(applyingMemberFormDTO.getGroupId());
if(null != group && StringUtils.isNotBlank(group.getCustomerId())){
Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR
= userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList));
if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){
Map<String, List<UserBadgeUnitFormDTO>> map = badgeR.getData();
list.forEach(member -> {
member.setBadgeList(
CollectionUtils.isEmpty(map.get(member.getApplyUserId())) ?
Collections.EMPTY_LIST:
map.get(member.getApplyUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) );
});
}else{
list.forEach(member -> member.setBadgeList(Collections.EMPTY_LIST));
}
}
return list;
}

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

@ -272,5 +272,18 @@ public class ResiTopicController {
return new Result().ok(myTopics);
}
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@PostMapping("my-part-topics")
public Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(@RequestBody CustomerPageFormDTO param){
ValidatorUtils.validateEntity(param);
return new Result<List<ParticipatedTopicUnitResultDTO>>().ok(topicService.getParticipatedTopics(param));
}
}

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

@ -161,4 +161,13 @@ public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
*/
List<IssueGridResultDTO> selectIssueList(@Param("topicList") List<String> topicList);
/**
* @Description 查询我参与过的话题
* @param customerId
* @param userId
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:08
*/
List<ParticipatedTopicUnitResultDTO> selectParticipatedTopics(@Param("customerId") String customerId,@Param("userId") String userId);
}

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

@ -271,4 +271,13 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @date 2020.11.10 15:03
*/
List<MyTopicsResultDTO> listMyTopics(String customerId, String userId, Integer pageNo, Integer pageSize);
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
List<ParticipatedTopicUnitResultDTO> getParticipatedTopics(CustomerPageFormDTO param);
}

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

@ -37,11 +37,15 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CommonDataFilterResultDTO;
import com.epmet.dto.result.IssueInitiatorResultDTO;
import com.epmet.dto.result.OrgInfoResultDTO;
import com.epmet.dto.result.UserResiInfoResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.modules.constant.GroupMemberConstant;
import com.epmet.modules.constant.ResiGroupRedisKeys;
import com.epmet.modules.feign.EpmetUserFeignClient;
@ -80,6 +84,7 @@ import com.epmet.resi.group.dto.topic.form.CheckTopicPublisherFormDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.result.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@ -88,6 +93,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.*;
@ -139,9 +145,15 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private GovIssueFeignClient govIssueFeignClient;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
@ -386,7 +398,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 +659,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 +696,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 +876,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 +973,13 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
if (result.success() && null != result.getData() && result.getData().size() > 0) {
for (UserResiInfoResultDTO user : result.getData()) {
ResiTopicInfoResultDTO topic =
topicMap.get(user.getUserId()).get(0);
topic.setReleaseUserHeadPhoto(user.getHeadPhoto());
topic.setReleaseUserName(user.getShowName());
if(!CollectionUtils.isEmpty(topicMap.get(user.getUserId()))){
topicMap.get(user.getUserId()).forEach( topic -> {
topic.setReleaseUserHeadPhoto(user.getHeadPhoto());
topic.setReleaseUserName(user.getShowName());
});
}
//存入缓存
ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO();
ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId());
@ -936,10 +1047,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
if (result.success() && null != result.getData() && result.getData().size() > 0) {
for (UserResiInfoResultDTO user : result.getData()) {
ResiTopicIncludeIssueInfoResultDTO topic =
topicMap.get(user.getUserId()).get(0);
topic.setReleaseUserHeadPhoto(user.getHeadPhoto());
topic.setReleaseUserName(user.getShowName());
if(!CollectionUtils.isEmpty(topicMap.get(user.getUserId()))){
topicMap.get(user.getUserId()).forEach( topic -> {
topic.setReleaseUserHeadPhoto(user.getHeadPhoto());
topic.setReleaseUserName(user.getShowName());
});
}
//存入缓存
ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO();
@ -1280,9 +1393,53 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
public List<MyTopicsResultDTO> listMyTopics(String customerId, String userId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
List<MyTopicsResultDTO> myTopics = resiTopicDao.listMyTopics(userId, customerId);
// todo 查询网格名称,赋值
HashMap<String, String> gridIdAndNames = new HashMap<>();
Set<String> gridIds = myTopics.stream().map(c -> c.getReleaseGridId()).collect(Collectors.toSet());
OrgInfoFormDTO form = new OrgInfoFormDTO();
form.setOrgType(OrgInfoConstant.GRID);
form.setOrgIds(new ArrayList<>(gridIds));
Result<List<OrgInfoResultDTO>> gridInfoResult = govOrgOpenFeignClient.selectOrgInfo(form);
if (gridInfoResult.success()) {
List<OrgInfoResultDTO> grids = gridInfoResult.getData();
for (OrgInfoResultDTO grid : grids) {
gridIdAndNames.put(grid.getOrgId(), grid.getOrgName());
}
}
for (MyTopicsResultDTO myTopic : myTopics) {
myTopic.setReleaseGridName(gridIdAndNames.get(myTopic.getReleaseGridId()));
}
return myTopics;
}
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@Override
public List<ParticipatedTopicUnitResultDTO> getParticipatedTopics(CustomerPageFormDTO param) {
PageInfo<ParticipatedTopicUnitResultDTO> page =
PageHelper.startPage(Optional.ofNullable(param.getPageNo()).orElse(NumConstant.ONE),
Optional.ofNullable(param.getPageSize()).orElse(NumConstant.ONE)).doSelectPageInfo(() ->
baseDao.selectParticipatedTopics(param.getCustomerId(),param.getUserId()));
List<ParticipatedTopicUnitResultDTO> result = page.getList();
if(CollectionUtils.isEmpty(result)) return Collections.EMPTY_LIST;
Result<List<OrgInfoResultDTO>> gridR = govOrgOpenFeignClient.selectOrgInfo(
new OrgInfoFormDTO(OrgInfoConstant.GRID,result.stream().map(ParticipatedTopicUnitResultDTO :: getTopicReleaseGridName).distinct().collect(Collectors.toList())));
if(gridR.success() && !CollectionUtils.isEmpty(gridR.getData())){
return result.stream().flatMap(topic -> gridR.getData().stream() .filter(grid -> StringUtils.equals(grid.getOrgId(),topic.getTopicReleaseGridName())).map(orgInfo -> {
topic.setTopicReleaseGridName(orgInfo.getOrgId());
return topic;
})).collect(Collectors.toList());
} return Collections.EMPTY_LIST;
}
}

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

@ -418,4 +418,20 @@
and esr.DEL_FLAG = 0
) t
</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>

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

@ -451,7 +451,8 @@
select t.id as topicId,
t.topic_content as topicContent,
unix_timestamp(t.created_time) as releaseTime,
g.GROUP_NAME as releaseGroupName
g.GROUP_NAME as releaseGroupName,
g.GRID_ID as releaseGridId
from resi_topic t
inner join resi_group g on (t.GROUP_ID = g.ID and g.CUSTOMER_ID = #{customerId})
where t.CREATED_BY = #{userId}
@ -473,5 +474,26 @@
</foreach>
</select>
<!-- 查询我参与过的话题 -->
<select id="selectParticipatedTopics" resultType="com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO">
SELECT
topic.id AS topicId,
topic.topic_content,
UNIX_TIMESTAMP(topic.created_time) AS releaseTime,
groupp.group_name AS topicReleaseGroupName,
groupp.grid_id AS topicReleaseGridName
FROM
resi_topic topic LEFT JOIN resi_group groupp ON topic.group_id = groupp.ID AND groupp.del_flag = '0' AND groupp.customer_id = #{customerId}
WHERE
topic.del_flag = '0'
AND
topic.id IN (
SELECT DISTINCT topic_id FROM resi_topic_comment WHERE
del_flag = '0' AND created_by = #{userId}
)
AND topic.created_by <![CDATA[ <> ]]> #{userId}
ORDER BY topic.created_time desc
</select>
</mapper>

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

@ -3,6 +3,7 @@ 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;
@ -44,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<List<MyAdviceListResultDTO>> getMyAdviceList(@RequestBody Map<String,Integer> map){
return adviceService.getMyAdviceList(map);
public Result<List<MyAdviceListResultDTO>> getMyAdviceList(@RequestBody MyAdviceListFormDTO dto){
return adviceService.getMyAdviceList(dto);
}
}

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

@ -1,6 +1,7 @@
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;
@ -10,5 +11,5 @@ import java.util.Map;
public interface AdviceService {
Result submitAdvice(SubmitAdviceFormDTO dto);
Result<List<MyAdviceListResultDTO>> 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);
}
}

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

@ -5,8 +5,12 @@ import com.epmet.commons.tools.security.dto.TokenDto;
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.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;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.beans.factory.annotation.Autowired;
@ -52,4 +56,42 @@ public class IssueController {
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
* @description 个人中心-我发起的议题列表-已转项目
* @Date 2020/11/11 13:33
**/
@PostMapping("my-pub-issues/shift-project")
public Result<List<MyPubIssuesShiftProjectResultDTO>> getMyPubIssuesShiftProject(@RequestBody MyPubIssuesAuditingFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, MyPubIssuesAuditingFormDTO.MyPubIssuesAuditing.class);
formDTO.setUserId(loginUserUtil.getLoginUserId());
return new Result<List<MyPubIssuesShiftProjectResultDTO>>().ok(issueService.getMyPubIssuesShiftProject(formDTO));
}
/**
* @param formDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-已关闭
* @Date 2020/11/11 13:39
**/
@PostMapping("my-pub-issues/closed")
public Result<List<MyPubIssuesClosedResultDTO>> getMyPubIssuesClosed(@RequestBody MyPubIssuesAuditingFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, MyPubIssuesAuditingFormDTO.MyPubIssuesAuditing.class);
formDTO.setUserId(loginUserUtil.getLoginUserId());
return new Result<List<MyPubIssuesClosedResultDTO>>().ok(issueService.getMyPubIssuesClosed(formDTO));
}
}

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

@ -1,8 +1,12 @@
package com.epmet.modules.person.service;
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;
import java.util.List;
@ -26,4 +30,29 @@ public interface IssueService {
* @author sun
*/
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
* @description 个人中心-我发起的议题列表-已转项目
* @Date 2020/11/11 13:35
**/
List<MyPubIssuesShiftProjectResultDTO> getMyPubIssuesShiftProject(MyPubIssuesAuditingFormDTO formDTO);
/**
* @param formDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-已关闭
* @Date 2020/11/11 13:48
**/
List<MyPubIssuesClosedResultDTO> getMyPubIssuesClosed(MyPubIssuesAuditingFormDTO formDTO);
}

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

@ -4,18 +4,25 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IssueOpenConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.form.OrgInfoFormDTO;
import com.epmet.dto.result.*;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.modules.person.service.IssueService;
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;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -124,4 +131,121 @@ 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
* @description 个人中心-我发起的议题列表-已转项目 按照转项目时间排序
* @Date 2020/11/11 13:35
**/
@Override
public List<MyPubIssuesShiftProjectResultDTO> getMyPubIssuesShiftProject(MyPubIssuesAuditingFormDTO formDTO) {
//查询我发起的议题,并且 已转项目
formDTO.setIssueStatus(IssueOpenConstant.ISSUE_SHIFT_PROJECT);
Result<List<IssueDTO>> issueResult=issueOpenFeignClient.getMyPubIssues(formDTO);
if(null==issueResult||CollectionUtils.isEmpty(issueResult.getData())){
return new ArrayList<>();
}
//议题来源话题id集合
List<String> topicIds=new ArrayList<>();
List<String> projectIds=new ArrayList<>();
issueResult.getData().forEach(issueDTO ->{
if(IssueOpenConstant.SOURCE_TYPE_RT.equals(issueDTO.getSourceType())&& StringUtils.isNotBlank(issueDTO.getSourceId())){
topicIds.add(issueDTO.getSourceId());
projectIds.add(issueDTO.getProjectId());
}
} );
//查询网格名称
Result<List<OrgInfoResultDTO>> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, issueResult.getData().stream().map(m -> m.getGridId()).collect(Collectors.toList())));
if (!gridNameList.success()){
logger.error("查询议题来源网格名称失败......");
}
//查询话题来源小组名称
Result<List<GroupInfoResultDTO>> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(topicIds));
if (!groupNameList.success()){
logger.error("查询议题来源小组名称失败......");
}
//查询项目基本信息
Result<List<ProjectDTO>> projectRes=govProjectOpenFeignClient.queryProjectInfoByIds(projectIds);
if(!projectRes.success()){
logger.error("查询项目信息失败......");
}
List<MyPubIssuesShiftProjectResultDTO> list=new ArrayList<>();
for(IssueDTO issueDTO:issueResult.getData()){
MyPubIssuesShiftProjectResultDTO resultDTO=new MyPubIssuesShiftProjectResultDTO();
resultDTO.setProjectId(issueDTO.getProjectId());
gridNameList.getData().stream().filter(o -> issueDTO.getGridId().equals(o.getOrgId())).forEach(o -> resultDTO.setTopicReleaseGridName(o.getOrgName()));
groupNameList.getData().stream().filter(g -> issueDTO.getSourceId().equals(g.getTopicId())).forEach(g -> resultDTO.setTopicReleaseGroupName(g.getTopicGroupName()));
resultDTO.setShiftProjectTime(issueDTO.getShiftedTimeStamp());
projectRes.getData().stream().filter(p->issueDTO.getProjectId().equals(p.getId())).forEach(projectDTO -> resultDTO.setProjectTitle(projectDTO.getTitle()));
//当前处理部门名称列表
projectRes.getData().stream().filter(p->issueDTO.getProjectId().equals(p.getId())).forEach(projectDTO -> resultDTO.setDepartmentNameList(projectDTO.getCurrentDepartmentNameList()));
list.add(resultDTO);
}
return list;
}
/**
* @param formDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-已关闭
* @Date 2020/11/11 13:48
**/
@Override
public List<MyPubIssuesClosedResultDTO> getMyPubIssuesClosed(MyPubIssuesAuditingFormDTO formDTO) {
//查询我发起的议题,并且 已关闭的
formDTO.setIssueStatus(IssueOpenConstant.ISSUE_CLOSED);
Result<List<IssueDTO>> issueResult=issueOpenFeignClient.getMyPubIssues(formDTO);
if(null==issueResult||CollectionUtils.isEmpty(issueResult.getData())){
return new ArrayList<>();
}
//议题来源话题id集合
List<String> topicIds=new ArrayList<>();
issueResult.getData().forEach(issueDTO ->{
if(IssueOpenConstant.SOURCE_TYPE_RT.equals(issueDTO.getSourceType())&& StringUtils.isNotBlank(issueDTO.getSourceId())){
topicIds.add(issueDTO.getSourceId());
}
} );
//查询网格名称
Result<List<OrgInfoResultDTO>> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, issueResult.getData().stream().map(m -> m.getGridId()).collect(Collectors.toList())));
if (!gridNameList.success()){
logger.error("查询议题来源网格名称失败......");
}
//查询话题来源小组名称
Result<List<GroupInfoResultDTO>> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(topicIds));
if (!groupNameList.success()){
logger.error("查询议题来源小组名称失败......");
}
List<MyPubIssuesClosedResultDTO> resultDTOList=new ArrayList<>();
for(IssueDTO issueDTO:issueResult.getData()){
MyPubIssuesClosedResultDTO resultDTO=new MyPubIssuesClosedResultDTO();
resultDTO.setIssueId(issueDTO.getId());
resultDTO.setIssueTitle(issueDTO.getIssueTitle());
resultDTO.setSuggestion(issueDTO.getSuggestion());
resultDTO.setClosedTime(issueDTO.getClosedTimeStamp());
gridNameList.getData().stream().filter(o -> issueDTO.getGridId().equals(o.getOrgId())).forEach(o -> resultDTO.setTopicReleaseGridName(o.getOrgName()));
groupNameList.getData().stream().filter(g -> issueDTO.getSourceId().equals(g.getTopicId())).forEach(g -> resultDTO.setTopicReleaseGroupName(g.getTopicGroupName()));
resultDTOList.add(resultDTO);
}
return resultDTOList;
}
}

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<List<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<List<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));
}
}

42
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql

@ -0,0 +1,42 @@
CREATE TABLE `user_advice` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
`CUSTOMER_NAME` varchar(64) NOT NULL COMMENT '客户名',
`AGENCY_ID` varchar(64) NOT NULL COMMENT '组织ID',
`AGENCY_NAME` varchar(64) NOT NULL COMMENT '组织名',
`GRID_ID` varchar(64) NOT NULL COMMENT '网格ID',
`GRID_NAME` varchar(64) NOT NULL COMMENT '网格名',
`USER_ID` varchar(64) NOT NULL COMMENT 'userid',
`USER_NAME` varchar(32) NOT NULL COMMENT '用户姓名',
`REG_PHONE` varchar(32) NOT NULL COMMENT '用户注册手机号',
`ADVICE_CONTENT` varchar(500) NOT NULL COMMENT '建议描述',
`PHONE` varchar(32) DEFAULT NULL COMMENT '填写手机号',
`ADVICE_TIME` datetime NOT NULL COMMENT '建议时间',
`ADVICE_TYPE` varchar(32) DEFAULT NULL COMMENT '问题分类(gov政府software软件,逗号分隔)',
`REPLY_CONTENT` varchar(500) DEFAULT NULL COMMENT '回复内容',
`REPLY_USER_ID` varchar(64) DEFAULT NULL COMMENT '回复人id',
`REPLY_USER_NAME` varchar(32) DEFAULT NULL COMMENT '回复人姓名',
`REPLY_TIME` datetime DEFAULT NULL COMMENT '回复时间',
`GOV_CONTENT` varchar(500) DEFAULT NULL COMMENT '政府存证文字',
`DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标志',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户建议表';
CREATE TABLE `user_advice_img` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`ADVICE_ID` varchar(64) NOT NULL COMMENT '建议id',
`TYPE` varchar(10) NOT NULL COMMENT '图片类型,resi是用户上传的建议图片,oper是运营上传的代替政府回复的存证',
`IMG_URL` varchar(255) NOT NULL COMMENT '图片url',
`DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标志',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户建议图片';

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