public async Task <string> GetLikeHate(Guid articleId, Guid userId) { using (ILikeHateService likeHateSvc = new LikeHateService()) { var data = likeHateSvc.GetAll().Where(m => m.UserId == userId && m.ArticleId == articleId); if (await data.AnyAsync())//有存在记录 { //查询点赞了还是点踩了 var result = await data.FirstAsync(); if (result.Hate && result.Like)//两个都true错误,修改回未点赞和未点踩状态 { result.Hate = false; result.Like = false; await likeHateSvc.EditAsync(result); return("null"); } else if (result.Like)//已经点赞,不可点踩 { return("like"); } else if (result.Hate)//已经点踩,不可点赞 { return("hate"); } else//其他情况 { return("null"); } } else { //没有记录当作没点赞也没点踩 return("none"); } } }
/// <summary> /// 点赞 /// </summary> /// <param name="articleId">文章id</param> /// <param name="userId">用户id</param> /// <returns></returns> public async Task GoodCountAdd(Guid articleId, Guid userId) { int likeCount; int hateCount; using (ILikeHateService likeHateSvc = new LikeHateService()) { string result = await GetLikeHate(articleId, userId); if (result == "none")//没有创建过 { LikeHate likeHate = new LikeHate() { ArticleId = articleId, UserId = userId, Like = true, Hate = false }; await likeHateSvc.CreatAsync(likeHate); } else if (result == "null")//创建了但都为false { LikeHate likeHate = await likeHateSvc.GetAll().Where(m => m.ArticleId == articleId && m.UserId == userId && !m.Like && !m.Hate).FirstAsync(); likeHate.Like = true; await likeHateSvc.EditAsync(likeHate); } likeCount = await likeHateSvc.GetAll().Where(m => m.ArticleId == articleId && m.Like).CountAsync(); hateCount = await likeHateSvc.GetAll().Where(m => m.ArticleId == articleId && m.Hate).CountAsync(); } using (IArticleService articleSvc = new ArticleService()) { var article = await articleSvc.GetOneByIdAsync(articleId); article.BadCount = hateCount; article.GoodCount = likeCount; await articleSvc.EditAsync(article); } }