From 9a29738ef3365be997441e3267d6f4f42483869a Mon Sep 17 00:00:00 2001 From: Scighost Date: Mon, 6 Jan 2025 00:47:58 +0800 Subject: [PATCH] account self query service --- src/Starward/Features/GameFeatureConfig.cs | 4 + .../Features/PlayTime/PlayTimeButton.xaml.cs | 6 +- .../Features/PlayTime/PlayTimeService.cs | 1 - .../Features/SelfQuery/SelfQueryPage.xaml | 266 ++++++ .../Features/SelfQuery/SelfQueryPage.xaml.cs | 783 ++++++++++++++++++ .../Features/SelfQuery/SelfQueryService.cs | 380 +++++++++ .../SelfQueryStatsNumberConverter.cs | 56 ++ .../Features/ViewHost/MainView.xaml.cs | 4 +- src/Starward/Frameworks/AppService.cs | 5 + 9 files changed, 1500 insertions(+), 5 deletions(-) create mode 100644 src/Starward/Features/SelfQuery/SelfQueryPage.xaml create mode 100644 src/Starward/Features/SelfQuery/SelfQueryPage.xaml.cs create mode 100644 src/Starward/Features/SelfQuery/SelfQueryService.cs create mode 100644 src/Starward/Features/SelfQuery/SelfQueryStatsNumberConverter.cs diff --git a/src/Starward/Features/GameFeatureConfig.cs b/src/Starward/Features/GameFeatureConfig.cs index 0b5f15373..68df501c7 100644 --- a/src/Starward/Features/GameFeatureConfig.cs +++ b/src/Starward/Features/GameFeatureConfig.cs @@ -5,6 +5,7 @@ using Starward.Features.GameRecord; using Starward.Features.GameSetting; using Starward.Features.Screenshot; +using Starward.Features.SelfQuery; using System.Collections.Generic; namespace Starward.Features; @@ -82,6 +83,7 @@ public static GameFeatureConfig FromGameId(GameId? gameId) nameof(ScreenshotPage), nameof(GachaLogPage), nameof(GameRecordPage), + nameof(SelfQueryPage), ], InGameNoticesWindow = true, }; @@ -96,6 +98,7 @@ public static GameFeatureConfig FromGameId(GameId? gameId) nameof(ScreenshotPage), nameof(GachaLogPage), nameof(GameRecordPage), + nameof(SelfQueryPage), ], InGameNoticesWindow = true, }; @@ -109,6 +112,7 @@ public static GameFeatureConfig FromGameId(GameId? gameId) nameof(ScreenshotPage), nameof(GachaLogPage), nameof(GameRecordPage), + nameof(SelfQueryPage), ], InGameNoticesWindow = true, }; diff --git a/src/Starward/Features/PlayTime/PlayTimeButton.xaml.cs b/src/Starward/Features/PlayTime/PlayTimeButton.xaml.cs index 9f91f1012..a7ed9b320 100644 --- a/src/Starward/Features/PlayTime/PlayTimeButton.xaml.cs +++ b/src/Starward/Features/PlayTime/PlayTimeButton.xaml.cs @@ -71,7 +71,6 @@ private void InitializePlayTime() try { PlayTimeTotal = DatabaseService.GetValue($"playtime_total_{CurrentGameBiz}", out _); - PlayTime7Days = DatabaseService.GetValue($"playtime_7days_{CurrentGameBiz}", out _); StartUpCount = DatabaseService.GetValue($"startup_count_{CurrentGameBiz}", out _); (var time, PlayTimeLast) = _playTimeService.GetLastPlayTime(CurrentGameBiz); if (time > DateTimeOffset.MinValue) @@ -93,7 +92,6 @@ private void UpdatePlayTime() try { PlayTimeTotal = _playTimeService.GetPlayTimeTotal(CurrentGameBiz); - PlayTime7Days = _playTimeService.GetPlayTimeLast7Days(CurrentGameBiz); StartUpCount = _playTimeService.GetStartUpCount(CurrentGameBiz); (var time, PlayTimeLast) = _playTimeService.GetLastPlayTime(CurrentGameBiz); if (time > DateTimeOffset.MinValue) @@ -101,7 +99,6 @@ private void UpdatePlayTime() LastPlayTimeText = time.LocalDateTime.ToString("yyyy-MM-dd HH:mm:ss"); } DatabaseService.SetValue($"playtime_total_{CurrentGameBiz}", PlayTimeTotal); - DatabaseService.SetValue($"playtime_7days_{CurrentGameBiz}", PlayTime7Days); DatabaseService.SetValue($"startup_count_{CurrentGameBiz}", StartUpCount); CalculateRecent7Days(); @@ -128,13 +125,16 @@ private void CalculateRecent7Days() var now = DateTimeOffset.Now; var day = now.AddHours(-now.Hour); var list = new TimeSpan[7]; + TimeSpan total = TimeSpan.Zero; for (int i = 0; i < 7; i++) { var start = day.AddDays(-i); var end = start.AddDays(1); TimeSpan playTime = _playTimeService.CalculatePlayTime(CurrentGameBiz, start, end); list[6 - i] = playTime; + total += playTime; } + PlayTime7Days = total; TimeSpan max = list.Max(); if (max == TimeSpan.Zero) { diff --git a/src/Starward/Features/PlayTime/PlayTimeService.cs b/src/Starward/Features/PlayTime/PlayTimeService.cs index ef4e22805..fb5f4d8c2 100644 --- a/src/Starward/Features/PlayTime/PlayTimeService.cs +++ b/src/Starward/Features/PlayTime/PlayTimeService.cs @@ -67,7 +67,6 @@ public async Task LogPlayTimeAsync(GameBiz biz, int pid) } } DatabaseService.SetValue($"playtime_total_{biz}", GetPlayTimeTotal(biz)); - DatabaseService.SetValue($"playtime_7days_{biz}", GetPlayTimeLast7Days(biz)); DatabaseService.SetValue($"startup_count_{biz}", GetStartUpCount(biz)); _logger.LogInformation("End log playtime ({biz}, {pid})", biz, pid); } diff --git a/src/Starward/Features/SelfQuery/SelfQueryPage.xaml b/src/Starward/Features/SelfQuery/SelfQueryPage.xaml new file mode 100644 index 000000000..09fd7e221 --- /dev/null +++ b/src/Starward/Features/SelfQuery/SelfQueryPage.xaml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +