From 8d8b76f875bc9b1dbc34b776171c1965c04e46d7 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 22 Apr 2021 16:59:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=B0=8F=E7=BB=84=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E5=BE=85=E7=BB=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../topic/form/GetPastTopicListV2FormDTO.java | 2 ++ .../result/GetPastTopicListV2ResultDTO.java | 3 +- .../topic/controller/ResiTopicController.java | 1 + .../service/impl/ResiTopicServiceImpl.java | 16 ++++++++++ .../epmet/modules/utils/ModuleConstant.java | 2 ++ .../com/epmet/dto/form/UserBadgesFormDTO.java | 25 +++++++++++++++ .../epmet/dto/result/UserBadgesResultDTO.java | 21 +++++++++++++ .../epmet/feign/EpmetUserOpenFeignClient.java | 9 ++++++ .../EpmetUserOpenFeignClientFallback.java | 5 +++ .../com/epmet/controller/BadgeController.java | 11 +++++++ .../java/com/epmet/service/BadgeService.java | 13 +++++--- .../epmet/service/impl/BadgeServiceImpl.java | 31 +++++++++++++++++++ 12 files changed, 134 insertions(+), 5 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgesFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgesResultDTO.java diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/GetPastTopicListV2FormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/GetPastTopicListV2FormDTO.java index 4c66b02c47..8004ff6401 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/GetPastTopicListV2FormDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/GetPastTopicListV2FormDTO.java @@ -28,4 +28,6 @@ public class GetPastTopicListV2FormDTO implements Serializable { private Integer pageNo; private String userId; + + private String customerId; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetPastTopicListV2ResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetPastTopicListV2ResultDTO.java index d0dbe33963..3885933a78 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetPastTopicListV2ResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/GetPastTopicListV2ResultDTO.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -74,7 +75,7 @@ public class GetPastTopicListV2ResultDTO implements Serializable { /** * 徽章Url集合 */ - private List badgeList; + private List badgeList = new ArrayList<>(); @JsonIgnore private String userId; diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java index a53708526d..aa8158ede0 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java @@ -467,6 +467,7 @@ public class ResiTopicController { public Result> getPastTopicListV2(@RequestBody GetPastTopicListV2FormDTO formDTO,@LoginUser TokenDto tokenDto){ ValidatorUtils.validateEntity(formDTO, GetPastTopicListV2FormDTO.GetPastTopicListV2Form.class); formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result>().ok(topicService.getPastTopicListV2(formDTO)); } } 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 2d37f62fba..dde0ed3f86 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 @@ -188,6 +188,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl userIds = infos.stream().map(m -> m.getUserId()).collect(Collectors.toList()); // 用户信息 List userInfos = this.disPoseUserInfo(resiGroup.getGroupType(), userIds); + // 查询用户徽章信息 + Result> badgeResult = epmetUserOpenFeignClient.userBadges(new UserBadgesFormDTO()); + if (!badgeResult.success()){ + throw new RenException(ModuleConstant.GET_BADGE_INFO_ERR); + } // 各字段赋值 infos.forEach(i -> { // 用户头像,姓名赋值 @@ -2338,6 +2346,14 @@ public class ResiTopicServiceImpl extends BaseServiceImpl { + if (i.getUserId().equals(b.getUserId())){ + i.setBadgeList(b.getBadgeIcons()); + } + }); + } }); return infos; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java index e22a1b766a..383433761f 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java @@ -402,4 +402,6 @@ public interface ModuleConstant extends Constant { */ String READ_FLAG_YES = "read"; + String GET_BADGE_INFO_ERR = "获取徽章信息失败了"; + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgesFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgesFormDTO.java new file mode 100644 index 0000000000..4585b1d080 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgesFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/4/22 下午4:13 + * @DESC + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserBadgesFormDTO implements Serializable { + + private static final long serialVersionUID = -5211565974325345262L; + + private String customerId; + + private List userIds; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgesResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgesResultDTO.java new file mode 100644 index 0000000000..f0230c0772 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgesResultDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/4/22 下午4:09 + * @DESC + */ +@Data +public class UserBadgesResultDTO implements Serializable { + + private static final long serialVersionUID = -1504387869251002117L; + + private String userId; + + private List badgeIcons; +} 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 8a6b4db22a..f85ba6d782 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 @@ -521,4 +521,13 @@ public interface EpmetUserOpenFeignClient { */ @GetMapping(value = "/epmetuser/userrole/ispartymember") Result selectIsPartyMemberByUserId(@RequestParam("userId") String userId); + + /** + * @Description 查询用户徽章 + * @Param formDTO + * @author zxc + * @date 2021/4/22 下午4:17 + */ + @PostMapping("/epmetuser/badge/userbadges") + Result> userBadges(@RequestBody UserBadgesFormDTO formDTO); } 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 7cb96271ec..518cca9cef 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 @@ -368,4 +368,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result selectIsPartyMemberByUserId(String userId) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "selectIsPartyMemberByUserId", userId); } + + @Override + public Result> userBadges(UserBadgesFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "userBadges", formDTO); + } } 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 edf52d1f97..a5d13c581f 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 @@ -179,4 +179,15 @@ public class BadgeController { public Result> queryGridAuditingBadgeCount(@RequestBody List gridIdList) { return new Result>().ok(badgeService.queryGridAuditingBadgeCount(gridIdList)); } + + /** + * @Description 查询用户徽章 + * @Param formDTO + * @author zxc + * @date 2021/4/22 下午4:17 + */ + @PostMapping("userbadges") + public Result> userBadges(@RequestBody UserBadgesFormDTO formDTO){ + return new Result>().ok(badgeService.userBadges(formDTO)); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/BadgeService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/BadgeService.java index b409d5709b..f89f180458 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/BadgeService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/BadgeService.java @@ -21,10 +21,7 @@ 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.BadgeDTO; -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.*; import com.epmet.entity.BadgeEntity; @@ -187,4 +184,12 @@ public interface BadgeService extends BaseService { * @Date 2020/11/12 15:56 **/ List queryGridAuditingBadgeCount(List gridIdList); + + /** + * @Description 查询用户徽章 + * @Param formDTO + * @author zxc + * @date 2021/4/22 下午4:17 + */ + List userBadges(UserBadgesFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/BadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/BadgeServiceImpl.java index 3a92a310fb..dcdd39d4f1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/BadgeServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/BadgeServiceImpl.java @@ -29,6 +29,8 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; @@ -56,6 +58,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 徽章 @@ -83,6 +86,8 @@ public class BadgeServiceImpl extends BaseServiceImpl imp private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private UserBadgeDao userBadgeDao; + @Autowired + private RedisUtils redisUtils; @Override @@ -449,4 +454,30 @@ public class BadgeServiceImpl extends BaseServiceImpl imp return baseDao.queryGridAuditingBadgeCount(gridIdList); } + /** + * @Description 查询用户徽章 + * @Param formDTO + * @author zxc + * @date 2021/4/22 下午4:17 + */ + @Override + public List userBadges(UserBadgesFormDTO formDTO) { + String customerId = formDTO.getCustomerId(); + List userIds = formDTO.getUserIds(); + if (CollectionUtils.isEmpty(userIds)){ + return new ArrayList<>(); + } + List result = new ArrayList<>(); + userIds.forEach(userId -> { + List badges = redisUtils.lrange(RedisKeys.getResiUserBadgeKey(customerId, userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class); + if (!CollectionUtils.isEmpty(badges)){ + UserBadgesResultDTO b = new UserBadgesResultDTO(); + b.setUserId(userId); + b.setBadgeIcons(badges.stream().map(m -> m.getBadgeIcon()).collect(Collectors.toList())); + result.add(b); + } + }); + return result; + } + } \ No newline at end of file From f54b83d033bbda4ebe215027fcd0e58abfad5ba3 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 22 Apr 2021 17:46:09 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 30 ++++ .../epmet/commons/tools/redis/RedisUtils.java | 20 ++- .../resi/group/dto/act/GroupActInfoDTO.java | 4 + .../group/dto/member/ResiGroupMemberDTO.java | 5 +- .../controller/GroupActInfoController.java | 2 +- .../act/entity/GroupActInfoEntity.java | 6 + .../act/service/GroupActInfoService.java | 1 + .../service/impl/GroupActInfoServiceImpl.java | 130 ++++++++++++++++-- .../modules/constant/GroupActConstant.java | 2 + .../member/entity/ResiGroupMemberEntity.java | 5 +- .../epmet/modules/utils/ModuleConstant.java | 2 +- 11 files changed, 184 insertions(+), 23 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index 763ce76d3e..0dfa22915c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -8,7 +8,9 @@ package com.epmet.commons.tools.redis; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.utils.DateUtils; import org.apache.commons.lang3.StringUtils; /** @@ -429,4 +431,32 @@ public class RedisKeys { public static String getThirdPlatformAccessTokenKey(String platformId) { return rootPrefix.concat("thirdplatform:accesstoken:").concat(platformId); } + + /** + * @return 设置组员已读、未读标识 + * @param source :act notice + * @param groupId 小组id + * @param sourceId 活动id,或者通知id + * @author yinzuomei + * @description groupread:202104:act:groupId:actId + * @Date 2021/4/22 16:38 + **/ + public static String getGroupMsgReadKey(String source, String groupId, String sourceId) { + String currentMonth= DateUtils.getBeforeNMonth(NumConstant.ZERO); + return "groupread:".concat(currentMonth).concat(":").concat(source).concat(":").concat(groupId).concat(":").concat(sourceId); + } + + /** + * @return 设置应读人员标识 ,默认全部赋值1 + * @param source :act notice + * @param groupId 小组id + * @param sourceId 活动id,或者通知id + * @author yinzuomei + * @description groupread:user:202104:act:groupId:actId + * @Date 2021/4/22 16:38 + **/ + public static String getGroupMsgShouldReadUser(String source, String groupId, String sourceId) { + String currentMonth= DateUtils.getBeforeNMonth(NumConstant.ZERO); + return "groupread:user:".concat(currentMonth).concat(":").concat(source).concat(":").concat(groupId).concat(":").concat(sourceId); + } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java index dac7d44896..cbd00c3aeb 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java @@ -13,10 +13,7 @@ import com.epmet.commons.tools.exception.RenException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; -import org.springframework.data.redis.core.HashOperations; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.core.ZSetOperations; +import org.springframework.data.redis.core.*; import org.springframework.data.redis.support.atomic.RedisAtomicLong; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -422,4 +419,19 @@ public class RedisUtils { return redisTemplate.hasKey(key); } + public Boolean setBit(String key, long offset, boolean value) { + return redisTemplate.opsForValue().setBit(key, offset, value); + } + + public Boolean getBit(String key, long offset) { + return redisTemplate.opsForValue().getBit(key, offset); + } + + public Long bitCount(String key) { + return redisTemplate.execute((RedisCallback) con -> con.bitCount(key.getBytes())); + } + + public Long bitCount(String key, int start, int end) { + return redisTemplate.execute((RedisCallback) con -> con.bitCount(key.getBytes(), start, end)); + } } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/GroupActInfoDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/GroupActInfoDTO.java index 5b63bbf6be..66fa6efdfa 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/GroupActInfoDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/GroupActInfoDTO.java @@ -184,4 +184,8 @@ public class GroupActInfoDTO implements Serializable { */ private Date updatedTime; + /** + * 应读人数 + */ + private Integer shouldRead; } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java index f1832f7958..0f834100fa 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java @@ -17,9 +17,10 @@ package com.epmet.resi.group.dto.member; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -102,4 +103,6 @@ public class ResiGroupMemberDTO implements Serializable { * 客户Id * */ private String customerId; + + private Integer tempNum; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java index d2231f005b..8a91e31808 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java @@ -90,7 +90,7 @@ public class GroupActInfoController { public Result queryReadList(@RequestBody @LoginUser TokenDto tokenDto, @RequestBody ActReadViewFormDTO actReadViewFormDTO){ actReadViewFormDTO.setUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(actReadViewFormDTO,ActReadViewFormDTO.AddUserInternalGroup.class); - return new Result().ok(groupActInfoService.queryReadList(actReadViewFormDTO)); + return new Result().ok(groupActInfoService.queryReadListV2(actReadViewFormDTO)); } /** diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/entity/GroupActInfoEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/entity/GroupActInfoEntity.java index 5314c9c49f..18939138f8 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/entity/GroupActInfoEntity.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/entity/GroupActInfoEntity.java @@ -153,4 +153,10 @@ public class GroupActInfoEntity extends BaseEpmetEntity { */ private String publishUserId; + /** + * 应读人数 + */ + private Integer shouldRead; + + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java index b815bb7358..9fd25cadf8 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java @@ -58,6 +58,7 @@ public interface GroupActInfoService extends BaseService { */ NoticeReadListResultDTO queryReadList(ActReadViewFormDTO actReadViewFormDTO); + NoticeReadListResultDTO queryReadListV2(ActReadViewFormDTO actReadViewFormDTO); /** * 011、取消活动 * diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java index 771435fad6..072f75637e 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java @@ -25,6 +25,8 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.scan.param.ImgScanParamDTO; import com.epmet.commons.tools.scan.param.ImgTaskDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO; @@ -122,6 +124,8 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl contentList = constructText(groupActInfoEntity.getId(), formDTO.getCustomerId(), formDTO.getTextList()); List imgList = constructImg(groupActInfoEntity.getId(), formDTO.getCustomerId(), formDTO.getImgList()); + //包含组长 List memberDTOList=resiGroupMemberService.getMemberList(formDTO.getGroupId()); - List readRecordEntityList=constructReadRec(groupActInfoEntity.getId(), - formDTO.getCustomerId(), - formDTO.getGroupId(), - formDTO.getPublishUserId(), - groupDTO.getGridId(), - memberDTOList); + //应读数减-1,去掉组长 + groupActInfoEntity.setShouldRead(memberDTOList.size()-NumConstant.ONE); + //2、插入活动内容 contentList.forEach(textContentEntity->{ groupActContentDao.insert(textContentEntity); @@ -176,10 +178,9 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl{ - actReadRecordDao.insert(readRecordEntity); - }); + //4、插入应读记录表!!!!! + saveActReadRecord(groupActInfoEntity,memberDTOList); + //5、发送站内信 sendMessage(memberDTOList,formDTO,groupActInfoEntity,groupDTO); @@ -190,6 +191,32 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl memberDTOList) { + String actReadKey= RedisKeys.getGroupMsgReadKey(GroupActConstant.ACT_STR,groupActInfoEntity.getGroupId(),groupActInfoEntity.getId()); + String actShoudReadUserKey=RedisKeys.getGroupMsgShouldReadUser(GroupActConstant.ACT_STR,groupActInfoEntity.getGroupId(),groupActInfoEntity.getId()); + List readRecordEntityList=new ArrayList<>(); + memberDTOList.forEach(memberDTO->{ + ActReadRecordEntity actReadRecordEntity=new ActReadRecordEntity(); + actReadRecordEntity.setCustomerId(groupActInfoEntity.getCustomerId()); + actReadRecordEntity.setGroupActId(groupActInfoEntity.getId()); + actReadRecordEntity.setReadFlag(GroupActConstant.UN_READ); + actReadRecordEntity.setUserId(memberDTO.getCustomerUserId()); + actReadRecordEntity.setShouldBeRead(Constant.YES); + actReadRecordEntity.setGroupId(groupActInfoEntity.getGroupId()); + actReadRecordEntity.setGridId(groupActInfoEntity.getGridId()); + if(!groupActInfoEntity.getPublishUserId().equals(memberDTO.getCustomerUserId())){ + readRecordEntityList.add(actReadRecordEntity); + //默认是未读 + redisUtils.setBit(actReadKey,memberDTO.getTempNum(),false); + //当前所有成员默认应读 + redisUtils.setBit(actShoudReadUserKey,memberDTO.getTempNum(),true); + } + }); + /*readRecordEntityList.forEach(readRecordEntity->{ + actReadRecordDao.insert(readRecordEntity); + });*/ + } + private void saveGroupMessage(GroupActInfoEntity groupActInfoEntity) { GroupMessageDTO groupMessageDTO=groupMessageService.getByMessageId(groupActInfoEntity.getId()); if(null==groupMessageDTO){ @@ -479,8 +506,9 @@ public class GroupActInfoServiceImpl extends BaseServiceImplNumConstant.ZERO?false:true); //返回详情,并且已读状态 ActReadRecordEntity actReadRecordEntity=actReadRecordDao.selectUserRec(formDTO.getGroupActId(),formDTO.getUserId()); + String actReadKey= RedisKeys.getGroupMsgReadKey(GroupActConstant.ACT_STR,groupActInfoEntity.getGroupId(),groupActInfoEntity.getId()); if(null== actReadRecordEntity){ - //插入 + //todo 插入不在应读列表里的是否还记录呢???? ActReadRecordEntity insertEntity=new ActReadRecordEntity(); insertEntity.setCustomerId(groupActInfoEntity.getCustomerId()); insertEntity.setGroupActId(formDTO.getGroupActId()); @@ -489,13 +517,19 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl已读 actReadRecordEntity.setReadFlag(GroupActConstant.READ); actReadRecordEntity.setUpdatedTime(new Date()); - actReadRecordDao.updateById(actReadRecordEntity); + // todo + // actReadRecordDao.updateById(actReadRecordEntity); + + //状态改为已读 + redisUtils.setBit(actReadKey,resiGroupMemberDTO.getTempNum(),true); } } return resultDTO; @@ -625,6 +659,76 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl readList = new ArrayList<>(); + List unReadList = new ArrayList<>(); + //1.根据活动id,查询应读人员列表 + GroupActInfoEntity groupActInfoEntity=baseDao.selectById(actReadViewFormDTO.getGroupActId()); + List memembersList=resiGroupMemberService.getMemberList(groupActInfoEntity.getGroupId()); + //2.调用user服务,查询人员基础数据 + List userIdList = memembersList.stream().map(ResiGroupMemberDTO::getCustomerUserId).collect(Collectors.toList()); + Result> result = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList); + if (!result.success()) { + throw new RenException("调用user服务,获取用户基础数据失败"); + } + + List resultDTOList = result.getData(); + if (!CollectionUtils.isEmpty(resultDTOList)) { + //3.遍历封装数据并返回 + for (ResiGroupMemberDTO memberDTO : memembersList) { + //todo + //1)怎么判断当前组员属于应读人员? + //2)应读人员,是否已读?? + String userActKey = RedisKeys.getGroupMsgReadKey(GroupActConstant.ACT_STR, groupActInfoEntity.getGroupId(), groupActInfoEntity.getId()); + Boolean readFlag = redisUtils.getBit(userActKey, memberDTO.getTempNum()); + if (readFlag) { + //已读 + StringBuffer name = new StringBuffer(); + StringBuffer url = new StringBuffer(); + resultDTOList.forEach(user -> { + if (memberDTO.getCustomerUserId().equals(user.getUserId())) { + name.append(user.getSurname()).append(user.getName()); + url.append(user.getHeadImgUrl()); + } + }); + NoticeReadListResultDTO.NoticeReafdRecord read = new NoticeReadListResultDTO.NoticeReafdRecord(); + read.setUserId(memberDTO.getCustomerUserId()); + read.setUserName(name.toString()); + read.setUserHeadPhoto(url.toString()); + readList.add(read); + } else { + //todo + // 未读人员 ?????? + StringBuffer name = new StringBuffer(); + StringBuffer url = new StringBuffer(); + resultDTOList.forEach(user -> { + if (memberDTO.getCustomerUserId().equals(user.getUserId())) { + name.append(user.getSurname()).append(user.getName()); + url.append(user.getHeadImgUrl()); + } + }); + NoticeReadListResultDTO.NoticeReafdRecord unRead = new NoticeReadListResultDTO.NoticeReafdRecord(); + unRead.setUserId(memberDTO.getCustomerUserId()); + unRead.setUserName(name.toString()); + unRead.setUserHeadPhoto(url.toString()); + unReadList.add(unRead); + } + } + } + //已读人数 + String actReadKey= RedisKeys.getGroupMsgReadKey(GroupActConstant.ACT_STR,groupActInfoEntity.getGroupId(),groupActInfoEntity.getId()); + long readNum=redisUtils.bitCount(actReadKey); + resultDTO.setReadCount((int) readNum); + //未读人数 + resultDTO.setUnReadCount(groupActInfoEntity.getShouldRead()-resultDTO.getReadCount()); + //已读列表 + resultDTO.setReadList(readList); + //未读列表 + resultDTO.setUnReadList(unReadList); + return resultDTO; + } /** * 011、取消活动 * diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupActConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupActConstant.java index 03f127b29c..4eb0ad9dd3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupActConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupActConstant.java @@ -37,4 +37,6 @@ public interface GroupActConstant { // blank: 不显示; display:显示 String BLANK="blank"; String DISPLAY="display"; + + String ACT_STR="act"; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java index 3d9a9ac553..6f43bf1461 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java @@ -20,13 +20,10 @@ package com.epmet.modules.member.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; - /** * 群组成员关系表 * @@ -76,4 +73,6 @@ public class ResiGroupMemberEntity extends BaseEpmetEntity { @TableField(fill = FieldFill.INSERT) private String customerId; + private Integer tempNum; + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java index e22a1b766a..915f96fa0b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java @@ -372,7 +372,7 @@ public interface ModuleConstant extends Constant { /** * 活动扫码签到,对应的跳转到 活动详情页面 */ - String GROUP_ACT_DETAIL_PAGE = "XXXXXXXXXXXXXXXXXXXXX找莹姐要路径"; + String GROUP_ACT_DETAIL_PAGE = "pages/group/activity/detail"; String TOPIC_CONTENT_AND_VOICE_IS_NULL = "请输入话题内容或语音"; From 6b13f7c1313578e63ed44509180b9e29c57c277f Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 22 Apr 2021 23:36:29 +0800 Subject: [PATCH 3/3] back --- .../modules/act/controller/GroupActInfoController.java | 7 +++++++ .../modules/act/service/impl/GroupActInfoServiceImpl.java | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java index 8a91e31808..da742b975d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java @@ -88,6 +88,13 @@ public class GroupActInfoController { **/ @PostMapping("readlist") public Result queryReadList(@RequestBody @LoginUser TokenDto tokenDto, @RequestBody ActReadViewFormDTO actReadViewFormDTO){ + actReadViewFormDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(actReadViewFormDTO,ActReadViewFormDTO.AddUserInternalGroup.class); + return new Result().ok(groupActInfoService.queryReadList(actReadViewFormDTO)); + } + + @PostMapping("readlistV2") + public Result queryReadListV2(@RequestBody @LoginUser TokenDto tokenDto, @RequestBody ActReadViewFormDTO actReadViewFormDTO){ actReadViewFormDTO.setUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(actReadViewFormDTO,ActReadViewFormDTO.AddUserInternalGroup.class); return new Result().ok(groupActInfoService.queryReadListV2(actReadViewFormDTO)); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java index 072f75637e..1312d7642b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java @@ -212,9 +212,9 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl{ + readRecordEntityList.forEach(readRecordEntity->{ actReadRecordDao.insert(readRecordEntity); - });*/ + }); } private void saveGroupMessage(GroupActInfoEntity groupActInfoEntity) { @@ -518,7 +518,7 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl