using System; using System.Collections.Generic; namespace ET { [ActorMessageHandler] public class C2M_ChangeNickNameHandler: AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_ChangeNickName request, M2C_ChangeNickName response, Action reply) { string 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; } List 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); NickNameLog log= await DBComponent.Instance.Query(unit.Id) ?? 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); log.Dispose(); reply(); await ETTask.CompletedTask; } } }