diff --git a/FunGame.Server/Models/DataRequestHandler.cs b/FunGame.Server/Controllers/DataRequestController.cs
similarity index 79%
rename from FunGame.Server/Models/DataRequestHandler.cs
rename to FunGame.Server/Controllers/DataRequestController.cs
index 17f82db..da853a9 100644
--- a/FunGame.Server/Models/DataRequestHandler.cs
+++ b/FunGame.Server/Controllers/DataRequestController.cs
@@ -1,27 +1,62 @@
using System.Collections;
+using Milimoe.FunGame.Core.Api.Transmittal;
using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Network;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Library.SQLScript.Common;
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
+using Milimoe.FunGame.Server.Model;
using Milimoe.FunGame.Server.Others;
using Milimoe.FunGame.Server.Utility;
-namespace Milimoe.FunGame.Server.Model
+namespace Milimoe.FunGame.Server.Controllers
{
- public partial class ServerModel
+ public class DataRequestController
{
+ public ServerModel Server { get; }
+ public MySQLHelper SQLHelper => Server.SQLHelper;
+ public MailSender? MailSender => Server.MailSender;
+
+ private string ForgetVerify = "";
+
+ public DataRequestController(ServerModel server)
+ {
+ Server = server;
+ }
+
+ public Hashtable GetResultData(DataRequestType type, Hashtable data)
+ {
+ Hashtable result = new();
+
+ switch (type)
+ {
+ case DataRequestType.UnKnown:
+ break;
+
+ case DataRequestType.Login_GetFindPasswordVerifyCode:
+ ForgetPassword(data, result);
+ break;
+
+ case DataRequestType.Login_UpdatePassword:
+ UpdatePassword(data, result);
+ break;
+ }
+
+ return result;
+ }
+
///
/// 接收并验证找回密码时的验证码
///
///
///
- private void DataRequest_ForgetPassword(Hashtable RequestData, Hashtable ResultData)
+ public void ForgetPassword(Hashtable RequestData, Hashtable ResultData)
{
string msg = "无法找回您的密码,请稍后再试。"; // 返回的验证信息
if (RequestData.Count >= 2)
{
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> ForgetPassword");
+ ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(Server.ClientName, Server.User) + " -> ForgetPassword");
string username = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_Username) ?? "";
string email = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_Email) ?? "";
string verifycode = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_ForgetVerifyCode) ?? "";
@@ -37,7 +72,7 @@ namespace Milimoe.FunGame.Server.Model
DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
if ((DateTime.Now - SendTime).TotalMinutes >= 10)
{
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(Server.ClientName, Server.User) + " 验证码已过期");
msg = "此验证码已过期,请重新找回密码。";
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
}
@@ -84,18 +119,18 @@ namespace Milimoe.FunGame.Server.Model
string[] To = new string[] { email };
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
{
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{ForgetVerify}");
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(Server.ClientName, Server.User) + $" 已向{email}发送验证码:{ForgetVerify}");
msg = "";
}
else
{
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(Server.ClientName, Server.User) + " 无法发送验证码");
ServerHelper.WriteLine(MailSender.ErrorMsg);
}
}
else // 不使用MailSender的情况
{
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(Server.ClientName, Server.User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
msg = "";
}
}
@@ -104,7 +139,7 @@ namespace Milimoe.FunGame.Server.Model
{
// 发送过验证码且验证码没有过期
string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode];
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(Server.ClientName, Server.User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
msg = "";
}
}
@@ -118,17 +153,17 @@ namespace Milimoe.FunGame.Server.Model
///
///
///
- private void DataRequest_UpdatePassword(Hashtable RequestData, Hashtable ResultData)
+ private void UpdatePassword(Hashtable RequestData, Hashtable ResultData)
{
string msg = "无法更新您的密码,请稍后再试。";
if (RequestData.Count >= 2)
{
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> UpdatePassword");
+ ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(Server.ClientName, Server.User) + " -> UpdatePassword");
string username = NetworkUtility.JsonDeserializeFromHashtable(RequestData, UserQuery.Column_Username) ?? "";
string password = NetworkUtility.JsonDeserializeFromHashtable(RequestData, UserQuery.Column_Password) ?? "";
if (username.Trim() != "" && password.Trim() != "")
{
- SQLHelper.Execute(UserQuery.Update_Password(username, password));
+ Server.SQLHelper.Execute(UserQuery.Update_Password(username, password));
if (SQLHelper.Success)
{
// 更新成功返回空值
diff --git a/FunGame.Server/FunGame.Server.csproj b/FunGame.Server/FunGame.Server.csproj
index 51ccca8..838d5d3 100644
--- a/FunGame.Server/FunGame.Server.csproj
+++ b/FunGame.Server/FunGame.Server.csproj
@@ -57,8 +57,4 @@
-
-
-
-
diff --git a/FunGame.Server/Models/ServerModel.cs b/FunGame.Server/Models/ServerModel.cs
index f231ac6..5787d43 100644
--- a/FunGame.Server/Models/ServerModel.cs
+++ b/FunGame.Server/Models/ServerModel.cs
@@ -8,6 +8,7 @@ using Milimoe.FunGame.Core.Library.Common.Network;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Library.SQLScript.Common;
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
+using Milimoe.FunGame.Server.Controllers;
using Milimoe.FunGame.Server.Others;
using Milimoe.FunGame.Server.Utility;
@@ -23,6 +24,8 @@ namespace Milimoe.FunGame.Server.Model
public Task? Task => _Task;
public string ClientName => _ClientName;
public User User => _User;
+ public MySQLHelper SQLHelper { get; }
+ public MailSender? MailSender { get; }
/**
* Private
@@ -35,15 +38,13 @@ namespace Milimoe.FunGame.Server.Model
private Guid CheckLoginKey = Guid.Empty;
private string RegVerify = "";
- private string ForgetVerify = "";
private int FailedTimes = 0; // 超过一定次数断开连接
private string UserName = "";
private DataSet DsUser = new();
private string RoomID = "";
private readonly Guid Token;
private readonly ServerSocket Server;
- private readonly MySQLHelper SQLHelper;
- private readonly MailSender? MailSender;
+ private readonly DataRequestController DataRequestController;
private long LoginTime;
private long LogoutTime;
@@ -55,6 +56,7 @@ namespace Milimoe.FunGame.Server.Model
Token = socket.Token;
SQLHelper = new(this);
MailSender = SmtpHelper.GetMailSender();
+ DataRequestController = new(this);
Config.OnlinePlayersCount++;
GetUsersCount();
}
@@ -467,7 +469,7 @@ namespace Milimoe.FunGame.Server.Model
public bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject)
{
- Hashtable ResultData = new();
+ Hashtable result = new();
DataRequestType type = DataRequestType.UnKnown;
if (SocketObject.Parameters.Length > 0)
@@ -475,33 +477,21 @@ namespace Milimoe.FunGame.Server.Model
try
{
type = SocketObject.GetParam(0);
- Hashtable RequestData = SocketObject.GetParam(1) ?? new();
+ Hashtable data = SocketObject.GetParam(1) ?? new();
SQLHelper.NewTransaction();
- switch (type)
- {
- case DataRequestType.UnKnown:
- break;
-
- case DataRequestType.Login_GetFindPasswordVerifyCode:
- DataRequest_ForgetPassword(RequestData, ResultData);
- break;
-
- case DataRequestType.Login_UpdatePassword:
- DataRequest_UpdatePassword(RequestData, ResultData);
- break;
- }
+ result = DataRequestController.GetResultData(type, data);
SQLHelper.Commit();
}
catch (Exception e)
{
ServerHelper.Error(e);
SQLHelper.Rollback();
- return Send(socket, SocketMessageType.DataRequest, type, ResultData);
+ return Send(socket, SocketMessageType.DataRequest, type, result);
}
}
- return Send(socket, SocketMessageType.DataRequest, type, ResultData);
+ return Send(socket, SocketMessageType.DataRequest, type, result);
}
public bool Send(ClientSocket socket, SocketMessageType type, params object[] objs)