From d8442287110173d61f5ef6fff89f97b8add9d87e Mon Sep 17 00:00:00 2001 From: hailin Date: Tue, 20 Jan 2026 08:26:53 -0800 Subject: [PATCH] =?UTF-8?q?fix(contribution):=20=E5=B0=86=E6=9C=AA?= =?UTF-8?q?=E5=88=86=E9=85=8D=E7=AE=97=E5=8A=9B=E6=B1=87=E6=80=BB=E5=88=B0?= =?UTF-8?q?=E6=80=BB=E9=83=A8=E8=B4=A6=E6=88=B7(HEADQUARTERS)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前 HEADQUARTERS 账户在算力分配时被遗漏,未获得未分配算力的汇总。 现在在保存未分配算力时,同时更新 HEADQUARTERS 账户的 contributionBalance, 并发布同步事件用于 mining-admin-service 同步。 Co-Authored-By: Claude Opus 4.5 --- .../contribution-calculation.service.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) 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 7c689301..889b314e 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 @@ -9,6 +9,7 @@ import { OutboxRepository } from '../../infrastructure/persistence/repositories/ import { UnitOfWork } from '../../infrastructure/persistence/unit-of-work/unit-of-work'; import { ContributionAccountAggregate, ContributionSourceType } from '../../domain/aggregates/contribution-account.aggregate'; import { ContributionRecordAggregate } from '../../domain/aggregates/contribution-record.aggregate'; +import { ContributionAmount } from '../../domain/value-objects/contribution-amount.vo'; import { SyncedReferral } from '../../domain/repositories/synced-data.repository.interface'; import { ContributionDistributionPublisherService } from './contribution-distribution-publisher.service'; import { ContributionRateService } from './contribution-rate.service'; @@ -279,6 +280,30 @@ export class ContributionCalculationService { })), ); + // 汇总未分配算力到 HEADQUARTERS(总部账户) + const totalUnallocatedAmount = result.unallocatedContributions.reduce( + (sum, u) => sum.add(u.amount), + new ContributionAmount(0), + ); + await this.systemAccountRepository.addContribution('HEADQUARTERS', totalUnallocatedAmount); + + // 发布 HEADQUARTERS 账户同步事件 + const headquartersAccount = await this.systemAccountRepository.findByType('HEADQUARTERS'); + if (headquartersAccount) { + const hqEvent = new SystemAccountSyncedEvent( + 'HEADQUARTERS', + headquartersAccount.name, + headquartersAccount.contributionBalance.value.toString(), + headquartersAccount.createdAt, + ); + await this.outboxRepository.save({ + aggregateType: SystemAccountSyncedEvent.AGGREGATE_TYPE, + aggregateId: 'HEADQUARTERS', + eventType: SystemAccountSyncedEvent.EVENT_TYPE, + payload: hqEvent.toPayload(), + }); + } + // 发布未分配算力同步事件(用于 mining-service 同步待解锁算力) for (const unallocated of result.unallocatedContributions) { const event = new UnallocatedContributionSyncedEvent(