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(), + }); + } } }