diff --git a/backend/services/wallet-service/src/application/services/wallet-application.service.ts b/backend/services/wallet-service/src/application/services/wallet-application.service.ts index 3f787282..5ad25686 100644 --- a/backend/services/wallet-service/src/application/services/wallet-application.service.ts +++ b/backend/services/wallet-service/src/application/services/wallet-application.service.ts @@ -2673,13 +2673,15 @@ export class WalletApplicationService { } // 计算收支 - // 排除临时性流水类型(冻结/解冻),避免双重计算 + // 排除临时性流水类型(冻结/解冻)和状态转换类型,避免双重计算 // 例如:认种流程会产生 PLANT_FREEZE(-100) + PLANT_PAYMENT(-100),实际只支出 100 + // 例如:奖励流程会产生 REWARD_PENDING(+720) + REWARD_TO_SETTLEABLE(+720),实际只收入 720 const excludeFromStats = new Set([ - 'PLANT_FREEZE', // 认种冻结(临时) - 'PLANT_UNFREEZE', // 认种解冻(回滚) - 'FREEZE', // 通用冻结(临时) - 'UNFREEZE', // 通用解冻(回滚) + 'PLANT_FREEZE', // 认种冻结(临时) + 'PLANT_UNFREEZE', // 认种解冻(回滚) + 'FREEZE', // 通用冻结(临时) + 'UNFREEZE', // 通用解冻(回滚) + 'REWARD_TO_SETTLEABLE', // 待领取→可结算(状态转换,REWARD_PENDING 已计入) ]); let totalIncome = 0; @@ -2766,12 +2768,13 @@ export class WalletApplicationService { } // 填充数据 - // 排除临时性流水类型(冻结/解冻),避免双重计算 + // 排除临时性流水类型(冻结/解冻)和状态转换类型,避免双重计算 const excludeFromStats = new Set([ - 'PLANT_FREEZE', // 认种冻结(临时) - 'PLANT_UNFREEZE', // 认种解冻(回滚) - 'FREEZE', // 通用冻结(临时) - 'UNFREEZE', // 通用解冻(回滚) + 'PLANT_FREEZE', // 认种冻结(临时) + 'PLANT_UNFREEZE', // 认种解冻(回滚) + 'FREEZE', // 通用冻结(临时) + 'UNFREEZE', // 通用解冻(回滚) + 'REWARD_TO_SETTLEABLE', // 待领取→可结算(状态转换,REWARD_PENDING 已计入) ]); let periodIncome = 0;