today_pnl.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import 'package:decimal/decimal.dart';
  2. /// 账户信息
  3. class AccountInfo {
  4. final String name;
  5. final Decimal balance;
  6. final Decimal frozenBalance;
  7. final Decimal frozenMargin;
  8. final Decimal currentCapital;
  9. const AccountInfo({
  10. required this.name,
  11. required this.balance,
  12. required this.frozenBalance,
  13. required this.frozenMargin,
  14. required this.currentCapital,
  15. });
  16. factory AccountInfo.fromJson(Map<String, dynamic> json) {
  17. return AccountInfo(
  18. name: json['name']?.toString() ?? '',
  19. balance: Decimal.tryParse(json['balance']?.toString() ?? '0') ?? Decimal.zero,
  20. frozenBalance: Decimal.tryParse(json['frozenBalance']?.toString() ?? '0') ?? Decimal.zero,
  21. frozenMargin: Decimal.tryParse(json['frozenMargin']?.toString() ?? '0') ?? Decimal.zero,
  22. currentCapital: Decimal.tryParse(json['currentCapital']?.toString() ?? '0') ?? Decimal.zero,
  23. );
  24. }
  25. }
  26. /// 合约钱包数据 - GET swap/wallet-new/get
  27. class TodayPnl {
  28. /// 今日盈亏金额
  29. final Decimal revenue;
  30. /// 今日盈亏率(%),后端分母为 0 或 null 时返回 null
  31. final Decimal? revenueRate;
  32. /// 总资产(cashBalance)
  33. final Decimal cashBalance;
  34. /// 合约账户当前权益(currentCapital)
  35. final Decimal currentCapital;
  36. /// 各账户信息列表
  37. final List<AccountInfo> accountInfoList;
  38. TodayPnl({
  39. Decimal? revenue,
  40. this.revenueRate,
  41. Decimal? cashBalance,
  42. Decimal? currentCapital,
  43. List<AccountInfo>? accountInfoList,
  44. }) : revenue = revenue ?? Decimal.zero,
  45. cashBalance = cashBalance ?? Decimal.zero,
  46. currentCapital = currentCapital ?? Decimal.zero,
  47. accountInfoList = accountInfoList ?? [];
  48. /// 涨跌趋势:正=true, 负=false, 零=null
  49. bool? get isUpTrend {
  50. if (revenue == Decimal.zero) return null;
  51. return revenue > Decimal.zero;
  52. }
  53. factory TodayPnl.fromJson(Map<String, dynamic> json) {
  54. final accountList = json['accountInfoList'] as List?;
  55. final accountInfoList = accountList
  56. ?.map((e) => AccountInfo.fromJson(e as Map<String, dynamic>))
  57. .toList() ?? [];
  58. return TodayPnl(
  59. revenue: Decimal.tryParse(json['currentTodayRevenue']?.toString() ?? ''),
  60. revenueRate: Decimal.tryParse(json['todayRevenueRate']?.toString() ?? ''),
  61. cashBalance: Decimal.tryParse(json['cashBalance']?.toString() ?? ''),
  62. currentCapital: Decimal.tryParse(json['currentCapital']?.toString() ?? ''),
  63. accountInfoList: accountInfoList,
  64. );
  65. }
  66. }