From 130bf57842f7cebb75bddbbbcf8adcb88b169b9b Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 16 Jan 2026 05:24:04 -0800 Subject: [PATCH] =?UTF-8?q?fix(contribution):=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=AE=A4=E7=A7=8D=E6=97=B6=E5=8F=91=E5=B8=83=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E5=90=8C=E6=AD=A5=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在保存系统账户算力后,发布 SystemAccountSyncedEvent - 使 mining-service 能够同步运营/省/市公司的算力 Co-Authored-By: Claude Opus 4.5 --- .../contribution-calculation.service.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/backend/services/contribution-service/src/application/services/contribution-calculation.service.ts b/backend/services/contribution-service/src/application/services/contribution-calculation.service.ts index 1da79d54..8e67ce58 100644 --- a/backend/services/contribution-service/src/application/services/contribution-calculation.service.ts +++ b/backend/services/contribution-service/src/application/services/contribution-calculation.service.ts @@ -13,7 +13,7 @@ import { SyncedReferral } from '../../domain/repositories/synced-data.repository import { ContributionDistributionPublisherService } from './contribution-distribution-publisher.service'; import { ContributionRateService } from './contribution-rate.service'; import { BonusClaimService } from './bonus-claim.service'; -import { ContributionRecordSyncedEvent, NetworkProgressUpdatedEvent, ContributionAccountUpdatedEvent } from '../../domain/events'; +import { ContributionRecordSyncedEvent, NetworkProgressUpdatedEvent, ContributionAccountUpdatedEvent, SystemAccountSyncedEvent } from '../../domain/events'; /** * 算力计算应用服务 @@ -280,7 +280,7 @@ export class ContributionCalculationService { ); } - // 5. 保存系统账户算力 + // 5. 保存系统账户算力并发布同步事件 if (result.systemContributions.length > 0) { await this.systemAccountRepository.ensureSystemAccountsExist(); @@ -295,6 +295,23 @@ export class ContributionCalculationService { effectiveDate, expireDate: null, // System account contributions never expire based on the schema's contributionNeverExpires field }); + + // 发布系统账户同步事件(用于 mining-service 同步系统账户算力) + const systemAccount = await this.systemAccountRepository.findByType(sys.accountType); + if (systemAccount) { + const event = new SystemAccountSyncedEvent( + sys.accountType, + systemAccount.name, + systemAccount.contributionBalance.value.toString(), + systemAccount.createdAt, + ); + await this.outboxRepository.save({ + aggregateType: SystemAccountSyncedEvent.AGGREGATE_TYPE, + aggregateId: sys.accountType, + eventType: SystemAccountSyncedEvent.EVENT_TYPE, + payload: event.toPayload(), + }); + } } }