fix(mobile): 修复预种可结算列表与金额不一致
问题:pre-planting/my-rewards 返回所有分配记录不区分状态, 导致 PENDING 状态的预种奖励也被错误地显示在可结算列表中, 而可结算金额(从 wallet-service 取值)正确为 0,造成列表和金额不一致。 修复:在合并预种可结算列表时,排除正在 PENDING 和 EXPIRED 状态的条目。 通过 wallet/pending-rewards 和 wallet/expired-rewards 获取实际状态, 用 sourceOrderId 交叉比对,只保留真正可结算的预种条目。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4996c1d110
commit
e9b9896317
|
|
@ -799,23 +799,35 @@ class _ProfilePageState extends ConsumerState<ProfilePage> {
|
|||
final walletInfo = results[6] as WalletResponse;
|
||||
final walletPendingRewards = results[7] as List<WalletPendingRewardItem>;
|
||||
|
||||
// 合并预种可结算奖励到列表中
|
||||
// 预种奖励转为 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 表包含正常认种 + 预种的待领取记录,
|
||||
|
|
|
|||
Loading…
Reference in New Issue