diff --git a/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart b/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart index 7137bdd8..7573a58b 100644 --- a/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart +++ b/frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart @@ -799,23 +799,35 @@ class _ProfilePageState extends ConsumerState { final walletInfo = results[6] as WalletResponse; final walletPendingRewards = results[7] as List; - // 合并预种可结算奖励到列表中 - // 预种奖励转为 SettleableRewardItem 格式,与正常认种统一展示 - final prePlantingSettleable = prePlantingRewards.settleableRewards.map((r) => - SettleableRewardItem( - id: r.id, - rightType: r.rightType, - usdtAmount: r.usdtAmount, - hashpowerAmount: r.hashpowerAmount, - createdAt: r.createdAt, - claimedAt: null, - sourceOrderNo: r.sourceOrderNo, - sourceAccountSequence: r.sourceAccountSequence, - memo: '[预种] ${r.memo}', - ), - ).toList(); + // [2026-03-01] 合并预种可结算奖励到列表中 + // pre-planting/my-rewards 返回所有分配记录(不区分状态), + // 但部分条目可能实际处于 PENDING 状态(用户未认种时)。 + // 需要排除 PENDING 和 EXPIRED 状态的条目,只保留真正可结算的。 + final pendingPplOrderIds = walletPendingRewards + .where((r) => r.isPrePlanting) + .map((r) => r.sourceOrderId) + .toSet(); + final expiredPplOrderIds = expiredRewards + .where((r) => r.sourceOrderId.startsWith('PPL')) + .map((r) => r.sourceOrderId) + .toSet(); + final excludedPplOrderIds = {...pendingPplOrderIds, ...expiredPplOrderIds}; + final prePlantingSettleable = prePlantingRewards.settleableRewards + .where((r) => !excludedPplOrderIds.contains(r.sourceOrderNo)) + .map((r) => SettleableRewardItem( + id: r.id, + rightType: r.rightType, + usdtAmount: r.usdtAmount, + hashpowerAmount: r.hashpowerAmount, + createdAt: r.createdAt, + claimedAt: null, + sourceOrderNo: r.sourceOrderNo, + sourceAccountSequence: r.sourceAccountSequence, + memo: '[预种] ${r.memo}', + )) + .toList(); settleableRewards = [...settleableRewards, ...prePlantingSettleable]; - debugPrint('[ProfilePage] 预种可结算奖励: ${prePlantingSettleable.length} 条, 金额: ${prePlantingRewards.settleableUsdt}'); + debugPrint('[ProfilePage] 预种可结算奖励: ${prePlantingSettleable.length} 条 (排除 ${pendingPplOrderIds.length} 条 PENDING, ${expiredPplOrderIds.length} 条 EXPIRED)'); // [2026-03-01] 合并预种待领取奖励到列表中 // wallet-service 的 pending_rewards 表包含正常认种 + 预种的待领取记录,