fix(contribution): 将未分配算力汇总到总部账户(HEADQUARTERS)
之前 HEADQUARTERS 账户在算力分配时被遗漏,未获得未分配算力的汇总。 现在在保存未分配算力时,同时更新 HEADQUARTERS 账户的 contributionBalance, 并发布同步事件用于 mining-admin-service 同步。 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e8e1193387
commit
d844228711
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Reference in New Issue