From 67a1d5dc748ab563de79511820fbaf2b93bfb489 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Thu, 13 Oct 2022 21:14:57 +0800 Subject: [PATCH] update to hutao api v2 --- .../Snap.Hutao/Core/Logging/LogEntryQueue.cs | 5 +- .../ConcurrentCancellationTokenSource.cs | 2 +- ...Extensions.cs => BinaryReaderExtension.cs} | 2 +- ...tensions.cs => DateTimeOffsetExtension.cs} | 2 +- .../{EnumExtensions.cs => EnumExtension.cs} | 2 +- ...leExtensions.cs => EnumerableExtension.cs} | 2 +- ...NumberExtensions.cs => NumberExtension.cs} | 2 +- ...ObjectExtensions.cs => ObjectExtension.cs} | 2 +- ...tensions.cs => PackageVersionExtension.cs} | 2 +- .../Model/InterChange/Achievement/UIAFInfo.cs | 2 +- .../Model/InterChange/GachaLog/UIGFInfo.cs | 2 +- .../Service/AvatarInfo/AvatarInfoService.cs | 10 +- .../Common/Announcement/AnnouncementClient.cs | 2 +- .../Snap.Hutao/Web/Hoyolab/PlayerUid.cs | 2 +- .../Hoyolab/Takumi/Binding/BindingClient.cs | 2 +- .../Takumi/GameRecord/GameRecordClient.cs | 2 +- .../Snap.Hutao/Web/Hutao/HutaoClient.cs | 230 ++++-------------- ...rticipation.cs => AvatarAppearanceRank.cs} | 12 +- .../Snap.Hutao/Web/Hutao/Model/AvatarBuild.cs | 15 ++ .../Web/Hutao/Model/AvatarCollocation.cs | 25 ++ .../Web/Hutao/Model/AvatarConstellation.cs | 25 -- ...{Rate{T}.cs => AvatarConstellationInfo.cs} | 13 +- .../Web/Hutao/Model/AvatarReliquaryUsage.cs | 20 -- .../{LevelInfo.cs => AvatarUsageRank.cs} | 12 +- .../Snap.Hutao/Web/Hutao/Model/Item.cs | 39 --- .../Snap.Hutao/Web/Hutao/Model/ItemRate.cs | 33 +++ .../Snap.Hutao/Web/Hutao/Model/Overview.cs | 19 +- .../Hutao/Model/Post/AvatarReliquarySet.cs | 40 --- .../Web/Hutao/Model/Post/AvatarWeapon.cs | 38 --- .../Web/Hutao/Model/Post/DesiredInfo.cs | 31 --- .../Hutao/Model/Post/GenshinItemWrapper.cs | 38 --- .../Web/Hutao/Model/Post/IndexedLevel.cs | 33 --- .../Web/Hutao/Model/Post/PlayerAvatar.cs | 54 ---- .../Web/Hutao/Model/Post/PlayerRecord.cs | 95 -------- .../Model/Post/PlayerSpiralAbyssLevel.cs | 43 ---- .../Web/Hutao/Model/Post/SimpleAvatar.cs | 43 ++++ ...erSpiralAbyssBattle.cs => SimpleBattle.cs} | 22 +- .../Web/Hutao/Model/Post/SimpleFloor.cs | 38 +++ .../Web/Hutao/Model/Post/SimpleLevel.cs | 38 +++ .../Model/Post/{Damage.cs => SimpleRank.cs} | 19 +- .../Web/Hutao/Model/Post/SimpleRecord.cs | 47 ++++ .../Web/Hutao/Model/Post/SimpleSpiralAbyss.cs | 44 ++++ .../Snap.Hutao/Web/Hutao/Model/RankInfo.cs | 22 +- .../Web/Hutao/Model/RankInfoWrapper.cs | 20 -- ...AvatarWeaponUsage.cs => TeamAppearance.cs} | 13 +- .../Web/Hutao/Model/TeamCollocation.cs | 20 -- .../Web/Hutao/Model/TeamCombination.cs | 21 -- .../Web/Hutao/Model/TeamCombination2.cs | 21 -- 48 files changed, 412 insertions(+), 814 deletions(-) rename src/Snap.Hutao/Snap.Hutao/Extension/{BinaryReaderExtensions.cs => BinaryReaderExtension.cs} (92%) rename src/Snap.Hutao/Snap.Hutao/Extension/{DateTimeOffsetExtensions.cs => DateTimeOffsetExtension.cs} (97%) rename src/Snap.Hutao/Snap.Hutao/Extension/{EnumExtensions.cs => EnumExtension.cs} (95%) rename src/Snap.Hutao/Snap.Hutao/Extension/{EnumerableExtensions.cs => EnumerableExtension.cs} (99%) rename src/Snap.Hutao/Snap.Hutao/Extension/{NumberExtensions.cs => NumberExtension.cs} (96%) rename src/Snap.Hutao/Snap.Hutao/Extension/{ObjectExtensions.cs => ObjectExtension.cs} (93%) rename src/Snap.Hutao/Snap.Hutao/Extension/{PackageVersionExtensions.cs => PackageVersionExtension.cs} (92%) rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/{AvatarParticipation.cs => AvatarAppearanceRank.cs} (63%) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarBuild.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarCollocation.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellation.cs rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/{Rate{T}.cs => AvatarConstellationInfo.cs} (50%) delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarReliquaryUsage.cs rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/{LevelInfo.cs => AvatarUsageRank.cs} (64%) delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Item.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/ItemRate.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarReliquarySet.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarWeapon.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/DesiredInfo.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/GenshinItemWrapper.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/IndexedLevel.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerAvatar.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerRecord.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssLevel.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleAvatar.cs rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/{PlayerSpiralAbyssBattle.cs => SimpleBattle.cs} (50%) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleFloor.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleLevel.cs rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/{Damage.cs => SimpleRank.cs} (59%) create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRecord.cs create mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleSpiralAbyss.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfoWrapper.cs rename src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/{AvatarWeaponUsage.cs => TeamAppearance.cs} (52%) delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCollocation.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination.cs delete mode 100644 src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination2.cs diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs index 6f0d84fa..4a232ef4 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs @@ -70,9 +70,8 @@ public sealed class LogEntryQueue : IDisposable logDbContext.Database.Migrate(); } - logDbContext.Logs.RemoveRange(logDbContext.Logs); - logDbContext.SaveChanges(); - + // only raw sql can pass + logDbContext.Database.ExecuteSqlRaw("DELETE FROM logs WHERE Exception IS NULL"); return logDbContext; } diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Threading/ConcurrentCancellationTokenSource.cs b/src/Snap.Hutao/Snap.Hutao/Core/Threading/ConcurrentCancellationTokenSource.cs index 1bb621d1..93924cfb 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Threading/ConcurrentCancellationTokenSource.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Threading/ConcurrentCancellationTokenSource.cs @@ -28,4 +28,4 @@ internal class ConcurrentCancellationTokenSource return waitingItems.GetOrAdd(item, new CancellationTokenSource()).Token; } -} +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtension.cs similarity index 92% rename from src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtension.cs index a5db8569..606477ff 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/BinaryReaderExtension.cs @@ -8,7 +8,7 @@ namespace Snap.Hutao.Extension; /// /// 扩展 /// -public static class BinaryReaderExtensions +public static class BinaryReaderExtension { /// /// 判断是否处于流的结尾 diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtension.cs similarity index 97% rename from src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtension.cs index 6310002b..8c0188a7 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/DateTimeOffsetExtension.cs @@ -6,7 +6,7 @@ namespace Snap.Hutao.Extension; /// /// 扩展 /// -public static class DateTimeOffsetExtensions +public static class DateTimeOffsetExtension { /// /// Converts the current to a that represents the local time. diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/EnumExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/EnumExtension.cs similarity index 95% rename from src/Snap.Hutao/Snap.Hutao/Extension/EnumExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/EnumExtension.cs index 2005005d..4820856a 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/EnumExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/EnumExtension.cs @@ -8,7 +8,7 @@ namespace Snap.Hutao.Extension; /// /// 枚举拓展 /// -public static class EnumExtensions +public static class EnumExtension { /// /// 获取枚举的描述 diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs similarity index 99% rename from src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs index 71b93f70..b869cf5c 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/EnumerableExtension.cs @@ -9,7 +9,7 @@ namespace Snap.Hutao.Extension; /// /// 扩展 /// -public static partial class EnumerableExtensions +public static partial class EnumerableExtension { /// public static double AverageNoThrow(this List source) diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/NumberExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/NumberExtension.cs similarity index 96% rename from src/Snap.Hutao/Snap.Hutao/Extension/NumberExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/NumberExtension.cs index 060e5bdb..8046cb24 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/NumberExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/NumberExtension.cs @@ -6,7 +6,7 @@ namespace Snap.Hutao.Extension; /// /// 数高性能扩展 /// -public static class NumberExtensions +public static class NumberExtension { /// /// 获取从右向左某位上的数字 diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtension.cs similarity index 93% rename from src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtension.cs index be2a03f9..32636345 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/ObjectExtension.cs @@ -6,7 +6,7 @@ namespace Snap.Hutao.Extension; /// /// 对象扩展 /// -public static class ObjectExtensions +public static class ObjectExtension { /// /// 的链式调用扩展 diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtension.cs similarity index 92% rename from src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtensions.cs rename to src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtension.cs index df891413..16a1080d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtensions.cs +++ b/src/Snap.Hutao/Snap.Hutao/Extension/PackageVersionExtension.cs @@ -8,7 +8,7 @@ namespace Snap.Hutao.Extension; /// /// 包版本扩展 /// -public static class PackageVersionExtensions +public static class PackageVersionExtension { /// /// 将包版本转换为版本 diff --git a/src/Snap.Hutao/Snap.Hutao/Model/InterChange/Achievement/UIAFInfo.cs b/src/Snap.Hutao/Snap.Hutao/Model/InterChange/Achievement/UIAFInfo.cs index bbc25a93..40d4afe8 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/InterChange/Achievement/UIAFInfo.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/InterChange/Achievement/UIAFInfo.cs @@ -28,7 +28,7 @@ public class UIAFInfo public DateTimeOffset ExportDateTime { // Hot fix | 1.0.31 | UIAF.Info.ExportTimestamp can be milliseconds - get => DateTimeOffsetExtensions.FromUnixTime(ExportTimestamp, DateTimeOffset.MinValue); + get => DateTimeOffsetExtension.FromUnixTime(ExportTimestamp, DateTimeOffset.MinValue); } /// diff --git a/src/Snap.Hutao/Snap.Hutao/Model/InterChange/GachaLog/UIGFInfo.cs b/src/Snap.Hutao/Snap.Hutao/Model/InterChange/GachaLog/UIGFInfo.cs index 257a12a0..ebf42ee5 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/InterChange/GachaLog/UIGFInfo.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/InterChange/GachaLog/UIGFInfo.cs @@ -34,7 +34,7 @@ public class UIGFInfo /// public DateTimeOffset ExportDateTime { - get => DateTimeOffsetExtensions.FromUnixTime(ExportTimestamp, DateTimeOffset.MinValue); + get => DateTimeOffsetExtension.FromUnixTime(ExportTimestamp, DateTimeOffset.MinValue); } /// diff --git a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/AvatarInfoService.cs b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/AvatarInfoService.cs index 66ef2379..b95e49ea 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/AvatarInfoService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/AvatarInfo/AvatarInfoService.cs @@ -117,6 +117,11 @@ internal class AvatarInfoService : IAvatarInfoService foreach (Web.Enka.Model.AvatarInfo webInfo in webInfos) { + if (webInfo.AvatarId == 10000005 || webInfo.AvatarId == 10000007) + { + continue; + } + Model.Entity.AvatarInfo? entity = dbInfos.SingleOrDefault(i => i.Info.AvatarId == webInfo.AvatarId); if (entity == null) @@ -141,8 +146,9 @@ internal class AvatarInfoService : IAvatarInfoService return appDbContext.AvatarInfos .Where(i => i.Uid == uid) .Select(i => i.Info) - .AsEnumerable() - .OrderByDescending(i => i.AvatarId) + + // .AsEnumerable() + // .OrderByDescending(i => i.AvatarId) .ToList(); } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs index 0735f9fb..e1338428 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Hk4e/Common/Announcement/AnnouncementClient.cs @@ -55,6 +55,6 @@ internal class AnnouncementClient .GetFromJsonAsync>>(ApiEndpoints.AnnContent, jsonSerializerOptions, cancellationToken) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data?.List); + return EnumerableExtension.EmptyIfNull(resp?.Data?.List); } } diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PlayerUid.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PlayerUid.cs index 0c3c162f..28477dff 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PlayerUid.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/PlayerUid.cs @@ -8,7 +8,7 @@ namespace Snap.Hutao.Web.Hoyolab; /// public struct PlayerUid { - private string? region = null; + private string? region = default; /// /// 构造一个新的玩家 Uid 结构 diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Binding/BindingClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Binding/BindingClient.cs index 93ea2e49..8c2c8674 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Binding/BindingClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Binding/BindingClient.cs @@ -45,6 +45,6 @@ internal class BindingClient .TryCatchGetFromJsonAsync>>(ApiEndpoints.UserGameRoles, options, logger, token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data?.List); + return EnumerableExtension.EmptyIfNull(resp?.Data?.List); } } diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/GameRecordClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/GameRecordClient.cs index 36c902b2..4b879eb4 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/GameRecordClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/GameRecord/GameRecordClient.cs @@ -127,7 +127,7 @@ internal class GameRecordClient .TryCatchPostAsJsonAsync>(logger, token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data?.Avatars); + return EnumerableExtension.EmptyIfNull(resp?.Data?.Avatars); } private class CharacterData diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HutaoClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HutaoClient.cs index de392935..00f060c7 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HutaoClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/HutaoClient.cs @@ -1,7 +1,6 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. -using Snap.Hutao.Core.Abstraction; using Snap.Hutao.Core.DependencyInjection.Annotation.HttpClient; using Snap.Hutao.Extension; using Snap.Hutao.Web.Hoyolab; @@ -21,57 +20,25 @@ namespace Snap.Hutao.Web.Hutao; /// // [Injection(InjectAs.Transient)] [HttpClient(HttpClientConfigration.Default)] -internal class HutaoClient : ISupportAsyncInitialization +internal class HutaoClient { - private const string AuthHost = "https://auth.snapgenshin.com"; private const string HutaoAPI = "https://hutao-api.snapgenshin.com"; private readonly HttpClient httpClient; private readonly GameRecordClient gameRecordClient; - private readonly JsonSerializerOptions jsonSerializerOptions; - - private bool isInitialized = false; + private readonly JsonSerializerOptions options; /// /// 构造一个新的胡桃API客户端 /// /// http客户端 /// 游戏记录客户端 - /// json序列化选项 - public HutaoClient( - HttpClient httpClient, - GameRecordClient gameRecordClient, - JsonSerializerOptions jsonSerializerOptions) + /// json序列化选项 + public HutaoClient(HttpClient httpClient, GameRecordClient gameRecordClient, JsonSerializerOptions options) { this.httpClient = httpClient; this.gameRecordClient = gameRecordClient; - this.jsonSerializerOptions = jsonSerializerOptions; - } - - /// - public bool IsInitialized { get => isInitialized; private set => isInitialized = value; } - - /// - public async ValueTask InitializeAsync(CancellationToken token = default) - { - if (!IsInitialized) - { - Auth auth = new( - "08da6c59-da3b-48dd-8cf3-e3935a7f1d4f", - "ox5dwglSXYgenK2YBc8KrAVPoQbIJ4eHfUciE+05WfI="); - - HttpResponseMessage response = await httpClient - .PostAsJsonAsync($"{AuthHost}/Auth/Login", auth, jsonSerializerOptions, token) - .ConfigureAwait(false); - Response? resp = await response.Content - .ReadFromJsonAsync>(jsonSerializerOptions, token) - .ConfigureAwait(false); - - httpClient.DefaultRequestHeaders.Authorization = new("Bearer", Must.NotNull(resp?.Data?.AccessToken!)); - IsInitialized = true; - } - - return true; + this.options = options; } /// @@ -81,15 +48,13 @@ internal class HutaoClient : ISupportAsyncInitialization /// uid /// 取消令牌 /// 当前是否上传了数据 - public async Task CheckPeriodRecordUploadedAsync(PlayerUid uid, CancellationToken token = default) + public async Task CheckRecordUploadedAsync(PlayerUid uid, CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response? resp = await httpClient - .GetFromJsonAsync>($"{HutaoAPI}/Record/CheckRecord/{uid}", token) + Response? resp = await httpClient + .GetFromJsonAsync>($"{HutaoAPI}/Record/Check?uid={uid}", token) .ConfigureAwait(false); - return resp is { Data: not null, Data.PeriodUploaded: true }; + return resp?.Data == true; } /// @@ -99,12 +64,10 @@ internal class HutaoClient : ISupportAsyncInitialization /// uid /// 取消令牌 /// 排行信息 - public async Task GetRankInfoAsync(PlayerUid uid, CancellationToken token = default) + public async Task GetRankAsync(PlayerUid uid, CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response? resp = await httpClient - .GetFromJsonAsync>($"{HutaoAPI}/Record/Rank/{uid}", token) + Response? resp = await httpClient + .GetFromJsonAsync>($"{HutaoAPI}/Record/Rank?uid={uid}", token) .ConfigureAwait(false); return resp?.Data; @@ -118,8 +81,6 @@ internal class HutaoClient : ISupportAsyncInitialization /// 总览信息 public async Task GetOverviewAsync(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - Response? resp = await httpClient .GetFromJsonAsync>($"{HutaoAPI}/Statistics/Overview", token) .ConfigureAwait(false); @@ -129,19 +90,17 @@ internal class HutaoClient : ISupportAsyncInitialization /// /// 异步获取角色出场率 - /// GET /Statistics/AvatarParticipation + /// GET /Statistics/Avatar/AttendanceRate /// /// 取消令牌 /// 角色出场率 - public async Task> GetAvatarParticipationsAsync(CancellationToken token = default) + public async Task> GetAvatarAttendanceRatesAsync(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/AvatarParticipation", token) + Response>? resp = await httpClient + .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/Avatar/AttendanceRate", token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data); + return EnumerableExtension.EmptyIfNull(resp?.Data); } /// @@ -150,66 +109,28 @@ internal class HutaoClient : ISupportAsyncInitialization /// /// 取消令牌 /// 角色出场率 - public async Task> GetAvatarParticipations2Async(CancellationToken token = default) + public async Task> GetAvatarParticipations2Async(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics2/AvatarParticipation", token) + Response>? resp = await httpClient + .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/Avatar/HoldingRate", token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data); + return EnumerableExtension.EmptyIfNull(resp?.Data); } /// - /// 异步获取角色圣遗物搭配 + /// 异步获取角色/武器/圣遗物搭配 /// GET /Statistics/AvatarReliquaryUsage /// /// 取消令牌 - /// 角色圣遗物搭配 - public async Task> GetAvatarReliquaryUsagesAsync(CancellationToken token = default) + /// 角色/武器/圣遗物搭配 + public async Task> GetAvatarCollocationsAsync(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/AvatarReliquaryUsage", token) + Response>? resp = await httpClient + .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/Avatar/AvatarCollocation", token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data); - } - - /// - /// 异步获取角色搭配数据 - /// GET /Statistics/TeamCollocation - /// - /// 取消令牌 - /// 角色搭配数据 - public async Task> GetTeamCollocationsAsync(CancellationToken token = default) - { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/TeamCollocation", token) - .ConfigureAwait(false); - - return EnumerableExtensions.EmptyIfNull(resp?.Data); - } - - /// - /// 异步获取角色武器搭配数据 - /// GET /Statistics/AvatarWEaponUsage - /// - /// 取消令牌 - /// 角色武器搭配数据 - public async Task> GetAvatarWeaponUsagesAsync(CancellationToken token = default) - { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/AvatarWeaponUsage", token) - .ConfigureAwait(false); - - return EnumerableExtensions.EmptyIfNull(resp?.Data); + return EnumerableExtension.EmptyIfNull(resp?.Data); } /// @@ -218,74 +139,28 @@ internal class HutaoClient : ISupportAsyncInitialization /// /// 取消令牌 /// 角色图片列表 - public async Task> GetAvatarConstellationsAsync(CancellationToken token = default) + public async Task> GetAvatarConstellationInfosAsync(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/Constellation", token) + Response>? resp = await httpClient + .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/Constellation", token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data); + return EnumerableExtension.EmptyIfNull(resp?.Data); } /// - /// 异步获取队伍出场次数 层间 + /// 异步获取队伍出场次数 /// GET /Statistics/TeamCombination /// /// 取消令牌 /// 队伍出场列表 - public async Task> GetTeamCombinationsAsync(CancellationToken token = default) + public async Task> GetTeamCombinationsAsync(CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics/TeamCombination", token) + Response>? resp = await httpClient + .GetFromJsonAsync>>($"{HutaoAPI}/Team/Combination", token) .ConfigureAwait(false); - return EnumerableExtensions.EmptyIfNull(resp?.Data); - } - - /// - /// 异步获取队伍出场次数 层 - /// GET /Statistics2/TeamCombination - /// - /// 取消令牌 - /// 队伍出场列表 - public async Task> GetTeamCombinations2Async(CancellationToken token = default) - { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - Response>? resp = await httpClient - .GetFromJsonAsync>>($"{HutaoAPI}/Statistics2/TeamCombination", token) - .ConfigureAwait(false); - - return EnumerableExtensions.EmptyIfNull(resp?.Data); - } - - /// - /// 异步按角色列表异步获取推荐队伍 - /// POST /Statistics2/TeamRecommanded - /// - /// 楼层 - /// 期望的角色,按期望出现顺序排序 - /// 取消令牌 - /// 队伍出场列表 - public async Task> GetRecommandedTeamCombination2sAsync(int floor, IEnumerable avatarIds, CancellationToken token = default) - { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - - DesiredInfo desiredInfo = new(floor, avatarIds); - - HttpResponseMessage response = await httpClient - .PostAsJsonAsync($"{HutaoAPI}/Statistics2/TeamRecommanded", desiredInfo, jsonSerializerOptions, token) - .ConfigureAwait(false); - - Response>? resp = await response.Content - .ReadFromJsonAsync>>(jsonSerializerOptions, token) - .ConfigureAwait(false); - - return EnumerableExtensions.EmptyIfNull(resp?.Data); + return EnumerableExtension.EmptyIfNull(resp?.Data); } /// @@ -294,7 +169,7 @@ internal class HutaoClient : ISupportAsyncInitialization /// 用户 /// 取消令牌 /// 玩家记录 - public async Task GetPlayerRecordAsync(Snap.Hutao.Model.Binding.User user, CancellationToken token = default) + public async Task GetPlayerRecordAsync(Snap.Hutao.Model.Binding.User user, CancellationToken token = default) { PlayerInfo? playerInfo = await gameRecordClient .GetPlayerInfoAsync(user, token) @@ -310,7 +185,7 @@ internal class HutaoClient : ISupportAsyncInitialization .ConfigureAwait(false); Must.NotNull(spiralAbyssInfo!); - return PlayerRecord.Create(Must.NotNull(user.SelectedUserGameRole!).GameUid, characters, spiralAbyssInfo); + return new(Must.NotNull(user.SelectedUserGameRole!).GameUid, characters, spiralAbyssInfo); } /// @@ -320,35 +195,14 @@ internal class HutaoClient : ISupportAsyncInitialization /// 玩家记录 /// 取消令牌 /// 响应 - [EditorBrowsable(EditorBrowsableState.Never)] - internal async Task?> UploadRecordAsync(PlayerRecord playerRecord, CancellationToken token = default) + public async Task?> UploadRecordAsync(SimpleRecord playerRecord, CancellationToken token = default) { - Verify.Operation(IsInitialized, "必须在初始化后才能调用其他方法"); - HttpResponseMessage response = await httpClient - .PostAsJsonAsync($"{HutaoAPI}/Record/Upload", playerRecord, jsonSerializerOptions, token) + .PostAsJsonAsync($"{HutaoAPI}/Record/Upload", playerRecord, options, token) .ConfigureAwait(false); return await response.Content - .ReadFromJsonAsync>(jsonSerializerOptions, token) + .ReadFromJsonAsync>(options, token) .ConfigureAwait(false); } - - private class Auth - { - public Auth(string appid, string secret) - { - Appid = appid; - Secret = secret; - } - - public string Appid { get; } - - public string Secret { get; } - } - - private class Token - { - public string AccessToken { get; } = default!; - } -} +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarParticipation.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarAppearanceRank.cs similarity index 63% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarParticipation.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarAppearanceRank.cs index ed29fa77..53bccde9 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarParticipation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarAppearanceRank.cs @@ -4,17 +4,17 @@ namespace Snap.Hutao.Web.Hutao.Model; /// -/// 出场数据 +/// 出场率 /// -public class AvatarParticipation +public class AvatarAppearanceRank { /// - /// 层 + /// 楼层 /// public int Floor { get; set; } /// - /// 角色比率 + /// 排行 /// - public IEnumerable> AvatarUsage { get; set; } = default!; -} + public List> Ranks { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarBuild.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarBuild.cs new file mode 100644 index 00000000..bc296828 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarBuild.cs @@ -0,0 +1,15 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hutao.Model; + +/// +/// 角色相关解构 +/// +public abstract class AvatarBuild +{ + /// + /// 角色Id + /// + public int AvatarId { get; set; } +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarCollocation.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarCollocation.cs new file mode 100644 index 00000000..8dcf6e1b --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarCollocation.cs @@ -0,0 +1,25 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hutao.Model; + +/// +/// 角色搭配 +/// +public class AvatarCollocation : AvatarBuild +{ + /// + /// 其他角色 + /// + public List> Avatars { get; set; } = default!; + + /// + /// 武器 + /// + public List> Weapons { get; set; } = default!; + + /// + /// 圣遗物 + /// + public List> Reliquaries { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellation.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellation.cs deleted file mode 100644 index 5d230f9b..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellation.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 命座比例 -/// -public class AvatarConstellation -{ - /// - /// 角色ID - /// - public int Avatar { get; set; } - - /// - /// 持有率 - /// - public decimal HoldingRate { get; set; } - - /// - /// 各命座比率 - /// - public IEnumerable> Rate { get; set; } = default!; -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Rate{T}.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellationInfo.cs similarity index 50% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Rate{T}.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellationInfo.cs index 7a02b675..7d8fe30d 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Rate{T}.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarConstellationInfo.cs @@ -4,18 +4,17 @@ namespace Snap.Hutao.Web.Hutao.Model; /// -/// 比率 +/// 角色命座信息 /// -/// 的类型 -public class Rate +public class AvatarConstellationInfo : AvatarBuild { /// - /// 表示唯一标识符的实例 + /// 持有率 /// - public T Id { get; set; } = default!; + public double HoldingRate { get; set; } /// - /// 比率 + /// 命之座 /// - public decimal Value { get; set; } + public List> Constellations { get; set; } = default!; } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarReliquaryUsage.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarReliquaryUsage.cs deleted file mode 100644 index b1dc3ecd..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarReliquaryUsage.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 圣遗物配置数据 -/// -public class AvatarReliquaryUsage -{ - /// - /// 角色Id - /// - public int Avatar { get; set; } - - /// - /// 圣遗物比率 - /// - public IEnumerable> ReliquaryUsage { get; set; } = default!; -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/LevelInfo.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarUsageRank.cs similarity index 64% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/LevelInfo.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarUsageRank.cs index b1f4b6a0..7de97cc8 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/LevelInfo.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarUsageRank.cs @@ -4,17 +4,17 @@ namespace Snap.Hutao.Web.Hutao.Model; /// -/// 带有层的间编号 +/// 使用率 /// -public class LevelInfo +public class AvatarUsageRank { /// - /// 层 + /// 楼层 /// public int Floor { get; set; } /// - /// 上下半 0,1 + /// 排行 /// - public int Index { get; set; } -} + public List> Ranks { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Item.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Item.cs deleted file mode 100644 index d94062a6..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Item.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 胡桃数据库物品 -/// -public class Item -{ - /// - /// 构造一个新的胡桃数据库物品 - /// - /// 物品Id - /// 名称 - /// 链接 - [JsonConstructor] - public Item(int id, string name, string url) - { - Id = id; - Name = name; - Url = url; - } - - /// - /// 物品Id - /// - public int Id { get; } - - /// - /// 名称 - /// - public string Name { get; } - - /// - /// 链接 - /// - public string Url { get; } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/ItemRate.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/ItemRate.cs new file mode 100644 index 00000000..bad219cd --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/ItemRate.cs @@ -0,0 +1,33 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Web.Hutao.Model; + +/// +/// 物品与率 +/// +/// 物品类型 +/// 率类型 +public class ItemRate +{ + /// + /// 构造一个新的物品与率 + /// + /// 物品 + /// 率 + public ItemRate(TItem item, TRate rate) + { + Item = item; + Rate = rate; + } + + /// + /// 物品 + /// + public TItem Item { get; set; } + + /// + /// 率 + /// + public TRate Rate { get; set; } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Overview.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Overview.cs index 2cc73cc0..6f5cfd58 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Overview.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Overview.cs @@ -9,17 +9,22 @@ namespace Snap.Hutao.Web.Hutao.Model; public class Overview { /// - /// 所有用户数量 + /// 规划Id /// - public int TotalPlayerCount { get; set; } + public int ScheduleId { get; set; } /// - /// 当期提交深渊数据用户数量 + /// 总记录数 /// - public int CollectedPlayerCount { get; set; } + public int RecordTotal { get; set; } /// - /// 当期满星用户数量 + /// 总深渊计数 /// - public int FullStarPlayerCount { get; set; } -} + public int SpiralAbyssTotal { get; set; } + + /// + /// 满星数 + /// + public int SpiralAbyssFullStar { get; set; } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarReliquarySet.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarReliquarySet.cs deleted file mode 100644 index 557a10c8..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarReliquarySet.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 角色圣遗物套装 -/// -public class AvatarReliquarySet -{ - /// - /// 构造一个新的角色圣遗物套装 - /// - /// 套装Id - /// 个数 - public AvatarReliquarySet(int id, int count) - { - Id = id; - Count = count; - } - - /// - /// 构造一个新的角色圣遗物套装 - /// - /// 键值对 - public AvatarReliquarySet(KeyValuePair kvp) - : this(kvp.Key, kvp.Value) - { - } - - /// - /// 套装Id - /// - public int Id { get; } - - /// - /// 个数 - /// - public int Count { get; } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarWeapon.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarWeapon.cs deleted file mode 100644 index b441d2da..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/AvatarWeapon.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 角色武器 -/// -public class AvatarWeapon -{ - /// - /// 构造一个新的角色武器 - /// - /// 武器Id - /// 武器等级 - /// 精炼等级 - public AvatarWeapon(int id, int level, int affixLevel) - { - Id = id; - Level = level; - AffixLevel = affixLevel; - } - - /// - /// 武器等级 - /// - public int Id { get; } - - /// - /// 武器等级 - /// - public int Level { get; } - - /// - /// 精炼 - /// - public int AffixLevel { get; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/DesiredInfo.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/DesiredInfo.cs deleted file mode 100644 index 8559608c..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/DesiredInfo.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 封装期望楼层与角色列表 -/// -public class DesiredInfo -{ - /// - /// 构造一个新的封装类 - /// - /// 楼层 - /// 期望角色,按期望顺序排序 - public DesiredInfo(int floor, IEnumerable desiredAvatars) - { - Floor = floor; - DesiredAvatars = desiredAvatars; - } - - /// - /// 层 - /// - public int Floor { get; set; } - - /// - /// 期望角色 - /// - public IEnumerable DesiredAvatars { get; set; } -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/GenshinItemWrapper.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/GenshinItemWrapper.cs deleted file mode 100644 index 5ce627ac..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/GenshinItemWrapper.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 原神物品包装器 -/// -public class GenshinItemWrapper -{ - /// - /// 构造一个新的原神物品包装器 - /// - /// 角色 - /// 武器 - /// 圣遗物 - public GenshinItemWrapper(IEnumerable avatars, IEnumerable weapons, IEnumerable reliquaries) - { - Avatars = avatars; - Weapons = weapons; - Reliquaries = reliquaries; - } - - /// - /// 角色列表 - /// - public IEnumerable Avatars { get; } - - /// - /// 武器列表 - /// - public IEnumerable Weapons { get; } - - /// - /// 圣遗物列表 - /// - public IEnumerable Reliquaries { get; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/IndexedLevel.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/IndexedLevel.cs deleted file mode 100644 index fe7b8699..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/IndexedLevel.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 带有层信息的间 -/// -internal class IndexedLevel -{ - /// - /// 构造一个新的带有层信息的间 - /// - /// 层号 - /// 间信息 - public IndexedLevel(int floorIndex, Level level) - { - FloorIndex = floorIndex; - Level = level; - } - - /// - /// 层号 - /// - public int FloorIndex { get; } - - /// - /// 层信息 - /// - public Level Level { get; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerAvatar.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerAvatar.cs deleted file mode 100644 index bd36389b..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerAvatar.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Extension; -using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.Avatar; - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 玩家角色 -/// -public class PlayerAvatar -{ - /// - /// 构造一个新的玩家角色 - /// - /// 角色 - internal PlayerAvatar(Character avatar) - { - Id = avatar.Id; - Level = avatar.Level; - ActivedConstellationNum = avatar.ActivedConstellationNum; - Weapon = new(avatar.Weapon.Id, avatar.Weapon.Level, avatar.Weapon.AffixLevel); - ReliquarySets = avatar.Reliquaries - .CountBy(relic => relic.ReliquarySet.Id) - .Select(kvp => new AvatarReliquarySet(kvp)) - .ToList(); - } - - /// - /// 角色Id - /// - public int Id { get; } - - /// - /// 角色等级 - /// - public int Level { get; } - - /// - /// 命座 - /// - public int ActivedConstellationNum { get; } - - /// - /// 武器 - /// - public AvatarWeapon Weapon { get; } - - /// - /// 圣遗物套装 - /// - public List ReliquarySets { get; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerRecord.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerRecord.cs deleted file mode 100644 index 9343218e..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerRecord.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.Avatar; -using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; -using Snap.Hutao.Web.Response; - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 玩家记录 -/// 使用 来构建一个实例 -/// -public class PlayerRecord -{ - /// - /// 防止从外部构造一个新的玩家记录 - /// - private PlayerRecord() - { - } - - /// - /// uid - /// - public string Uid { get; private set; } = default!; - - /// - /// 玩家角色 - /// - public IEnumerable PlayerAvatars { get; private set; } = default!; - - /// - /// 玩家深渊信息 - /// - public IEnumerable PlayerSpiralAbyssesLevels { get; private set; } = default!; - - /// - /// 造成最多伤害 - /// - public Damage? DamageMost { get; private set; } - - /// - /// 承受最多伤害 - /// - public Damage? TakeDamageMost { get; private set; } - - /// - /// 建造玩家记录 - /// - /// 玩家的uid - /// 角色详情信息 - /// 深渊信息 - /// 玩家记录 - internal static PlayerRecord Create(string uid, List detailAvatars, SpiralAbyss spiralAbyss) - { - IEnumerable playerAvatars = detailAvatars - .Select(avatar => new PlayerAvatar(avatar)); - - IEnumerable playerSpiralAbyssLevels = spiralAbyss.Floors - .SelectMany(f => f.Levels, (f, level) => new IndexedLevel(f.Index, level)) - .Select(indexedLevel => new PlayerSpiralAbyssLevel(indexedLevel)); - - return new() - { - Uid = uid, - PlayerAvatars = playerAvatars, - PlayerSpiralAbyssesLevels = playerSpiralAbyssLevels, - DamageMost = GetDamage(spiralAbyss.DamageRank), - TakeDamageMost = GetDamage(spiralAbyss.TakeDamageRank), - }; - } - - /// - /// 上传记录 - /// - /// 使用的客户端 - /// 取消令牌 - /// 上传结果 - internal Task?> UploadAsync(HutaoClient hutaoClient, CancellationToken token = default) - { - return hutaoClient.UploadRecordAsync(this, token); - } - - private static Damage? GetDamage(List ranks) - { - if (ranks.Count > 0) - { - Rank rank = ranks[0]; - return new Damage(rank.AvatarId, rank.Value); - } - - return null; - } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssLevel.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssLevel.cs deleted file mode 100644 index 90772487..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssLevel.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model.Post; - -/// -/// 玩家深渊战斗间信息 -/// -public class PlayerSpiralAbyssLevel -{ - /// - /// 构造一个新的玩家深渊战斗间信息 - /// - /// 楼层 - internal PlayerSpiralAbyssLevel(IndexedLevel indexedLevel) - { - FloorIndex = indexedLevel.FloorIndex; - LevelIndex = indexedLevel.Level.Index; - Star = indexedLevel.Level.Star; - Battles = indexedLevel.Level.Battles - .Select(battle => new PlayerSpiralAbyssBattle(battle)); - } - - /// - /// 层号 - /// - public int FloorIndex { get; } - - /// - /// 间号 - /// - public int LevelIndex { get; } - - /// - /// 星数 - /// - public int Star { get; } - - /// - /// 战斗列表 分上下半间 - /// - public IEnumerable Battles { get; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleAvatar.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleAvatar.cs new file mode 100644 index 00000000..6fa1beb7 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleAvatar.cs @@ -0,0 +1,43 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.Avatar; + +namespace Snap.Hutao.Web.Hutao.Model.Post; + +/// +/// 角色详情 角色 +/// +public class SimpleAvatar +{ + /// + /// 构造一个新的角色详情 角色 + /// + /// 角色 + public SimpleAvatar(Character character) + { + AvatarId = character.Id; + WeaponId = character.Weapon.Id; + ReliquarySetIds = character.Reliquaries.Select(r => r.ReliquarySet.Id); + } + + /// + /// 角色 Id + /// + public int AvatarId { get; set; } + + /// + /// 武器 Id + /// + public int WeaponId { get; set; } + + /// + /// 圣遗物套装Id + /// + public IEnumerable ReliquarySetIds { get; set; } = default!; + + /// + /// 命座 + /// + public int ActivedConstellationNumber { get; set; } +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssBattle.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleBattle.cs similarity index 50% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssBattle.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleBattle.cs index c780e191..5998c228 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/PlayerSpiralAbyssBattle.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleBattle.cs @@ -6,27 +6,27 @@ using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; namespace Snap.Hutao.Web.Hutao.Model.Post; /// -/// 玩家深渊某间的战斗信息 +/// 上下半信息 /// -public class PlayerSpiralAbyssBattle +public class SimpleBattle { /// - /// 构造一个新的战斗信息 + /// 构造一个新的战斗 /// /// 战斗 - internal PlayerSpiralAbyssBattle(Battle battle) + public SimpleBattle(Battle battle) { - BattleIndex = battle.Index; - AvatarIds = battle.Avatars.Select(a => a.Id); + Index = battle.Index; + Avatars = battle.Avatars.Select(a => a.Id); } /// - /// 战斗上下半间 0,1 + /// 上下半遍号 1-2 /// - public int BattleIndex { get; } + public int Index { get; set; } /// - /// 角色Id列表 + /// 角色列表 /// - public IEnumerable AvatarIds { get; } -} \ No newline at end of file + public IEnumerable Avatars { get; set; } = default!; +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleFloor.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleFloor.cs new file mode 100644 index 00000000..c7d441bf --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleFloor.cs @@ -0,0 +1,38 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; + +namespace Snap.Hutao.Web.Hutao.Model.Post; + +/// +/// 层信息 +/// +public class SimpleFloor +{ + /// + /// 构造一个新的层信息 + /// + /// 层信息 + public SimpleFloor(Floor floor) + { + Index = floor.Index; + Star = floor.Star; + Levels = floor.Levels.Select(l => new SimpleLevel(l)); + } + + /// + /// 层遍号 1-12|9-12 + /// + public int Index { get; set; } + + /// + /// 星数 + /// + public int Star { get; set; } + + /// + /// 间 + /// + public IEnumerable Levels { get; set; } = default!; +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleLevel.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleLevel.cs new file mode 100644 index 00000000..58e603e3 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleLevel.cs @@ -0,0 +1,38 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; + +namespace Snap.Hutao.Web.Hutao.Model.Post; + +/// +/// 间信息 +/// +public class SimpleLevel +{ + /// + /// 构造一个新的间信息 + /// + /// 间信息 + public SimpleLevel(Level level) + { + Index = level.Index; + Star = level.Star; + Battles = level.Battles.Select(b => new SimpleBattle(b)); + } + + /// + /// 间遍号 1-3 + /// + public int Index { get; set; } + + /// + /// 星数 + /// + public int Star { get; set; } + + /// + /// 上下半信息 + /// + public IEnumerable Battles { get; set; } = default!; +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/Damage.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRank.cs similarity index 59% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/Damage.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRank.cs index 2e9e9415..cfadd411 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/Damage.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRank.cs @@ -1,22 +1,23 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; + namespace Snap.Hutao.Web.Hutao.Model.Post; /// -/// 伤害信息 +/// 数值 /// -public class Damage +public class SimpleRank { /// - /// 构造一个新的伤害信息 + /// 构造一个新的数值 /// - /// 角色Id - /// 值 - public Damage(int avatarId, int value) + /// 排行 + public SimpleRank(Rank rank) { - AvatarId = avatarId; - Value = value; + AvatarId = rank.AvatarId; + Value = rank.Value; } /// @@ -28,4 +29,4 @@ public class Damage /// 值 /// public int Value { get; set; } -} \ No newline at end of file +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRecord.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRecord.cs new file mode 100644 index 00000000..8e561f3e --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleRecord.cs @@ -0,0 +1,47 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.Avatar; +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; + +namespace Snap.Hutao.Web.Hutao.Model.Post; + +/// +/// 记录 +/// +public class SimpleRecord +{ + /// + /// 构造一个新的记录 + /// + /// uid + /// 详细的角色信息 + /// 深渊信息 + public SimpleRecord(string uid, List characters, SpiralAbyss spiralAbyss) + { + Uid = uid; + Identity = "Snap Hutao"; + SpiralAbyss = new(spiralAbyss); + Avatars = characters.Select(a => new SimpleAvatar(a)); + } + + /// + /// Uid + /// + public string Uid { get; set; } = default!; + + /// + /// 上传者身份 + /// + public string Identity { get; set; } = default!; + + /// + /// 深境螺旋 + /// + public SimpleSpiralAbyss SpiralAbyss { get; set; } = default!; + + /// + /// 角色 + /// + public IEnumerable Avatars { get; set; } = default!; +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleSpiralAbyss.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleSpiralAbyss.cs new file mode 100644 index 00000000..768f9c9d --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/Post/SimpleSpiralAbyss.cs @@ -0,0 +1,44 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.SpiralAbyss; + +namespace Snap.Hutao.Web.Hutao.Model.Post; + +/// +/// 深渊数据 +/// +public class SimpleSpiralAbyss +{ + /// + /// 构造一个新的深渊信息 + /// + /// 深渊信息 + public SimpleSpiralAbyss(SpiralAbyss spiralAbyss) + { + ScheduleId = spiralAbyss.ScheduleId; + Damage = new(spiralAbyss.DamageRank.Single()); + TakeDamage = new(spiralAbyss.TakeDamageRank.Single()); + Floors = spiralAbyss.Floors.Select(f => new SimpleFloor(f)); + } + + /// + /// 计划Id + /// + public int ScheduleId { get; set; } + + /// + /// 造成伤害 + /// + public SimpleRank Damage { get; set; } = default!; + + /// + /// 受到伤害 + /// + public SimpleRank TakeDamage { get; set; } = default!; + + /// + /// 层 + /// + public IEnumerable Floors { get; set; } = default!; +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfo.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfo.cs index 9aba85d5..c733daae 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfo.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfo.cs @@ -4,27 +4,17 @@ namespace Snap.Hutao.Web.Hutao.Model; /// -/// 排行信息 +/// 排行包装 /// public class RankInfo { /// - /// 角色Id + /// 造成伤害 /// - public int AvatarId { get; set; } + public ItemRate Damage { get; set; } = default!; /// - /// 值 + /// 受到伤害 /// - public int Value { get; set; } - - /// - /// 百分比 - /// - public double Percent { get; set; } - - /// - /// 总体百分比 - /// - public double PercentTotal { get; set; } -} \ No newline at end of file + public ItemRate TakeDamage { get; set; } = default!; +} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfoWrapper.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfoWrapper.cs deleted file mode 100644 index a559c6d2..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/RankInfoWrapper.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 排行包装 -/// -public class RankInfoWrapper -{ - /// - /// 伤害 - /// - public RankInfo? Damage { get; set; } - - /// - /// 承受伤害 - /// - public RankInfo? TakeDamage { get; set; } -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarWeaponUsage.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamAppearance.cs similarity index 52% rename from src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarWeaponUsage.cs rename to src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamAppearance.cs index cd0aa196..2526f284 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/AvatarWeaponUsage.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamAppearance.cs @@ -2,19 +2,18 @@ // Licensed under the MIT license. namespace Snap.Hutao.Web.Hutao.Model; - /// -/// 武器使用数据 +/// 队伍出场次数 /// -public class AvatarWeaponUsage +public class TeamAppearance { /// - /// 角色Id + /// 上半 /// - public int Avatar { get; set; } + public List> Up { get; set; } = default!; /// - /// 武器比率 + /// 下半 /// - public IEnumerable> Weapons { get; set; } = default!; + public List> Down { get; set; } = default!; } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCollocation.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCollocation.cs deleted file mode 100644 index 823269cf..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCollocation.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 组队数据 -/// -public class TeamCollocation -{ - /// - /// 角色Id - /// - public int Avatar { get; set; } - - /// - /// 角色搭配比率 - /// - public IEnumerable> Collocations { get; set; } = default!; -} diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination.cs deleted file mode 100644 index a6b3b569..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 队伍上场率 -/// 层间上场率 -/// -public record TeamCombination -{ - /// - /// 带有层的间 - /// - public LevelInfo Level { get; set; } = null!; - - /// - /// 队伍 - /// - public IEnumerable> Teams { get; set; } = null!; -} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination2.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination2.cs deleted file mode 100644 index 52479e60..00000000 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hutao/Model/TeamCombination2.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) DGP Studio. All rights reserved. -// Licensed under the MIT license. - -namespace Snap.Hutao.Web.Hutao.Model; - -/// -/// 队伍上场率2 -/// 层上场率 -/// -public record TeamCombination2 -{ - /// - /// 带有层的间 - /// - public int Floor { get; set; } - - /// - /// 队伍 - /// - public IEnumerable> Teams { get; set; } = null!; -} \ No newline at end of file