Files

41 lines
1.7 KiB
C#
Raw Permalink Normal View History

using Volo.Abp;
using Volo.Abp.DependencyInjection;
2024-01-11 18:51:53 +08:00
using Volo.Abp.EventBus;
2024-11-02 15:28:45 +08:00
using Volo.Abp.EventBus.Local;
2024-01-11 18:51:53 +08:00
using Yi.Framework.Bbs.Domain.Entities;
using Yi.Framework.Bbs.Domain.Shared.Consts;
2024-11-02 15:28:45 +08:00
using Yi.Framework.Bbs.Domain.Shared.Enums;
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;
2024-11-02 15:28:45 +08:00
private ILocalEventBus _localEventBus;
public MoneyChangeEventHandler(ISqlSugarRepository<BbsUserExtraInfoEntity> userInfoRepository, ILocalEventBus localEventBus)
2024-01-11 18:51:53 +08:00
{
_userInfoRepository = userInfoRepository;
2024-11-02 15:28:45 +08:00
_localEventBus = localEventBus;
2024-01-11 18:51:53 +08:00
}
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();
2024-11-02 15:28:45 +08:00
await _localEventBus.PublishAsync(new BbsNoticeEventArgs(NoticeTypeEnum.Money, eventData.UserId,eventData.Number.ToString()), false);
2024-01-11 18:51:53 +08:00
}
}
}