mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
完善登录注册Demo
完善登录注册Demo
This commit is contained in:
@@ -22,18 +22,35 @@ namespace TEngine.Logic
|
||||
return;
|
||||
}
|
||||
|
||||
if (result[0].Forbid)
|
||||
AccountInfo account = result[0];
|
||||
|
||||
if (account.Forbid)
|
||||
{
|
||||
response.ErrorCode = ErrorCode.ERR_AccountIsForbid;
|
||||
reply();
|
||||
return;
|
||||
}
|
||||
|
||||
AccountComponent accountComponent = session.Scene.GetComponent<AccountComponent>();
|
||||
if (accountComponent.Get(account.UID) != null)
|
||||
{
|
||||
response.ErrorCode = ErrorCode.ERR_LoginError;
|
||||
reply();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
var accountInfo = session.AddComponent<AccountInfo>();
|
||||
accountInfo.UID = account.UID;
|
||||
accountInfo.SDKUID = account.SDKUID;
|
||||
accountComponent.Add(account);
|
||||
}
|
||||
|
||||
Log.Debug($"收到请求登录的消息 request:{request.ToJson()}");
|
||||
response.Text = "登录成功";
|
||||
response.UID = result[0].UID;
|
||||
response.UID = account.UID;
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@@ -15,12 +15,19 @@ namespace TEngine.Logic
|
||||
await db.Query<AccountInfo>(t=>t.UserName == request.UserName) :
|
||||
await db.Query<AccountInfo>(t=>t.SDKUID == request.SDKUID) ;
|
||||
|
||||
if (result.Count > 0)
|
||||
if (result.Count == 1)
|
||||
{
|
||||
response.ErrorCode = ErrorCode.ERR_AccountAlreadyRegisted;
|
||||
reply();
|
||||
return;
|
||||
}
|
||||
else if (result.Count >= 1)
|
||||
{
|
||||
response.ErrorCode = ErrorCode.ERR_AccountAlreadyRegisted;
|
||||
Log.Error("出现重复账号:" + request.UserName);
|
||||
reply();
|
||||
return;
|
||||
}
|
||||
|
||||
uint uid = await GeneratorUID(db);
|
||||
|
||||
|
68
DotNet/Logic/src/Model/AccountComponent.cs
Normal file
68
DotNet/Logic/src/Model/AccountComponent.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
namespace TEngine.Logic;
|
||||
|
||||
/// <summary>
|
||||
/// 场景账号管理组件。
|
||||
/// <remarks>[Scene]</remarks>
|
||||
/// </summary>
|
||||
public class AccountComponent:Entity, INotSupportedPool
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前登陆的账号。
|
||||
/// </summary>
|
||||
public readonly Dictionary<uint, AccountInfo?> accountInfoMap = new Dictionary<uint, AccountInfo?>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取账号信息。
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
public AccountInfo? Get(uint uid)
|
||||
{
|
||||
this.accountInfoMap.TryGetValue(uid, out AccountInfo? ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加当前登录的账号。
|
||||
/// </summary>
|
||||
/// <param name="accountInfo">账号信息。</param>
|
||||
/// <returns></returns>
|
||||
public bool Add(AccountInfo? accountInfo)
|
||||
{
|
||||
if (accountInfo == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.accountInfoMap.ContainsKey(accountInfo.UID))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
this.accountInfoMap[accountInfo.UID] = accountInfo;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除当前登录的账号。
|
||||
/// </summary>
|
||||
/// <param name="accountInfo">账号信息。</param>
|
||||
/// <returns></returns>
|
||||
public bool Remove(AccountInfo? accountInfo)
|
||||
{
|
||||
if (accountInfo == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this.accountInfoMap.ContainsKey(accountInfo.UID))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
this.accountInfoMap.Remove(accountInfo.UID);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -29,4 +29,11 @@ public class AccountInfo : Entity
|
||||
/// 是否禁用账号。
|
||||
/// </summary>
|
||||
public bool Forbid { get; set; }
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
Log.Debug($"UID:{this.UID}");
|
||||
this.Parent?.Scene?.GetComponent<AccountComponent>()?.Remove(this);
|
||||
base.Dispose();
|
||||
}
|
||||
}
|
@@ -1,8 +1,8 @@
|
||||
namespace TEngine.Logic;
|
||||
|
||||
public class UserInfoAwakeSystem : AwakeSystem<UserInfo>
|
||||
public class CharacterInfoAwakeSystem : AwakeSystem<CharacterInfo>
|
||||
{
|
||||
protected override void Awake(UserInfo self)
|
||||
protected override void Awake(CharacterInfo self)
|
||||
{
|
||||
self.Awake();
|
||||
}
|
||||
@@ -11,7 +11,7 @@ public class UserInfoAwakeSystem : AwakeSystem<UserInfo>
|
||||
/// <summary>
|
||||
/// 角色信息。
|
||||
/// </summary>
|
||||
public class UserInfo : Entity
|
||||
public class CharacterInfo : Entity
|
||||
{
|
||||
//昵称
|
||||
public string UserName { get; set; }
|
@@ -4,7 +4,8 @@ using TEngine.Core.Network;
|
||||
namespace TEngine.Logic;
|
||||
|
||||
/// <summary>
|
||||
/// 当Scene创建时需要干什么
|
||||
/// 场景创建回调。
|
||||
/// <remarks>常用于定义场景需要添加的组件。</remarks>
|
||||
/// </summary>
|
||||
public class OnCreateScene : AsyncEventSystem<TEngine.OnCreateScene>
|
||||
{
|
||||
@@ -23,6 +24,11 @@ public class OnCreateScene : AsyncEventSystem<TEngine.OnCreateScene>
|
||||
sceneConfigInfo.Scene.AddComponent<AddressableManageComponent>();
|
||||
break;
|
||||
}
|
||||
case "Gate":
|
||||
{
|
||||
sceneConfigInfo.Scene.AddComponent<AccountComponent>();
|
||||
break;
|
||||
}
|
||||
}
|
||||
Log.Info($"scene create: {self.SceneInfo.SceneType} {self.SceneInfo.Name} SceneId:{self.SceneInfo.Id} ServerId:{self.SceneInfo.RouteId} WorldId:{self.SceneInfo.WorldId}");
|
||||
|
||||
|
Reference in New Issue
Block a user