From eba125901c6964ddad2a33c7b25ac159d64184e0 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 1 Mar 2026 10:07:22 -0800 Subject: [PATCH] =?UTF-8?q?fix(wallet):=20=E7=BB=9F=E8=AE=A1=E6=8E=92?= =?UTF-8?q?=E9=99=A4=20REWARD=5FSETTLED=20=E9=81=BF=E5=85=8D=E4=B8=89?= =?UTF-8?q?=E9=87=8D=E8=AE=A1=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 奖励流水三阶段 REWARD_PENDING → REWARD_TO_SETTLEABLE → REWARD_SETTLED 是同一笔钱的状态转换,只在 REWARD_PENDING 阶段计入收入。 Co-Authored-By: Claude Opus 4.6 --- .../src/application/services/wallet-application.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 5ad25686..d301dfa8 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 @@ -2675,13 +2675,15 @@ export class WalletApplicationService { // 计算收支 // 排除临时性流水类型(冻结/解冻)和状态转换类型,避免双重计算 // 例如:认种流程会产生 PLANT_FREEZE(-100) + PLANT_PAYMENT(-100),实际只支出 100 - // 例如:奖励流程会产生 REWARD_PENDING(+720) + REWARD_TO_SETTLEABLE(+720),实际只收入 720 + // 例如:奖励流程 REWARD_PENDING(+720) → REWARD_TO_SETTLEABLE(+720) → REWARD_SETTLED(+720) + // 是同一笔钱的三个阶段,只在 REWARD_PENDING 计入收入 const excludeFromStats = new Set([ 'PLANT_FREEZE', // 认种冻结(临时) 'PLANT_UNFREEZE', // 认种解冻(回滚) 'FREEZE', // 通用冻结(临时) 'UNFREEZE', // 通用解冻(回滚) 'REWARD_TO_SETTLEABLE', // 待领取→可结算(状态转换,REWARD_PENDING 已计入) + 'REWARD_SETTLED', // 可结算→结算到余额(状态转换,REWARD_PENDING 已计入) ]); let totalIncome = 0; @@ -2775,6 +2777,7 @@ export class WalletApplicationService { 'FREEZE', // 通用冻结(临时) 'UNFREEZE', // 通用解冻(回滚) 'REWARD_TO_SETTLEABLE', // 待领取→可结算(状态转换,REWARD_PENDING 已计入) + 'REWARD_SETTLED', // 可结算→结算到余额(状态转换,REWARD_PENDING 已计入) ]); let periodIncome = 0;