108 lines
4.1 KiB
C#
108 lines
4.1 KiB
C#
|
|
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// 角色信息类
|
|
/// </summary>
|
|
public class CharacterBLL : MiaoYuBase
|
|
{
|
|
public CharacterBLL(IServiceProvider serviceProvider) : base(serviceProvider)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 首页-获取角色列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<BaseResponse<List<CharacterInfoDto>>> 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<List<CharacterInfoDto>>();
|
|
}
|
|
var list = Mapper.Map<List<CharacterInfoDto>>(charactersList);
|
|
//不是游客
|
|
if (_UserId != 0)
|
|
{
|
|
List<int> 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<List<CharacterInfoDto>>(ResonseCode.Success, "", list);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 首页-获取角色详情
|
|
/// </summary>
|
|
/// <param name="requestCharacterInfo"></param>
|
|
/// <returns></returns>
|
|
public async Task<BaseResponse<CharacterInfoDto>> GetCharacterInfo(RequestCharacterInfo requestCharacterInfo)
|
|
{
|
|
_Logger.LogInformation("测试");
|
|
var charactersinfo = MiaoYuCache.CharacterList.FirstOrDefault(it => it.Id == requestCharacterInfo.CharacterId);
|
|
if (charactersinfo == null)
|
|
{
|
|
return new BaseResponse<CharacterInfoDto>();
|
|
}
|
|
var info = Mapper.Map<CharacterInfoDto>(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<CharacterInfoDto>(ResonseCode.Success, "", info);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 首页-获取全部角色的Id
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public BaseResponse<List<CharacterIdModel>> 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<CharacterIdModel>();
|
|
}
|
|
return new BaseResponse<List<CharacterIdModel>>(ResonseCode.Success, "", charactersIds);
|
|
}
|
|
}
|
|
}
|