表結構如下
文章表
點贊記錄表
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(); } }
無論是點贊,收藏、關注都可以參考下這種方法來實現,要是業務比較復雜的話,那就另想辦法了哈。
有問題請留言,有錯誤請指出哈。