feat: 优化首页样式

This commit is contained in:
橙子
2024-08-09 00:39:39 +08:00
parent 29f9cb6b4a
commit 07d82e508e
6 changed files with 138 additions and 62 deletions

View File

@@ -61,6 +61,12 @@ namespace Yi.Framework.Bbs.Domain.Managers
};
}
else
{
output = _currentRateStore;
}
return output;
}

View File

@@ -14,33 +14,35 @@ namespace Yi.Framework.Bbs.Domain.Managers
{
public ISqlSugarRepository<UserAggregateRoot> _userRepository;
public ISqlSugarRepository<BbsUserExtraInfoEntity> _bbsUserInfoRepository;
public Dictionary<int,LevelCacheItem> _levelCacheDic;
public Dictionary<int, LevelCacheItem> _levelCacheDic;
public BbsUserManager(ISqlSugarRepository<UserAggregateRoot> userRepository,
ISqlSugarRepository<BbsUserExtraInfoEntity> bbsUserInfoRepository,
IDistributedCache<List<LevelCacheItem>> levelCache
)
LevelManager levelManager
)
{
_userRepository = userRepository;
_bbsUserInfoRepository = bbsUserInfoRepository;
_levelCacheDic = levelCache.Get(LevelConst.LevelCacheKey).ToDictionary(x => x.CurrentLevel);
_levelCacheDic = levelManager.GetCacheMapAsync().Result;
}
public async Task<BbsUserInfoDto?> GetBbsUserInfoAsync(Guid userId)
{
var userInfo = await _userRepository._DbQueryable.LeftJoin<BbsUserExtraInfoEntity>((user, info) => user.Id == info.UserId)
.Select((user, info) => new BbsUserInfoDto
{
Id = user.Id,
Icon = user.Icon,
Level = info.Level,
UserLimit = info.UserLimit,
Money = info.Money,
Experience = info.Experience,
AgreeNumber = info.AgreeNumber,
CommentNumber = info.CommentNumber,
DiscussNumber = info.DiscussNumber
}, true)
.FirstAsync(user => user.Id == userId);
var userInfo = await _userRepository._DbQueryable
.LeftJoin<BbsUserExtraInfoEntity>((user, info) => user.Id == info.UserId)
.Select((user, info) => new BbsUserInfoDto
{
Id = user.Id,
Icon = user.Icon,
Level = info.Level,
UserLimit = info.UserLimit,
Money = info.Money,
Experience = info.Experience,
AgreeNumber = info.AgreeNumber,
CommentNumber = info.CommentNumber,
DiscussNumber = info.DiscussNumber
}, true)
.FirstAsync(user => user.Id == userId);
userInfo.LevelName = _levelCacheDic[userInfo.Level].Name;
return userInfo;
@@ -48,26 +50,25 @@ namespace Yi.Framework.Bbs.Domain.Managers
public async Task<List<BbsUserInfoDto>> GetBbsUserInfoAsync(List<Guid> userIds)
{
var userInfos= await _userRepository._DbQueryable
.Where(user => userIds.Contains(user.Id))
var userInfos = await _userRepository._DbQueryable
.Where(user => userIds.Contains(user.Id))
.LeftJoin<BbsUserExtraInfoEntity>((user, info) => user.Id == info.UserId)
.Select((user, info) => new BbsUserInfoDto
{
Id = user.Id,
Icon = user.Icon,
Level = info.Level,
UserLimit = info.UserLimit,
Money = info.Money,
Experience = info.Experience,
AgreeNumber = info.AgreeNumber,
CommentNumber = info.CommentNumber,
DiscussNumber = info.DiscussNumber
}, true)
.ToListAsync();
.Select((user, info) => new BbsUserInfoDto
{
Id = user.Id,
Icon = user.Icon,
Level = info.Level,
UserLimit = info.UserLimit,
Money = info.Money,
Experience = info.Experience,
AgreeNumber = info.AgreeNumber,
CommentNumber = info.CommentNumber,
DiscussNumber = info.DiscussNumber
}, true)
.ToListAsync();
userInfos?.ForEach(userInfo => userInfo.LevelName = _levelCacheDic[userInfo.Level].Name);
return userInfos??new List<BbsUserInfoDto>();
return userInfos ?? new List<BbsUserInfoDto>();
}
}
@@ -128,6 +129,5 @@ namespace Yi.Framework.Bbs.Domain.Managers
/// 被点赞数
/// </summary>
public int AgreeNumber { get; set; }
}
}
}

View File

@@ -1,8 +1,10 @@
using Mapster;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Domain.Services;
using Volo.Abp.EventBus.Local;
using Yi.Framework.Bbs.Domain.Entities;
using Yi.Framework.Bbs.Domain.Entities.Integral;
using Yi.Framework.Bbs.Domain.Shared.Caches;
using Yi.Framework.Bbs.Domain.Shared.Consts;
using Yi.Framework.Bbs.Domain.Shared.Etos;
@@ -11,17 +13,36 @@ 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)
private IDistributedCache<List<LevelCacheItem>> _levelCache;
private IRepository<LevelAggregateRoot> _repository;
private IRepository<BbsUserExtraInfoEntity> _bbsUserRepository;
public LevelManager( ILocalEventBus localEventBus,
IDistributedCache<List<LevelCacheItem>> levelCache, IRepository<LevelAggregateRoot> repository, IRepository<BbsUserExtraInfoEntity> bbsUserRepository)
{
_bbsUserManager = bbsUserManager;
_localEventBus = localEventBus;
_levelCacheItem = levelCache.Get(LevelConst.LevelCacheKey);
_repository = repository;
_bbsUserRepository = bbsUserRepository;
_levelCache = levelCache;
}
/// <summary>
/// 获取等级映射,所有获取等级操作通过这里操作
/// </summary>
/// <returns></returns>
public async Task<Dictionary<int, LevelCacheItem>> GetCacheMapAsync()
{
var items =await _levelCache.GetOrAddAsync(LevelConst.LevelCacheKey, async () =>
{
var cacheItem = (await _repository.GetListAsync())
.OrderByDescending(x => x.CurrentLevel).ToList()
.Adapt<List<LevelCacheItem>>();
return cacheItem;
});
return items.ToDictionary(x=>x.CurrentLevel);
}
/// <summary>
/// 使用钱钱投喂等级
/// </summary>
@@ -29,17 +50,18 @@ namespace Yi.Framework.Bbs.Domain.Managers
public async Task ChangeLevelByMoneyAsync(Guid userId, int moneyNumber)
{
//通过用户id获取用户信息的经验和等级
var userInfo = await _bbsUserManager.GetBbsUserInfoAsync(userId);
var userInfo = await _bbsUserRepository.GetAsync(x=>x.UserId==userId);
//钱钱和经验的比例为11
//根据钱钱修改经验
var currentNewExperience = userInfo.Experience + moneyNumber * 1;
//修改钱钱,如果钱钱不足,直接会丢出去
await _localEventBus.PublishAsync(new MoneyChangeEventArgs { UserId = userId, Number = -moneyNumber },false);
await _localEventBus.PublishAsync(new MoneyChangeEventArgs { UserId = userId, Number = -moneyNumber },
false);
//更改最终的经验再变化等级
var levelList = _levelCacheItem.OrderByDescending(x => x.CurrentLevel).ToList();
var levelList = (await GetCacheMapAsync()).Values;
var currentNewLevel = 1;
foreach (var level in levelList)
{
@@ -50,11 +72,9 @@ namespace Yi.Framework.Bbs.Domain.Managers
}
}
var exUserInfo = await _bbsUserManager._bbsUserInfoRepository.GetAsync(x => x.UserId == userInfo.Id);
exUserInfo.Level = currentNewLevel;
exUserInfo.Experience = currentNewExperience;
await _bbsUserManager._bbsUserInfoRepository.UpdateAsync(exUserInfo);
userInfo.Level = currentNewLevel;
userInfo.Experience = currentNewExperience;
await _bbsUserRepository.UpdateAsync(userInfo);
}
}
}
}