mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-04-22 03:59:36 +08:00
添加DataRequestController
This commit is contained in:
parent
49c2f9e065
commit
d84e84d405
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 接收并验证找回密码时的验证码
|
||||
/// </summary>
|
||||
/// <param name="RequestData"></param>
|
||||
/// <param name="ResultData"></param>
|
||||
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<string>(RequestData, ForgetVerifyCodes.Column_Username) ?? "";
|
||||
string email = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, ForgetVerifyCodes.Column_Email) ?? "";
|
||||
string verifycode = NetworkUtility.JsonDeserializeFromHashtable<string>(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
|
||||
/// </summary>
|
||||
/// <param name="RequestData"></param>
|
||||
/// <param name="ResultData"></param>
|
||||
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<string>(RequestData, UserQuery.Column_Username) ?? "";
|
||||
string password = NetworkUtility.JsonDeserializeFromHashtable<string>(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)
|
||||
{
|
||||
// 更新成功返回空值
|
@ -57,8 +57,4 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -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<DataRequestType>(0);
|
||||
Hashtable RequestData = SocketObject.GetParam<Hashtable>(1) ?? new();
|
||||
Hashtable data = SocketObject.GetParam<Hashtable>(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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user