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; if (!FilterCharHelper.IsInvalid(name)) { response.Message = "昵称不能超过7位,不能含有特殊字符"; 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; } } }