Files
Yi.Admin/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/EventHandlers/MoneyChangeEventHandler.cs

34 lines
1.4 KiB
C#
Raw Normal View History

using Volo.Abp;
using Volo.Abp.DependencyInjection;
2024-01-11 18:51:53 +08:00
using Volo.Abp.EventBus;
using Yi.Framework.Bbs.Domain.Entities;
using Yi.Framework.Bbs.Domain.Shared.Consts;
2024-01-11 18:51:53 +08:00
using Yi.Framework.Bbs.Domain.Shared.Etos;
using Yi.Framework.SqlSugarCore.Abstractions;
2024-01-27 17:42:09 +08:00
namespace Yi.Framework.Bbs.Domain.EventHandlers
2024-01-11 18:51:53 +08:00
{
public class MoneyChangeEventHandler : ILocalEventHandler<MoneyChangeEventArgs>, ITransientDependency
{
private ISqlSugarRepository<BbsUserExtraInfoEntity> _userInfoRepository;
public MoneyChangeEventHandler(ISqlSugarRepository<BbsUserExtraInfoEntity> userInfoRepository)
{
_userInfoRepository = userInfoRepository;
}
public async Task HandleEventAsync(MoneyChangeEventArgs eventData)
{
var userIfno = await _userInfoRepository.GetFirstAsync(x => x.UserId == eventData.UserId);
//如果变化后的钱钱少于0直接丢出去
if ((userIfno.Money + eventData.Number)<0)
{
throw new UserFriendlyException(MoneyConst.Money_Low_Zero);
}
2024-01-11 18:51:53 +08:00
//原子性sql
await _userInfoRepository._Db.Updateable<BbsUserExtraInfoEntity>()
.SetColumns(it => it.Money == it.Money + eventData.Number)
.Where(x => x.UserId == eventData.UserId).ExecuteCommandAsync();
}
}
}