diff --git a/FunGame.Server/Controllers/Authenticator.cs b/FunGame.Server/Controllers/Authenticator.cs index fc8f3a9..d50c660 100644 --- a/FunGame.Server/Controllers/Authenticator.cs +++ b/FunGame.Server/Controllers/Authenticator.cs @@ -1,17 +1,13 @@ using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Library.Constant; -using Milimoe.FunGame.Core.Library.SQLScript.Entity; using Milimoe.FunGame.Server.Model; -using Milimoe.FunGame.Server.Others; -using Milimoe.FunGame.Server.Utility; -using TFA = Milimoe.FunGame.Server.Utility.TFA; namespace Milimoe.FunGame.Server.Controllers { public class Authenticator : Core.Library.Common.Architecture.Authenticator { - public TFA Login2FA = new(); + public TwoFactorAuthenticator Login2FA = new(); private readonly ServerModel Server; private readonly SQLHelper SQLHelper; @@ -30,42 +26,6 @@ namespace Milimoe.FunGame.Server.Controllers { // 添加2FA二次验证等 string username = (string)args[0]; - string code = Login2FA.GetTFACode(username); - if (MailSender != null) - { - // 获取此账号的邮箱 - string email = ""; - SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(username)); - if (SQLHelper.Success && SQLHelper.DataSet.Tables[0].Rows.Count > 0) - { - email = Convert.ToString(SQLHelper.DataSet.Tables[0].Rows[0][UserQuery.Column_Email]) ?? ""; - } - // 发送验证码 - if (email != "") - { - string ServerName = Config.ServerName; - string Subject = $"[{ServerName}] FunGame 双重认证"; - string Body = $"亲爱的 {username},
您正在登录[{ServerName}],为了保证安全性,需要进行邮箱验证,您的验证码是 {code} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}"; - string[] To = new string[] { email }; - if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success) - { - ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{code}"); - } - else - { - ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码"); - ServerHelper.WriteLine(MailSender.ErrorMsg); - } - } - else - { - ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{code},请服务器管理员告知此用户"); - } - } - else // 不使用MailSender的情况 - { - ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{code},请服务器管理员告知此用户"); - } } return true; } @@ -76,9 +36,9 @@ namespace Milimoe.FunGame.Server.Controllers return true; } - public bool Check2FA(string username, string code, out string msg) + public bool Check2FA(string username, string code) { - return Login2FA.Authenticate(username, code, out msg); + return Login2FA.Authenticate(username, code); } } } diff --git a/FunGame.Server/Controllers/DataRequestController.cs b/FunGame.Server/Controllers/DataRequestController.cs index ebc796b..7be3a3b 100644 --- a/FunGame.Server/Controllers/DataRequestController.cs +++ b/FunGame.Server/Controllers/DataRequestController.cs @@ -17,7 +17,7 @@ namespace Milimoe.FunGame.Server.Controller public class DataRequestController { public ServerModel Server { get; } - public MySQLHelper SQLHelper => Server.SQLHelper; + public MySQLHelper SQLHelper => Server.SQLHelper ?? throw new MySQLConfigException(); public MailSender? MailSender => Server.MailSender; public Authenticator Authenticator { get; } public DataRequestType LastRequest => _LastRequest; @@ -41,11 +41,11 @@ namespace Milimoe.FunGame.Server.Controller { case DataRequestType.UnKnown: break; - + case DataRequestType.RunTime_Logout: LogOut(data, result); break; - + case DataRequestType.Main_GetNotice: GetServerNotice(result); break; @@ -57,18 +57,19 @@ namespace Milimoe.FunGame.Server.Controller case DataRequestType.Main_UpdateRoom: UpdateRoom(result); break; - + case DataRequestType.Main_IntoRoom: IntoRoom(data, result); break; - + case DataRequestType.Main_QuitRoom: QuitRoom(data, result); break; - + case DataRequestType.Main_MatchRoom: + MatchRoom(data, result); break; - + case DataRequestType.Main_Chat: Chat(data); break; @@ -76,11 +77,11 @@ namespace Milimoe.FunGame.Server.Controller case DataRequestType.Reg_GetRegVerifyCode: Reg(data, result); break; - + case DataRequestType.Login_Login: Login(data, result); break; - + case DataRequestType.Login_GetFindPasswordVerifyCode: ForgetPassword(data, result); break; @@ -180,6 +181,7 @@ namespace Milimoe.FunGame.Server.Controller if (SQLHelper.Result == SQLResult.Success && SQLHelper.DataSet.Tables[0].Rows.Count > 0) { room = Factory.GetRoom(SQLHelper.DataSet.Tables[0].Rows[0], user); + Config.RoomList.AddRoom(room); } } } @@ -194,13 +196,7 @@ namespace Milimoe.FunGame.Server.Controller private void UpdateRoom(Hashtable ResultData) { ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + Server.GetClientName() + " -> UpdateRoom"); - Config.RoomList ??= new(); - Config.RoomList.Clear(); - DataSet DsRoomTemp = SQLHelper.ExecuteDataSet(RoomQuery.Select_Rooms); - DataSet DsUserTemp = SQLHelper.ExecuteDataSet(UserQuery.Select_Users); - List rooms = Factory.GetRooms(DsRoomTemp, DsUserTemp); - Config.RoomList.AddRooms(rooms); // 更新服务器中的房间列表 - ResultData.Add("rooms", rooms); // 传RoomList + ResultData.Add("rooms", Config.RoomList.ListRoom); // 传RoomList } /// @@ -217,7 +213,7 @@ namespace Milimoe.FunGame.Server.Controller string roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; bool isMaster = DataRequest.GetHashtableJsonObject(RequestData, "isMaster"); - if (roomid != "-1") + if (roomid != "-1" && Config.RoomList.IsExist(roomid)) { Config.RoomList.QuitRoom(roomid, Server.User); Room Room = Config.RoomList[roomid] ?? General.HallInstance; @@ -260,7 +256,7 @@ namespace Milimoe.FunGame.Server.Controller } ResultData.Add("result", result); } - + /// /// 进入房间 /// @@ -276,14 +272,22 @@ namespace Milimoe.FunGame.Server.Controller if (roomid != "-1") { - Config.RoomList.IntoRoom(roomid, Server.User); - Server.IntoRoom(roomid); - result = true; + SQLHelper.ExecuteDataSet(RoomQuery.Select_IsExistRoom(roomid)); + if (SQLHelper.Success) + { + Config.RoomList.IntoRoom(roomid, Server.User); + Server.IntoRoom(roomid); + result = true; + } + else + { + Config.RoomList.RemoveRoom(roomid); + } } } ResultData.Add("result", result); } - + /// /// 匹配房间 /// @@ -291,16 +295,25 @@ namespace Milimoe.FunGame.Server.Controller /// private void MatchRoom(Hashtable RequestData, Hashtable ResultData) { - bool result = false; - string roomid = "-1"; + bool result = true; if (RequestData.Count >= 1) { - ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + Server.GetClientName() + " -> MatchRoom"); - string roomtype_string = DataRequest.GetHashtableJsonObject(RequestData, "roomtype") ?? GameMode.All; - User user = DataRequest.GetHashtableJsonObject(RequestData, "master") ?? Factory.GetUser(); + bool iscancel = DataRequest.GetHashtableJsonObject(RequestData, "iscancel"); + if (!iscancel) + { + ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + Server.GetClientName() + " -> MatchRoom : Start"); + string roomtype_string = DataRequest.GetHashtableJsonObject(RequestData, "roomtype") ?? GameMode.All; + User user = DataRequest.GetHashtableJsonObject(RequestData, "matcher") ?? Factory.GetUser(); + Server.StartMatching(roomtype_string, user); + } + else + { + // 取消匹配 + ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + Server.GetClientName() + " -> MatchRoom : Cancel"); + Server.StopMatching(); + } } ResultData.Add("result", result); - ResultData.Add("roomid", roomid); } /// @@ -639,7 +652,7 @@ namespace Milimoe.FunGame.Server.Controller string password = DataRequest.GetHashtableJsonObject(RequestData, UserQuery.Column_Password) ?? ""; if (username.Trim() != "" && password.Trim() != "") { - Server.SQLHelper.Execute(UserQuery.Update_Password(username, password)); + Server.SQLHelper?.Execute(UserQuery.Update_Password(username, password)); if (SQLHelper.Success) { // 更新成功返回空值 diff --git a/FunGame.Server/Main.cs b/FunGame.Server/Main.cs index 90fc639..1af1d25 100644 --- a/FunGame.Server/Main.cs +++ b/FunGame.Server/Main.cs @@ -2,7 +2,6 @@ using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Constant; -using Milimoe.FunGame.Core.Library.SQLScript.Common; using Milimoe.FunGame.Server.Model; using Milimoe.FunGame.Server.Others; using Milimoe.FunGame.Server.Utility; @@ -72,19 +71,14 @@ void StartServer() } ServerHelper.WriteLine("请输入 help 来获取帮助,输入 quit 关闭服务器。"); - // 测试MySQL服务器连接 - if (TestSQLConnection() != SQLResult.Success) - { - Running = false; - throw new SQLQueryException(); - } - + // 创建全局SQLHelper + Config.InitSQLHelper(); + // 创建监听 ListeningSocket = ServerSocket.StartListening(); // 开始监听连接 AddBannedList(ListeningSocket); - Config.RoomList = new(); ServerHelper.WriteLine("Listen -> " + Config.ServerPort); ServerHelper.WriteLine("服务器启动成功,开始监听 . . ."); @@ -206,13 +200,6 @@ bool SendRefuseConnect(ClientSocket socket, string msg) } } -SQLResult TestSQLConnection() -{ - MySQLHelper sql = new(ServerLoginLogs.Insert_ServerLoginLogs(Config.ServerName, Config.ServerKey)); - sql.Execute(); - return sql.Result; -} - void AddBannedList(ServerSocket server) { string[] bans = Config.ServerBannedList.Split(','); diff --git a/FunGame.Server/Models/ConsoleModel.cs b/FunGame.Server/Models/ConsoleModel.cs index 9a75398..ada59b8 100644 --- a/FunGame.Server/Models/ConsoleModel.cs +++ b/FunGame.Server/Models/ConsoleModel.cs @@ -1,5 +1,4 @@ -using Milimoe.FunGame.Core.Interface; -using Milimoe.FunGame.Core.Interface.Base; +using Milimoe.FunGame.Core.Interface.Base; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Server.Others; using Milimoe.FunGame.Server.Utility; diff --git a/FunGame.Server/Models/ServerModel.cs b/FunGame.Server/Models/ServerModel.cs index 84953cb..3f70fed 100644 --- a/FunGame.Server/Models/ServerModel.cs +++ b/FunGame.Server/Models/ServerModel.cs @@ -28,7 +28,7 @@ namespace Milimoe.FunGame.Server.Model get => _Room; set => _Room = value; } - public MySQLHelper SQLHelper { get; } + public MySQLHelper? SQLHelper { get; } public MailSender? MailSender { get; } /** @@ -50,6 +50,7 @@ namespace Milimoe.FunGame.Server.Model private readonly DataRequestController DataRequestController; private long LoginTime; private long LogoutTime; + private bool IsMatching; public ServerModel(ServerSocket server, ClientSocket socket, bool running) { @@ -57,7 +58,7 @@ namespace Milimoe.FunGame.Server.Model _Socket = socket; _Running = running; Token = socket.Token; - SQLHelper = new(this); + if (Config.SQLMode) SQLHelper = new(this); MailSender = SmtpHelper.GetMailSender(); DataRequestController = new(this); } @@ -109,29 +110,34 @@ namespace Milimoe.FunGame.Server.Model public bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject) { - Hashtable result = new(); - DataRequestType type = DataRequestType.UnKnown; - - if (SocketObject.Parameters.Length > 0) + if (SQLHelper != null) { - try - { - type = SocketObject.GetParam(0); - Hashtable data = SocketObject.GetParam(1) ?? new(); + Hashtable result = new(); + DataRequestType type = DataRequestType.UnKnown; - SQLHelper.NewTransaction(); - result = DataRequestController.GetResultData(type, data); - SQLHelper.Commit(); - } - catch (Exception e) + if (SocketObject.Parameters.Length > 0) { - ServerHelper.Error(e); - SQLHelper.Rollback(); - return Send(socket, SocketMessageType.DataRequest, type, result); + try + { + type = SocketObject.GetParam(0); + Hashtable data = SocketObject.GetParam(1) ?? new(); + + SQLHelper.NewTransaction(); + result = DataRequestController.GetResultData(type, data); + SQLHelper.Commit(); + } + catch (Exception e) + { + ServerHelper.Error(e); + SQLHelper.Rollback(); + return Send(socket, SocketMessageType.DataRequest, type, result); + } } + + return Send(socket, SocketMessageType.DataRequest, type, result); } - return Send(socket, SocketMessageType.DataRequest, type, result); + return false; } public bool Send(ClientSocket socket, SocketMessageType type, params object[] objs) @@ -167,7 +173,7 @@ namespace Milimoe.FunGame.Server.Model return false; } } - + public void Start() { Task StreamReader = Task.Factory.StartNew(CreateStreamReader); @@ -195,7 +201,7 @@ namespace Milimoe.FunGame.Server.Model UserName = username; CheckLoginKey = checkloginkey; } - + public void CheckLogin() { // 创建User对象 @@ -207,7 +213,7 @@ namespace Milimoe.FunGame.Server.Model GetUsersCount(); // CheckLogin LoginTime = DateTime.Now.Ticks; - SQLHelper.Execute(UserQuery.Update_CheckLogin(UserName, _Socket?.ClientIP.Split(':')[0] ?? "127.0.0.1")); + SQLHelper?.Execute(UserQuery.Update_CheckLogin(UserName, _Socket?.ClientIP.Split(':')[0] ?? "127.0.0.1")); } public bool IsLoginKey(Guid key) @@ -231,7 +237,7 @@ namespace Milimoe.FunGame.Server.Model serverTask.Send(serverTask.Socket, SocketMessageType.ForceLogout, msg); } } - + public void Kick(string msg, string clientname = "") { // 将客户端踢出服务器 @@ -291,6 +297,90 @@ namespace Milimoe.FunGame.Server.Model return Send(socket, SocketMessageType.HeartBeat, ""); } + public void StartMatching(string roomtype_string, User user) + { + IsMatching = true; + ServerHelper.WriteLine(GetClientName() + " 开始匹配。类型:" + roomtype_string); + TaskUtility.NewTask(async () => + { + if (IsMatching) + { + RoomType roomtype = roomtype_string switch + { + GameMode.Mix => RoomType.Mix, + GameMode.Team => RoomType.Team, + GameMode.MixHasPass => RoomType.MixHasPass, + GameMode.TeamHasPass => RoomType.TeamHasPass, + _ => RoomType.All + }; + Room room = await MatchingRoom(roomtype, user); + if (IsMatching && Socket != null) + { + Send(Socket, SocketMessageType.MatchRoom, room); + } + IsMatching = false; + } + }).OnError(e => + { + ServerHelper.Error(e); + IsMatching = false; + }); + } + + public void StopMatching() + { + if (IsMatching) + { + ServerHelper.WriteLine(GetClientName() + " 取消了匹配。"); + IsMatching = false; + } + } + + private async Task MatchingRoom(RoomType roomtype, User user) + { + int i = 1; + int time = 0; + while (IsMatching) + { + // 先列出符合条件的房间 + List targets = Config.RoomList.ListRoom.Where(r => r.RoomType == roomtype).ToList(); + + // 匹配Elo + foreach (Room room in targets) + { + // 计算房间平均Elo + List players = Config.RoomList.GetPlayerList(room.Roomid); + if (players.Count > 0) + { + decimal avgelo = players.Sum(u => u.Statistics.EloStats?[0] ?? 0M) / players.Count; + decimal userelo = user.Statistics.EloStats?[0] ?? 0M; + if (userelo >= avgelo - (300 * i) && userelo <= avgelo + (300 * i)) + { + return room; + } + } + } + + if (!IsMatching) break; + + // 等待10秒 + await Task.Delay(10 * 1000); + time += 10 * 1000; + if (time >= 50 * 1000) + { + // 50秒后不再匹配Elo,直接返回第一个房间 + if (targets.Count > 0) + { + return targets[0]; + } + break; + } + i++; + } + + return General.HallInstance; + } + private void KickUser() { if (User.Id != 0) @@ -321,8 +411,8 @@ namespace Milimoe.FunGame.Server.Model { LogoutTime = DateTime.Now.Ticks; int TotalMinutes = Convert.ToInt32((new DateTime(LogoutTime) - new DateTime(LoginTime)).TotalMinutes); - SQLHelper.Execute(UserQuery.Update_GameTime(User.Username, TotalMinutes)); - if (SQLHelper.Result == SQLResult.Success) + SQLHelper?.Execute(UserQuery.Update_GameTime(User.Username, TotalMinutes)); + if (SQLHelper?.Result == SQLResult.Success) { ServerHelper.WriteLine("OnlinePlayers: 玩家 " + User.Username + " 本次已游玩" + TotalMinutes + "分钟"); } @@ -375,7 +465,7 @@ namespace Milimoe.FunGame.Server.Model } } } - + private void CreatePeriodicalQuerier() { Thread.Sleep(100); @@ -384,7 +474,7 @@ namespace Milimoe.FunGame.Server.Model { // 每两小时触发一次SQL服务器的心跳查询,防止SQL服务器掉线 Thread.Sleep(2 * 1000 * 3600); - SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName)); + SQLHelper?.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName)); } } @@ -392,7 +482,7 @@ namespace Milimoe.FunGame.Server.Model { try { - SQLHelper.Close(); + SQLHelper?.Close(); MailSender?.Dispose(); Socket?.Close(); _Socket = null; diff --git a/FunGame.Server/Others/Config.cs b/FunGame.Server/Others/Config.cs index 5564bed..18efad3 100644 --- a/FunGame.Server/Others/Config.cs +++ b/FunGame.Server/Others/Config.cs @@ -1,7 +1,14 @@ -using System.Text; -using System.Collections; +using System.Collections; +using System.Data; +using System.Text; +using Milimoe.FunGame.Core.Api.Transmittal; +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Library.SQLScript.Common; +using Milimoe.FunGame.Core.Library.SQLScript.Entity; using Milimoe.FunGame.Core.Model; +using Milimoe.FunGame.Server.Utility; namespace Milimoe.FunGame.Server.Others { @@ -20,9 +27,59 @@ namespace Milimoe.FunGame.Server.Others public static int OnlinePlayerCount { get; set; } = 0; // 已连接的玩家数量 public static int ConnectingPlayerCount { get; set; } = 0; // 正在连接的玩家数量 public static Encoding DefaultEncoding { get; } = General.DefaultEncoding; // 默认传输字符集 - public static FunGameInfo.FunGame FunGameType { get; } = FunGameInfo.FunGame.FunGame_Server; - public static Hashtable OrderList { get; } = new(); - public static RoomList RoomList { get; set; } = new(); + public static FunGameInfo.FunGame FunGameType { get; } = FunGameInfo.FunGame.FunGame_Server; // FunGame Runtime + public static Hashtable OrderList { get; } = new(); // 服务器指令列表 + public static RoomList RoomList { get; } = new(); // 在线房间列表 + public static bool SQLMode { get; set; } = false; // 是否运行数据库模式 + public static SQLHelper SQLHelper + { + // 全局数据库连接器 + get + { + if (_SQLHelper is null) throw new MySQLConfigException(); + return _SQLHelper; + } + } + + private static SQLHelper? _SQLHelper; + + public static void InitSQLHelper() + { + try + { + _SQLHelper = new MySQLHelper("", false); + if (((MySQLHelper)_SQLHelper).Connection != null) + { + SQLMode = true; + ServerLogin(); + InitRoomList(); + } + } + catch (Exception e) + { + ServerHelper.Error(e); + } + } + + public static void ServerLogin() + { + if (SQLMode) + { + SQLHelper.Execute(ServerLoginLogs.Insert_ServerLoginLogs(Config.ServerName, Config.ServerKey)); + } + } + + public static void InitRoomList() + { + if (SQLMode) + { + // 初始化服务器中的房间列表 + DataSet DsRoomTemp = SQLHelper.ExecuteDataSet(RoomQuery.Select_Rooms); + DataSet DsUserTemp = SQLHelper.ExecuteDataSet(UserQuery.Select_Users); + List rooms = Factory.GetRooms(DsRoomTemp, DsUserTemp); + RoomList.AddRooms(rooms); + } + } } public static class OfficialEmail diff --git a/FunGame.Server/Utilities/General.cs b/FunGame.Server/Utilities/General.cs index b345c66..2835430 100644 --- a/FunGame.Server/Utilities/General.cs +++ b/FunGame.Server/Utilities/General.cs @@ -1,8 +1,8 @@ using System.Collections; +using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Server.Others; -using Milimoe.FunGame.Core.Api.Transmittal; namespace Milimoe.FunGame.Server.Utility { @@ -23,7 +23,7 @@ namespace Milimoe.FunGame.Server.Utility { if (msg.Trim() != "") Console.Write("\r" + GetPrefix() + msg + "> "); } - + public static void WriteLine(string msg) { if (msg.Trim() != "") Console.Write("\r" + GetPrefix() + msg + "\n\r> "); diff --git a/FunGame.Server/Utilities/MySQLConnection.cs b/FunGame.Server/Utilities/MySQLConnection.cs index 9f4f1ed..6ca0cec 100644 --- a/FunGame.Server/Utilities/MySQLConnection.cs +++ b/FunGame.Server/Utilities/MySQLConnection.cs @@ -1,6 +1,6 @@ -using MySql.Data.MySqlClient; -using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Model; +using MySql.Data.MySqlClient; namespace Milimoe.FunGame.Server.Utility.DataUtility { diff --git a/FunGame.Server/Utilities/MySQLHelper.cs b/FunGame.Server/Utilities/MySQLHelper.cs index f6843b6..fa1e710 100644 --- a/FunGame.Server/Utilities/MySQLHelper.cs +++ b/FunGame.Server/Utilities/MySQLHelper.cs @@ -1,11 +1,11 @@ using System.Data; -using MySql.Data.MySqlClient; using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Model; -using Milimoe.FunGame.Server.Utility.DataUtility; -using Milimoe.FunGame.Server.Others; using Milimoe.FunGame.Server.Model; +using Milimoe.FunGame.Server.Others; +using Milimoe.FunGame.Server.Utility.DataUtility; +using MySql.Data.MySqlClient; namespace Milimoe.FunGame.Server.Utility { @@ -38,7 +38,6 @@ namespace Milimoe.FunGame.Server.Utility public override int Execute() { // _IsOneTime = true需要手动创建连接和关闭 - if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo); ServerHelper.WriteLine("SQLQuery -> " + Script); _DataSet = new DataSet(); _UpdateRows = MySQLManager.Execute(this, out _Result); @@ -55,7 +54,6 @@ namespace Milimoe.FunGame.Server.Utility public override int Execute(string Script) { // _IsOneTime = true需要手动创建连接和关闭 - if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo); ServerHelper.WriteLine("SQLQuery -> " + Script); this.Script = Script; _DataSet = new DataSet(); @@ -72,13 +70,12 @@ namespace Milimoe.FunGame.Server.Utility public override DataSet ExecuteDataSet() { // _IsOneTime = true需要手动创建连接和关闭 - if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo); ServerHelper.WriteLine("SQLQuery -> " + Script); _DataSet = MySQLManager.ExecuteDataSet(this, out _Result, out _UpdateRows); if (_IsOneTime) Close(); return DataSet; } - + /// /// 执行指定的命令查询DataSet /// @@ -88,7 +85,6 @@ namespace Milimoe.FunGame.Server.Utility public override DataSet ExecuteDataSet(string Script) { // _IsOneTime = true需要手动创建连接和关闭 - if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo); ServerHelper.WriteLine("SQLQuery -> " + Script); this.Script = Script; _DataSet = MySQLManager.ExecuteDataSet(this, out _Result, out _UpdateRows); @@ -103,7 +99,7 @@ namespace Milimoe.FunGame.Server.Utility { // _IsOneTime = false需要手动调用此方法 _Connection?.Close(); - ServerHelper.WriteLine($"{GetClientName()} 已释放MySQL连接"); + ServerHelper.WriteLine($"{(GetClientName() == string.Empty ? "" : GetClientName())}已释放MySQL连接"); } /// @@ -119,6 +115,7 @@ namespace Milimoe.FunGame.Server.Utility _IsOneTime = IsOneTime; CommandType = type; Parameters = parameters; + _Connection = new MySQLConnection(out _ServerInfo); } /// @@ -150,7 +147,7 @@ namespace Milimoe.FunGame.Server.Utility _Transaction?.Commit(); _Transaction = null; } - + /// /// 回滚事务 /// diff --git a/FunGame.Server/Utilities/MySQLManager.cs b/FunGame.Server/Utilities/MySQLManager.cs index 26119a2..bccbd55 100644 --- a/FunGame.Server/Utilities/MySQLManager.cs +++ b/FunGame.Server/Utilities/MySQLManager.cs @@ -1,6 +1,6 @@ using System.Data; -using MySql.Data.MySqlClient; using Milimoe.FunGame.Core.Library.Constant; +using MySql.Data.MySqlClient; namespace Milimoe.FunGame.Server.Utility { diff --git a/FunGame.Server/Utilities/TFA.cs b/FunGame.Server/Utilities/TFA.cs index d639c86..dae71f3 100644 --- a/FunGame.Server/Utilities/TFA.cs +++ b/FunGame.Server/Utilities/TFA.cs @@ -1,8 +1,8 @@ -using Milimoe.FunGame.Server.Model; +using Milimoe.FunGame.Core.Api.Utility; namespace Milimoe.FunGame.Server.Utility { - public class TFA : Core.Api.Utility.TFA + public class TFA : TwoFactorAuthenticator { public override bool IsAvailable(string username) {