using AutoMapper;
using HuanMeng.DotNetCore.Base;
using HuanMeng.MiaoYu.Code.Users;
using HuanMeng.MiaoYu.Model.Dto.Character;
using HuanMeng.MiaoYu.Model.Dto.Chat;
using HuanMeng.MiaoYu.Model.EnumModel.User;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HuanMeng.MiaoYu.Code.Character
{
///
/// 角色信息类
///
public class CharacterBLL : MiaoYuBase
{
public CharacterBLL(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
///
/// 首页-获取角色列表
///
///
public async Task>> GetHomeCharacter(RequestCharacterInfoPage requestCharacterInfo)
{
var index = requestCharacterInfo.Index ?? 0;
var size = requestCharacterInfo.Size ?? 10;
var charactersList = MiaoYuCache.CharacterList.OrderByDescending(it => it.LookCount)
.Skip((index - 1) * size).Take(size).ToList();
if (charactersList.Count == 0)
{
return new BaseResponse>();
}
var list = Mapper.Map>(charactersList);
//不是游客
if (_UserId != 0)
{
List characterIds = list.Select(it => it.CharacterId).ToList();
//获取亲密值
var intimacys = await Dao.daoDbMiaoYu.context.T_Character_User_Intimacy.Where(it => it.UserId == _UserId
&& characterIds.Contains(it.CharacterId)).ToListAsync();
list.ForEach(it =>
{
it.Intimacy = intimacys.FirstOrDefault(item => item.CharacterId == it.CharacterId)?.IntimacyValue ?? 0;
});
}
return new BaseResponse>(ResonseCode.Success, "", list);
}
///
/// 首页-获取角色详情
///
///
///
public async Task> GetCharacterInfo(RequestCharacterInfo requestCharacterInfo)
{
_Logger.LogInformation("测试");
var charactersinfo = MiaoYuCache.CharacterList.FirstOrDefault(it => it.Id == requestCharacterInfo.CharacterId);
if (charactersinfo == null)
{
return new BaseResponse();
}
var info = Mapper.Map(charactersinfo);
info.MemoryCardState = false;
//不是游客
if (_UserId != 0)
{
//获取亲密值
var intimacys = await Dao.daoDbMiaoYu.context.T_Character_User_Intimacy.Where(it => it.UserId == _UserId
&& it.CharacterId == info.CharacterId).FirstOrDefaultAsync();
info.Intimacy = intimacys?.IntimacyValue ?? 0;
UserInfoBLL userInfoBLL = new UserInfoBLL(Dao, _UserId);
(var maxtoken, var memoryCardState) = userInfoBLL.GetMemoryCardMaxToken(requestCharacterInfo.CharacterId);
info.MemoryCardState = memoryCardState;
}
return new BaseResponse(ResonseCode.Success, "", info);
}
///
/// 首页-获取全部角色的Id
///
///
public BaseResponse> GetCharacters()
{
Random rng = new Random();
var charactersIds = MiaoYuCache.CharacterList.Select(it => new CharacterIdModel { CharacterId = it.Id }).OrderBy(x => rng.Next()).ToList();
if (charactersIds == null)
{
charactersIds = new List();
}
return new BaseResponse>(ResonseCode.Success, "", charactersIds);
}
}
}