using System; namespace ET { [ActorMessageHandler] public class C2M_ChangeNickNameHandler : AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_ChangeNickName request, M2C_ChangeNickName response, Action reply) { var ret = CharacterHelper.ReduceMoney(unit, CharacterHelper.MoneyType.Voucher, ConstDefine.ChangeNickNamePrice); if (ret != null) { response.Message = ret; reply(); return; } User user = await UserComponent.Instance.Query(unit.Id); string oldName = user.NickName; string name = request.name.TrimEnd().Trim(new char[] { '\n', '狗', '夏', '.' }); if (name.Length > 7) { response.Message = "昵称过长"; reply(); return; } if (name.Contains('.')) { response.Message = "不可使用."; reply(); return; } var list =await DBComponent.Instance.Query(t => t.Nickname == name); if(list!=null && list.Count > 0) { response.Message = "昵称重复"; reply(); return; } await DBComponent.Instance.Remove(t => t.Nickname == user.NickName); using NickName nickName = EntityFactory.Create(unit.DomainScene()); nickName.Nickname = name; await DBComponent.Instance.Save(nickName); user.NickName = name; await UserComponent.Instance.Save(user); using NickNameLog log = EntityFactory.CreateWithId(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; } } }