点赞功能在我们日常的软件使用中用的非常多,我们每个人只能为某个评论点赞一次,再点击时就会取消点赞,点赞数也就会随之减一。
//先获取用户的idUserDTO user = UserHolder.getUser();Long userId = user.getId();//获取Blog的idLong id = blog.getId();//判断用户是否点过赞String key = "Blog:liked:"+id;Boolean Liked = stringRedisTemplate.opsForSet().isMember(key, userId);//此时表示已经点过赞blog.setIsLiked(BooleanUtil.isTrue(Liked));
@Resourceprivate StringRedisTemplate stringRedisTemplate;@Overridepublic Result liked(Long id) {//先获取用户的idUserDTO user = UserHolder.getUser();Long userId = user.getId();//判断用户是否点过赞String key = "Blog:liked:"+id;Boolean isLiked = stringRedisTemplate.opsForSet().isMember(key, userId);if(BooleanUtil.isFalse(isLiked)){//如果未点赞可以点赞boolean isSuccess = update().setSql("liked = liked +1").eq("id", id).update();if(isSuccess){//成功,将用户加入redisstringRedisTemplate.opsForSet().add(key,userId.toString());}
: (2)点过赞如果还要点赞,就让点赞数减一,并且将Redis中对应的用户信息进行清除。
else{//已点赞就取消之前的点赞boolean isSuccess = update().setSql("liked = liked -1").eq("id", id).update();if (isSuccess) {stringRedisTemplate.opsForSet().remove(key,userId.toString());}}return Result.ok();}
上一篇:如何安装nvcc?