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

50 lines
2.0 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System;
2021-04-11 19:50:39 +08:00
using System.Collections.Generic;
2021-04-08 20:09:59 +08:00
namespace ET
{
[ActorMessageHandler]
public class C2M_ChangeNickNameHandler : AMActorLocationRpcHandler<Unit, C2M_ChangeNickName, M2C_ChangeNickName>
{
protected override async ETTask Run(Unit unit, C2M_ChangeNickName request, M2C_ChangeNickName response, Action reply)
{
2021-04-11 19:50:39 +08:00
string ret = CharacterHelper.ReduceMoney(unit, CharacterHelper.MoneyType.Voucher, ConstDefine.ChangeNickNamePrice);
2021-04-08 20:09:59 +08:00
if (ret != null)
{
response.Message = ret;
reply();
return;
}
User user = await UserComponent.Instance.Query(unit.Id);
string oldName = user.NickName;
2021-04-10 19:49:32 +08:00
string name = request.name;
if (!FilterCharHelper.IsInvalid(name))
2021-04-08 20:09:59 +08:00
{
2021-04-10 19:49:32 +08:00
response.Message = "昵称不能超过7位,不能含有特殊字符";
2021-04-08 20:09:59 +08:00
reply();
return;
}
2021-04-11 19:50:39 +08:00
List<NickName> list =await DBComponent.Instance.Query<NickName>(t => t.Nickname == name);
2021-04-08 20:09:59 +08:00
if(list!=null && list.Count > 0)
{
response.Message = "昵称重复";
reply();
return;
}
await DBComponent.Instance.Remove<NickName>(t => t.Nickname == user.NickName);
using NickName nickName = EntityFactory.Create<NickName>(unit.DomainScene());
nickName.Nickname = name;
await DBComponent.Instance.Save(nickName);
user.NickName = name;
await UserComponent.Instance.Save(user);
using NickNameLog log = EntityFactory.CreateWithId<NickNameLog>(unit.DomainScene(),unit.Id);
if(log.nameList.Count==0|| log.nameList[^1]!=oldName)
log.nameList.Add(oldName);
log.nameList.Add(name);
await DBComponent.Instance.Save(log);
reply();
await ETTask.CompletedTask;
}
}
}