From 009621a45638dc541dd248d1f6edbc2fc2277d14 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Fri, 8 Aug 2025 15:07:37 +0800 Subject: [PATCH] :bug: Fix developer missing publisher info --- .../Identity/DeveloperController.cs | 6 ++--- .../Identity/DeveloperService.cs | 23 ++++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/DysonNetwork.Develop/Identity/DeveloperController.cs b/DysonNetwork.Develop/Identity/DeveloperController.cs index f7ddc74..589b0bc 100644 --- a/DysonNetwork.Develop/Identity/DeveloperController.cs +++ b/DysonNetwork.Develop/Identity/DeveloperController.cs @@ -22,7 +22,7 @@ public class DeveloperController( { var developer = await ds.GetDeveloperByName(name); if (developer is null) return NotFound(); - return Ok(developer); + return Ok(await ds.LoadDeveloperPublisher(developer)); } [HttpGet("{name}/stats")] @@ -63,7 +63,7 @@ public class DeveloperController( var developers = await developerQuery.ToListAsync(); - return Ok(developers); + return Ok(await ds.LoadDeveloperPublisher(developers)); } [HttpPost("{name}/enroll")] @@ -118,7 +118,7 @@ public class DeveloperController( IpAddress = Request.HttpContext.Connection.RemoteIpAddress?.ToString() }); - return Ok(developer); + return Ok(await ds.LoadDeveloperPublisher(developer)); } public class DeveloperStats diff --git a/DysonNetwork.Develop/Identity/DeveloperService.cs b/DysonNetwork.Develop/Identity/DeveloperService.cs index 8681ad2..380678f 100644 --- a/DysonNetwork.Develop/Identity/DeveloperService.cs +++ b/DysonNetwork.Develop/Identity/DeveloperService.cs @@ -12,14 +12,31 @@ public class DeveloperService(AppDatabase db, PublisherService.PublisherServiceC developer.Publisher = PublisherInfo.FromProto(pubResponse.Publisher); return developer; } - + + + public async Task> LoadDeveloperPublisher(IEnumerable developers) + { + var enumerable = developers.ToList(); + var pubIds = enumerable.Select(d => d.PublisherId).ToList(); + var pubRequest = new GetPublisherBatchRequest(); + pubIds.ForEach(x => pubRequest.Ids.Add(x.ToString())); + var pubResponse = await ps.GetPublisherBatchAsync(pubRequest); + var pubs = pubResponse.Publishers.ToDictionary(p => Guid.Parse(p.Id), PublisherInfo.FromProto); + + return enumerable.Select(d => + { + d.Publisher = pubs[d.PublisherId]; + return d; + }); + } + public async Task GetDeveloperByName(string name) { try { var pubResponse = await ps.GetPublisherAsync(new GetPublisherRequest { Name = name }); var pubId = Guid.Parse(pubResponse.Publisher.Id); - + var developer = await db.Developers.FirstOrDefaultAsync(d => d.Id == pubId); return developer; } @@ -28,7 +45,7 @@ public class DeveloperService(AppDatabase db, PublisherService.PublisherServiceC return null; } } - + public async Task IsMemberWithRole(Guid pubId, Guid accountId, PublisherMemberRole role) { try