CTT/Server/Hotfix/Game/Handler/User/R2M_DeleteUserHandler.cs

86 lines
3.2 KiB
C#
Executable File

using System;
using System.Collections.Generic;
namespace ET
{
[ActorMessageHandler]
public class R2M_DeleteUserHandler : AMActorRpcHandler<Scene, R2M_DeleteUser, M2R_DeleteUser>
{
protected override async ETTask Run(Scene scene, R2M_DeleteUser request, M2R_DeleteUser response, Action reply)
{
try
{
//**********************
Log.Debug($"*********************************************************UserId = {request.UserId} 删除角色");
// User user = await UserComponent.Instance.Query(request.UserId);
// if (user == null)
// {
// response.Message = $"没有这个玩家";
// Log.Error($"服务器没有这个玩家Id={ request.UserId}");
// reply();
// return;
// }
// long unitId = user.Id;
// Unit unit = MapUnitComponent.Instance.Get(unitId);
// if (unit == null)
// {
// return;
//
// }
// else
// {
// Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
// if (team.TeamState == TeamState.Fight)
// {
// response.Message = "战斗中不能删除角色!";
// reply();
// return;
// }
// }
// user.hasRole = false;
//
// await DBComponent.Instance.Save(user);
//
// await DBComponent.Instance.Remove<Unit>(unitId);
// await C2M_DeleteFriend(unitId);
// await DBComponent.Instance.Remove<MailLib>(unitId);
// await DBComponent.Instance.Remove<Store>(unitId);
// await DBComponent.Instance.Remove<BuffLib>(unitId);
// await DBComponent.Instance.Remove<NickName>(t => t.Nickname.Equals(user.NickName));
// await DeleteConsignment(unitId);
// await DeleteFamily(user.NickName, unitId);
reply();
Log.Debug($"UserId = {request.UserId}删除角色完成");
}
catch (System.Exception e)
{
Log.Error(e);
}
}
private async ETTask DeleteFamily(string name, long unitId)
{
Family family = await FamilyComponent.Instance.Query(name);
if(family != null)
await family.ForceDeleteMember(unitId);
}
private async ETTask C2M_DeleteFriend(long unitId)
{
IEnumerable<long> list = await FriendComponent.Instance.GetFriends(unitId);
foreach (long id in list)
{
await FriendComponent.Instance.DeleteFriend(id, unitId);
}
FriendComponent.Instance.FriendDic.Remove(unitId);
await DBComponent.Instance.Remove<Friend>(unitId);
}
private async ETTask DeleteConsignment(long unitId)
{
await DBComponent.Instance.Remove<Consignment>(t => t.UnitId == unitId);
}
}
}