使用springboot整合mybatis-plus实现点赞功能

表结构如下

文章表

 

点赞记录表 

member_id  等于上面的发表人的id

whether_attention:是否点赞          0代表没点赞   代表已点赞

service

 一个用户对同一条文章只能点赞一次,第二次就是取消点赞

1.首先写个添加点赞记录接口 与 取消点赞记录接口 和 查询点赞记录的接口(根据发表人id和文章id查询)

点赞记录接口:添加的的whether_attention为1  代表已点赞

取消点赞接口:根据文章id修改whether_attention为0  代表取消点赞

这两个接口使用mybatis-pius实现的话,很简单,这里就不粘代码了哈,需要请留言就好。

查询点赞记录的接口:根据发表人id和文章id查询进行查询,查询whether_attention为1的数据,代表已点赞。

controller

@ApiOperation("文章点赞")
    @PostMapping("articleLike")
    public AjaxResult addUpdateLikeArticles(@RequestBody LikeArticles likeArticles) {
        //查询文章详情
        Articles article = articlesService.selectArticlesById(Long.valueOf(likeArticles.getArticleId()));
        if (article == null) {
            return AjaxResult.error();
        }
        try {//查询文章点赞记录  根据发表人id和文章id查询进行查询
            LikeArticles articlesLikeArticles = likeArticlesService.selectMemberByMemberId(likeArticles.getMemberId, likeArticles.getArticleId());
            //判断点赞记录是否为空,如何不为空就取消点赞 并且点赞-1;  如果为空就添加点赞进行点赞+1操作
            if (articlesLikeArticles != null) {
                //取消点赞
                Long likeCount = article.getLikeCount() - 1;
                article.setLikeCount(likeCount < 0 ? 0 : likeCount);
                articlesService.updateArticles(article);
                //取消点赞记录
                likeArticlesService.updateLikeArticles(likeArticles);
            } else {
                //添加点赞
                article.setLikeCount(article.getLikeCount() + 1);
                articlesService.updateArticles(article);
                //添加点赞记录
                likeArticlesService.saveLikeArticles(likeArticles);
            }
            return AjaxResult.success();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.error();
        }
    }

无论是点赞,收藏、关注都可以参考下这种方法来实现,要是业务比较复杂的话,那就另想办法了哈。 

有问题请留言,有错误请指出哈。

原文地址:https://www.cnblogs.com/ckfeng/p/14018725.html