投票添加限制

上级 023fe1ec
流水线 #8282 已通过 于阶段
in 2 分 45 秒
...@@ -109,6 +109,7 @@ public class RedisConstant { ...@@ -109,6 +109,7 @@ public class RedisConstant {
public final static String UAV_DUMMY_DATA="UAV_DUMMY_DATA_KEY"; public final static String UAV_DUMMY_DATA="UAV_DUMMY_DATA_KEY";
public final static String VOTE = "VOTE";
/** /**
* tagInfoAllot表的缓存key * tagInfoAllot表的缓存key
*/ */
......
...@@ -91,6 +91,8 @@ public class ForumDynamicDO extends BaseDO implements Serializable { ...@@ -91,6 +91,8 @@ public class ForumDynamicDO extends BaseDO implements Serializable {
@ApiModelProperty("") @ApiModelProperty("")
private Integer transpond; private Integer transpond;
@ApiModelProperty("话题id")
private Integer gambitId;
public ForumDynamicDO(DynamicVO dynamicVO) { public ForumDynamicDO(DynamicVO dynamicVO) {
this.gambitIcon=dynamicVO.getGambitIcon(); this.gambitIcon=dynamicVO.getGambitIcon();
this.gambitCover=dynamicVO.getGambitCover(); this.gambitCover=dynamicVO.getGambitCover();
......
...@@ -10,8 +10,10 @@ import java.util.stream.Collectors; ...@@ -10,8 +10,10 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.mmc.csf.common.util.redis.RedisConstant;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -67,6 +69,9 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -67,6 +69,9 @@ public class DynamicServiceImpl implements DynamicService {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${iuav.userapp.url}") @Value("${iuav.userapp.url}")
private String userApp; private String userApp;
...@@ -170,12 +175,19 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -170,12 +175,19 @@ public class DynamicServiceImpl implements DynamicService {
public ResultBody likeDynamic(Integer userId, Integer dynamicId) { public ResultBody likeDynamic(Integer userId, Integer dynamicId) {
// 获取动态信息 // 获取动态信息
ForumDynamicDO forumDynamicDO = dynamicDao.getDynamicInfo(dynamicId); ForumDynamicDO forumDynamicDO = dynamicDao.getDynamicInfo(dynamicId);
Integer gambitId = forumDynamicDO.getGambitId();
if (!likeDAO.isLiked(userId, dynamicId)) { if (!likeDAO.isLiked(userId, dynamicId)) {
if(!isVoted(gambitId, userId)){
return ResultBody.error("投票已经上上限");
}
likeDAO.insertLike(userId, dynamicId); likeDAO.insertLike(userId, dynamicId);
dynamicDao.updateDynamicLikeCount(dynamicId, forumDynamicDO.getVersion()); dynamicDao.updateDynamicLikeCount(dynamicId, forumDynamicDO.getVersion());
dynamicDao.forumCount(forumDynamicDO.getUserAccountId()); dynamicDao.forumCount(forumDynamicDO.getUserAccountId());
//评论 //评论
} else { } else {
if(gambitId == 101 || gambitId == 1001 || gambitId == 103){
return ResultBody.error("不能重复投票");
}
likeDAO.deleteLike(userId, dynamicId); likeDAO.deleteLike(userId, dynamicId);
dynamicDao.updateSubDynamicLikeCount(dynamicId, forumDynamicDO.getVersion()); dynamicDao.updateSubDynamicLikeCount(dynamicId, forumDynamicDO.getVersion());
dynamicDao.forumCountNO(forumDynamicDO.getUserAccountId()); dynamicDao.forumCountNO(forumDynamicDO.getUserAccountId());
...@@ -183,6 +195,25 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -183,6 +195,25 @@ public class DynamicServiceImpl implements DynamicService {
return ResultBody.success(); return ResultBody.success();
} }
private boolean isVoted(Integer gambitId, Integer userAccountId) {
if (gambitId == 101 || gambitId == 1001 || gambitId == 103) {
boolean keyExists = stringRedisTemplate.hasKey(RedisConstant.VOTE + gambitId + userAccountId);
if(keyExists){
String voteStr = stringRedisTemplate.opsForValue().get(RedisConstant.VOTE + gambitId +userAccountId);
int voteCount = Integer.parseInt(voteStr);
if(voteCount >= 5){
return false;
}
stringRedisTemplate.opsForValue().set(RedisConstant.VOTE + gambitId + userAccountId, String.valueOf(voteCount+1));
return true;
}
stringRedisTemplate.opsForValue().set(RedisConstant.VOTE + gambitId + userAccountId, "1");
return true;
}
return true;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId, HttpServletRequest request) { public ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId, HttpServletRequest request) {
......
...@@ -371,9 +371,9 @@ ...@@ -371,9 +371,9 @@
</where> </where>
</delete> </delete>
<select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO"> <select id="getDynamicInfo" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
select id, select fd.id,
version, version,
user_account_id, fd.user_account_id,
root_path, root_path,
description, description,
location, location,
...@@ -381,9 +381,11 @@ ...@@ -381,9 +381,11 @@
lon, lon,
likes_count, likes_count,
comments_count, comments_count,
create_time fd.create_time,
from forum_dynamic gambit_id
where id = #{dynamicId} from forum_dynamic fd
left join forum_dynamic_gambit on forum_dynamic_gambit.dynamic_id = fd.id
where fd.id = #{dynamicId}
and is_deleted = 0 and is_deleted = 0
</select> </select>
<select id="countDynamicList" resultType="java.lang.Integer"> <select id="countDynamicList" resultType="java.lang.Integer">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论