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); } } }