diff --git a/SharedProject/Models/SongBestData.cs b/SharedProject/Models/SongBestData.cs index ddfe54e..284d662 100644 --- a/SharedProject/Models/SongBestData.cs +++ b/SharedProject/Models/SongBestData.cs @@ -14,6 +14,8 @@ public class SongBestData public Difficulty Difficulty { get; set; } + public int PlayCount { get; set; } + public uint BestScore { get; set; } public uint BestRate { get; set; } diff --git a/TaikoLocalServer/Controllers/Api/PlayDataController.cs b/TaikoLocalServer/Controllers/Api/PlayDataController.cs index f24bd71..ee4642b 100644 --- a/TaikoLocalServer/Controllers/Api/PlayDataController.cs +++ b/TaikoLocalServer/Controllers/Api/PlayDataController.cs @@ -10,10 +10,14 @@ public class PlayDataController : BaseController private readonly ISongBestDatumService songBestDatumService; - public PlayDataController(IUserDatumService userDatumService, ISongBestDatumService songBestDatumService) + private readonly ISongPlayDatumService songPlayDatumService; + + public PlayDataController(IUserDatumService userDatumService, ISongBestDatumService songBestDatumService, + ISongPlayDatumService songPlayDatumService) { this.userDatumService = userDatumService; this.songBestDatumService = songBestDatumService; + this.songPlayDatumService = songPlayDatumService; } [HttpGet("{baid}")] @@ -26,6 +30,12 @@ public class PlayDataController : BaseController } var songBestRecords = await songBestDatumService.GetAllSongBestAsModel(baid); + var songPlayLogs = await songPlayDatumService.GetSongPlayDatumByBaid(baid); + foreach (var songBestData in songBestRecords) + { + songBestData.PlayCount = songPlayLogs.Count(datum => datum.SongId == songBestData.SongId && + datum.Difficulty == songBestData.Difficulty); + } var favoriteSongs = await userDatumService.GetFavoriteSongIds(baid); var favoriteSet = favoriteSongs.ToHashSet(); foreach (var songBestRecord in songBestRecords.Where(songBestRecord => favoriteSet.Contains(songBestRecord.SongId)))