From b5e47900a014ceb27fc0e93af505d511ef1007d2 Mon Sep 17 00:00:00 2001 From: asesidaa <1061472754@qq.com> Date: Mon, 5 Sep 2022 00:52:58 +0800 Subject: [PATCH] Prepare for web ui --- Shared/Shared.projitems | 14 ---------- Shared/Shared.shproj | 11 -------- .../Enums/CrownType.cs | 2 +- .../Enums/DanClearState.cs | 2 +- .../Enums/Difficulty.cs | 2 +- .../Enums/PlayMode.cs | 2 +- .../Enums/ScoreRank.cs | 2 +- .../Models/Responses/DashboardResponse.cs | 6 +++++ SharedProject/Models/User.cs | 8 ++++++ SharedProject/SharedProject.csproj | 13 ++++++++++ TaikoLocalServer.sln | 6 ++++- TaikoLocalServer/Common/Constants.cs | 2 +- .../Common/Utils/FlagCalculator.cs | 2 +- TaikoLocalServer/Context/TaikoDbContext.cs | 2 +- .../Controllers/AmAuth/PowerOnController.cs | 16 +++++++++--- .../Controllers/AmUpdater/MuchaController.cs | 26 ++++++++++++------- .../Controllers/Api/DashboardController.cs | 23 +++++++++++++++- TaikoLocalServer/GlobalUsings.cs | 2 +- TaikoLocalServer/Program.cs | 11 ++++++-- TaikoLocalServer/Settings/UrlSettings.cs | 8 ++++++ TaikoLocalServer/TaikoLocalServer.csproj | 4 +++ TaikoLocalServer/appsettings.json | 5 ++++ 22 files changed, 118 insertions(+), 51 deletions(-) delete mode 100644 Shared/Shared.projitems delete mode 100644 Shared/Shared.shproj rename {TaikoLocalServer/Common => SharedProject}/Enums/CrownType.cs (68%) rename {TaikoLocalServer/Common => SharedProject}/Enums/DanClearState.cs (80%) rename {TaikoLocalServer/Common => SharedProject}/Enums/Difficulty.cs (74%) rename {TaikoLocalServer/Common => SharedProject}/Enums/PlayMode.cs (69%) rename {TaikoLocalServer/Common => SharedProject}/Enums/ScoreRank.cs (73%) create mode 100644 SharedProject/Models/Responses/DashboardResponse.cs create mode 100644 SharedProject/Models/User.cs create mode 100644 SharedProject/SharedProject.csproj create mode 100644 TaikoLocalServer/Settings/UrlSettings.cs diff --git a/Shared/Shared.projitems b/Shared/Shared.projitems deleted file mode 100644 index 7bdad8b..0000000 --- a/Shared/Shared.projitems +++ /dev/null @@ -1,14 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - true - 29FAECCD-4C19-44F3-963F-6535BE962E2E - - - Shared - - - - - \ No newline at end of file diff --git a/Shared/Shared.shproj b/Shared/Shared.shproj deleted file mode 100644 index 933dfad..0000000 --- a/Shared/Shared.shproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - {739247D2-9B9B-45DE-A97F-216E0D97930C} - - - - - - - diff --git a/TaikoLocalServer/Common/Enums/CrownType.cs b/SharedProject/Enums/CrownType.cs similarity index 68% rename from TaikoLocalServer/Common/Enums/CrownType.cs rename to SharedProject/Enums/CrownType.cs index 986cdbf..531579e 100644 --- a/TaikoLocalServer/Common/Enums/CrownType.cs +++ b/SharedProject/Enums/CrownType.cs @@ -1,4 +1,4 @@ -namespace TaikoLocalServer.Common.Enums; +namespace SharedProject.Enums; public enum CrownType { diff --git a/TaikoLocalServer/Common/Enums/DanClearState.cs b/SharedProject/Enums/DanClearState.cs similarity index 80% rename from TaikoLocalServer/Common/Enums/DanClearState.cs rename to SharedProject/Enums/DanClearState.cs index 04ea517..e91dc43 100644 --- a/TaikoLocalServer/Common/Enums/DanClearState.cs +++ b/SharedProject/Enums/DanClearState.cs @@ -1,4 +1,4 @@ -namespace TaikoLocalServer.Common.Enums; +namespace SharedProject.Enums; public enum DanClearState { diff --git a/TaikoLocalServer/Common/Enums/Difficulty.cs b/SharedProject/Enums/Difficulty.cs similarity index 74% rename from TaikoLocalServer/Common/Enums/Difficulty.cs rename to SharedProject/Enums/Difficulty.cs index fdfdb20..8f8fd58 100644 --- a/TaikoLocalServer/Common/Enums/Difficulty.cs +++ b/SharedProject/Enums/Difficulty.cs @@ -1,4 +1,4 @@ -namespace TaikoLocalServer.Common.Enums; +namespace SharedProject.Enums; public enum Difficulty : uint { diff --git a/TaikoLocalServer/Common/Enums/PlayMode.cs b/SharedProject/Enums/PlayMode.cs similarity index 69% rename from TaikoLocalServer/Common/Enums/PlayMode.cs rename to SharedProject/Enums/PlayMode.cs index caaff47..0e90705 100644 --- a/TaikoLocalServer/Common/Enums/PlayMode.cs +++ b/SharedProject/Enums/PlayMode.cs @@ -1,4 +1,4 @@ -namespace TaikoLocalServer.Common.Enums; +namespace SharedProject.Enums; public enum PlayMode { diff --git a/TaikoLocalServer/Common/Enums/ScoreRank.cs b/SharedProject/Enums/ScoreRank.cs similarity index 73% rename from TaikoLocalServer/Common/Enums/ScoreRank.cs rename to SharedProject/Enums/ScoreRank.cs index 2b4cce0..a2b2042 100644 --- a/TaikoLocalServer/Common/Enums/ScoreRank.cs +++ b/SharedProject/Enums/ScoreRank.cs @@ -1,4 +1,4 @@ -namespace TaikoLocalServer.Common.Enums; +namespace SharedProject.Enums; public enum ScoreRank { diff --git a/SharedProject/Models/Responses/DashboardResponse.cs b/SharedProject/Models/Responses/DashboardResponse.cs new file mode 100644 index 0000000..4cd1df3 --- /dev/null +++ b/SharedProject/Models/Responses/DashboardResponse.cs @@ -0,0 +1,6 @@ +namespace SharedProject.Models.Responses; + +public class DashboardResponse +{ + public List Users { get; set; } = new(); +} \ No newline at end of file diff --git a/SharedProject/Models/User.cs b/SharedProject/Models/User.cs new file mode 100644 index 0000000..6633ee7 --- /dev/null +++ b/SharedProject/Models/User.cs @@ -0,0 +1,8 @@ +namespace SharedProject.Models; + +public class User +{ + public string AccessCode { get; set; } = string.Empty; + + public uint Baid { get; set; } +} \ No newline at end of file diff --git a/SharedProject/SharedProject.csproj b/SharedProject/SharedProject.csproj new file mode 100644 index 0000000..4934f24 --- /dev/null +++ b/SharedProject/SharedProject.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/TaikoLocalServer.sln b/TaikoLocalServer.sln index 9488c02..353d155 100644 --- a/TaikoLocalServer.sln +++ b/TaikoLocalServer.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 17.0.32112.339 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TaikoLocalServer", "TaikoLocalServer\TaikoLocalServer.csproj", "{98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Shared", "Shared\Shared.shproj", "{739247D2-9B9B-45DE-A97F-216E0D97930C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedProject", "SharedProject\SharedProject.csproj", "{34BAE5CA-D46B-489B-8617-3CEB2C0C614F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -17,6 +17,10 @@ Global {98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Debug|Any CPU.Build.0 = Debug|Any CPU {98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Release|Any CPU.ActiveCfg = Release|Any CPU {98FDA12C-CD3C-42D0-BEBE-4E809E6E41AC}.Release|Any CPU.Build.0 = Release|Any CPU + {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34BAE5CA-D46B-489B-8617-3CEB2C0C614F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TaikoLocalServer/Common/Constants.cs b/TaikoLocalServer/Common/Constants.cs index f90810e..ca2e896 100644 --- a/TaikoLocalServer/Common/Constants.cs +++ b/TaikoLocalServer/Common/Constants.cs @@ -18,7 +18,7 @@ public static class Constants public const int MIYABI_CORE_RANK_ARRAY_SIZE = MUSIC_ID_MAX + 1; - public const string DB_NAME = "taiko.db3"; + public const string DEFAULT_DB_NAME = "taiko.db3"; public const string MUSIC_ATTRIBUTE_FILE_NAME = "music_attribute.json"; diff --git a/TaikoLocalServer/Common/Utils/FlagCalculator.cs b/TaikoLocalServer/Common/Utils/FlagCalculator.cs index 7b541a7..b967908 100644 --- a/TaikoLocalServer/Common/Utils/FlagCalculator.cs +++ b/TaikoLocalServer/Common/Utils/FlagCalculator.cs @@ -1,7 +1,7 @@ using System.Collections.Specialized; using System.Runtime.InteropServices; -namespace TaikoLocalServer.Common; +namespace TaikoLocalServer.Common.Utils; public static class FlagCalculator { diff --git a/TaikoLocalServer/Context/TaikoDbContext.cs b/TaikoLocalServer/Context/TaikoDbContext.cs index 671cdbb..f6c80cb 100644 --- a/TaikoLocalServer/Context/TaikoDbContext.cs +++ b/TaikoLocalServer/Context/TaikoDbContext.cs @@ -22,7 +22,7 @@ { return; } - var path = Path.Combine(PathHelper.GetDataPath(), Constants.DB_NAME); + var path = Path.Combine(PathHelper.GetDataPath(), Constants.DEFAULT_DB_NAME); optionsBuilder.UseSqlite($"Data Source={path}"); } diff --git a/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs b/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs index 81b8164..2730518 100644 --- a/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs +++ b/TaikoLocalServer/Controllers/AmAuth/PowerOnController.cs @@ -1,10 +1,18 @@ -namespace TaikoLocalServer.Controllers.AmAuth; +using Microsoft.Extensions.Options; +using TaikoLocalServer.Settings; + +namespace TaikoLocalServer.Controllers.AmAuth; [ApiController] [Route("/sys/servlet/PowerOn")] public class PowerOnController : BaseController { - private const string HOST_STARTUP = "vsapi.taiko-p.jp"; + private readonly UrlSettings settings; + + public PowerOnController(IOptions settings) + { + this.settings = settings.Value; + } [HttpPost] public ContentResult PowerOn([FromForm] PowerOnRequest request) @@ -14,8 +22,8 @@ public class PowerOnController : BaseController var response = new Dictionary { {"stat", "1"}, - {"uri", HOST_STARTUP}, - {"host", HOST_STARTUP}, + {"uri", settings.GameUrl}, + {"host", settings.GameUrl}, {"place_id", "JPN0123"}, {"name", "NAMCO"}, {"nickname", "NAMCO"}, diff --git a/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs b/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs index 590b833..38125d2 100644 --- a/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs +++ b/TaikoLocalServer/Controllers/AmUpdater/MuchaController.cs @@ -1,8 +1,16 @@ -namespace TaikoLocalServer.Controllers.AmUpdater; +using Microsoft.Extensions.Options; +using TaikoLocalServer.Settings; + +namespace TaikoLocalServer.Controllers.AmUpdater; public class MuchaController : BaseController { - private const string URL_BASE = "https://v402-front.mucha-prd.nbgi-amnet.jp:10122"; + private readonly UrlSettings settings; + + public MuchaController(IOptions settings) + { + this.settings = settings.Value; + } [HttpPost("/mucha_front/boardauth.do")] @@ -31,12 +39,12 @@ public class MuchaController : BaseController { "AREA_FULL_3", "" }, { "AREA_FULL_3_EN", "" }, { "AUTH_INTERVAL", "86400" }, - { "CHARGE_URL", $"{URL_BASE}/charge/" }, + { "CHARGE_URL", $"{settings.MuchaUrl}/charge/" }, { "CONSUME_TOKEN", "0" }, { "COUNTRY_CD", "JPN" }, { "DONGLE_FLG", "1" }, { "EXPIRATION_DATE", "null" }, - { "FILE_URL", $"{URL_BASE}/file/" }, + { "FILE_URL", $"{settings.MuchaUrl}/file/" }, { "FORCE_BOOT", "0" }, { "PLACE_ID", request.PlaceId ?? "" }, { "PREFECTURE_ID", "14" }, @@ -46,9 +54,9 @@ public class MuchaController : BaseController { "SHOP_NAME_EN", "NAMCO" }, { "SHOP_NICKNAME", "W" }, { "SHOP_NICKNAME_EN", "W" }, - { "URL_1", $"{URL_BASE}/url1/" }, - { "URL_2", $"{URL_BASE}/url2/" }, - { "URL_3", $"{URL_BASE}/url3/" }, + { "URL_1", $"{settings.MuchaUrl}/url1/" }, + { "URL_2", $"{settings.MuchaUrl}/url2/" }, + { "URL_3", $"{settings.MuchaUrl}/url3/" }, { "USE_TOKEN", "0" } }; var formOutput = FormOutputUtil.ToFormOutput(response); @@ -63,10 +71,10 @@ public class MuchaController : BaseController { { "RESULTS", "001" }, { "UPDATE_VER_1", request.GameVersion ?? "S1210JPN08.18" }, - { "UPDATE_URL_1", $"{URL_BASE}/updUrl1/" }, + { "UPDATE_URL_1", $"{settings.MuchaUrl}/updUrl1/" }, { "UPDATE_SIZE_1", "0" }, { "UPDATE_CRC_1", "0000000000000000" }, - { "CHECK_URL_1", $"{URL_BASE}/checkUrl/" }, + { "CHECK_URL_1", $"{settings.MuchaUrl}/checkUrl/" }, { "EXE_VER_1", request.GameVersion ?? "S1210JPN08.18" }, { "INFO_SIZE_1", "0" }, { "COM_SIZE_1", "0" }, diff --git a/TaikoLocalServer/Controllers/Api/DashboardController.cs b/TaikoLocalServer/Controllers/Api/DashboardController.cs index 5280d80..1dddd88 100644 --- a/TaikoLocalServer/Controllers/Api/DashboardController.cs +++ b/TaikoLocalServer/Controllers/Api/DashboardController.cs @@ -1,8 +1,29 @@ -namespace TaikoLocalServer.Controllers.Api; +using SharedProject.Models; +using SharedProject.Models.Responses; +using Swan.Mapping; + +namespace TaikoLocalServer.Controllers.Api; [ApiController] [Route("/api/[controller]")] public class DashboardController : BaseController { + private readonly TaikoDbContext context; + + public DashboardController(TaikoDbContext context) + { + this.context = context; + } + + [HttpGet] + public DashboardResponse GetDashboard() + { + var cards = context.Cards.AsEnumerable(); + var users = cards.Select(card => card.CopyPropertiesToNew()).ToList(); + return new DashboardResponse + { + Users = users + }; + } } \ No newline at end of file diff --git a/TaikoLocalServer/GlobalUsings.cs b/TaikoLocalServer/GlobalUsings.cs index 13e9bfb..e0ed717 100644 --- a/TaikoLocalServer/GlobalUsings.cs +++ b/TaikoLocalServer/GlobalUsings.cs @@ -3,9 +3,9 @@ global using Microsoft.AspNetCore.Mvc; global using Microsoft.EntityFrameworkCore; global using ProtoBuf; global using Swan.Formatters; +global using SharedProject.Enums; global using taiko.game; global using TaikoLocalServer.Common; -global using TaikoLocalServer.Common.Enums; global using TaikoLocalServer.Common.Utils; global using TaikoLocalServer.Context; global using TaikoLocalServer.Entities; diff --git a/TaikoLocalServer/Program.cs b/TaikoLocalServer/Program.cs index a375d74..4116e29 100644 --- a/TaikoLocalServer/Program.cs +++ b/TaikoLocalServer/Program.cs @@ -2,6 +2,7 @@ using System.Security.Authentication; using Microsoft.AspNetCore.HttpLogging; using Microsoft.AspNetCore.HttpOverrides; using TaikoLocalServer.Middlewares; +using TaikoLocalServer.Settings; var builder = WebApplication.CreateBuilder(args); // Manually enable tls 1.0 @@ -14,11 +15,17 @@ builder.WebHost.UseKestrel(kestrelOptions => }); // Add services to the container. - +builder.Services.AddOptions(); +builder.Services.Configure(builder.Configuration.GetSection(nameof(UrlSettings))); builder.Services.AddControllers().AddProtoBufNet(); builder.Services.AddDbContext(option => { - var path = Path.Combine(PathHelper.GetDataPath(), Constants.DB_NAME); + var dbName = builder.Configuration["DbFileName"]; + if (string.IsNullOrEmpty(dbName)) + { + dbName = Constants.DEFAULT_DB_NAME; + } + var path = Path.Combine(PathHelper.GetDataPath(), dbName); option.UseSqlite($"Data Source={path}"); }); builder.Services.AddHttpLogging(options => diff --git a/TaikoLocalServer/Settings/UrlSettings.cs b/TaikoLocalServer/Settings/UrlSettings.cs new file mode 100644 index 0000000..d024cda --- /dev/null +++ b/TaikoLocalServer/Settings/UrlSettings.cs @@ -0,0 +1,8 @@ +namespace TaikoLocalServer.Settings; + +public class UrlSettings +{ + public string MuchaUrl { get; set; } = string.Empty; + + public string GameUrl { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/TaikoLocalServer/TaikoLocalServer.csproj b/TaikoLocalServer/TaikoLocalServer.csproj index bcc6b1e..3307e95 100644 --- a/TaikoLocalServer/TaikoLocalServer.csproj +++ b/TaikoLocalServer/TaikoLocalServer.csproj @@ -42,4 +42,8 @@ + + + + diff --git a/TaikoLocalServer/appsettings.json b/TaikoLocalServer/appsettings.json index f990d7c..d54a8f7 100644 --- a/TaikoLocalServer/appsettings.json +++ b/TaikoLocalServer/appsettings.json @@ -1,4 +1,9 @@ { + "UrlSettings": { + "MuchaUrl": "https://v402-front.mucha-prd.nbgi-amnet.jp:10122", + "GameUrl": "vsapi.taiko-p.jp" + }, + "DbFileName" : "taiko.db3", "Logging": { "LogLevel": { "Default": "Information",