使用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();
}
}
无论是点赞,收藏、关注都可以参考下这种方法来实现,要是业务比较复杂的话,那就另想办法了哈。
有问题请留言,有错误请指出哈。