From 0351a2b4fa20766f59e4d3cfc409c5f0eac9e3b7 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 2 Nov 2025 12:19:35 +0800 Subject: [PATCH] :lipstick: Optimize settle publisher service logic --- .../Publisher/PublisherService.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/DysonNetwork.Sphere/Publisher/PublisherService.cs b/DysonNetwork.Sphere/Publisher/PublisherService.cs index 8e9f795..aa88237 100644 --- a/DysonNetwork.Sphere/Publisher/PublisherService.cs +++ b/DysonNetwork.Sphere/Publisher/PublisherService.cs @@ -574,6 +574,10 @@ public class PublisherService( var date = now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); var publisherIds = publisherStats.Keys.ToList(); + var publishers = await db.Publishers + .Where(p => publisherIds.Contains(p.Id)) + .Select(p => new { p.Id, p.Name }) + .ToDictionaryAsync(p => p.Id, p => p); var publisherMembers = await db.PublisherMembers .Where(m => publisherIds.Contains(m.PublisherId)) .ToListAsync(); @@ -602,12 +606,14 @@ public class PublisherService( if (!publisherAccounts.TryGetValue(publisherId, out var receivers) || receivers.Count == 0) continue; + var publisherName = publishers.TryGetValue(publisherId, out var pub) ? pub.Name : "unknown"; + // Use totalExperience for rewarding foreach (var receiver in receivers) { await experiences.AddRecordAsync(new AddExperienceRecordRequest { - Reason = $"Publishing Reward on {date}", + Reason = $"Publishing Reward on {date} for @{publisherName}", ReasonType = "publishers.rewards", AccountId = receiver.Id.ToString(), Delta = totalExperience, @@ -616,7 +622,8 @@ public class PublisherService( } // Foreach loop through publishers to set social credit - var expiredAt = now.InZone(DateTimeZone.Utc).Date.PlusDays(1).AtStartOfDayInZone(DateTimeZone.Utc).Minus(Duration.FromMilliseconds(1)).ToInstant(); + var expiredAt = now.InZone(DateTimeZone.Utc).Date.PlusDays(1).AtStartOfDayInZone(DateTimeZone.Utc) + .Minus(Duration.FromMilliseconds(1)).ToInstant(); foreach (var (publisherId, value) in publisherStats) { var upvotes = value.Upvotes; @@ -631,13 +638,15 @@ public class PublisherService( if (!publisherAccounts.TryGetValue(publisherId, out var receivers) || receivers.Count == 0) continue; + + var publisherName = publishers.TryGetValue(publisherId, out var pub) ? pub.Name : "unknown"; // Set social credit for receivers, expired before next settle foreach (var receiver in receivers) { await socialCredits.AddRecordAsync(new AddSocialCreditRecordRequest { - Reason = $"Publishing Reward on {date}", + Reason = $"Publishing Reward on {date} for @{publisherName}", ReasonType = "publishers.rewards", AccountId = receiver.Id.ToString(), Delta = socialCreditDelta, @@ -646,4 +655,4 @@ public class PublisherService( } } } -} +} \ No newline at end of file