diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoSpiralAbyssService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoSpiralAbyssService.cs
index dd6f5874..163e9c9d 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoSpiralAbyssService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/HutaoSpiralAbyssService.cs
@@ -24,51 +24,52 @@ internal sealed partial class HutaoSpiralAbyssService : IHutaoSpiralAbyssService
private readonly IMemoryCache memoryCache;
///
- public ValueTask GetOverviewAsync()
+ public ValueTask GetOverviewAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(Overview), homaClient.GetOverviewAsync);
+ return FromCacheOrWebAsync(nameof(Overview), last, homaClient.GetOverviewAsync);
}
///
- public ValueTask> GetAvatarAppearanceRanksAsync()
+ public ValueTask> GetAvatarAppearanceRanksAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(AvatarAppearanceRank), homaClient.GetAvatarAttendanceRatesAsync);
+ return FromCacheOrWebAsync(nameof(AvatarAppearanceRank), last, homaClient.GetAvatarAttendanceRatesAsync);
}
///
- public ValueTask> GetAvatarUsageRanksAsync()
+ public ValueTask> GetAvatarUsageRanksAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(AvatarUsageRank), homaClient.GetAvatarUtilizationRatesAsync);
+ return FromCacheOrWebAsync(nameof(AvatarUsageRank), last, homaClient.GetAvatarUtilizationRatesAsync);
}
///
- public ValueTask> GetAvatarConstellationInfosAsync()
+ public ValueTask> GetAvatarConstellationInfosAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(AvatarConstellationInfo), homaClient.GetAvatarHoldingRatesAsync);
+ return FromCacheOrWebAsync(nameof(AvatarConstellationInfo), last, homaClient.GetAvatarHoldingRatesAsync);
}
///
- public ValueTask> GetAvatarCollocationsAsync()
+ public ValueTask> GetAvatarCollocationsAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(AvatarCollocation), homaClient.GetAvatarCollocationsAsync);
+ return FromCacheOrWebAsync(nameof(AvatarCollocation), last, homaClient.GetAvatarCollocationsAsync);
}
///
- public ValueTask> GetWeaponCollocationsAsync()
+ public ValueTask> GetWeaponCollocationsAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(WeaponCollocation), homaClient.GetWeaponCollocationsAsync);
+ return FromCacheOrWebAsync(nameof(WeaponCollocation), last, homaClient.GetWeaponCollocationsAsync);
}
///
- public ValueTask> GetTeamAppearancesAsync()
+ public ValueTask> GetTeamAppearancesAsync(bool last = false)
{
- return FromCacheOrWebAsync(nameof(TeamAppearance), homaClient.GetTeamCombinationsAsync);
+ return FromCacheOrWebAsync(nameof(TeamAppearance), last, homaClient.GetTeamCombinationsAsync);
}
- private async ValueTask FromCacheOrWebAsync(string typeName, Func>> taskFunc)
+ private async ValueTask FromCacheOrWebAsync(string typeName, bool last, Func>> taskFunc)
where T : class, new()
{
- string key = $"{nameof(HutaoSpiralAbyssService)}.Cache.{typeName}";
+ string kind = last ? "Last" : "Current";
+ string key = $"{nameof(HutaoSpiralAbyssService)}.Cache.{typeName}.{kind}";
if (memoryCache.TryGetValue(key, out object? cache))
{
T? t = cache as T;
@@ -81,7 +82,7 @@ internal sealed partial class HutaoSpiralAbyssService : IHutaoSpiralAbyssService
return memoryCache.Set(key, value, cacheExpireTime);
}
- Response webResponse = await taskFunc(default).ConfigureAwait(false);
+ Response webResponse = await taskFunc(last, default).ConfigureAwait(false);
T? data = webResponse.Data;
if (data is not null)
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/IHutaoSpiralAbyssService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/IHutaoSpiralAbyssService.cs
index 959c6a3a..fea4fa5d 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Hutao/IHutaoSpiralAbyssService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Hutao/IHutaoSpiralAbyssService.cs
@@ -15,41 +15,41 @@ internal interface IHutaoSpiralAbyssService
/// 异步获取角色上场率
///
/// 角色上场率
- ValueTask> GetAvatarAppearanceRanksAsync();
+ ValueTask> GetAvatarAppearanceRanksAsync(bool last = false);
///
/// 异步获取角色搭配
///
/// 角色搭配
- ValueTask> GetAvatarCollocationsAsync();
+ ValueTask> GetAvatarCollocationsAsync(bool last = false);
///
/// 异步获取角色持有率信息
///
/// 角色持有率信息
- ValueTask> GetAvatarConstellationInfosAsync();
+ ValueTask> GetAvatarConstellationInfosAsync(bool last = false);
///
/// 异步获取角色使用率
///
/// 角色使用率
- ValueTask> GetAvatarUsageRanksAsync();
+ ValueTask> GetAvatarUsageRanksAsync(bool last = false);
///
/// 异步获取统计数据
///
/// 统计数据
- ValueTask GetOverviewAsync();
+ ValueTask GetOverviewAsync(bool last = false);
///
/// 异步获取队伍上场
///
/// 队伍上场
- ValueTask> GetTeamAppearancesAsync();
+ ValueTask> GetTeamAppearancesAsync(bool last = false);
///
/// 异步获取武器搭配
///
/// 武器搭配
- ValueTask> GetWeaponCollocationsAsync();
+ ValueTask> GetWeaponCollocationsAsync(bool last = false);
}
\ No newline at end of file