Files
Yi.Framework/Yi.Abp.Net8/module/digital-collectibles/Yi.Framework.DigitalCollectibles.Domain/EventHandlers/BindAccountForCollectiblesEventHandler.cs
2024-11-03 01:38:12 +08:00

93 lines
4.1 KiB
C#

using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus;
using Yi.Framework.Bbs.Domain.Shared.Etos;
using Yi.Framework.DigitalCollectibles.Domain.Entities;
using Yi.Framework.DigitalCollectibles.Domain.Entities.Record;
using Yi.Framework.DigitalCollectibles.Domain.Managers;
using Yi.Framework.DigitalCollectibles.Domain.Shared.Etos;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.DigitalCollectibles.Domain.EventHandlers;
/// <summary>
/// 临时账号绑定到正式账号,价值、积分 (累加)
/// </summary>
public class BindAccountForCollectiblesEventHandler : ILocalEventHandler<BindAccountEto>, ITransientDependency
{
private readonly InvitationCodeManager _invitationCodeManager;
private readonly ISqlSugarRepository<CollectiblesUserStoreAggregateRoot> _collectiblesUserStoreRepository;
private readonly ISqlSugarRepository<MiningPoolRecordAggregateRoot> _miningPoolRecordRepository;
private readonly ISqlSugarRepository<MarketRecordAggregateRoot> _marketRecordRepository;
private readonly ISqlSugarRepository<MarketGoodsAggregateRoot> _marketGoodsRepository;
public BindAccountForCollectiblesEventHandler(InvitationCodeManager invitationCodeManager, ISqlSugarRepository<CollectiblesUserStoreAggregateRoot> collectiblesUserStoreRepository, ISqlSugarRepository<MiningPoolRecordAggregateRoot> miningPoolRecordRepository, ISqlSugarRepository<MarketRecordAggregateRoot> marketRecordRepository, ISqlSugarRepository<MarketGoodsAggregateRoot> marketGoodsRepository)
{
_invitationCodeManager = invitationCodeManager;
_collectiblesUserStoreRepository = collectiblesUserStoreRepository;
_miningPoolRecordRepository = miningPoolRecordRepository;
_marketRecordRepository = marketRecordRepository;
_marketGoodsRepository = marketGoodsRepository;
}
public async Task HandleEventAsync(BindAccountEto eventData)
{
var oldEntity = await _invitationCodeManager.TryGetOrAddAsync(eventData.OldUserId);
var newEntity = await _invitationCodeManager.TryGetOrAddAsync(eventData.NewUserId);
newEntity.PointsNumber += oldEntity.PointsNumber;
//临时账号邀请了,老的账号没有邀请,覆盖
if (newEntity.IsInvited == false && oldEntity.IsInvited == true)
{
newEntity.IsInvited = true;
}
await _invitationCodeManager._repository.UpdateAsync(newEntity);
//藏品转移
var oldUserStore= await _collectiblesUserStoreRepository.GetListAsync(x => x.UserId == eventData.OldUserId);
if (oldUserStore.Count>0)
{
oldUserStore?.ForEach(x=>x.UserId=eventData.NewUserId);
await _collectiblesUserStoreRepository.UpdateRangeAsync(oldUserStore);
}
//挖矿记录转移
var miningPoolRecord= await _miningPoolRecordRepository.GetListAsync(x => x.UserId == eventData.OldUserId);
if (miningPoolRecord.Count>0)
{
miningPoolRecord?.ForEach(x=>x.UserId=eventData.NewUserId);
await _miningPoolRecordRepository.UpdateRangeAsync(miningPoolRecord);
}
//交易记录转移
var marketRecord= await _marketRecordRepository.GetListAsync(x => x.SellUserId == eventData.OldUserId||x.BuyId==eventData.OldUserId);
if (marketRecord.Count>0)
{
marketRecord?.ForEach(x =>
{
if (x.SellUserId == eventData.OldUserId)
{
x.SellUserId = eventData.NewUserId;
}
if (x.BuyId == eventData.OldUserId)
{
x.BuyId = eventData.NewUserId;
}
});
await _marketRecordRepository.UpdateRangeAsync(marketRecord);
}
//商城物品交易转移
var marketGoods= await _marketGoodsRepository.GetListAsync(x => x.SellUserId == eventData.OldUserId);
if (marketGoods.Count>0)
{
marketGoods?.ForEach(x=>x.SellUserId=eventData.NewUserId);
await _marketGoodsRepository.UpdateRangeAsync(marketGoods);
}
}
}