From 9f8fe1711bb1138903b59bf0140a338725315266 Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期一, 17 一月 2022 17:21:48 +0800
Subject: [PATCH] Merge branch 'test'
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java | 145 +++++++++++++++++++++++++++++++++---------------
1 files changed, 99 insertions(+), 46 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 f7316ca..dee86d2 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
@@ -18,13 +18,6 @@
import javax.annotation.Resource;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.panzhihua.common.constants.Constants;
-import com.panzhihua.common.exceptions.ServiceException;
-import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO;
-import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO;
-import com.panzhihua.common.model.vos.community.*;
-import com.panzhihua.common.utlis.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.connection.StringRedisConnection;
import org.springframework.data.redis.core.RedisCallback;
@@ -36,10 +29,13 @@
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.constants.Constants;
+import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.community.ComActDiscussCommentDTO;
import com.panzhihua.common.model.dtos.community.ComActDiscussCommentUserDTO;
import com.panzhihua.common.model.dtos.community.ComActDiscussDTO;
@@ -49,6 +45,8 @@
import com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO;
import com.panzhihua.common.model.dtos.community.PageComActDiscussDTO;
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO;
+import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO;
+import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActDiscussCommentVO;
@@ -56,6 +54,7 @@
import com.panzhihua.common.model.vos.community.ComActDiscussOptionVO;
import com.panzhihua.common.model.vos.community.ComActDiscussVO;
import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.SysConfVO;
import com.panzhihua.common.model.vos.community.screen.work.DiscussListVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.DateUtils;
@@ -65,12 +64,14 @@
import com.panzhihua.service_community.dao.ComActDiscussOptionDAO;
import com.panzhihua.service_community.dao.ComActDiscussOptionUserDAO;
import com.panzhihua.service_community.dao.ComActDiscussUserDAO;
+import com.panzhihua.service_community.dao.SysConfMapper;
import com.panzhihua.service_community.model.dos.ComActDiscussCommentDO;
import com.panzhihua.service_community.model.dos.ComActDiscussCommentUserDO;
import com.panzhihua.service_community.model.dos.ComActDiscussDO;
import com.panzhihua.service_community.model.dos.ComActDiscussOptionDO;
import com.panzhihua.service_community.model.dos.ComActDiscussOptionUserDO;
import com.panzhihua.service_community.model.dos.ComActDiscussUserDO;
+import com.panzhihua.service_community.model.dos.SysConfDO;
import com.panzhihua.service_community.service.ComActDiscussOptionService;
import com.panzhihua.service_community.service.ComActDiscussService;
import com.panzhihua.service_community.service.SysConfService;
@@ -187,26 +188,30 @@
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;
+ } else {
+ if (!sysAllowedRoles.contains("1")) {
+ boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role));
+ if (!result) {
+ checkResult = false;
+ }
+ }
+ }
}
}
return checkResult;
@@ -249,7 +254,7 @@
} else {
comActDiscussDO.setStatus(ComActDiscussDO.status.yfb);
}
- comActDiscussDO.setUpdateAt(new Date());
+ comActDiscussDO.setUpdateAt(nowDate);
int insert = comActDiscussDAO.updateById(comActDiscussDO);
if (insert > 0) {
//如果是投票,需要把投票的选项存储
@@ -458,6 +463,7 @@
LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(comActDiscussCommentDO.getUserId());
comActDiscussCommentVO.setUserName(loginUserInfoVO.getName());
comActDiscussCommentVO.setPhone(loginUserInfoVO.getPhone());
+ comActDiscussCommentVO.setImageUrl(loginUserInfoVO.getImageUrl());
//查询该评论下所有回复内容
IPage<ComActDiscussCommentVO> discussCommentList = comActDiscussCommentDAO.getDiscussCommentList(new Page(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO.getId());
@@ -597,10 +603,16 @@
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 =
@@ -614,6 +626,7 @@
// 判断选项是否已投票
int haveVote =
comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId);
+ votes.add(haveVote);
comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0);
}
comActDiscussOptionVOS.add(comActDiscussOptionVO);
@@ -621,6 +634,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());
@@ -654,11 +681,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);
+ }
}
}
@@ -870,7 +899,12 @@
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);
}
@@ -902,7 +936,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)) {
@@ -920,27 +955,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();
@@ -1098,7 +1138,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);
@@ -1222,6 +1264,7 @@
return R.fail("只能公布或编辑自己发布的主题!");
}
comActDiscussDO.setPublishResult(comActDiscussDTO.getPublishResult());
+ comActDiscussDO.setStatus(4);
int result = comActDiscussDAO.updateById(comActDiscussDO);
if (result > 0) {
return R.ok();
@@ -1230,6 +1273,16 @@
}
/**
+ * 一起议获取是否有发布权
+ * @param comActDiscussDTO
+ * @return
+ */
+ @Override
+ public R getDiscussPermissions(ComActDiscussDTO comActDiscussDTO) {
+ return R.ok(checkCurrentUserDiscussIdentity(comActDiscussDTO));
+ }
+
+ /**
* 将redis中浏览量写入表中
* @return 执行结果
*/
--
Gitblit v1.7.1