fix: 修复审计日志判断当前用户为空的问题

This commit is contained in:
陈淳
2024-01-31 18:16:17 +08:00
parent c50f1ffcb4
commit ff19cb68b9
6 changed files with 110 additions and 7 deletions

View File

@@ -0,0 +1,58 @@
using Mapster;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Services;
using Volo.Abp.EventBus.Local;
using Yi.Framework.Bbs.Domain.Entities;
using Yi.Framework.Bbs.Domain.Shared.Caches;
using Yi.Framework.Bbs.Domain.Shared.Consts;
using Yi.Framework.Bbs.Domain.Shared.Etos;
namespace Yi.Framework.Bbs.Domain.Managers
{
public class LevelManager : DomainService
{
private BbsUserManager _bbsUserManager;
private ILocalEventBus _localEventBus;
private List<LevelCacheItem> _levelCacheItem;
public LevelManager(BbsUserManager bbsUserManager, ILocalEventBus localEventBus, IDistributedCache<List<LevelCacheItem>> levelCache)
{
_bbsUserManager = bbsUserManager;
_localEventBus = localEventBus;
_levelCacheItem = levelCache.Get(LevelConst.LevelCacheKey);
}
/// <summary>
/// 使用钱钱投喂等级
/// </summary>
/// <returns></returns>
public async Task ChangeLevelByMoneyAsync(Guid userId, int moneyNumber)
{
//通过用户id获取用户信息的经验和等级
var userInfo = await _bbsUserManager.GetBbsUserInfoAsync(userId);
//钱钱和经验的比例为11
//根据钱钱修改经验
var currentNewExperience = userInfo.Experience + moneyNumber * 1;
//修改钱钱,如果钱钱不足,直接会丢出去
await _localEventBus.PublishAsync(new MoneyChangeEventArgs { UserId = userId, Number = moneyNumber });
//更改最终的经验再变化等级
var levelList = _levelCacheItem.OrderBy(x => x.CurrentLevel).ToList();
var currentNewLevel = 0;
foreach (var level in levelList)
{
if (currentNewExperience >= level.MinExperience)
{
currentNewLevel = level.CurrentLevel;
break;
}
}
userInfo.Level = currentNewLevel;
userInfo.Experience = currentNewExperience;
await _bbsUserManager._bbsUserInfoRepository.UpdateAsync(userInfo.Adapt<BbsUserExtraInfoEntity>());
}
}
}