using Microsoft.AspNetCore.Authorization; using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Uow; using Volo.Abp.Users; using Yi.Framework.Bbs.Application.Contracts.Dtos.Argee; using Yi.Framework.Bbs.Domain.Entities.Forum; using Yi.Framework.Bbs.Domain.Managers; using Yi.Framework.SqlSugarCore.Abstractions; namespace Yi.Framework.Bbs.Application.Services.Forum { /// /// 点赞功能 /// public class AgreeService : ApplicationService, IApplicationService { public AgreeService(ISqlSugarRepository repository, ISqlSugarRepository discssRepository, BbsUserManager bbsUserManager) { _repository = repository; _discssRepository = discssRepository; _bbsUserManager = bbsUserManager; } private readonly BbsUserManager _bbsUserManager; private ISqlSugarRepository _repository { get; set; } private ISqlSugarRepository _discssRepository { get; set; } /// /// 点赞,返回true为点赞+1,返回false为点赞-1 /// Todo: 可放入领域层,但是没必要,这个项目太简单了 /// /// [Authorize] public async Task PostOperateAsync(Guid discussId) { await _bbsUserManager.VerifyUserLimitAsync(CurrentUser.GetId()); var entity = await _repository.GetFirstAsync(x => x.DiscussId == discussId && x.CreatorId == CurrentUser.Id); //判断是否已经点赞过 if (entity is null) { //没点赞过,添加记录即可,,修改总点赞数量 await _repository.InsertAsync(new AgreeEntity(discussId)); var discussEntity = await _discssRepository.GetByIdAsync(discussId); if (discussEntity is null) { throw new UserFriendlyException("主题为空"); } discussEntity.AgreeNum += 1; await _discssRepository.UpdateAsync(discussEntity); return new AgreeDto(true); } else { //点赞过,删除即可,修改总点赞数量 await _repository.DeleteAsync(entity); var discussEntity = await _discssRepository.GetByIdAsync(discussId); if (discussEntity is null) { throw new UserFriendlyException("主题为空"); } discussEntity.AgreeNum -= 1; await _discssRepository.UpdateAsync(discussEntity); return new AgreeDto(false); } } } }