Skip to content

Commit 25f627c

Browse files
committed
[修改]1. 修改登录流程为Web 的方式
1 parent e8230f5 commit 25f627c

File tree

8 files changed

+174
-10
lines changed

8 files changed

+174
-10
lines changed

GameFrameX.Apps/Account/Login/Component/LoginComponent.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Threading.Tasks;
1+
/*using System.Threading.Tasks;
22
using GameFrameX.Apps.Account.Login.Entity;
33
using GameFrameX.Apps.Player.Player.Entity;
44
using GameFrameX.Core.Abstractions.Attribute;
@@ -48,4 +48,4 @@ public async Task<PlayerState> OnPlayerCreate(ReqPlayerCreate reqPlayerCreate)
4848
await GameDb.SaveOneAsync(playerState);
4949
return playerState;
5050
}
51-
}
51+
}*/

GameFrameX.Hotfix/Logic/Account/Login/LoginComponentAgent.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using GameFrameX.Apps.Account.Login.Component;
1+
/*using GameFrameX.Apps.Account.Login.Component;
22
using GameFrameX.Apps.Account.Login.Entity;
33
using GameFrameX.Hotfix.Common;
44
using GameFrameX.NetWork.Abstractions;
@@ -95,4 +95,4 @@ public async Task OnGetPlayerList(INetWorkChannel workChannel, ReqPlayerList req
9595
9696
await workChannel.WriteAsync(respPlayerList);
9797
}
98-
}
98+
}*/

GameFrameX.Hotfix/Logic/Account/Login/ReqLoginHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using GameFrameX.Core.BaseHandler;
1+
/*using GameFrameX.Core.BaseHandler;
22
using GameFrameX.NetWork.Abstractions;
33
44
namespace GameFrameX.Hotfix.Logic.Account.Login;
@@ -10,4 +10,4 @@ protected override async Task ActionAsync()
1010
{
1111
await ComponentAgent.OnLogin(NetWorkChannel, Message as ReqLogin);
1212
}
13-
}
13+
}*/

GameFrameX.Hotfix/Logic/Account/Login/ReqPlayerCreateHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using GameFrameX.Core.BaseHandler;
1+
/*using GameFrameX.Core.BaseHandler;
22
using GameFrameX.NetWork.Abstractions;
33
44
namespace GameFrameX.Hotfix.Logic.Account.Login;
@@ -10,4 +10,4 @@ protected override async Task ActionAsync()
1010
{
1111
await ComponentAgent.OnPlayerCreate(NetWorkChannel, Message as ReqPlayerCreate);
1212
}
13-
}
13+
}*/

GameFrameX.Hotfix/Logic/Account/Login/ReqPlayerListHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using GameFrameX.Core.BaseHandler;
1+
/*using GameFrameX.Core.BaseHandler;
22
using GameFrameX.NetWork.Abstractions;
33
44
namespace GameFrameX.Hotfix.Logic.Account.Login;
@@ -10,4 +10,4 @@ protected override async Task ActionAsync()
1010
{
1111
await ComponentAgent.OnGetPlayerList(NetWorkChannel, Message as ReqPlayerList);
1212
}
13-
}
13+
}*/
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using GameFrameX.Apps.Account.Login.Entity;
2+
using GameFrameX.DataBase;
3+
using GameFrameX.Hotfix.Common;
4+
using GameFrameX.Monitor.Account;
5+
using GameFrameX.NetWork.HTTP;
6+
7+
namespace GameFrameX.Hotfix.Logic.Http;
8+
9+
/// <summary>
10+
/// 账号登录
11+
/// </summary>
12+
[HttpMessageMapping(typeof(ReqLoginHttpHandler))]
13+
public sealed class ReqLoginHttpHandler : BaseHttpHandler
14+
{
15+
public override async Task<string> Action(string ip, string url, Dictionary<string, object> paramMap)
16+
{
17+
ReqLogin reqLogin = JsonHelper.Deserialize<ReqLogin>(JsonHelper.Serialize(paramMap));
18+
19+
if (reqLogin.UserName.IsNullOrEmpty() || reqLogin.Password.IsNullOrEmpty())
20+
{
21+
return HttpResult.Create((int)ResultCode.Failed);
22+
}
23+
24+
MetricsAccountRegister.LoginCounterOptions.Inc();
25+
var loginState = await OnLogin(reqLogin);
26+
27+
if (loginState == null)
28+
{
29+
var accountId = ActorIdGenerator.GetUniqueId();
30+
loginState = await Register(accountId, reqLogin);
31+
}
32+
33+
// 构建账号登录返回信息
34+
var respLogin = new RespLogin
35+
{
36+
Code = loginState.State,
37+
CreateTime = loginState.CreateTime,
38+
Level = loginState.Level,
39+
Id = loginState.Id,
40+
RoleName = loginState.NickName,
41+
};
42+
return HttpResult.Create(JsonHelper.Serialize(respLogin));
43+
}
44+
45+
public async Task<LoginState> OnLogin(ReqLogin reqLogin)
46+
{
47+
MetricsAccountRegister.LoginCounterOptions.Inc();
48+
return await GameDb.FindAsync<LoginState>(m => m.UserName == reqLogin.UserName && m.Password == reqLogin.Password);
49+
}
50+
51+
public async Task<LoginState> Register(long accountId, ReqLogin reqLogin)
52+
{
53+
MetricsAccountRegister.RegisterCounterOptions.Inc();
54+
var loginState = new LoginState { Id = accountId, UserName = reqLogin.UserName, Password = reqLogin.Password, };
55+
await GameDb.SaveOneAsync(loginState);
56+
return loginState;
57+
}
58+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using GameFrameX.Apps.Account.Login.Entity;
2+
using GameFrameX.Apps.Player.Player.Entity;
3+
using GameFrameX.DataBase;
4+
using GameFrameX.Hotfix.Common;
5+
using GameFrameX.Monitor.Account;
6+
using GameFrameX.Monitor.Player;
7+
using GameFrameX.NetWork.HTTP;
8+
9+
namespace GameFrameX.Hotfix.Logic.Http;
10+
11+
/// <summary>
12+
/// 角色创建
13+
/// </summary>
14+
[HttpMessageMapping(typeof(ReqPlayerCreateHttpHandler))]
15+
public sealed class ReqPlayerCreateHttpHandler : BaseHttpHandler
16+
{
17+
public override async Task<string> Action(string ip, string url, Dictionary<string, object> paramMap)
18+
{
19+
var reqPlayerCreate = JsonHelper.Deserialize<ReqPlayerCreate>(JsonHelper.Serialize(paramMap));
20+
21+
var playerState = await OnPlayerCreate(reqPlayerCreate);
22+
var respPlayerCreate = new RespPlayerCreate
23+
{
24+
UniqueId = reqPlayerCreate.UniqueId,
25+
PlayerInfo = new PlayerInfo
26+
{
27+
Id = playerState.Id,
28+
Name = playerState.Name,
29+
Level = playerState.Level,
30+
State = playerState.State,
31+
Avatar = playerState.Avatar,
32+
},
33+
};
34+
return HttpResult.Create(JsonHelper.Serialize(respPlayerCreate));
35+
}
36+
37+
private async Task<PlayerState> OnPlayerCreate(ReqPlayerCreate reqPlayerCreate)
38+
{
39+
var playerState = new PlayerState
40+
{
41+
Id = ActorIdGenerator.GetActorId(GlobalConst.ActorTypePlayer),
42+
AccountId = reqPlayerCreate.Id,
43+
Name = reqPlayerCreate.Name,
44+
Level = (uint)Utility.Random.Next(1, 50),
45+
State = 0,
46+
Avatar = (uint)Utility.Random.Next(1, 50),
47+
};
48+
MetricsPlayerRegister.CreateCounterOptions.Inc();
49+
await GameDb.SaveOneAsync(playerState);
50+
return playerState;
51+
}
52+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using GameFrameX.Apps.Player.Player.Entity;
2+
using GameFrameX.DataBase;
3+
using GameFrameX.Monitor.Player;
4+
using GameFrameX.NetWork.HTTP;
5+
6+
namespace GameFrameX.Hotfix.Logic.Http;
7+
8+
/// <summary>
9+
/// 获取角色列表
10+
/// </summary>
11+
[HttpMessageMapping(typeof(ReqPlayerListHttpHandler))]
12+
public sealed class ReqPlayerListHttpHandler : BaseHttpHandler
13+
{
14+
public override async Task<string> Action(string ip, string url, Dictionary<string, object> paramMap)
15+
{
16+
ReqPlayerList reqPlayerList = JsonHelper.Deserialize<ReqPlayerList>(JsonHelper.Serialize(paramMap));
17+
18+
if (reqPlayerList.Id == default)
19+
{
20+
return HttpResult.Create(HttpStatusCode.NotFound, "账号不存在");
21+
}
22+
23+
var playerList = await GetPlayerList(reqPlayerList);
24+
25+
var respPlayerList = new RespPlayerList
26+
{
27+
UniqueId = reqPlayerList.UniqueId,
28+
PlayerList = new List<PlayerInfo>(),
29+
};
30+
if (playerList != null)
31+
{
32+
foreach (var playerState in playerList)
33+
{
34+
var playerInfo = new PlayerInfo
35+
{
36+
Id = playerState.Id,
37+
Name = playerState.Name,
38+
};
39+
playerInfo.Level = playerState.Level;
40+
playerInfo.State = playerState.State;
41+
playerInfo.Avatar = playerState.Avatar;
42+
respPlayerList.PlayerList.Add(playerInfo);
43+
}
44+
}
45+
46+
return HttpResult.Create(JsonHelper.Serialize(respPlayerList));
47+
}
48+
49+
private async Task<List<PlayerState>> GetPlayerList(ReqPlayerList reqPlayerList)
50+
{
51+
MetricsPlayerRegister.GetPlayerListCounterOptions.Inc();
52+
return await GameDb.FindListAsync<PlayerState>(m => m.AccountId == reqPlayerList.Id);
53+
}
54+
}

0 commit comments

Comments
 (0)