Skip to content

Commit fed24f0

Browse files
committed
[修复]1. 修复创建账号异常
1 parent b20b911 commit fed24f0

File tree

2 files changed

+116
-116
lines changed

2 files changed

+116
-116
lines changed
Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,62 @@
1-
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2-
//
3-
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4-
//
5-
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6-
7-
using GameFrameX.Apps.Account.Login.Entity;
8-
using GameFrameX.DataBase;
9-
using GameFrameX.Monitor.Account;
10-
using GameFrameX.NetWork.Messages;
11-
12-
namespace GameFrameX.Hotfix.Logic.Http.Player;
13-
14-
/// <summary>
15-
/// 账号登录
16-
/// </summary>
17-
[HttpMessageMapping(typeof(ReqLoginHttpHandler))]
18-
[Description("账号登录,仅限前端调用")]
19-
public sealed class ReqLoginHttpHandler : BaseHttpHandler
20-
{
21-
public override async Task<MessageObject> Action(string ip, string url, Dictionary<string, object> parameters, MessageObject messageObject)
22-
{
23-
var reqLogin = (ReqLogin)messageObject;
24-
var respLogin = new RespLogin();
25-
if (reqLogin.UserName.IsNullOrEmpty() || reqLogin.Password.IsNullOrEmpty())
26-
{
27-
respLogin.ErrorCode = (int)ResultCode.Failed;
28-
return null;
29-
}
30-
31-
MetricsAccountRegister.LoginCounterOptions.Inc();
32-
var loginState = await OnLogin(reqLogin);
33-
34-
if (loginState == null)
35-
{
36-
var accountId = ActorIdGenerator.GetUniqueId();
37-
loginState = await Register(accountId, reqLogin);
38-
}
39-
40-
// 构建账号登录返回信息
41-
respLogin.Code = loginState.State;
42-
respLogin.CreateTime = loginState.CreateTime;
43-
respLogin.Level = loginState.Level;
44-
respLogin.Id = loginState.Id;
45-
respLogin.RoleName = loginState.NickName;
46-
return respLogin;
47-
}
48-
49-
public async Task<LoginState> OnLogin(ReqLogin reqLogin)
50-
{
51-
MetricsAccountRegister.LoginCounterOptions.Inc();
52-
return await GameDb.FindAsync<LoginState>(m => m.UserName == reqLogin.UserName && m.Password == reqLogin.Password);
53-
}
54-
55-
public async Task<LoginState> Register(long accountId, ReqLogin reqLogin)
56-
{
57-
MetricsAccountRegister.RegisterCounterOptions.Inc();
58-
var loginState = new LoginState { Id = accountId, UserName = reqLogin.UserName, Password = reqLogin.Password, };
59-
await GameDb.SaveOneAsync(loginState);
60-
return loginState;
61-
}
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+
using GameFrameX.Apps.Account.Login.Entity;
8+
using GameFrameX.DataBase;
9+
using GameFrameX.Monitor.Account;
10+
using GameFrameX.NetWork.Messages;
11+
12+
namespace GameFrameX.Hotfix.Logic.Http.Player;
13+
14+
/// <summary>
15+
/// 账号登录
16+
/// </summary>
17+
[HttpMessageMapping(typeof(ReqLoginHttpHandler))]
18+
[Description("账号登录,仅限前端调用")]
19+
public sealed class ReqLoginHttpHandler : BaseHttpHandler
20+
{
21+
public override async Task<MessageObject> Action(string ip, string url, Dictionary<string, object> parameters, MessageObject messageObject)
22+
{
23+
var reqLogin = (ReqLogin)messageObject;
24+
var respLogin = new RespLogin();
25+
if (reqLogin.UserName.IsNullOrEmpty() || reqLogin.Password.IsNullOrEmpty())
26+
{
27+
respLogin.ErrorCode = (int)ResultCode.Failed;
28+
return null;
29+
}
30+
31+
MetricsAccountRegister.LoginCounterOptions.Inc();
32+
var loginState = await OnLogin(reqLogin);
33+
34+
if (loginState == null)
35+
{
36+
var accountId = ActorIdGenerator.GetUniqueId();
37+
loginState = await Register(accountId, reqLogin);
38+
}
39+
40+
// 构建账号登录返回信息
41+
respLogin.Code = loginState.State;
42+
respLogin.CreateTime = loginState.CreateTime;
43+
respLogin.Level = loginState.Level;
44+
respLogin.Id = loginState.Id;
45+
respLogin.RoleName = loginState.NickName;
46+
return respLogin;
47+
}
48+
49+
public async Task<LoginState> OnLogin(ReqLogin reqLogin)
50+
{
51+
MetricsAccountRegister.LoginCounterOptions.Inc();
52+
return await GameDb.FindAsync<LoginState>(m => m.UserName == reqLogin.UserName && m.Password == reqLogin.Password, false);
53+
}
54+
55+
public async Task<LoginState> Register(long accountId, ReqLogin reqLogin)
56+
{
57+
MetricsAccountRegister.RegisterCounterOptions.Inc();
58+
var loginState = new LoginState { Id = accountId, UserName = reqLogin.UserName, Password = reqLogin.Password, };
59+
await GameDb.AddOrUpdateAsync(loginState);
60+
return loginState;
61+
}
6262
}
Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,56 @@
1-
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2-
//
3-
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4-
//
5-
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6-
7-
using GameFrameX.Apps.Player.Player.Entity;
8-
using GameFrameX.DataBase;
9-
using GameFrameX.Monitor.Player;
10-
using GameFrameX.NetWork.Messages;
11-
12-
namespace GameFrameX.Hotfix.Logic.Http.Player;
13-
14-
/// <summary>
15-
/// 角色创建
16-
/// </summary>
17-
[HttpMessageMapping(typeof(ReqPlayerCreateHttpHandler))]
18-
[Description("角色创建,仅限前端调用")]
19-
public sealed class ReqPlayerCreateHttpHandler : BaseHttpHandler
20-
{
21-
public override async Task<MessageObject> Action(string ip, string url, Dictionary<string, object> paramMap, MessageObject messageObject)
22-
{
23-
var reqPlayerCreate = messageObject as ReqPlayerCreate;
24-
25-
var playerState = await OnPlayerCreate(reqPlayerCreate);
26-
var respPlayerCreate = new RespPlayerCreate
27-
{
28-
UniqueId = reqPlayerCreate.UniqueId,
29-
PlayerInfo = new PlayerInfo
30-
{
31-
Id = playerState.Id,
32-
Name = playerState.Name,
33-
Level = playerState.Level,
34-
State = playerState.State,
35-
Avatar = playerState.Avatar,
36-
},
37-
};
38-
return respPlayerCreate;
39-
}
40-
41-
private async Task<PlayerState> OnPlayerCreate(ReqPlayerCreate reqPlayerCreate)
42-
{
43-
var playerState = new PlayerState
44-
{
45-
Id = ActorIdGenerator.GetActorId(GlobalConst.ActorTypePlayer),
46-
AccountId = reqPlayerCreate.Id,
47-
Name = reqPlayerCreate.Name,
48-
Level = (uint)Utility.Random.Next(1, 50),
49-
State = 0,
50-
Avatar = (uint)Utility.Random.Next(1, 50),
51-
};
52-
MetricsPlayerRegister.CreateCounterOptions.Inc();
53-
await GameDb.SaveOneAsync(playerState);
54-
return playerState;
55-
}
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+
using GameFrameX.Apps.Player.Player.Entity;
8+
using GameFrameX.DataBase;
9+
using GameFrameX.Monitor.Player;
10+
using GameFrameX.NetWork.Messages;
11+
12+
namespace GameFrameX.Hotfix.Logic.Http.Player;
13+
14+
/// <summary>
15+
/// 角色创建
16+
/// </summary>
17+
[HttpMessageMapping(typeof(ReqPlayerCreateHttpHandler))]
18+
[Description("角色创建,仅限前端调用")]
19+
public sealed class ReqPlayerCreateHttpHandler : BaseHttpHandler
20+
{
21+
public override async Task<MessageObject> Action(string ip, string url, Dictionary<string, object> paramMap, MessageObject messageObject)
22+
{
23+
var reqPlayerCreate = messageObject as ReqPlayerCreate;
24+
25+
var playerState = await OnPlayerCreate(reqPlayerCreate);
26+
var respPlayerCreate = new RespPlayerCreate
27+
{
28+
UniqueId = reqPlayerCreate.UniqueId,
29+
PlayerInfo = new PlayerInfo
30+
{
31+
Id = playerState.Id,
32+
Name = playerState.Name,
33+
Level = playerState.Level,
34+
State = playerState.State,
35+
Avatar = playerState.Avatar,
36+
},
37+
};
38+
return respPlayerCreate;
39+
}
40+
41+
private async Task<PlayerState> OnPlayerCreate(ReqPlayerCreate reqPlayerCreate)
42+
{
43+
var playerState = new PlayerState
44+
{
45+
Id = ActorIdGenerator.GetActorId(GlobalConst.ActorTypePlayer),
46+
AccountId = reqPlayerCreate.Id,
47+
Name = reqPlayerCreate.Name,
48+
Level = (uint)Utility.Random.Next(1, 50),
49+
State = 0,
50+
Avatar = (uint)Utility.Random.Next(1, 50),
51+
};
52+
MetricsPlayerRegister.CreateCounterOptions.Inc();
53+
await GameDb.AddOrUpdateAsync(playerState);
54+
return playerState;
55+
}
5656
}

0 commit comments

Comments
 (0)