From f1bcbc43e988d0d1a91bea66a9ebbf6d601e48c0 Mon Sep 17 00:00:00 2001 From: yanghui <2536613402@qq.com> Date: 星期四, 13 十月 2022 10:33:19 +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 | 164 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 114 insertions(+), 50 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 2dbcd46..122825f 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 @@ -17,7 +17,12 @@ import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.validation.constraints.NotEmpty; +import com.panzhihua.common.model.dtos.community.ComActDiscussVoteOptionDTO; +import com.panzhihua.common.model.dtos.community.DiscussVoteOptionDTO; +import com.panzhihua.common.model.dtos.community.PageVoteSituationDTO; +import com.panzhihua.service_community.dao.ComPbMemberDAO; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.connection.StringRedisConnection; import org.springframework.data.redis.core.RedisCallback; @@ -114,6 +119,8 @@ private UserService userService; @Resource private StringRedisTemplate stringRedisTemplate; + @Resource + private ComPbMemberDAO pbMemberDAO; /** * 议事投票-新增 @@ -163,6 +170,7 @@ comActDiscussOptionDO.setDiscussId(comActDiscussDO1Id); comActDiscussOptionDO.setOptionContent(s.getOptionContent()); comActDiscussOptionDO.setOptionUrl(s.getOptionUrl()); + comActDiscussOptionDO.setNeedReason(s.getNeedReason()); comActDiscussOptionDOS.add(comActDiscussOptionDO); }); comActDiscussOptionService.saveBatch(comActDiscussOptionDOS); @@ -204,10 +212,13 @@ } if (currentUserRoles.isEmpty()) { checkResult = false; - } - boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role)); - if (!result) { - checkResult = false; + } else { + if (!sysAllowedRoles.contains("1")) { + boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role)); + if (!result) { + checkResult = false; + } + } } } } @@ -251,7 +262,7 @@ } else { comActDiscussDO.setStatus(ComActDiscussDO.status.yfb); } - comActDiscussDO.setUpdateAt(new Date()); + comActDiscussDO.setUpdateAt(nowDate); int insert = comActDiscussDAO.updateById(comActDiscussDO); if (insert > 0) { //如果是投票,需要把投票的选项存储 @@ -299,6 +310,7 @@ LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); comActDiscussVO.setUserName(loginUserInfoVO.getName()); comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName()); + comActDiscussVO.setImageUrl(loginUserInfoVO.getImageUrl()); //分页查询评论列表 PageComActDiscussCommentDTO pageComActDiscussCommentDTO = new PageComActDiscussCommentDTO(); @@ -313,6 +325,11 @@ } }); 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); } @@ -393,7 +410,19 @@ */ @Override public R pageDiscussAdmin(PageComActDiscussDTO pageComActDiscussDTO) { - return R.ok(comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO)); + IPage<ComActDiscussVO> comActDiscussVOIPage=comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO); + List<ComActDiscussVO> records = comActDiscussVOIPage.getRecords(); + if (!ObjectUtils.isEmpty(records)) { + records.forEach(comActDiscussVO -> { + 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))); + } + }); + } + return R.ok(comActDiscussVOIPage); } /** @@ -594,15 +623,23 @@ } 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)) { - List<String> viewNumKeys = new ArrayList<>(); records.forEach(comActDiscussVO -> { Integer type = comActDiscussVO.getType(); Long id = comActDiscussVO.getId(); String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString()); - viewNumKeys.add(viewNumKey); + 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)); @@ -666,17 +703,6 @@ comActDiscussVO.setHaveVote(haveVote > 0 ? 1 : 0); } }); - ValueOperations opsForValue = stringRedisTemplate.opsForValue(); - List<String> viewNumList = opsForValue.multiGet(viewNumKeys); - for (ComActDiscussVO discussVO : records) { - try { - discussVO.setViewsNum(Integer.parseInt(viewNumList.get(0))); - viewNumList.remove(0); - } catch (IndexOutOfBoundsException e) { - //数据存在异常了,跳过,继续执行正确的 - continue; - } - } } return R.ok(iPage); } @@ -687,11 +713,13 @@ */ private void checkDiscussStatusIsCorrect(ComActDiscussVO comActDiscussVO) { //判断discuss状态是否正确 - boolean isIncorrectStatus = comActDiscussVO.getEndTime().before(new Date()) && - (comActDiscussVO.getStatus().intValue() == 1 || comActDiscussVO.getStatus().intValue() == 2); - if (isIncorrectStatus) { - comActDiscussVO.setStatus(3); - comActDiscussDAO.updateStatusById(comActDiscussVO.getId(), 3); + if(comActDiscussVO.getEndTime() != null){ + boolean isIncorrectStatus = comActDiscussVO.getEndTime().before(new Date()) && + (comActDiscussVO.getStatus().intValue() == 1 || comActDiscussVO.getStatus().intValue() == 2); + if (isIncorrectStatus) { + comActDiscussVO.setStatus(3); + comActDiscussDAO.updateStatusById(comActDiscussVO.getId(), 3); + } } } @@ -904,9 +932,11 @@ comActDiscussVO.setHaveVote(comActDiscussVO1.getHaveVote()); } String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString()); - ValueOperations opsForValue = stringRedisTemplate.opsForValue(); - int viewNum = Integer.parseInt((String) opsForValue.get(viewNumKey)); - comActDiscussVO.setViewsNum(viewNum); + if (stringRedisTemplate.hasKey(viewNumKey)) { + ValueOperations opsForValue = stringRedisTemplate.opsForValue(); + int viewNum = Integer.parseInt((String) opsForValue.get(viewNumKey)); + comActDiscussVO.setViewsNum(viewNum); + } return R.ok(comActDiscussVO); } @@ -933,14 +963,14 @@ /** * 议事投票-投票 * - * @param comActDiscussOptionUserDTO 投票信息 + * @param discussVoteOptionDTO 投票信息 * @return 投票结果 */ @Override - public R addDiscussOptionUser(ComActDiscussOptionUserDTO comActDiscussOptionUserDTO) { - List<Long> discussOptionIds = comActDiscussOptionUserDTO.getDiscussOptionIds(); - Long discussOptionId = discussOptionIds.get(0); - Long userId = comActDiscussOptionUserDTO.getUserId(); + public R addDiscussOptionUser(DiscussVoteOptionDTO discussVoteOptionDTO) { + List<ComActDiscussVoteOptionDTO> options = discussVoteOptionDTO.getOptions(); + Long discussOptionId = options.get(0).getId(); + Long userId = discussVoteOptionDTO.getUserId(); ComActDiscussOptionDO comActDiscussOptionDO = comActDiscussOptionDAO.selectById(discussOptionId); if (ObjectUtils.isEmpty(comActDiscussOptionDO)) { return R.fail("选项不存在"); @@ -957,7 +987,7 @@ } boolean isRepeat = comActDiscussDO.getIsRepeat().intValue() == 1; int usableVoteVotes = comActDiscussDO.getCount().intValue(); - int currentVoteNum = discussOptionIds.size(); + int currentVoteNum = options.size(); if (isRepeat) { //可重复投票 int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(discussId, userId); @@ -974,18 +1004,16 @@ } } List<ComActDiscussOptionUserDO> comActDiscussOptionUserDOList = new ArrayList<>(); - discussOptionIds.forEach(optionId -> { + options.forEach(option -> { ComActDiscussOptionUserDO comActDiscussOptionUserDO = new ComActDiscussOptionUserDO(); comActDiscussOptionUserDO.setUserId(userId); - comActDiscussOptionUserDO.setDiscussOptionId(optionId); + comActDiscussOptionUserDO.setDiscussOptionId(option.getId()); comActDiscussOptionUserDO.setDiscussId(discussId); - comActDiscussOptionUserDOList.add(comActDiscussOptionUserDO); + comActDiscussOptionUserDO.setSignUrl(option.getSignUrl()); + comActDiscussOptionUserDO.setReason(option.getReason()); + comActDiscussOptionUserDAO.insert(comActDiscussOptionUserDO); }); - int result = comActDiscussOptionUserDAO.batchInsert(comActDiscussOptionUserDOList); - if (result > 0) { - return R.ok(); - } - return R.fail(); + return R.ok(); } /** @@ -1140,7 +1168,9 @@ @Override public R discussJurisdictionGet(Long communityId, Long userId) { List<SysConfDO> confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>() - .eq(SysConfDO::getCommunityId, communityId).orderByDesc(SysConfDO::getCreateAt)); + .eq(SysConfDO::getCommunityId, communityId) + .eq(SysConfDO::getCode,Constants.DISCUSS_IDENTITY_KEY + communityId) + .orderByDesc(SysConfDO::getCreateAt)); if (confDOList == null || confDOList.size() == 0) { SysConfDO sysConfDO = new SysConfDO(); sysConfDO.setCode(Constants.DISCUSS_IDENTITY_KEY + communityId); @@ -1283,6 +1313,29 @@ } /** + * 投票情况-分页查询 + * @param pageVoteSituationDTO + * @return + */ + @Override + public R pageVoteSituation(PageVoteSituationDTO pageVoteSituationDTO) { + Page page = new Page<>(); + page.setCurrent(pageVoteSituationDTO.getPageNum()); + page.setSize(pageVoteSituationDTO.getPageSize()); + return R.ok(comActDiscussOptionUserDAO.pageVoteSituation(page, pageVoteSituationDTO)); + } + + /** + * 投票情况详情 + * @param optionUserId + * @return + */ + @Override + public R detailVoteSituation(Long optionUserId) { + return R.ok(comActDiscussOptionUserDAO.detailVoteSituation(optionUserId)); + } + + /** * 将redis中浏览量写入表中 * @return 执行结果 */ @@ -1296,8 +1349,14 @@ //组装viewNum key List<String> viewNumKeys = new ArrayList<>(); Iterator<String> iterator = needWriteDiscussIdSet.iterator(); + List<String> idList = new ArrayList<>(); while (iterator.hasNext()) { - viewNumKeys.add(String.join("_", DISCUSS_VIEW_NUM_PREFIX, iterator.next())); + String next = iterator.next(); + String key = String.join("_", DISCUSS_VIEW_NUM_PREFIX, next); + if (stringRedisTemplate.hasKey(key)) { + idList.add(next); + viewNumKeys.add(key); + } } ValueOperations opsForValue = stringRedisTemplate.opsForValue(); @@ -1305,13 +1364,18 @@ //待处理集合,以key-value/discussId-viewNum 存放 HashMap<Long, Integer> needDealMap = new HashMap<>(); - for (String discussId : needWriteDiscussIdSet) { - try { - needDealMap.put(Long.parseLong(discussId), Integer.parseInt(viewNumList.get(0))); - viewNumList.remove(0); - } catch (IndexOutOfBoundsException e) { - //数据存在异常了,跳过,继续执行正确的 - continue; + if (nonNull(idList) && !idList.isEmpty()) { + log.error("一起议id列表:" + idList.toString()); + log.error("一起议浏览量:" + viewNumList.toString()); + for (String discussId : idList) { + try { + needDealMap.put(Long.parseLong(discussId), Integer.parseInt(viewNumList.get(0))); + viewNumList.remove(0); + } catch (IndexOutOfBoundsException e) { + log.error("数据异常:" + discussId, e.getMessage()); + //数据存在异常了,跳过,继续执行正确的 + continue; + } } } int result = comActDiscussDAO.batchUpdateViewNum(needDealMap); -- Gitblit v1.7.1