From a2c467bb344c1289c66c058bce7ef0bc6c10903e Mon Sep 17 00:00:00 2001 From: 罗元桥 <2376770955@qq.com> Date: 星期五, 17 九月 2021 18:19:09 +0800 Subject: [PATCH] Merge branch 'zzj' into 'test' --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java | 86 +++++++++++++++++++++++++++--------------- 1 files changed, 55 insertions(+), 31 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 9bdd2c7..979fe9b 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 @@ -188,26 +188,27 @@ String discussIdentityConfig = (String) sysConfValue.getData(); if (isBlank(discussIdentityConfig)) { checkResult = false; - } - List<String> currentUserRoles = new ArrayList<>(); - List<String> sysAllowedRoles = Arrays.asList(discussIdentityConfig.split(",")); - LoginUserInfoVO loginUserInfo = comActDiscussDTO.getLoginUserInfo(); - if (loginUserInfo.getIsPartymember().intValue() == 1) { - currentUserRoles.add("2"); - } - if (loginUserInfo.getIsVolunteer().intValue() == 1) { - currentUserRoles.add("3"); - } - R isTeamResult = userService.checkCurrentUserIsTeam(loginUserInfo.getPhone(), loginUserInfo.getCommunityId()); - if (R.isOk(isTeamResult) && (Boolean) isTeamResult.getData()) { - currentUserRoles.add("4"); - } - if (currentUserRoles.isEmpty()) { - checkResult = false; - } - boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role)); - if (!result) { - checkResult = false; + } else { + List<String> currentUserRoles = new ArrayList<>(); + List<String> sysAllowedRoles = Arrays.asList(discussIdentityConfig.split(",")); + LoginUserInfoVO loginUserInfo = comActDiscussDTO.getLoginUserInfo(); + if (loginUserInfo.getIsPartymember() == 1) { + currentUserRoles.add("2"); + } + if (loginUserInfo.getIsVolunteer().intValue() == 1) { + currentUserRoles.add("3"); + } + R isTeamResult = userService.checkCurrentUserIsTeam(loginUserInfo.getPhone(), loginUserInfo.getCommunityId()); + if (R.isOk(isTeamResult) && (Boolean) isTeamResult.getData()) { + currentUserRoles.add("4"); + } + if (currentUserRoles.isEmpty()) { + checkResult = false; + } + boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role)); + if (!result) { + checkResult = false; + } } } return checkResult; @@ -603,6 +604,7 @@ 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 = @@ -616,6 +618,7 @@ // 判断选项是否已投票 int haveVote = comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); + votes.add(haveVote); comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0); } comActDiscussOptionVOS.add(comActDiscussOptionVO); @@ -623,6 +626,20 @@ 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); + } + } //填充投票记录列表 List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList = comActDiscussOptionUserDAO .selectVotedRecords(comActDiscussVO.getId()); @@ -904,7 +921,8 @@ */ @Override public R addDiscussOptionUser(ComActDiscussOptionUserDTO comActDiscussOptionUserDTO) { - Long discussOptionId = comActDiscussOptionUserDTO.getDiscussOptionId(); + List<Long> discussOptionIds = comActDiscussOptionUserDTO.getDiscussOptionIds(); + Long discussOptionId = discussOptionIds.get(0); Long userId = comActDiscussOptionUserDTO.getUserId(); ComActDiscussOptionDO comActDiscussOptionDO = comActDiscussOptionDAO.selectById(discussOptionId); if (ObjectUtils.isEmpty(comActDiscussOptionDO)) { @@ -922,27 +940,32 @@ } boolean isRepeat = comActDiscussDO.getIsRepeat().intValue() == 1; int usableVoteVotes = comActDiscussDO.getCount().intValue(); + int currentVoteNum = discussOptionIds.size(); if (isRepeat) { //可重复投票 int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(discussId, userId); - if (usableVoteVotes <= votedVotesInToday) { - return R.fail("当天投票次数已用完"); + if (usableVoteVotes <= votedVotesInToday || currentVoteNum > usableVoteVotes - votedVotesInToday) { + return R.fail("票数不足"); } } else { //不可重复投票 int alreadyVotedVotes = comActDiscussOptionUserDAO.selectCount( new QueryWrapper<ComActDiscussOptionUserDO>().lambda().eq(ComActDiscussOptionUserDO::getUserId, userId) .eq(ComActDiscussOptionUserDO::getDiscussId, discussId)); - if (usableVoteVotes <= alreadyVotedVotes) { - return R.fail("投票次数已用完"); + if (usableVoteVotes <= alreadyVotedVotes || currentVoteNum > usableVoteVotes - alreadyVotedVotes) { + return R.fail("票数不足"); } } - ComActDiscussOptionUserDO comActDiscussOptionUserDO = new ComActDiscussOptionUserDO(); - comActDiscussOptionUserDO.setUserId(userId); - comActDiscussOptionUserDO.setDiscussOptionId(discussOptionId); - comActDiscussOptionUserDO.setDiscussId(discussId); - int insert = comActDiscussOptionUserDAO.insert(comActDiscussOptionUserDO); - if (insert > 0) { + List<ComActDiscussOptionUserDO> comActDiscussOptionUserDOList = new ArrayList<>(); + discussOptionIds.forEach(optionId -> { + ComActDiscussOptionUserDO comActDiscussOptionUserDO = new ComActDiscussOptionUserDO(); + comActDiscussOptionUserDO.setUserId(userId); + comActDiscussOptionUserDO.setDiscussOptionId(optionId); + comActDiscussOptionUserDO.setDiscussId(discussId); + comActDiscussOptionUserDOList.add(comActDiscussOptionUserDO); + }); + int result = comActDiscussOptionUserDAO.batchInsert(comActDiscussOptionUserDOList); + if (result > 0) { return R.ok(); } return R.fail(); @@ -1224,6 +1247,7 @@ return R.fail("只能公布或编辑自己发布的主题!"); } comActDiscussDO.setPublishResult(comActDiscussDTO.getPublishResult()); + comActDiscussDO.setStatus(4); int result = comActDiscussDAO.updateById(comActDiscussDO); if (result > 0) { return R.ok(); -- Gitblit v1.7.1