社区板块添加点赞功能

This commit is contained in:
橙子
2022-11-29 23:03:10 +08:00
parent 9a34e63d5f
commit a2ca897fca
11 changed files with 133 additions and 84 deletions

View File

@@ -23,11 +23,11 @@ namespace Yi.Framework.ApiMicroservice.Controllers
public class AgreeController : ControllerBase
{
[Autowired]
public IAgreeService _iAgreeService { get; set; }
public IAgreeService? _iAgreeService { get; set; }
[Autowired]
public IArticleService _iArticleService { get; set; }
public IArticleService? _iArticleService { get; set; }
[Autowired]
public ILogger<AgreeEntity> _logger { get; set; }
public ILogger<AgreeEntity>? _logger { get; set; }
/// <summary>
/// 点赞操作
@@ -37,30 +37,16 @@ namespace Yi.Framework.ApiMicroservice.Controllers
[HttpGet]
public async Task<Result> Operate(long articleId)
{
//long userId = HttpContext.GetUserIdInfo();
long userId = 1L;
var article = await _iArticleService._repository.GetByIdAsync(articleId);
if (await _iAgreeService._repository.IsAnyAsync(u => u.UserId == userId && u.ArticleId == articleId))
long userId = HttpContext.GetUserIdInfo();
if (await _iAgreeService!.OperateAsync(articleId, userId))
{
//已点赞,取消点赞
await _iAgreeService._repository.UseTranAsync(async () =>
{
await _iAgreeService._repository.DeleteAsync(u => u.UserId == userId && u.ArticleId == articleId);
await _iArticleService._repository.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum - 1 });
});
return Result.Success("点赞成功");
}
else
{
//未点赞,添加点赞记录
await _iAgreeService._repository.UseTranAsync(async () =>
{
await _iAgreeService._repository.InsertAsync(new AgreeEntity { UserId = userId, ArticleId = articleId });
await _iArticleService._repository.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum + 1 });
});
return Result.Success("已点赞,取消点赞").StatusFalse();
}
return Result.Success("这里业务全部拆开放service层去");
}
}
}

View File

@@ -33,6 +33,7 @@ namespace Yi.Framework.DTOModel.Vo
public string Remark { get; set; }
public List<string> Images { get; set; }
public int? AgreeNum { get; set; }
public UserVo User { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Interface
{
public partial interface IAgreeService : IBaseService<AgreeEntity>
{
Task<bool> OperateAsync(long articleId, long userId);
}
}

View File

@@ -1,9 +1,10 @@
using Yi.Framework.Model.Models;
using System.Threading.Tasks;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Interface
{
public partial interface IAgreeService:IBaseService<AgreeEntity>
{
public partial interface IAgreeService : IBaseService<AgreeEntity>
{
}
}

View File

@@ -14,6 +14,7 @@ namespace Yi.Framework.Model.Models
public ArticleEntity()
{
this.CreateTime = DateTime.Now;
this.AgreeNum = 0;
}
[JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )]
@@ -22,12 +23,12 @@ namespace Yi.Framework.Model.Models
/// 文章标题
///</summary>
[SugarColumn(ColumnName="Title" )]
public string Title { get; set; }
public string? Title { get; set; }
/// <summary>
/// 文章内容
///</summary>
[SugarColumn(ColumnName="Content" )]
public string Content { get; set; }
public string? Content { get; set; }
/// <summary>
/// 用户id
///</summary>
@@ -72,16 +73,16 @@ namespace Yi.Framework.Model.Models
/// 描述
///</summary>
[SugarColumn(ColumnName="Remark" )]
public string Remark { get; set; }
public string? Remark { get; set; }
/// <summary>
/// 图片列表
///</summary>
[SugarColumn(ColumnName="Images" )]
public string Images { get; set; }
[SugarColumn(ColumnName = "Images", IsJson = true)]
public List<string>? Images { get; set; }
/// <summary>
/// 点赞数量
///</summary>
[SugarColumn(ColumnName="AgreeNum" )]
public int? AgreeNum { get; set; }
public int AgreeNum { get; set; }
}
}

View File

@@ -0,0 +1,42 @@
using SqlSugar;
using System.Threading.Tasks;
using Yi.Framework.Interface;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Service
{
public partial class AgreeService : BaseService<AgreeEntity>, IAgreeService
{
/// <summary>
/// 点赞操作
/// </summary>
/// <returns></returns>
public async Task<bool> OperateAsync(long articleId, long userId)
{
var _articleRepositoty = _repository.ChangeRepository<Repository<ArticleEntity>>();
var article = await _articleRepositoty.GetByIdAsync(articleId);
if (await _repository.IsAnyAsync(u => u.UserId == userId && u.ArticleId == articleId))
{
//已点赞,取消点赞
await _repository.UseTranAsync(async () =>
{
await _repository.DeleteAsync(u => u.UserId == userId && u.ArticleId == articleId);
await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum - 1 });
});
return false;
}
else
{
//未点赞,添加点赞记录
await _repository.UseTranAsync(async () =>
{
await _repository.InsertReturnSnowflakeIdAsync(new AgreeEntity { UserId = userId, ArticleId = articleId });
await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum + 1 });
});
return true;
}
}
}
}