diff --git a/backend/services/reward-service/src/domain/services/reward-calculation.service.ts b/backend/services/reward-service/src/domain/services/reward-calculation.service.ts index f2d6632e..8c012624 100644 --- a/backend/services/reward-service/src/domain/services/reward-calculation.service.ts +++ b/backend/services/reward-service/src/domain/services/reward-calculation.service.ts @@ -66,6 +66,16 @@ const SHARE_RIGHT_POOL_USER_ID = BigInt(-5); export class RewardCalculationService { private readonly logger = new Logger(RewardCalculationService.name); + /** + * 将 accountSequence 转换为 userId + * accountSequence 格式: D25121400002 (用户) / S0000000001 (系统) / 9440000 (省系统) + * 如果以字母开头,去掉第一个字符后转为 BigInt + */ + private parseAccountSequenceToUserId(accountSequence: string): bigint { + const numericPart = /^[a-zA-Z]/i.test(accountSequence) ? accountSequence.slice(1) : accountSequence; + return BigInt(numericPart); + } + constructor( @Inject(REFERRAL_SERVICE_CLIENT) private readonly referralService: IReferralServiceClient, @@ -432,7 +442,7 @@ export class RewardCalculationService { rewards.push( RewardLedgerEntry.createSettleable({ - userId: BigInt(item.accountSequence), + userId: this.parseAccountSequenceToUserId(item.accountSequence), accountSequence: item.accountSequence, rewardSource, usdtAmount: itemUsdtAmount, @@ -488,7 +498,7 @@ export class RewardCalculationService { rewards.push( RewardLedgerEntry.createSettleable({ - userId: BigInt(item.accountSequence), + userId: this.parseAccountSequenceToUserId(item.accountSequence), accountSequence: item.accountSequence, rewardSource, usdtAmount: itemUsdtAmount, @@ -544,7 +554,7 @@ export class RewardCalculationService { rewards.push( RewardLedgerEntry.createSettleable({ - userId: BigInt(item.accountSequence), + userId: this.parseAccountSequenceToUserId(item.accountSequence), accountSequence: item.accountSequence, rewardSource, usdtAmount: itemUsdtAmount, @@ -600,7 +610,7 @@ export class RewardCalculationService { rewards.push( RewardLedgerEntry.createSettleable({ - userId: BigInt(item.accountSequence), + userId: this.parseAccountSequenceToUserId(item.accountSequence), accountSequence: item.accountSequence, rewardSource, usdtAmount: itemUsdtAmount, @@ -656,7 +666,7 @@ export class RewardCalculationService { rewards.push( RewardLedgerEntry.createSettleable({ - userId: BigInt(item.accountSequence), + userId: this.parseAccountSequenceToUserId(item.accountSequence), accountSequence: item.accountSequence, rewardSource, usdtAmount: itemUsdtAmount,