From d99a56e37cf9109b46ee68d34a06594ef5615ed3 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期四, 10 十一月 2022 16:06:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into huacheng_test --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java | 349 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 349 insertions(+), 0 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java index 122825f..b009883 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java @@ -19,6 +19,7 @@ import javax.annotation.Resource; import javax.validation.constraints.NotEmpty; +import cn.hutool.core.util.DesensitizedUtil; import com.panzhihua.common.model.dtos.community.ComActDiscussVoteOptionDTO; import com.panzhihua.common.model.dtos.community.DiscussVoteOptionDTO; import com.panzhihua.common.model.dtos.community.PageVoteSituationDTO; @@ -309,6 +310,55 @@ Long userId = comActDiscussDO.getUserId(); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); comActDiscussVO.setUserName(loginUserInfoVO.getName()); + comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName()); + comActDiscussVO.setImageUrl(loginUserInfoVO.getImageUrl()); + + //分页查询评论列表 + PageComActDiscussCommentDTO pageComActDiscussCommentDTO = new PageComActDiscussCommentDTO(); + BeanUtils.copyProperties(discussDetailDTO, pageComActDiscussCommentDTO); + IPage<ComActDiscussCommentVO> discussComments = comActDiscussDAO.pageDiscussCommentAdmin(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO); + discussComments.getRecords().forEach(comment -> { + if (comment.getReplyNum() > 0) { + List<ComActDiscussCommentVO> childList = comActDiscussDAO.getDiscussCommentReplyList(comment.getId()); + if (!childList.isEmpty()) { + comment.setComActDiscussCommentVOList(childList); + } + } + }); + comActDiscussVO.setDiscussCommentList(discussComments.getRecords()); + String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString()); + if (stringRedisTemplate.hasKey(viewNumKey)) { + ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); + comActDiscussVO.setViewsNum(Integer.parseInt(opsForValue.get(viewNumKey))); + } + return R.ok(comActDiscussVO); + } + + /** + * 议事投票-详情 脱敏 + * + * @param discussDetailDTO 请求参数 + * @return ComActDiscussVO + */ + @Override + public R detailDiscussDesensitize(ComActDiscussDetailDTO discussDetailDTO) { + Long id = discussDetailDTO.getId(); + ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id); + if (ObjectUtils.isEmpty(comActDiscussDO)) { + return R.fail("议事投票不存在"); + } + ComActDiscussVO comActDiscussVO = new ComActDiscussVO(); + BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO); + comActDiscussVO.setSignNum(comActDiscussDO.getFabulousNum()); + Integer type = comActDiscussVO.getType(); + if (type.equals(ComActDiscussVO.type.tp)) { + //查询选项列表 + List<ComActDiscussOptionVO> comActDiscussOptionList = comActDiscussOptionDAO.getDiscussOptionList(id); + comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionList); + } + Long userId = comActDiscussDO.getUserId(); + LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); + comActDiscussVO.setUserName(DesensitizedUtil.chineseName(loginUserInfoVO.getName())); comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName()); comActDiscussVO.setImageUrl(loginUserInfoVO.getImageUrl()); @@ -708,6 +758,111 @@ } /** + * 议事投票-分页查询 小程序 + * + * @param pageComActDiscussDTO 查询参数 + * @return ComActDiscussVO 分页 + */ + @Override + public R pageDiscussAppletsDesensitize(PageComActDiscussDTO pageComActDiscussDTO) { + Page page = new Page<>(); + Long pageNum = pageComActDiscussDTO.getPageNum(); + Long pageSize = pageComActDiscussDTO.getPageSize(); + Long loginUserId = pageComActDiscussDTO.getLoginUserId(); + if (null == pageNum || 0 == pageNum) { + pageNum = 1l; + } + if (null == pageSize || 0 == pageSize) { + pageSize = 10l; + } + page.setSize(pageSize); + page.setCurrent(pageNum); + pageComActDiscussDTO.setIsPbMember(0); + pageComActDiscussDTO.setIsVolunteer(0); + if (nonNull(loginUserId)) { + pageComActDiscussDTO.setIsPbMember(pbMemberDAO.checkIsPbMember(loginUserId) > 0 ? 1 : 0); + pageComActDiscussDTO.setIsVolunteer(pbMemberDAO.checkIsVolunteer(loginUserId) > 0 ? 1 : 0); + } + IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscussApplets(page, pageComActDiscussDTO); + List<ComActDiscussVO> records = iPage.getRecords(); + if (!ObjectUtils.isEmpty(records)) { + records.forEach(comActDiscussVO -> { + Integer type = comActDiscussVO.getType(); + Long id = comActDiscussVO.getId(); + String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString()); + if (stringRedisTemplate.hasKey(viewNumKey)) { + ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); + comActDiscussVO.setViewsNum(Integer.parseInt(opsForValue.get(viewNumKey))); + } + if (type.equals(2)) { + List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList( + new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); + List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>(); + List<Integer> votes = new ArrayList<>(); + comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> { + Long discussOptionDOId = comActDiscussOptionDO.getId(); + Integer selectCount = + comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>() + .lambda().eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); + ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO(); + BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO); + comActDiscussOptionVO.setNum(selectCount); + + if (loginUserId != null) { + // 判断选项是否已投票 + int haveVote = + comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); + votes.add(haveVote); + comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0); + } + comActDiscussOptionVOS.add(comActDiscussOptionVO); + }); + fillThePercentAndSort(comActDiscussOptionVOS); + checkDiscussStatusIsCorrect(comActDiscussVO); + comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS); + //填充剩余可投票数 + if (loginUserId != null && !loginUserId.equals(0L)) { + if (comActDiscussVO.getIsRepeat().intValue() == 1) { + //可重复投票 + int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(id, loginUserId); + int remainingVotes = comActDiscussVO.getCount().intValue() - votedVotesInToday; + comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); + } else { + //不可重复投票 + int alreadyVotedVotes = votes.stream().mapToInt(Integer::intValue).sum(); + int remainingVotes = comActDiscussVO.getCount().intValue() - alreadyVotedVotes; + comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); + } + } + comActDiscussVO.setUserName(DesensitizedUtil.chineseName(comActDiscussVO.getUserName())); + //填充投票记录列表 + List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList = comActDiscussOptionUserDAO + .selectVotedRecords(comActDiscussVO.getId()); + comActDiscussVO.setComActDiscussOptionUserVOList(comActDiscussOptionUserVOList); + //填充已参与投票人数 + int votedPersonNum = comActDiscussOptionUserDAO.selectVotedPersonNum(comActDiscussVO.getId()); + comActDiscussVO.setVotedPersonNum(votedPersonNum); + } + + if (loginUserId != null) { + Integer integer = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda() + .eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId()) + .eq(ComActDiscussUserDO::getUserId, loginUserId)); + if (integer > 0) { + comActDiscussVO.setHaveSign(1); + } else { + comActDiscussVO.setHaveSign(0); + } + // 判断是否已经投票 + int haveVote = comActDiscussOptionUserDAO.selectHaveVote(id, loginUserId); + comActDiscussVO.setHaveVote(haveVote > 0 ? 1 : 0); + } + }); + } + return R.ok(iPage); + } + + /** * 判断discuss状态是否正确 * @param comActDiscussVO */ @@ -843,6 +998,104 @@ return R.ok(iPage); } + /** + * 议事投票-评论-分页查询 小程序 + * + * @param pageComActDiscussCommentDTO 分页参数 + * @return ComActDiscussCommentVO + */ + @Override + public R pageDiscussCommentAppletsDesensitize(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { + Page page = new Page<>(); + Long pageNum = pageComActDiscussCommentDTO.getPageNum(); + Long pageSize = pageComActDiscussCommentDTO.getPageSize(); + if (null == pageNum || 0 == pageNum) { + pageNum = 1l; + } + if (null == pageSize || 0 == pageSize) { + pageSize = 10l; + } + page.setSize(pageSize); + page.setCurrent(pageNum); + IPage<ComActDiscussCommentVO> iPage = + comActDiscussDAO.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO); + List<ComActDiscussCommentVO> records = iPage.getRecords(); + if (!ObjectUtils.isEmpty(records)) { + records.forEach(comActDiscussCommentVO -> { + List<ComActDiscussCommentVO> comActDiscussCommentVOList = new ArrayList<>(); + Long id = comActDiscussCommentVO.getId(); + comActDiscussCommentVO.setPhone(DesensitizedUtil.mobilePhone(comActDiscussCommentVO.getPhone())); + comActDiscussCommentVO.setUserName(DesensitizedUtil.chineseName(comActDiscussCommentVO.getUserName())); + comActDiscussCommentVO.setUserNameBack(DesensitizedUtil.chineseName(comActDiscussCommentVO.getUserNameBack())); + comActDiscussCommentVOList = comActDiscussCommentDAO.selectChilds(id); + if (!ObjectUtils.isEmpty(comActDiscussCommentVOList)) { + List<ComActDiscussCommentVO> comActDiscussCommentVOS = comActDiscussCommentVOList; + comActDiscussCommentVOList.forEach(comActDiscussCommentVO1 -> { + Long parentId = comActDiscussCommentVO1.getParentId(); + List<ComActDiscussCommentVO> collect = comActDiscussCommentVOS.stream() + .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) + .collect(Collectors.toList()); + if (!ObjectUtils.isEmpty(collect)) { + String userName = collect.get(0).getUserName(); + String userNickName = collect.get(0).getUserNickName(); + comActDiscussCommentVO1.setUserNameBack(userName); + comActDiscussCommentVO1.setUserNickNameBack(userNickName); + } + List<ComActDiscussCommentVO> collect1 = records.stream() + .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) + .collect(Collectors.toList()); + if (!ObjectUtils.isEmpty(collect1)) { + ComActDiscussCommentVO comActDiscussCommentVOFirst = collect1.get(0); + String userName = comActDiscussCommentVOFirst.getUserName(); + String userNickName = comActDiscussCommentVOFirst.getUserNickName(); + comActDiscussCommentVO1.setUserNameBack(userName); + comActDiscussCommentVO1.setUserNickNameBack(userNickName); + } + comActDiscussCommentVO1.setPhone(DesensitizedUtil.mobilePhone(comActDiscussCommentVO1.getPhone())); + comActDiscussCommentVO1.setUserName(DesensitizedUtil.chineseName(comActDiscussCommentVO1.getUserName())); + comActDiscussCommentVO1.setUserNameBack(DesensitizedUtil.chineseName(comActDiscussCommentVO1.getUserNameBack())); + if (pageComActDiscussCommentDTO.getLoginUserId() != null + && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { + Integer integer = comActDiscussCommentUserDAO + .selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() + .eq(ComActDiscussCommentUserDO::getDisscussCommentId, + comActDiscussCommentVO1.getId()) + .eq(ComActDiscussCommentUserDO::getUserId, + pageComActDiscussCommentDTO.getLoginUserId())); + if (integer > 0) { + comActDiscussCommentVO1.setHaveSign(1); + } else { + comActDiscussCommentVO1.setHaveSign(0); + } + } +// if(StringUtils.isEmpty(comActDiscussCommentVO1.getUserNickNameBack())){ +// comActDiscussCommentVO1.setUserNickNameBack("社区管理员"); +// } + }); + comActDiscussCommentVO.setComActDiscussCommentVOList(comActDiscussCommentVOList); + } + if (pageComActDiscussCommentDTO.getLoginUserId() != null + && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { + Integer integer = + comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() + .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId()) + .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId())); + if (integer > 0) { + comActDiscussCommentVO.setHaveSign(1); + } else { + comActDiscussCommentVO.setHaveSign(0); + } + } + + // 判断当前评论是否是社区管理员评论 + if (!comActDiscussCommentVO.getUserType().equals(1)) { + comActDiscussCommentVO.setUserNickName("社区管理员"); + } + }); + } + return R.ok(iPage); + } + /** * 议事投票-详情 小程序 * @@ -939,6 +1192,102 @@ } return R.ok(comActDiscussVO); } + /** + * 议事投票-详情 小程序 脱敏 + * + * @param id 主键 + * @param loginUserId 登录用户主键 + * @return ComActDiscussVO + */ + @Override + public R detailDiscussAppletsDesensitize(Long id, Long loginUserId) { + ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id); + if (ObjectUtils.isEmpty(comActDiscussDO)) { + return R.fail("议事投票不存在"); + } + ComActDiscussVO comActDiscussVO = new ComActDiscussVO(); + BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO); + comActDiscussVO.setSignNum(comActDiscussDO.getFabulousNum()); + Integer type = comActDiscussVO.getType(); + if (type.equals(2)) { + List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList( + new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); + List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>(); + ArrayList<Integer> votes = new ArrayList<>(); + comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> { + Long discussOptionDOId = comActDiscussOptionDO.getId(); + Integer selectCount = + comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda() + .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); + ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO(); + BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO); + comActDiscussOptionVO.setNum(selectCount); + if (loginUserId != null && !loginUserId.equals(0L)) { + // 判断选项是否已投票 + int haveVote = + comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); + votes.add(haveVote); + comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0); + } + comActDiscussOptionVOS.add(comActDiscussOptionVO); + }); + fillThePercentAndSort(comActDiscussOptionVOS); + comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS); + //填充剩余可投票数 + if (loginUserId != null && !loginUserId.equals(0L)) { + if (comActDiscussVO.getIsRepeat().intValue() == 1) { + //可重复投票 + int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(id, loginUserId); + int remainingVotes = comActDiscussVO.getCount().intValue() - votedVotesInToday; + comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); + } else { + //不可重复投票 + int alreadyVotedVotes = votes.stream().mapToInt(Integer::intValue).sum(); + int remainingVotes = comActDiscussVO.getCount().intValue() - alreadyVotedVotes; + comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); + } + } + checkDiscussStatusIsCorrect(comActDiscussVO); + //填充投票记录列表 + List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList = comActDiscussOptionUserDAO + .selectVotedRecords(comActDiscussVO.getId()); + comActDiscussVO.setComActDiscussOptionUserVOList(comActDiscussOptionUserVOList); + //填充已参与投票人数 + int votedPersonNum = comActDiscussOptionUserDAO.selectVotedPersonNum(comActDiscussVO.getId()); + comActDiscussVO.setVotedPersonNum(votedPersonNum); + } + Long userId = comActDiscussDO.getUserId(); + LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); + if (loginUserInfoVO != null) { + comActDiscussVO.setUserName(DesensitizedUtil.chineseName(loginUserInfoVO.getName())); + if (StringUtils.isEmpty(loginUserInfoVO.getNickName())) { + comActDiscussVO.setUserNickName(DesensitizedUtil.chineseName(loginUserInfoVO.getName())); + } else { + comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName()); + } + comActDiscussVO.setImageUrl(loginUserInfoVO.getImageUrl()); + comActDiscussVO.setUserType(loginUserInfoVO.getType()); + } + Long communityId = comActDiscussDO.getCommunityId(); + Integer type1 = loginUserInfoVO.getType(); + if (type1.intValue() > 1) { + ComActVO comActVO = comActDiscussDAO.selectCommunity(communityId); + comActDiscussVO.setUserName(comActVO.getName()); + comActDiscussVO.setUserNickName(comActVO.getName()); + } + if (loginUserId != null && !loginUserId.equals(0L)) { + ComActDiscussVO comActDiscussVO1 = comActDiscussDAO.selectHaveSignAndHaveVote(id, loginUserId); + comActDiscussVO.setHaveSign(comActDiscussVO1.getHaveSign()); + comActDiscussVO.setHaveVote(comActDiscussVO1.getHaveVote()); + } + String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString()); + if (stringRedisTemplate.hasKey(viewNumKey)) { + ValueOperations opsForValue = stringRedisTemplate.opsForValue(); + int viewNum = Integer.parseInt((String) opsForValue.get(viewNumKey)); + comActDiscussVO.setViewsNum(viewNum); + } + return R.ok(comActDiscussVO); + } /** * 计算投票占比以及排序 -- Gitblit v1.7.1