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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result[0].Forbid)
|
AccountInfo account = result[0];
|
||||||
|
|
||||||
|
if (account.Forbid)
|
||||||
{
|
{
|
||||||
response.ErrorCode = ErrorCode.ERR_AccountIsForbid;
|
response.ErrorCode = ErrorCode.ERR_AccountIsForbid;
|
||||||
reply();
|
reply();
|
||||||
return;
|
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()}");
|
Log.Debug($"收到请求登录的消息 request:{request.ToJson()}");
|
||||||
response.Text = "登录成功";
|
response.Text = "登录成功";
|
||||||
response.UID = result[0].UID;
|
response.UID = account.UID;
|
||||||
await FTask.CompletedTask;
|
await FTask.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
@@ -15,12 +15,19 @@ namespace TEngine.Logic
|
|||||||
await db.Query<AccountInfo>(t=>t.UserName == request.UserName) :
|
await db.Query<AccountInfo>(t=>t.UserName == request.UserName) :
|
||||||
await db.Query<AccountInfo>(t=>t.SDKUID == request.SDKUID) ;
|
await db.Query<AccountInfo>(t=>t.SDKUID == request.SDKUID) ;
|
||||||
|
|
||||||
if (result.Count > 0)
|
if (result.Count == 1)
|
||||||
{
|
{
|
||||||
response.ErrorCode = ErrorCode.ERR_AccountAlreadyRegisted;
|
response.ErrorCode = ErrorCode.ERR_AccountAlreadyRegisted;
|
||||||
reply();
|
reply();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (result.Count >= 1)
|
||||||
|
{
|
||||||
|
response.ErrorCode = ErrorCode.ERR_AccountAlreadyRegisted;
|
||||||
|
Log.Error("出现重复账号:" + request.UserName);
|
||||||
|
reply();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint uid = await GeneratorUID(db);
|
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>
|
/// </summary>
|
||||||
public bool Forbid { get; set; }
|
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;
|
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();
|
self.Awake();
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@ public class UserInfoAwakeSystem : AwakeSystem<UserInfo>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 角色信息。
|
/// 角色信息。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserInfo : Entity
|
public class CharacterInfo : Entity
|
||||||
{
|
{
|
||||||
//昵称
|
//昵称
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
@@ -4,7 +4,8 @@ using TEngine.Core.Network;
|
|||||||
namespace TEngine.Logic;
|
namespace TEngine.Logic;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当Scene创建时需要干什么
|
/// 场景创建回调。
|
||||||
|
/// <remarks>常用于定义场景需要添加的组件。</remarks>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class OnCreateScene : AsyncEventSystem<TEngine.OnCreateScene>
|
public class OnCreateScene : AsyncEventSystem<TEngine.OnCreateScene>
|
||||||
{
|
{
|
||||||
@@ -23,6 +24,11 @@ public class OnCreateScene : AsyncEventSystem<TEngine.OnCreateScene>
|
|||||||
sceneConfigInfo.Scene.AddComponent<AddressableManageComponent>();
|
sceneConfigInfo.Scene.AddComponent<AddressableManageComponent>();
|
||||||
break;
|
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}");
|
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