HuanMengProject/src/0-core/HuanMeng.MiaoYu.Code/Cache/Special/CharacterEntityCache.cs
2024-07-13 23:00:01 +08:00

59 lines
1.8 KiB
C#

using AutoMapper;
using HuanMeng.MiaoYu.Code.DataAccess;
using HuanMeng.MiaoYu.Model.Dto.Character;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HuanMeng.MiaoYu.Code.Cache.Special
{
/// <summary>
///
/// </summary>
/// <param name="_dao"></param>
public class CharacterEntityCache(DAO _dao, IMapper mapper) : MiaoYuDataEntityCache<CharacterCache>(_dao, CharacterCacheLock)
{
/// <summary>
/// 锁
/// </summary>
private static object CharacterCacheLock = new object();
/// <summary>
/// 获取缓存数据
/// </summary>
/// <returns></returns>
public override List<CharacterCache> GetDataList()
{
List<CharacterCache> characterCaches = null;
//读取角色表
var characters = _dao.daoDbMiaoYu.context.T_Character.ToList();
if (characters == null)
{
return new List<CharacterCache>();
}
characterCaches = mapper.Map<List<CharacterCache>>(characters);
//查询配置表
var modelConfigs = _dao.daoDbMiaoYu.context.T_Model_Config.ToList();
foreach (var characterCache in characterCaches)
{
var modelConfig = modelConfigs.FirstOrDefault(it => it.Id == characterCache.ModelConfigId);
if (modelConfig != null)
{
characterCache.ModelConfig = modelConfig;
}
}
//移除没有配置模型的类
characterCaches.Where(it => it.ModelConfig == null).ToList().ForEach(characterCache =>
{
characterCaches.Remove(characterCache);
});
return characterCaches;
}
}
}