|
|
@ -17,6 +17,7 @@ |
|
|
|
|
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
|
|
@ -26,13 +27,19 @@ import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.constant.FieldConstant; |
|
|
|
import com.epmet.constant.IssueConstant; |
|
|
|
import com.epmet.dao.IssueDao; |
|
|
|
import com.epmet.dao.IssueVoteDetailDao; |
|
|
|
import com.epmet.dto.IssueDTO; |
|
|
|
import com.epmet.dto.IssueVoteDetailDTO; |
|
|
|
import com.epmet.dto.form.CheckVoteFormDTO; |
|
|
|
import com.epmet.dto.form.VoteFormDTO; |
|
|
|
import com.epmet.dto.form.*; |
|
|
|
import com.epmet.dto.result.CheckTopicPublisherResultDTO; |
|
|
|
import com.epmet.dto.result.JoinVoteResultDTO; |
|
|
|
import com.epmet.dto.result.ShouldVoteCountResultDTO; |
|
|
|
import com.epmet.entity.IssueVoteDetailEntity; |
|
|
|
import com.epmet.feign.ResiGroupFeignClient; |
|
|
|
import com.epmet.redis.IssueVoteDetailRedis; |
|
|
|
import com.epmet.service.IssueService; |
|
|
|
import com.epmet.service.IssueVoteDetailService; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
@ -55,6 +62,12 @@ public class IssueVoteDetailServiceImpl extends BaseServiceImpl<IssueVoteDetailD |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IssueVoteDetailRedis issueVoteDetailRedis; |
|
|
|
@Autowired |
|
|
|
private ResiGroupFeignClient resiGroupFeignClient; |
|
|
|
@Autowired |
|
|
|
private IssueService issueService; |
|
|
|
@Autowired |
|
|
|
private IssueDao issueDao; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData<IssueVoteDetailDTO> page(Map<String, Object> params) { |
|
|
@ -118,6 +131,25 @@ public class IssueVoteDetailServiceImpl extends BaseServiceImpl<IssueVoteDetailD |
|
|
|
public void vote(VoteFormDTO formDTO) { |
|
|
|
IssueVoteDetailEntity entity = new IssueVoteDetailEntity(); |
|
|
|
BeanUtils.copyProperties(formDTO,entity); |
|
|
|
VoteRedisFormDTO redisData = issueVoteDetailRedis.get(formDTO.getIssueId()); |
|
|
|
if (redisData==null){ |
|
|
|
VoteRedisFormDTO voteRedisFormDTO = new VoteRedisFormDTO(); |
|
|
|
voteRedisFormDTO.setIssueId(formDTO.getIssueId()); |
|
|
|
issueVoteDetailRedis.set(voteRedisFormDTO); |
|
|
|
redisData = issueVoteDetailRedis.get(formDTO.getIssueId()); |
|
|
|
} |
|
|
|
redisData.setIssueId(formDTO.getIssueId()); |
|
|
|
if (formDTO.getAttitude().equals(IssueConstant.SUPPORT)){ |
|
|
|
redisData.setSupportAmount(redisData.getSupportAmount()+1); |
|
|
|
}else { |
|
|
|
redisData.setOppositionAmount(redisData.getOppositionAmount()+1); |
|
|
|
} |
|
|
|
IssueDTO issueDTO = issueService.get(formDTO.getIssueId()); |
|
|
|
ShouldVoteCountFormDTO shouldVoteCount = new ShouldVoteCountFormDTO(); |
|
|
|
shouldVoteCount.setGridId(issueDTO.getGridId()); |
|
|
|
ShouldVoteCountResultDTO data = resiGroupFeignClient.shouldVoteCount(shouldVoteCount).getData(); |
|
|
|
redisData.setShouldVoteCount(data.getShouldVoteCount()); |
|
|
|
issueVoteDetailRedis.set(redisData); |
|
|
|
Integer checkoutVoteCount = baseDao.checkoutVote(formDTO); |
|
|
|
if (checkoutVoteCount==0){ |
|
|
|
baseDao.insert(entity); |
|
|
@ -137,8 +169,17 @@ public class IssueVoteDetailServiceImpl extends BaseServiceImpl<IssueVoteDetailD |
|
|
|
VoteFormDTO formDTO = new VoteFormDTO(); |
|
|
|
formDTO.setIssueId(checkVoteFormDTO.getIssueId()); |
|
|
|
formDTO.setCreatedBy(checkVoteFormDTO.getUserId()); |
|
|
|
//校验本人是不是 议题发表人
|
|
|
|
Integer issuePublisher = issueDao.checkIssuePublisher(formDTO); |
|
|
|
//校验本人是不是 话题发起人
|
|
|
|
IssueDTO issueDTO = issueService.get(checkVoteFormDTO.getIssueId()); |
|
|
|
CheckTopicPublisherFormDTO checkTopicPublisher = new CheckTopicPublisherFormDTO(); |
|
|
|
checkTopicPublisher.setCreatedBy(checkVoteFormDTO.getUserId()); |
|
|
|
checkTopicPublisher.setTopicId(issueDTO.getSourceId()); |
|
|
|
CheckTopicPublisherResultDTO publisherResult = resiGroupFeignClient.checkTopicPublisher(checkTopicPublisher).getData(); |
|
|
|
//校验是否投过票
|
|
|
|
Integer checkoutVoteCount = baseDao.checkoutVote(formDTO); |
|
|
|
if (checkoutVoteCount > NumConstant.ZERO){ |
|
|
|
if (checkoutVoteCount > NumConstant.ZERO || issuePublisher > NumConstant.ZERO || publisherResult.getCheckTopicPublisher() > NumConstant.ZERO){ |
|
|
|
resultDTO.setJoinVote(true); |
|
|
|
}else { |
|
|
|
resultDTO.setJoinVote(false); |
|
|
|