mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-04-21 19:49:36 +08:00
WebAPI项目结构调整
This commit is contained in:
parent
29d661f8a0
commit
16ebe39d35
@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Base;
|
|||||||
using Milimoe.FunGame.Core.Library.Common.Network;
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Controller
|
namespace Milimoe.FunGame.Server.Controller
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,7 @@ using Milimoe.FunGame.Core.Library.SQLScript.Common;
|
|||||||
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
||||||
using Milimoe.FunGame.Server.Model;
|
using Milimoe.FunGame.Server.Model;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Controller
|
namespace Milimoe.FunGame.Server.Controller
|
||||||
{
|
{
|
||||||
@ -415,7 +415,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
if (isMaster)
|
if (isMaster)
|
||||||
{
|
{
|
||||||
string[] usernames = Config.RoomList.GetNotReadyUserList(roomid).Select(user => user.Username).ToArray();
|
string[] usernames = [.. Config.RoomList.GetNotReadyUserList(roomid).Select(user => user.Username)];
|
||||||
if (usernames.Length > 0)
|
if (usernames.Length > 0)
|
||||||
{
|
{
|
||||||
if (_isReadyCheckCD[0] == false)
|
if (_isReadyCheckCD[0] == false)
|
||||||
@ -443,7 +443,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
usernames = users.Select(user => user.Username).ToArray();
|
usernames = [.. users.Select(user => user.Username)];
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "所有玩家均已准备,游戏将在10秒后开始。", "", 0, usernames);
|
Server.SendSystemMessage(ShowMessageType.None, "所有玩家均已准备,游戏将在10秒后开始。", "", 0, usernames);
|
||||||
StartGame(roomid, users, usernames);
|
StartGame(roomid, users, usernames);
|
||||||
result = true;
|
result = true;
|
||||||
@ -526,74 +526,89 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
string password = DataRequest.GetDictionaryJsonObject<string>(requestData, "password") ?? "";
|
string password = DataRequest.GetDictionaryJsonObject<string>(requestData, "password") ?? "";
|
||||||
string email = DataRequest.GetDictionaryJsonObject<string>(requestData, "email") ?? "";
|
string email = DataRequest.GetDictionaryJsonObject<string>(requestData, "email") ?? "";
|
||||||
string verifycode = DataRequest.GetDictionaryJsonObject<string>(requestData, "verifycode") ?? "";
|
string verifycode = DataRequest.GetDictionaryJsonObject<string>(requestData, "verifycode") ?? "";
|
||||||
|
(msg, returnType, success) = Reg(username, password, email, verifycode, Server.Socket?.ClientIP ?? "", SQLHelper, MailSender);
|
||||||
|
}
|
||||||
|
resultData.Add("msg", msg);
|
||||||
|
resultData.Add("type", returnType);
|
||||||
|
resultData.Add("success", success);
|
||||||
|
}
|
||||||
|
|
||||||
if (SQLHelper != null)
|
public static (string Msg, RegInvokeType RegInvokeType, bool Success) Reg(string username, string password, string email, string verifyCode, string clientIP = "", SQLHelper? sqlHelper = null, MailSender? mailSender = null)
|
||||||
|
{
|
||||||
|
string msg = "";
|
||||||
|
RegInvokeType type = RegInvokeType.None;
|
||||||
|
bool success = false;
|
||||||
|
string clientName = ServerHelper.MakeClientName(clientIP);
|
||||||
|
|
||||||
|
sqlHelper ??= Factory.OpenFactory.GetSQLHelper();
|
||||||
|
mailSender ??= Factory.OpenFactory.GetMailSender();
|
||||||
|
if (sqlHelper != null)
|
||||||
{
|
{
|
||||||
// 如果没发验证码,就生成验证码
|
// 如果没发验证码,就生成验证码
|
||||||
if (verifycode.Trim() == "")
|
if (verifyCode.Trim() == "")
|
||||||
{
|
{
|
||||||
// 先检查账号是否重复
|
// 先检查账号是否重复
|
||||||
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(SQLHelper, username));
|
sqlHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(sqlHelper, username));
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (sqlHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 账号已被注册");
|
ServerHelper.WriteLine(clientName + " 账号已被注册");
|
||||||
msg = "此账号名已被使用!";
|
msg = "此账号名已被使用!";
|
||||||
returnType = RegInvokeType.DuplicateUserName;
|
type = RegInvokeType.DuplicateUserName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 检查邮箱是否重复
|
// 检查邮箱是否重复
|
||||||
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistEmail(SQLHelper, email));
|
sqlHelper.ExecuteDataSet(UserQuery.Select_IsExistEmail(sqlHelper, email));
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (sqlHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 邮箱已被注册");
|
ServerHelper.WriteLine(clientName + " 邮箱已被注册");
|
||||||
msg = "此邮箱已被注册!";
|
msg = "此邮箱已被注册!";
|
||||||
returnType = RegInvokeType.DuplicateEmail;
|
type = RegInvokeType.DuplicateEmail;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 检查验证码是否发送过
|
// 检查验证码是否发送过
|
||||||
SQLHelper.ExecuteDataSet(RegVerifyCodes.Select_HasSentRegVerifyCode(SQLHelper, username, email));
|
sqlHelper.ExecuteDataSet(RegVerifyCodes.Select_HasSentRegVerifyCode(sqlHelper, username, email));
|
||||||
if (SQLHelper.Result == SQLResult.Success && DateTime.TryParse(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime].ToString(), out DateTime RegTime) && (DateTime.Now - RegTime).TotalMinutes < 10)
|
if (sqlHelper.Result == SQLResult.Success && DateTime.TryParse(sqlHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime].ToString(), out DateTime RegTime) && (DateTime.Now - RegTime).TotalMinutes < 10)
|
||||||
{
|
{
|
||||||
string RegVerifyCode = SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode].ToString() ?? "";
|
string RegVerifyCode = sqlHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode].ToString() ?? "";
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}");
|
ServerHelper.WriteLine(clientName + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}");
|
||||||
returnType = RegInvokeType.InputVerifyCode;
|
type = RegInvokeType.InputVerifyCode;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 发送验证码,需要先删除之前过期的验证码
|
// 发送验证码,需要先删除之前过期的验证码
|
||||||
SQLHelper.NewTransaction();
|
sqlHelper.NewTransaction();
|
||||||
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(SQLHelper, username, email));
|
sqlHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(sqlHelper, username, email));
|
||||||
string regVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
string regVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
||||||
SQLHelper.Execute(RegVerifyCodes.Insert_RegVerifyCode(SQLHelper, username, email, regVerify));
|
sqlHelper.Execute(RegVerifyCodes.Insert_RegVerifyCode(sqlHelper, username, email, regVerify));
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (sqlHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
SQLHelper.Commit();
|
sqlHelper.Commit();
|
||||||
if (MailSender != null)
|
if (mailSender != null)
|
||||||
{
|
{
|
||||||
// 发送验证码
|
// 发送验证码
|
||||||
string ServerName = Config.ServerName;
|
string ServerName = Config.ServerName;
|
||||||
string Subject = $"[{ServerName}] FunGame 注册验证码";
|
string Subject = $"[{ServerName}] FunGame 注册验证码";
|
||||||
string Body = $"亲爱的 {username}, <br/> 感谢您注册[{ServerName}],您的验证码是 {regVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
string Body = $"亲爱的 {username}, <br/> 感谢您注册[{ServerName}],您的验证码是 {regVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
||||||
string[] To = [email];
|
string[] To = [email];
|
||||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
if (mailSender.Send(mailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{regVerify}");
|
ServerHelper.WriteLine(clientName + $" 已向{email}发送验证码:{regVerify}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码", InvokeMessageType.Error);
|
ServerHelper.WriteLine(clientName + " 无法发送验证码", InvokeMessageType.Error);
|
||||||
ServerHelper.WriteLine(MailSender.ErrorMsg, InvokeMessageType.Error);
|
ServerHelper.WriteLine(mailSender.ErrorMsg, InvokeMessageType.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // 不使用MailSender的情况
|
else // 不使用MailSender的情况
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{regVerify},请服务器管理员告知此用户");
|
ServerHelper.WriteLine(clientName + $" 验证码为:{regVerify},请服务器管理员告知此用户");
|
||||||
}
|
}
|
||||||
returnType = RegInvokeType.InputVerifyCode;
|
type = RegInvokeType.InputVerifyCode;
|
||||||
}
|
}
|
||||||
else SQLHelper.Rollback();
|
else sqlHelper.Rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -601,53 +616,51 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 先检查验证码
|
// 先检查验证码
|
||||||
SQLHelper.ExecuteDataSet(RegVerifyCodes.Select_RegVerifyCode(SQLHelper, username, email, verifycode));
|
sqlHelper.ExecuteDataSet(RegVerifyCodes.Select_RegVerifyCode(sqlHelper, username, email, verifyCode));
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (sqlHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
if (!DateTime.TryParse(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime].ToString(), out DateTime RegTime))
|
if (!DateTime.TryParse(sqlHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime].ToString(), out DateTime RegTime))
|
||||||
{
|
{
|
||||||
RegTime = General.DefaultTime;
|
RegTime = General.DefaultTime;
|
||||||
}
|
}
|
||||||
// 检查验证码是否过期
|
// 检查验证码是否过期
|
||||||
if ((DateTime.Now - RegTime).TotalMinutes >= 10)
|
if ((DateTime.Now - RegTime).TotalMinutes >= 10)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 验证码已过期");
|
ServerHelper.WriteLine(clientName + " 验证码已过期");
|
||||||
msg = "此验证码已过期,请重新注册。";
|
msg = "此验证码已过期,请重新注册。";
|
||||||
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(SQLHelper, username, email));
|
sqlHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(sqlHelper, username, email));
|
||||||
returnType = RegInvokeType.None;
|
type = RegInvokeType.None;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 注册
|
// 注册
|
||||||
if (verifycode.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]))
|
if (verifyCode.Equals(sqlHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]))
|
||||||
{
|
{
|
||||||
SQLHelper.NewTransaction();
|
sqlHelper.NewTransaction();
|
||||||
ServerHelper.WriteLine("[Reg] Username: " + username + " Email: " + email);
|
ServerHelper.WriteLine("[Reg] Username: " + username + " Email: " + email);
|
||||||
SQLHelper.Execute(UserQuery.Insert_Register(SQLHelper, username, password, email, Server.Socket?.ClientIP ?? ""));
|
sqlHelper.Execute(UserQuery.Insert_Register(sqlHelper, username, password, email, clientIP));
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (sqlHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
success = true;
|
success = true;
|
||||||
msg = "注册成功!请牢记您的账号与密码!";
|
msg = "注册成功!请牢记您的账号与密码!";
|
||||||
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(SQLHelper, username, email));
|
sqlHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(sqlHelper, username, email));
|
||||||
SQLHelper.Commit();
|
sqlHelper.Commit();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SQLHelper.Rollback();
|
sqlHelper.Rollback();
|
||||||
msg = "服务器无法处理您的注册,注册失败!";
|
msg = "服务器无法处理您的注册,注册失败!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else msg = "验证码不正确,请重新输入!";
|
else msg = "验证码不正确,请重新输入!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (SQLHelper.Result == SQLResult.NotFound) msg = "验证码不正确,请重新输入!";
|
else if (sqlHelper.Result == SQLResult.NotFound) msg = "验证码不正确,请重新输入!";
|
||||||
else msg = "服务器无法处理您的注册,注册失败!";
|
else msg = "服务器无法处理您的注册,注册失败!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
resultData.Add("msg", msg);
|
return (msg, type, success);
|
||||||
resultData.Add("type", returnType);
|
|
||||||
resultData.Add("success", success);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -5,7 +5,7 @@ using Milimoe.FunGame.Core.Library.Constant;
|
|||||||
using Milimoe.FunGame.Server.Controller;
|
using Milimoe.FunGame.Server.Controller;
|
||||||
using Milimoe.FunGame.Server.Model;
|
using Milimoe.FunGame.Server.Model;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
Console.Title = Config.ServerName;
|
Console.Title = Config.ServerName;
|
||||||
Console.WriteLine(FunGameInfo.GetInfo(Config.FunGameType));
|
Console.WriteLine(FunGameInfo.GetInfo(Config.FunGameType));
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Milimoe.FunGame.Core.Api.Utility;
|
using Milimoe.FunGame.Core.Api.Utility;
|
||||||
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility
|
namespace Milimoe.FunGame.Server.Models
|
||||||
{
|
{
|
||||||
public class ConnectProperties
|
public class ConnectProperties
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using Milimoe.FunGame.Core.Interface.Base;
|
using Milimoe.FunGame.Core.Interface.Base;
|
||||||
using Milimoe.FunGame.Core.Library.Common.Addon;
|
using Milimoe.FunGame.Core.Library.Common.Addon;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Model
|
namespace Milimoe.FunGame.Server.Model
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@ using Milimoe.FunGame.Core.Library.SQLScript.Common;
|
|||||||
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
||||||
using Milimoe.FunGame.Server.Controller;
|
using Milimoe.FunGame.Server.Controller;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Model
|
namespace Milimoe.FunGame.Server.Model
|
||||||
{
|
{
|
||||||
|
@ -4,10 +4,10 @@ using Milimoe.FunGame.Core.Library.Common.Addon;
|
|||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Core.Library.SQLScript.Common;
|
using Milimoe.FunGame.Core.Library.SQLScript.Common;
|
||||||
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.DataUtility;
|
||||||
using Milimoe.FunGame.Server.Utility.DataUtility;
|
using Milimoe.FunGame.Server.Others;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Others
|
namespace Milimoe.FunGame.Server.Services
|
||||||
{
|
{
|
||||||
public class FunGameSystem
|
public class FunGameSystem
|
||||||
{
|
{
|
||||||
@ -30,7 +30,7 @@ namespace Milimoe.FunGame.Server.Others
|
|||||||
string useSQLite = INIHelper.ReadINI("SQLite", "UseSQLite").Trim();
|
string useSQLite = INIHelper.ReadINI("SQLite", "UseSQLite").Trim();
|
||||||
|
|
||||||
// 根据配置文件选择适当的 SQLHelper 实例
|
// 根据配置文件选择适当的 SQLHelper 实例
|
||||||
SQLHelper? sqlHelper = useMySQL == "true" ? new MySQLHelper() : (useSQLite == "true" ? new SQLiteHelper() : null);
|
SQLHelper? sqlHelper = useMySQL == "true" ? new MySQLHelper() : useSQLite == "true" ? new SQLiteHelper() : null;
|
||||||
if (sqlHelper != null)
|
if (sqlHelper != null)
|
||||||
{
|
{
|
||||||
Config.SQLMode = sqlHelper.Mode;
|
Config.SQLMode = sqlHelper.Mode;
|
@ -5,7 +5,7 @@ using Milimoe.FunGame.Core.Entity;
|
|||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility
|
namespace Milimoe.FunGame.Server.Services
|
||||||
{
|
{
|
||||||
public class ServerHelper
|
public class ServerHelper
|
||||||
{
|
{
|
@ -2,9 +2,11 @@ using System.Data;
|
|||||||
using Milimoe.FunGame.Core.Api.Transmittal;
|
using Milimoe.FunGame.Core.Api.Transmittal;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Core.Model;
|
using Milimoe.FunGame.Core.Model;
|
||||||
|
using Milimoe.FunGame.Server.Models;
|
||||||
|
using Milimoe.FunGame.Server.Services;
|
||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility.DataUtility
|
namespace Milimoe.FunGame.Server.DataUtility
|
||||||
{
|
{
|
||||||
public class MySQLHelper : SQLHelper
|
public class MySQLHelper : SQLHelper
|
||||||
{
|
{
|
@ -3,8 +3,10 @@ using Microsoft.Data.Sqlite;
|
|||||||
using Milimoe.FunGame.Core.Api.Transmittal;
|
using Milimoe.FunGame.Core.Api.Transmittal;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Core.Model;
|
using Milimoe.FunGame.Core.Model;
|
||||||
|
using Milimoe.FunGame.Server.Models;
|
||||||
|
using Milimoe.FunGame.Server.Services;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility.DataUtility
|
namespace Milimoe.FunGame.Server.DataUtility
|
||||||
{
|
{
|
||||||
public class SQLiteHelper : SQLHelper
|
public class SQLiteHelper : SQLHelper
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Milimoe.FunGame.Core.Api.Utility;
|
using Milimoe.FunGame.Core.Api.Utility;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility
|
namespace Milimoe.FunGame.Server.Services
|
||||||
{
|
{
|
||||||
public class TFA : TwoFactorAuthenticator
|
public class TFA : TwoFactorAuthenticator
|
||||||
{
|
{
|
@ -31,7 +31,7 @@ namespace Milimoe.FunGame.WebAPI.Architecture
|
|||||||
|
|
||||||
public async Task<SocketObject[]> ReceiveAsync()
|
public async Task<SocketObject[]> ReceiveAsync()
|
||||||
{
|
{
|
||||||
await Task.Delay(100);
|
await Task.CompletedTask;
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ namespace Milimoe.FunGame.WebAPI.Architecture
|
|||||||
|
|
||||||
public async Task<SocketResult> SendAsync(SocketMessageType type, params object[] objs)
|
public async Task<SocketResult> SendAsync(SocketMessageType type, params object[] objs)
|
||||||
{
|
{
|
||||||
await Task.Delay(100);
|
await Task.CompletedTask;
|
||||||
return SocketResult.Success;
|
return SocketResult.Success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
75
FunGame.WebAPI/Controllers/AdapterController.cs
Normal file
75
FunGame.WebAPI/Controllers/AdapterController.cs
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
using System.Collections.Concurrent;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
using Milimoe.FunGame.WebAPI.Architecture;
|
||||||
|
using Milimoe.FunGame.WebAPI.Models;
|
||||||
|
|
||||||
|
namespace Milimoe.FunGame.WebAPI.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("[controller]")]
|
||||||
|
[Authorize]
|
||||||
|
public class AdapterController(ILogger<AdapterController> logger) : ControllerBase
|
||||||
|
{
|
||||||
|
public static ConcurrentDictionary<Guid, SocketObject> ResultDatas { get; } = [];
|
||||||
|
|
||||||
|
private readonly ILogger<AdapterController> _logger = logger;
|
||||||
|
|
||||||
|
[HttpPost("{username}")]
|
||||||
|
public async Task<IActionResult> Post(string username, [FromBody] SocketObject obj)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RESTfulAPIListener? apiListener = RESTfulAPIListener.Instance;
|
||||||
|
if (apiListener != null && apiListener.UserList.ContainsKey(username))
|
||||||
|
{
|
||||||
|
RESTfulAPIModel model = (RESTfulAPIModel)apiListener.UserList[username];
|
||||||
|
if (model.RequestID == Guid.Empty)
|
||||||
|
{
|
||||||
|
Guid uid = Guid.NewGuid();
|
||||||
|
model.RequestID = uid;
|
||||||
|
|
||||||
|
int timeoutMilliseconds = 60 * 1000;
|
||||||
|
CancellationTokenSource cts = new(timeoutMilliseconds);
|
||||||
|
cts.Token.Register(() =>
|
||||||
|
{
|
||||||
|
if (model.RequestID == uid)
|
||||||
|
{
|
||||||
|
model.RequestID = Guid.Empty;
|
||||||
|
_logger.LogWarning("请求 {uid} 超时,已释放 RequestID。", uid);
|
||||||
|
}
|
||||||
|
cts.Dispose();
|
||||||
|
});
|
||||||
|
|
||||||
|
await model.SocketMessageHandler(model.Socket, obj);
|
||||||
|
|
||||||
|
cts.Cancel();
|
||||||
|
cts.Dispose();
|
||||||
|
model.RequestID = Guid.Empty;
|
||||||
|
|
||||||
|
if (ResultDatas.TryGetValue(uid, out SocketObject response))
|
||||||
|
{
|
||||||
|
return Ok(response);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return BadRequest("没有任何数据返回。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Ok(new SocketObject(SocketMessageType.System, model.Token, "请求未执行完毕,请等待!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BadRequest("没有任何数据返回。");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError("Error: {e}", e);
|
||||||
|
return StatusCode(500, "服务器内部错误。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
48
FunGame.WebAPI/Controllers/DataRequestController.cs
Normal file
48
FunGame.WebAPI/Controllers/DataRequestController.cs
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
using System.Collections.Concurrent;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
|
using Milimoe.FunGame.WebAPI.Architecture;
|
||||||
|
using Milimoe.FunGame.WebAPI.Models;
|
||||||
|
|
||||||
|
namespace Milimoe.FunGame.WebAPI.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("[controller]")]
|
||||||
|
[Authorize]
|
||||||
|
public class DataRequestController(ILogger<DataRequestController> logger) : ControllerBase
|
||||||
|
{
|
||||||
|
public static ConcurrentDictionary<Guid, SocketObject> ResultDatas { get; } = [];
|
||||||
|
|
||||||
|
private readonly ILogger<DataRequestController> _logger = logger;
|
||||||
|
|
||||||
|
[HttpPost("{username}")]
|
||||||
|
public async Task<IActionResult> Post(string username, [FromBody] PayloadModel<DataRequestType> payload)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RESTfulAPIListener? apiListener = RESTfulAPIListener.Instance;
|
||||||
|
if (apiListener != null && apiListener.UserList.ContainsKey(username))
|
||||||
|
{
|
||||||
|
RESTfulAPIModel model = (RESTfulAPIModel)apiListener.UserList[username];
|
||||||
|
if (model.RequestID == Guid.Empty)
|
||||||
|
{
|
||||||
|
await Task.CompletedTask;
|
||||||
|
return Ok(payload);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Ok(new SocketObject(SocketMessageType.System, model.Token, "请求未执行完毕,请等待!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BadRequest("没有任何数据返回。");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError("Error: {e}", e);
|
||||||
|
return StatusCode(500, "服务器内部错误。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,57 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Milimoe.FunGame.Core.Library.Common.Network;
|
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
|
||||||
using Milimoe.FunGame.WebAPI.Architecture;
|
|
||||||
using Milimoe.FunGame.WebAPI.Models;
|
|
||||||
|
|
||||||
namespace Milimoe.FunGame.WebAPI.Controllers
|
|
||||||
{
|
|
||||||
[ApiController]
|
|
||||||
[Route("[controller]")]
|
|
||||||
[Authorize]
|
|
||||||
public class PostDataController(ILogger<PostDataController> logger) : ControllerBase
|
|
||||||
{
|
|
||||||
public static Dictionary<Guid, SocketObject> ResultDatas { get; } = [];
|
|
||||||
|
|
||||||
private readonly ILogger<PostDataController> _logger = logger;
|
|
||||||
|
|
||||||
[HttpPost("{username}", Name = "username")]
|
|
||||||
public async Task<IActionResult> Post(string username, [FromBody] SocketObject obj)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
RESTfulAPIListener? apiListener = RESTfulAPIListener.Instance;
|
|
||||||
if (apiListener != null && apiListener.UserList.ContainsKey(username))
|
|
||||||
{
|
|
||||||
RESTfulAPIModel model = (RESTfulAPIModel)apiListener.UserList[username];
|
|
||||||
if (model.LastRequestID == Guid.Empty)
|
|
||||||
{
|
|
||||||
Guid uid = Guid.NewGuid();
|
|
||||||
model.LastRequestID = uid;
|
|
||||||
await model.SocketMessageHandler(model.Socket, obj);
|
|
||||||
model.LastRequestID = Guid.Empty;
|
|
||||||
if (ResultDatas.TryGetValue(uid, out SocketObject list))
|
|
||||||
{
|
|
||||||
return Ok(list);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return BadRequest("没有任何数据返回");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Ok(new SocketObject(SocketMessageType.System, model.Token, "请求未执行完毕,请等待!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return BadRequest("没有任何数据返回");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "服务器内部错误");
|
|
||||||
return StatusCode(500, "服务器内部错误");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +1,11 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Milimoe.FunGame.Core.Api.Utility;
|
using Milimoe.FunGame.Core.Api.Utility;
|
||||||
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
||||||
|
using Milimoe.FunGame.Server.Controller;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
using Milimoe.FunGame.WebAPI.Architecture;
|
using Milimoe.FunGame.WebAPI.Architecture;
|
||||||
using Milimoe.FunGame.WebAPI.Models;
|
using Milimoe.FunGame.WebAPI.Models;
|
||||||
using Milimoe.FunGame.WebAPI.Services;
|
using Milimoe.FunGame.WebAPI.Services;
|
||||||
@ -12,30 +14,68 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
|||||||
{
|
{
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("[controller]")]
|
[Route("[controller]")]
|
||||||
public class UserController(JWTService jwtTokenService) : ControllerBase
|
public class UserController(JWTService jwtTokenService, ILogger<AdapterController> logger) : ControllerBase
|
||||||
{
|
{
|
||||||
|
private readonly ILogger<AdapterController> _logger = logger;
|
||||||
|
|
||||||
|
[HttpPost("reg")]
|
||||||
|
public IActionResult Reg([FromBody] RegDTO dto)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string clientIP = HttpContext.Connection.RemoteIpAddress?.ToString() + ":" + HttpContext.Connection.RemotePort;
|
||||||
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientIP) + " 通过 RESTful API 注册账号 . . .", InvokeMessageType.Core);
|
||||||
|
|
||||||
|
string username = dto.Username;
|
||||||
|
string password = dto.Password;
|
||||||
|
string email = dto.Email;
|
||||||
|
string verifycode = dto.VerifyCode;
|
||||||
|
|
||||||
|
(string msg, RegInvokeType type, bool success) = DataRequestController<RESTfulAPI>.Reg(username, password, email, verifycode, clientIP);
|
||||||
|
|
||||||
|
return Ok(new PayloadModel<DataRequestType>()
|
||||||
|
{
|
||||||
|
RequestType = DataRequestType.Reg_Reg,
|
||||||
|
StatusCode = 200,
|
||||||
|
Message = msg,
|
||||||
|
Data = new()
|
||||||
|
{
|
||||||
|
{ "success", success },
|
||||||
|
{ "type", type }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError("Error: {e}", e);
|
||||||
|
}
|
||||||
|
return BadRequest("服务器暂时无法处理注册请求。");
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("login")]
|
[HttpPost("login")]
|
||||||
public async Task<IActionResult> Login([FromBody] LoginModel loginModel)
|
public async Task<IActionResult> Login([FromBody] LoginDTO dto)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string msg = "用户名或密码不正确。";
|
string msg = "用户名或密码不正确。";
|
||||||
string clientip = HttpContext.Connection.RemoteIpAddress?.ToString() + ":" + HttpContext.Connection.RemotePort;
|
string clientIP = HttpContext.Connection.RemoteIpAddress?.ToString() + ":" + HttpContext.Connection.RemotePort;
|
||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 通过 RESTful API 连接至服务器,正在登录 . . .", Core.Library.Constant.InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientIP) + " 通过 RESTful API 连接至服务器,正在登录 . . .", InvokeMessageType.Core);
|
||||||
string username = loginModel.Username;
|
string username = dto.Username;
|
||||||
string password = loginModel.Password;
|
string password = dto.Password;
|
||||||
RESTfulAPIListener? apiListener = RESTfulAPIListener.Instance;
|
RESTfulAPIListener? apiListener = RESTfulAPIListener.Instance;
|
||||||
if (apiListener != null)
|
if (apiListener != null)
|
||||||
{
|
{
|
||||||
// 移除旧模型
|
// 移除旧模型
|
||||||
if (apiListener.UserList.ContainsKey(username))
|
if (apiListener.UserList.ContainsKey(username))
|
||||||
{
|
{
|
||||||
await apiListener.UserList[username].Send(Core.Library.Constant.SocketMessageType.Disconnect);
|
await apiListener.UserList[username].Send(SocketMessageType.Disconnect);
|
||||||
}
|
}
|
||||||
// 创建新模型
|
// 创建新模型
|
||||||
if (!apiListener.UserList.ContainsKey(username))
|
if (!apiListener.UserList.ContainsKey(username))
|
||||||
{
|
{
|
||||||
Config.ConnectingPlayerCount++;
|
Config.ConnectingPlayerCount++;
|
||||||
RESTfulAPIModel model = new(apiListener, clientip);
|
RESTfulAPIModel model = new(apiListener, clientIP);
|
||||||
model.SetClientName(clientip);
|
model.SetClientName(clientIP);
|
||||||
// 创建User对象
|
// 创建User对象
|
||||||
if (model.SQLHelper != null)
|
if (model.SQLHelper != null)
|
||||||
{
|
{
|
||||||
@ -55,20 +95,34 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else msg = "服务器暂时无法处理登录请求。";
|
else msg = "服务器暂时无法处理登录请求。";
|
||||||
await model.Send(Core.Library.Constant.SocketMessageType.Disconnect);
|
await model.Send(SocketMessageType.Disconnect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Config.ConnectingPlayerCount--;
|
Config.ConnectingPlayerCount--;
|
||||||
ServerHelper.WriteLine(msg, Core.Library.Constant.InvokeMessageType.Core);
|
ServerHelper.WriteLine(msg, InvokeMessageType.Core);
|
||||||
return Unauthorized(msg);
|
return Unauthorized(msg);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError("Error: {e}", e);
|
||||||
|
}
|
||||||
|
return BadRequest("服务器暂时无法处理登录请求。");
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("refresh")]
|
[HttpPost("refresh")]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
public IActionResult Refresh([FromBody] LoginModel request)
|
public IActionResult Refresh([FromBody] LoginDTO dto)
|
||||||
{
|
{
|
||||||
return Ok(jwtTokenService.GenerateToken(request.Username));
|
try
|
||||||
|
{
|
||||||
|
return Ok(jwtTokenService.GenerateToken(dto.Username));
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError("Error: {e}", e);
|
||||||
|
}
|
||||||
|
return BadRequest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.1" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2" />
|
||||||
<PackageReference Include="Scalar.AspNetCore" Version="2.0.1" />
|
<PackageReference Include="Scalar.AspNetCore" Version="2.0.26" />
|
||||||
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
<PackageReference Include="System.Text.Json" Version="9.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
16
FunGame.WebAPI/Models/DTOs.cs
Normal file
16
FunGame.WebAPI/Models/DTOs.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
namespace Milimoe.FunGame.WebAPI.Models
|
||||||
|
{
|
||||||
|
public class LoginDTO
|
||||||
|
{
|
||||||
|
public string Username { get; set; } = "";
|
||||||
|
public string Password { get; set; } = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RegDTO
|
||||||
|
{
|
||||||
|
public string Username { get; set; } = "";
|
||||||
|
public string Password { get; set; } = "";
|
||||||
|
public string Email { get; set; } = "";
|
||||||
|
public string VerifyCode { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +0,0 @@
|
|||||||
namespace Milimoe.FunGame.WebAPI.Models
|
|
||||||
{
|
|
||||||
public class LoginModel(string username, string password)
|
|
||||||
{
|
|
||||||
public string Username { get; set; } = username;
|
|
||||||
public string Password { get; set; } = password;
|
|
||||||
}
|
|
||||||
}
|
|
30
FunGame.WebAPI/Models/PayloadModel.cs
Normal file
30
FunGame.WebAPI/Models/PayloadModel.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
namespace Milimoe.FunGame.WebAPI.Models
|
||||||
|
{
|
||||||
|
public class PayloadModel<T> where T : struct, Enum
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 请求类型
|
||||||
|
/// </summary>
|
||||||
|
public T RequestType { get; set; } = default;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 状态码
|
||||||
|
/// </summary>
|
||||||
|
public int StatusCode { get; set; } = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 处理结果
|
||||||
|
/// </summary>
|
||||||
|
public string Message { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 响应时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime Timestamp { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务数据
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, object> Data { get; set; } = [];
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
using Milimoe.FunGame.Core.Library.Common.Network;
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Server.Model;
|
using Milimoe.FunGame.Server.Model;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
using Milimoe.FunGame.WebAPI.Architecture;
|
using Milimoe.FunGame.WebAPI.Architecture;
|
||||||
using Milimoe.FunGame.WebAPI.Controllers;
|
using Milimoe.FunGame.WebAPI.Controllers;
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ namespace Milimoe.FunGame.WebAPI.Models
|
|||||||
{
|
{
|
||||||
public class RESTfulAPIModel(ISocketListener<RESTfulAPI> server, string clientip) : ServerModel<RESTfulAPI>(server, new RESTfulAPI(Guid.NewGuid(), clientip, clientip), false)
|
public class RESTfulAPIModel(ISocketListener<RESTfulAPI> server, string clientip) : ServerModel<RESTfulAPI>(server, new RESTfulAPI(Guid.NewGuid(), clientip, clientip), false)
|
||||||
{
|
{
|
||||||
public Guid LastRequestID { get; set; } = Guid.Empty;
|
public Guid RequestID { get; set; } = Guid.Empty;
|
||||||
public List<SocketObject> ToBeSent { get; set; } = [];
|
public List<SocketObject> ToBeSent { get; set; } = [];
|
||||||
|
|
||||||
public override async Task<bool> Send(SocketMessageType type, params object[] objs)
|
public override async Task<bool> Send(SocketMessageType type, params object[] objs)
|
||||||
@ -24,9 +24,9 @@ namespace Milimoe.FunGame.WebAPI.Models
|
|||||||
if (type != SocketMessageType.HeartBeat)
|
if (type != SocketMessageType.HeartBeat)
|
||||||
{
|
{
|
||||||
SocketObject obj = new(type, Token, objs);
|
SocketObject obj = new(type, Token, objs);
|
||||||
if (LastRequestID != Guid.Empty)
|
if (RequestID != Guid.Empty)
|
||||||
{
|
{
|
||||||
return PostDataController.ResultDatas.TryAdd(LastRequestID, obj);
|
return AdapterController.ResultDatas.TryAdd(RequestID, obj);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -17,7 +17,7 @@ using Milimoe.FunGame.Core.Library.Constant;
|
|||||||
using Milimoe.FunGame.Server.Controller;
|
using Milimoe.FunGame.Server.Controller;
|
||||||
using Milimoe.FunGame.Server.Model;
|
using Milimoe.FunGame.Server.Model;
|
||||||
using Milimoe.FunGame.Server.Others;
|
using Milimoe.FunGame.Server.Others;
|
||||||
using Milimoe.FunGame.Server.Utility;
|
using Milimoe.FunGame.Server.Services;
|
||||||
using Milimoe.FunGame.WebAPI.Architecture;
|
using Milimoe.FunGame.WebAPI.Architecture;
|
||||||
using Milimoe.FunGame.WebAPI.Services;
|
using Milimoe.FunGame.WebAPI.Services;
|
||||||
using Scalar.AspNetCore;
|
using Scalar.AspNetCore;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user