From 46f5f76f81b4b479581e9e70ca60425b7c3ce4d3 Mon Sep 17 00:00:00 2001 From: milimoe Date: Fri, 18 Oct 2024 01:22:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=8D=95=E4=BE=8B=20SQLHelpe?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OshimaCore/Constant/Statics.cs | 9 ++++++ OshimaCore/Controllers/TestController.cs | 37 +++++++++++++++++++++++- OshimaCore/OshimaWebAPI.cs | 2 ++ OshimaCore/Utils/FunGameUtil.cs | 1 + OshimaServers/FastAutoServer.cs | 1 + 5 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 OshimaCore/Constant/Statics.cs diff --git a/OshimaCore/Constant/Statics.cs b/OshimaCore/Constant/Statics.cs new file mode 100644 index 0000000..d47f004 --- /dev/null +++ b/OshimaCore/Constant/Statics.cs @@ -0,0 +1,9 @@ +using Milimoe.FunGame.Core.Library.Common.Addon; + +namespace Oshima.Core.Constant +{ + public class Statics + { + public static WebAPIPlugin? RunningPlugin { get; set; } = null; + } +} diff --git a/OshimaCore/Controllers/TestController.cs b/OshimaCore/Controllers/TestController.cs index a3c31e4..3e04335 100644 --- a/OshimaCore/Controllers/TestController.cs +++ b/OshimaCore/Controllers/TestController.cs @@ -1,6 +1,10 @@ -using Microsoft.AspNetCore.Mvc; +using System.Globalization; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; +using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Library.Exception; +using Oshima.Core.Constant; namespace Oshima.Core.Controllers { @@ -15,5 +19,36 @@ namespace Oshima.Core.Controllers { return msg.Encrypt(key); } + + [HttpGet("getlastlogintime")] + public string GetLastLoginTime() + { + if (Statics.RunningPlugin != null) + { + try + { + SQLHelper? sql = Statics.RunningPlugin.SQLHelper; + if (sql != null) + { + sql.ExecuteDataSet("Select Max(LoginTime) LastTime From ServerLoginLogs"); + if (sql.Success && DateTime.TryParse(sql.DataSet.Tables[0].Rows[0]["LastTime"].ToString(), out DateTime date)) + { + string month = date.ToString("MMM", CultureInfo.InvariantCulture); + int day = date.Day; + string time = date.ToString("HH:mm:ss", CultureInfo.InvariantCulture); + + string msg = "服务器最后启动时间:" + $"{month}. {day}, {date.Year} {time}"; + return NetworkUtility.JsonSerialize(msg); + } + } + } + catch (Exception e) + { + Statics.RunningPlugin.Controller?.Error(e); + return NetworkUtility.JsonSerialize("无法调用此接口。原因:\r\n" + e.GetErrorInfo()); + } + } + return NetworkUtility.JsonSerialize("无法调用此接口。原因:与 SQL 服务器通信失败。"); + } } } diff --git a/OshimaCore/OshimaWebAPI.cs b/OshimaCore/OshimaWebAPI.cs index 0963d3c..a0bdad2 100644 --- a/OshimaCore/OshimaWebAPI.cs +++ b/OshimaCore/OshimaWebAPI.cs @@ -1,5 +1,6 @@ using Milimoe.FunGame.Core.Library.Common.Addon; using Oshima.Core.Configs; +using Oshima.Core.Constant; using Oshima.Core.Utils; using Oshima.FunGame.OshimaModules; @@ -27,6 +28,7 @@ namespace Oshima.Core.WebAPI public override void AfterLoad(params object[] objs) { + Statics.RunningPlugin = this; GeneralSettings.LoadSetting(); GeneralSettings.SaveConfig(); QQOpenID.LoadConfig(); diff --git a/OshimaCore/Utils/FunGameUtil.cs b/OshimaCore/Utils/FunGameUtil.cs index a197495..c73b1be 100644 --- a/OshimaCore/Utils/FunGameUtil.cs +++ b/OshimaCore/Utils/FunGameUtil.cs @@ -2,6 +2,7 @@ using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Model; using Oshima.FunGame.OshimaModules.Characters; using Oshima.FunGame.OshimaModules.Items; using Oshima.FunGame.OshimaModules.Skills; diff --git a/OshimaServers/FastAutoServer.cs b/OshimaServers/FastAutoServer.cs index ae4dc99..3950893 100644 --- a/OshimaServers/FastAutoServer.cs +++ b/OshimaServers/FastAutoServer.cs @@ -5,6 +5,7 @@ using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Interface.Base; using Milimoe.FunGame.Core.Library.Common.Addon; using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Model; using Oshima.FunGame.OshimaModules; using Oshima.FunGame.OshimaModules.Items; using Oshima.FunGame.OshimaModules.Skills;