refactor: 将前端从 uni-app x 重构为 Flutter
变更内容: - 删除 uni-app x 项目 (app/ 目录) - 新增 Flutter 项目 (flutter_monisuo/ 目录) - 新增部署脚本 (deploy/ 目录) Flutter 项目功能: - 用户登录/注册 - 首页资产概览 - 行情币种列表 - 交易买卖操作 - 资产账户管理 - 充值/提现/划转 - 深色主题 - JWT Token 认证 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
166
flutter_monisuo/lib/data/models/account_models.dart
Normal file
166
flutter_monisuo/lib/data/models/account_models.dart
Normal file
@@ -0,0 +1,166 @@
|
||||
/// 资产总览模型
|
||||
class AssetOverview {
|
||||
final String totalAsset;
|
||||
final String fundBalance;
|
||||
final String tradeBalance;
|
||||
final String totalProfit;
|
||||
|
||||
AssetOverview({
|
||||
required this.totalAsset,
|
||||
required this.fundBalance,
|
||||
required this.tradeBalance,
|
||||
required this.totalProfit,
|
||||
});
|
||||
|
||||
factory AssetOverview.fromJson(Map<String, dynamic> json) {
|
||||
return AssetOverview(
|
||||
totalAsset: json['totalAsset']?.toString() ?? '0.00',
|
||||
fundBalance: json['fundBalance']?.toString() ?? '0.00',
|
||||
tradeBalance: json['tradeBalance']?.toString() ?? '0.00',
|
||||
totalProfit: json['totalProfit']?.toString() ?? '0.00',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 资金账户模型
|
||||
class AccountFund {
|
||||
final int id;
|
||||
final int userId;
|
||||
final String balance;
|
||||
final String frozenBalance;
|
||||
final DateTime? updateTime;
|
||||
|
||||
AccountFund({
|
||||
required this.id,
|
||||
required this.userId,
|
||||
required this.balance,
|
||||
required this.frozenBalance,
|
||||
this.updateTime,
|
||||
});
|
||||
|
||||
factory AccountFund.fromJson(Map<String, dynamic> json) {
|
||||
return AccountFund(
|
||||
id: json['id'] as int? ?? 0,
|
||||
userId: json['userId'] as int? ?? 0,
|
||||
balance: json['balance']?.toString() ?? '0.00',
|
||||
frozenBalance: json['frozenBalance']?.toString() ?? '0.00',
|
||||
updateTime: json['updateTime'] != null
|
||||
? DateTime.tryParse(json['updateTime'])
|
||||
: null,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 交易账户模型(持仓)
|
||||
class AccountTrade {
|
||||
final int id;
|
||||
final int userId;
|
||||
final String coinCode;
|
||||
final String quantity;
|
||||
final String avgPrice;
|
||||
final String totalCost;
|
||||
final String currentValue;
|
||||
final String profit;
|
||||
final double profitRate;
|
||||
final DateTime? updateTime;
|
||||
|
||||
AccountTrade({
|
||||
required this.id,
|
||||
required this.userId,
|
||||
required this.coinCode,
|
||||
required this.quantity,
|
||||
required this.avgPrice,
|
||||
required this.totalCost,
|
||||
required this.currentValue,
|
||||
required this.profit,
|
||||
required this.profitRate,
|
||||
this.updateTime,
|
||||
});
|
||||
|
||||
factory AccountTrade.fromJson(Map<String, dynamic> json) {
|
||||
return AccountTrade(
|
||||
id: json['id'] as int? ?? 0,
|
||||
userId: json['userId'] as int? ?? 0,
|
||||
coinCode: json['coinCode'] as String? ?? '',
|
||||
quantity: json['quantity']?.toString() ?? '0',
|
||||
avgPrice: json['avgPrice']?.toString() ?? '0.00',
|
||||
totalCost: json['totalCost']?.toString() ?? '0.00',
|
||||
currentValue: json['currentValue']?.toString() ?? '0.00',
|
||||
profit: json['profit']?.toString() ?? '0.00',
|
||||
profitRate: (json['profitRate'] as num?)?.toDouble() ?? 0,
|
||||
updateTime: json['updateTime'] != null
|
||||
? DateTime.tryParse(json['updateTime'])
|
||||
: null,
|
||||
);
|
||||
}
|
||||
|
||||
/// 格式化盈亏率
|
||||
String get formattedProfitRate {
|
||||
final prefix = profitRate >= 0 ? '+' : '';
|
||||
return '$prefix${profitRate.toStringAsFixed(2)}%';
|
||||
}
|
||||
|
||||
/// 是否盈利
|
||||
bool get isProfit => profitRate >= 0;
|
||||
}
|
||||
|
||||
/// 资金流水模型
|
||||
class AccountFlow {
|
||||
final int id;
|
||||
final int userId;
|
||||
final String flowType;
|
||||
final String amount;
|
||||
final String balanceBefore;
|
||||
final String balanceAfter;
|
||||
final String remark;
|
||||
final DateTime? createTime;
|
||||
|
||||
AccountFlow({
|
||||
required this.id,
|
||||
required this.userId,
|
||||
required this.flowType,
|
||||
required this.amount,
|
||||
required this.balanceBefore,
|
||||
required this.balanceAfter,
|
||||
required this.remark,
|
||||
this.createTime,
|
||||
});
|
||||
|
||||
factory AccountFlow.fromJson(Map<String, dynamic> json) {
|
||||
return AccountFlow(
|
||||
id: json['id'] as int? ?? 0,
|
||||
userId: json['userId'] as int? ?? 0,
|
||||
flowType: json['flowType']?.toString() ?? '',
|
||||
amount: json['amount']?.toString() ?? '0.00',
|
||||
balanceBefore: json['balanceBefore']?.toString() ?? '0.00',
|
||||
balanceAfter: json['balanceAfter']?.toString() ?? '0.00',
|
||||
remark: json['remark']?.toString() ?? '',
|
||||
createTime: json['createTime'] != null
|
||||
? DateTime.tryParse(json['createTime'])
|
||||
: null,
|
||||
);
|
||||
}
|
||||
|
||||
/// 流水类型文字
|
||||
String get flowTypeText {
|
||||
switch (flowType) {
|
||||
case '1':
|
||||
return '充值';
|
||||
case '2':
|
||||
return '提现';
|
||||
case '3':
|
||||
return '转入交易账户';
|
||||
case '4':
|
||||
return '从交易账户转出';
|
||||
case '5':
|
||||
return '卖出收入';
|
||||
case '6':
|
||||
return '买入支出';
|
||||
default:
|
||||
return '未知';
|
||||
}
|
||||
}
|
||||
|
||||
/// 是否为收入
|
||||
bool get isIncome => ['1', '3', '5'].contains(flowType);
|
||||
}
|
||||
Reference in New Issue
Block a user