From 7d0310cafba32916c055ac0d04fef6b6c02c6eb7 Mon Sep 17 00:00:00 2001
From: 张天森 <1292933220@qq.com>
Date: 星期二, 11 十月 2022 11:27:33 +0800
Subject: [PATCH] update
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java | 135 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 102 insertions(+), 33 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 8db80c5..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,6 +623,12 @@
}
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)) {
@@ -678,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);
+ }
}
}
@@ -926,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("选项不存在");
@@ -950,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);
@@ -967,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();
}
/**
@@ -1278,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 执行结果
*/
@@ -1291,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();
@@ -1300,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