From 41b1e7d345dde19adf0c4e3a0313686d0e08f40b Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 11 Nov 2020 14:17:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/result/MyPartProjectsResultDTO.java | 4 ++-- .../topic/service/impl/ResiTopicCommentServiceImpl.java | 1 + .../src/main/resources/mapper/topic/ResiTopicDao.xml | 4 ++-- .../com/epmet/modules/person/controller/IssueController.java | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java index 6375992bab..b5e41d64a5 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/MyPartProjectsResultDTO.java @@ -43,11 +43,11 @@ public class MyPartProjectsResultDTO implements Serializable { /** * 议题Id,用户数据整合使用(项目出自哪个网格"组织-网格") */ - @JsonIgnore + //@JsonIgnore private String issueId; /** * 项目状态(待处理 pending,结案closed)用于查询当前处理部门信息 */ - @JsonIgnore + //@JsonIgnore private String status; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java index 6f3b1557d3..a4e0365d2a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java @@ -97,6 +97,7 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl SELECT - rt.issue_id AS "gridId", - rg.grid_id AS "issueId" + rt.issue_id AS "issueId", + rg.grid_id AS "gridId" FROM resi_topic rt INNER JOIN resi_group rg ON rt.group_id = rg.id diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java index ae2ef2eff6..6479c87583 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/controller/IssueController.java @@ -46,9 +46,9 @@ public class IssueController { * @author sun */ @PostMapping("my-part-projects") - public Result> myPartProjects(@RequestBody MyPartProjectsFormDTO formDTO) { + public Result> myPartProjects(@LoginUser TokenDto tokenDTO, @RequestBody MyPartProjectsFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, MyPartProjectsFormDTO.MyProject.class); - formDTO.setUserId(loginUserUtil.getLoginUserId()); + formDTO.setUserId(tokenDTO.getUserId()); return new Result>().ok(issueService.myPartProjects(formDTO)); } From 02087e11fa4b5f69fce3b71f8fa2599d95168332 Mon Sep 17 00:00:00 2001 From: wangchao Date: Wed, 11 Nov 2020 14:42:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AF=9D=E9=A2=98=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=BE=BD=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/GovHiddenTopicInfoResultDTO.java | 6 + .../topic/result/GovTopicInfoResultDTO.java | 6 + .../result/ResiTopicDetailResultDTO.java | 5 + .../ResiTopicIncludeIssueDetailResultDTO.java | 7 + .../ResiTopicIncludeIssueInfoResultDTO.java | 6 + .../topic/result/ResiTopicInfoResultDTO.java | 6 + .../service/impl/ResiTopicServiceImpl.java | 122 ++++++++++++++++-- .../epmet/dto/form/UserBadgeUnitFormDTO.java | 3 +- .../com/epmet/dto/form/UserGroupFormDTO.java | 35 +++++ .../dto/result/UserBadgeInfoResultDTO.java | 36 ++++++ .../epmet/feign/EpmetUserOpenFeignClient.java | 10 ++ .../EpmetUserOpenFeignClientFallback.java | 12 ++ .../com/epmet/controller/BadgeController.java | 21 ++- .../main/java/com/epmet/dao/UserBadgeDao.java | 15 ++- .../java/com/epmet/redis/UserBadgeRedis.java | 49 ++++++- .../com/epmet/service/UserBadgeService.java | 15 ++- .../service/impl/UserBadgeServiceImpl.java | 18 +++ .../main/resources/mapper/UserBadgeDao.xml | 48 +++++++ 18 files changed, 395 insertions(+), 25 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java index 6008f6c0eb..073a984545 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovHiddenTopicInfoResultDTO.java +++ b/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 badgeList; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java index d60a24382d..84a1e2f5aa 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GovTopicInfoResultDTO.java +++ b/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 badgeList; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java index 1a41c1afd0..cce7d050fb 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java +++ b/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 topicImgs; + /** + * 徽章Url集合 + */ + private List badgeList; + } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java index 988d319ad8..97c0a12faf 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueDetailResultDTO.java +++ b/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 badgeList; + + } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java index 55fe66f286..e2822a9189 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicIncludeIssueInfoResultDTO.java +++ b/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 badgeList; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java index 613b506acf..be2f5452e9 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicInfoResultDTO.java +++ b/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 badgeList; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index bce65c7543..6e86d0221b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -42,6 +42,7 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.dto.result.IssueInitiatorResultDTO; import com.epmet.dto.result.UserResiInfoResultDTO; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.feign.EpmetUserFeignClient; @@ -88,6 +89,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.*; @@ -142,6 +144,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl>> 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> 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>().ok(pastTopics); } @@ -616,6 +652,18 @@ public class ResiTopicServiceImpl extends BaseServiceImpl userId = new LinkedList<>();userId.add(topicDetail.getCreatedBy()); + Result>> 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().ok(resultDTO); } @@ -641,6 +689,36 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 0) { setCacheUserInfo(topicPageFormDTO.getGroupId(), hiddenTopics); + + + //3.用户徽章 + //3.1首先需要拿到客户Id + ResiGroupEntity group = resiGroupDao.selectById(topicPageFormDTO.getGroupId()); + if(null != group && StringUtils.isNotBlank(group.getCustomerId())){ + Result>> 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> 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>().ok(hiddenTopics); @@ -791,6 +869,30 @@ public class ResiTopicServiceImpl extends BaseServiceImpl>> 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> 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>().ok(pastTopics); @@ -864,11 +966,13 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 0) { for (UserResiInfoResultDTO user : result.getData()) { - ResiTopicInfoResultDTO topic = - topicMap.get(user.getUserId()).get(0); - topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); - topic.setReleaseUserName(user.getShowName()); + if(!CollectionUtils.isEmpty(topicMap.get(user.getUserId()))){ + topicMap.get(user.getUserId()).forEach( topic -> { + topic.setReleaseUserHeadPhoto(user.getHeadPhoto()); + topic.setReleaseUserName(user.getShowName()); + }); + } //存入缓存 ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO(); ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId()); @@ -936,10 +1040,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 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(); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java index a68dd2157e..124b94b3bd 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java +++ b/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 + * 在为单个用户查询时可以使用这个DTO,FIXME 批量查询时不要用该类接收!!!!!! * @ClassName UserBadgeUnitFormDTO * @Auth wangc * @Date 2020-11-05 10:00 diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserGroupFormDTO.java new file mode 100644 index 0000000000..341a868589 --- /dev/null +++ b/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 userIds; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeInfoResultDTO.java new file mode 100644 index 0000000000..d600c35254 --- /dev/null +++ b/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; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index ac69c933c4..4049181d75 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -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>> + * @author wangc + * @date 2020.11.10 15:59 + */ + @PostMapping("/epmetuser/badge/usershowbadge") + Result>> userShowBadge(@RequestBody UserGroupFormDTO param); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 423bf32e20..443c905f67 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -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>> + * @author wangc + * @date 2020.11.10 15:59 + */ + @Override + public Result>> userShowBadge(UserGroupFormDTO param) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "userShowBadge", param); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java index faaf9c3d04..a18ad036fd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/BadgeController.java +++ b/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>> + * @author wangc + * @date 2020.11.10 15:59 + */ + @PostMapping("usershowbadge") + public Result>> userShowBadge(@RequestBody UserGroupFormDTO param){ + ValidatorUtils.validateEntity(param); + return new Result>>().ok(badgeRedis.batchObtainUserBadge(param.getCustomerId(),param.getUserIds())); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java index 082b0051cb..e861249258 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java +++ b/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 selectUserSortedBadge(@Param("userId")String userId,@Param("customerId")String customerId); + + /** + * @Description 批量查找用户全部的显示徽章(排序) + * @param customerId + * @param userIds + * @return java.util.List + * @author wangc + * @date 2020.11.09 14:14 + */ + List selectBatchUserSortedBadge(@Param("customerId")String customerId, @Param("userIds")List userIds); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java index 72a912f393..16644fa332 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java +++ b/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 sortedBadges = cache; redisTemplate.executePipelined((RedisCallback>) 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> + * @author wangc + * @date 2020.11.10 15:00 + */ + public Map> batchObtainUserBadge(String customerId,List userIds){ + if(CollectionUtils.isEmpty(userIds)) return Collections.EMPTY_MAP; + Map> result = new HashMap<>(); + //存放缓存为空的 + List cacheBlank = new LinkedList<>(); + userIds.forEach(userId -> { + List 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> + map = badgeService.getBatchUserSortedBadge(customerId,cacheBlank); + if(null != map && !map.isEmpty()){ + map.forEach((k,v) -> { + List covert = + v.stream().map( o -> { + return ConvertUtils.sourceToTarget(o,UserBadgeUnitFormDTO.class); + }).collect(Collectors.toList()); + result.put(k,covert); + + redisTemplate.executePipelined((RedisCallback>) connection ->{ + covert.forEach(badge -> { + connection.listCommands().rPush(UserRedisKeys.getResiUserBadgeKey(customerId, k).getBytes(), + redisTemplate.getValueSerializer().serialize(badge)); + }); + return null; + }); + }); + } + } + return result; + } + /** * 用户点亮或取消徽章 * @param diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java index 65e9494cc8..a905bb2f9b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java +++ b/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 getUserSortedBadge(String userId,String customerId); + /** + * @Description 批量获取用户显示徽章 + * @param customerId + * @param userIds + * @return java.util.Map> + * @author wangc + * @date 2020.11.10 15:12 + */ + Map> getBatchUserSortedBadge(String customerId, List userIds); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java index 4c60001f6a..f7939fabb8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java +++ b/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> + * @author wangc + * @date 2020.11.10 15:12 + */ + @Override + public Map> getBatchUserSortedBadge(String customerId, List userIds) { + List badges = userBadgeDao.selectBatchUserSortedBadge(customerId,userIds); + if(CollectionUtils.isEmpty(badges)) return Collections.EMPTY_MAP; + return badges.stream().collect(Collectors.groupingBy(UserBadgeInfoResultDTO :: getUserId)); + } + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml index f7186b1424..8377839e72 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml @@ -252,4 +252,52 @@ ORDER BY userBadge.updated_time DESC + + From f5bb49acfedd2a027d9fbd8c582b00b233d04eb7 Mon Sep 17 00:00:00 2001 From: liushaowen <565850092@qq.com> Date: Wed, 11 Nov 2020 14:50:21 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0dto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../advice/controller/AdviceController.java | 7 +++-- .../modules/advice/service/AdviceService.java | 3 +- .../service/impl/AdviceServiceImpl.java | 7 +++-- .../epmet/dto/form/MyAdviceListFormDTO.java | 28 +++++++++++++++++++ .../epmet/feign/EpmetUserOpenFeignClient.java | 4 +-- .../EpmetUserOpenFeignClientFallback.java | 4 +-- .../controller/UserAdviceController.java | 13 ++------- 7 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java index d305e0bdef..b9af883a21 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/controller/AdviceController.java +++ b/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> getMyAdviceList(@RequestBody Map map){ - return adviceService.getMyAdviceList(map); + public Result> getMyAdviceList(@RequestBody MyAdviceListFormDTO dto){ + return adviceService.getMyAdviceList(dto); } } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java index 516a4d4c0f..acf354f745 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/AdviceService.java +++ b/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> getMyAdviceList(Map map); + Result> getMyAdviceList(MyAdviceListFormDTO dto); } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java index a73d059738..2c11338e90 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/advice/service/impl/AdviceServiceImpl.java +++ b/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 map) { - return epmetUserOpenFeignClient.myAdviceList(map); + public Result getMyAdviceList(MyAdviceListFormDTO dto) { + return epmetUserOpenFeignClient.myAdviceList(dto); } } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyAdviceListFormDTO.java new file mode 100644 index 0000000000..6188d44201 --- /dev/null +++ b/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; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 4049181d75..2d5df3ebbb 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/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 * @Author liushaowen * @Date 2020/11/11 10:35 */ @PostMapping("/epmetuser/useradvice/myadvicelist") - Result> myAdviceList(@RequestBody Map map); + Result> myAdviceList(@RequestBody MyAdviceListFormDTO dto); /** * @Description 个人中心-提交建议 diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 443c905f67..b58b3ae62c 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/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> myAdviceList(Map map) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "myAdviceList", map); + public Result> myAdviceList(MyAdviceListFormDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "myAdviceList", dto); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java index 170b9188e5..23ab0d7649 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserAdviceController.java +++ b/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; @@ -161,16 +162,8 @@ public class UserAdviceController { * @Date 2020/11/9 17:35 */ @PostMapping("myadvicelist") - public Result> myAdviceList(@RequestBody Map map) { - int pageSize = map.get("pageSize"); - int pageNo = map.get("pageNo"); - if (pageSize == 0){ - pageSize = 10; - } - if (pageNo == 0){ - pageNo = 1; - } - return new Result>().ok(userAdviceService.myAdviceList(pageSize,pageNo,loginUserUtil.getLoginUserId())); + public Result> myAdviceList(@RequestBody MyAdviceListFormDTO dto) { + return new Result>().ok(userAdviceService.myAdviceList(dto.getPageSize(),dto.getPageNo(),loginUserUtil.getLoginUserId())); } @PostMapping("submitadvice")