fix(pre-planting): 修复可结算收益重复计算
pre-planting getMyRewards API 错误地将所有分配记录金额算作 settleableUsdt(包括 PENDING 状态的待领取奖励)。 预种奖励的 PENDING/SETTLEABLE 状态由 wallet-service 管理, reward-service 的 getMyRewardSummary 已包含预种可结算部分, 不应重复累加。 修复: - 后端 getMyRewards 返回 settleableUsdt: 0 - 前端"我"页面和"兑换"页面不再额外加预种 settleableUsdt Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d1be7173be
commit
05e590ef04
|
|
@ -119,11 +119,14 @@ export class PrePlantingController {
|
|||
// 只返回用户账户收到的奖励(D 开头),排除系统账户
|
||||
const userEntries = entries.filter(e => e.recipientAccountSequence.startsWith('D'));
|
||||
|
||||
const settleableUsdt = userEntries.reduce((sum, e) => sum + e.usdtAmount, 0);
|
||||
// settleableUsdt 设为 0:预种奖励的可结算状态由 wallet-service 管理,
|
||||
// wallet-service 的 getSettleableRewards / getMyRewardSummary 已包含预种的可结算部分。
|
||||
// pre_planting_reward_entries 只是分配记录,不反映实际的 PENDING/SETTLEABLE 状态。
|
||||
// 之前错误地把所有分配记录的金额算作 settleableUsdt,导致前端重复计算。
|
||||
|
||||
return {
|
||||
summary: {
|
||||
settleableUsdt,
|
||||
settleableUsdt: 0,
|
||||
},
|
||||
settleableRewards: userEntries.map(e => ({
|
||||
id: `pp-${e.sourceOrderNo}-${e.rightType}`,
|
||||
|
|
|
|||
|
|
@ -842,7 +842,8 @@ class _ProfilePageState extends ConsumerState<ProfilePage> {
|
|||
setState(() {
|
||||
_pendingUsdt = summary.pendingUsdt;
|
||||
_pendingPower = summary.pendingHashpower;
|
||||
_settleableUsdt = summary.settleableUsdt + prePlantingRewards.settleableUsdt;
|
||||
// 预种可结算已包含在 wallet-service 的 summary.settleableUsdt 中,不再重复加
|
||||
_settleableUsdt = summary.settleableUsdt;
|
||||
// 使用流水统计的数据,更准确
|
||||
_settledUsdt = settledFromLedger;
|
||||
_expiredUsdt = summary.expiredTotalUsdt;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import '../../../../core/di/injection_container.dart';
|
||||
import '../../../../core/services/pre_planting_service.dart';
|
||||
import '../../../../routes/route_paths.dart';
|
||||
|
||||
/// 结算币种枚举
|
||||
|
|
@ -39,33 +38,27 @@ class _TradingPageState extends ConsumerState<TradingPage> {
|
|||
try {
|
||||
debugPrint('[TradingPage] 开始加载数据...');
|
||||
|
||||
// 并行获取:正常认种可结算 + 预种可结算 + 钱包余额
|
||||
// reward-service 的 settleableUsdt 已包含预种可结算部分(均由 wallet-service 管理)
|
||||
final rewardService = ref.read(rewardServiceProvider);
|
||||
final prePlantingService = ref.read(prePlantingServiceProvider);
|
||||
final walletService = ref.read(walletServiceProvider);
|
||||
|
||||
final results = await Future.wait([
|
||||
rewardService.getMyRewardSummary(),
|
||||
prePlantingService.getMyRewards(),
|
||||
walletService.getMyWallet(),
|
||||
]);
|
||||
|
||||
final summary = results[0] as dynamic;
|
||||
final prePlantingRewards = results[1] as PrePlantingMyRewards;
|
||||
final wallet = results[2] as dynamic;
|
||||
final wallet = results[1] as dynamic;
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
// 聚合正常认种 + 预种的可结算收益
|
||||
_settleableAmount = summary.settleableUsdt + prePlantingRewards.settleableUsdt;
|
||||
_settleableAmount = summary.settleableUsdt;
|
||||
_dstBalance = wallet.balances.dst.available;
|
||||
_usdtBalance = wallet.balances.usdt.available;
|
||||
_isLoading = false;
|
||||
});
|
||||
debugPrint('[TradingPage] 数据加载成功:');
|
||||
debugPrint('[TradingPage] 正常认种可结算: ${summary.settleableUsdt}');
|
||||
debugPrint('[TradingPage] 预种可结算: ${prePlantingRewards.settleableUsdt}');
|
||||
debugPrint('[TradingPage] 合计可结算 USDT: $_settleableAmount');
|
||||
debugPrint('[TradingPage] 可结算 USDT: $_settleableAmount');
|
||||
debugPrint('[TradingPage] DST 余额: $_dstBalance');
|
||||
debugPrint('[TradingPage] USDT 余额: $_usdtBalance');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue