From 47d29ced5e44830282bb122a50c2f4c9f9245150 Mon Sep 17 00:00:00 2001 From: milimoe Date: Thu, 27 Mar 2025 01:32:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/DataUtility/MySQLHelper.cs | 4 +-- .../Services/DataUtility/SQLiteHelper.cs | 16 ++++++++++- FunGame.Server/Services/FunGameSystem.cs | 28 +++++++++++++++++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/FunGame.Server/Services/DataUtility/MySQLHelper.cs b/FunGame.Server/Services/DataUtility/MySQLHelper.cs index 851c4b6..54efb97 100644 --- a/FunGame.Server/Services/DataUtility/MySQLHelper.cs +++ b/FunGame.Server/Services/DataUtility/MySQLHelper.cs @@ -194,8 +194,8 @@ namespace Milimoe.FunGame.Server.Services.DataUtility { try { - OpenConnection(); - return true; + ExecuteDataSet(Core.Library.SQLScript.Common.Configs.Select_GetConfig(this, "Initialization")); + return Success; } catch (Exception e) { diff --git a/FunGame.Server/Services/DataUtility/SQLiteHelper.cs b/FunGame.Server/Services/DataUtility/SQLiteHelper.cs index ac16352..57cce4f 100644 --- a/FunGame.Server/Services/DataUtility/SQLiteHelper.cs +++ b/FunGame.Server/Services/DataUtility/SQLiteHelper.cs @@ -245,7 +245,21 @@ namespace Milimoe.FunGame.Server.Services.DataUtility /// public override bool DatabaseExists() { - return File.Exists(ServerInfo.SQLServerDataBase); + try + { + ExecuteDataSet(Core.Library.SQLScript.Common.Configs.Select_GetConfig(this, "Initialization")); + return Success; + } + catch (Exception e) + { + ServerHelper.Error(e); + _result = SQLResult.Fail; + return false; + } + finally + { + Close(); + } } private bool _isDisposed = false; diff --git a/FunGame.Server/Services/FunGameSystem.cs b/FunGame.Server/Services/FunGameSystem.cs index b4bef6b..4b01e45 100644 --- a/FunGame.Server/Services/FunGameSystem.cs +++ b/FunGame.Server/Services/FunGameSystem.cs @@ -42,6 +42,11 @@ namespace Milimoe.FunGame.Server.Services /// 服务器配置 /// public static PluginConfig UserKeys { get; set; } = new("system", "user_keys"); + + /// + /// 服务器配置 + /// + public static PluginConfig SQLConfig { get; set; } = new("system", "sqlconfig"); /// /// 默认的 Web API Token ID,在首次初始化数据库时生成一个 Secret Key @@ -317,7 +322,7 @@ namespace Milimoe.FunGame.Server.Services sqlHelper.ExecuteDataSet(ApiTokens.Select_GetAPIToken(sqlHelper, token)); if (sqlHelper.Success) { - sqlHelper.Execute(ApiTokens.Update_GetAPIToken(sqlHelper, token, key, reference1, reference2)); + sqlHelper.Execute(ApiTokens.Update_APIToken(sqlHelper, token, key, reference1, reference2)); } else { @@ -337,9 +342,10 @@ namespace Milimoe.FunGame.Server.Services public static void AfterCreateSQLService(SQLHelper sqlHelper) { Config.SQLMode = sqlHelper.Mode; - if (!sqlHelper.DatabaseExists()) + ServerHelper.WriteLine("正在检查数据库 . . .", InvokeMessageType.Core); + if (!DatabaseExists() && !sqlHelper.DatabaseExists()) { - ServerHelper.WriteLine("正在初始化数据库 . . .", InvokeMessageType.Core); + ServerHelper.WriteLine("数据库检查失败,正在初始化数据库 . . .", InvokeMessageType.Core); if (sqlHelper is SQLiteHelper sqliteHelper) { sqliteHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame_sqlite.sql"); @@ -349,12 +355,28 @@ namespace Milimoe.FunGame.Server.Services mysqlHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame.sql"); } SetAPISecretKey(FunGameWebAPITokenID, sqlHelper: sqlHelper); + sqlHelper.Execute(Configs.Insert_Config(sqlHelper, "Initialization", FunGameInfo.FunGame_Version, "SQL Service Installed.")); + SQLConfig.Clear(); + SQLConfig.Add("Initialized", true); + SQLConfig.SaveConfig(); + ServerHelper.WriteLine("数据库初始化完毕!", InvokeMessageType.Core); } + else ServerHelper.WriteLine("数据库检查通过!", InvokeMessageType.Core); ServerLogin(sqlHelper); ClearRoomList(sqlHelper); sqlHelper.Dispose(); } + public static bool DatabaseExists() + { + SQLConfig.LoadConfig(); + if (SQLConfig.TryGetValue("Initialized", out object? value) && value is bool initialized) + { + return initialized; + } + return false; + } + /// /// 关闭服务器要做的事 ///