fix(contribution): 处理认种时发布系统账户同步事件

- 在保存系统账户算力后,发布 SystemAccountSyncedEvent
- 使 mining-service 能够同步运营/省/市公司的算力

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-16 05:24:04 -08:00
parent 962e7874c8
commit 130bf57842
1 changed files with 19 additions and 2 deletions

View File

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