This commit is contained in:
sion
2026-04-06 11:31:28 +08:00
parent d4b0c6c128
commit 4f4f5df83e
3 changed files with 174 additions and 13 deletions

View File

@@ -67,28 +67,70 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
List<Map<String, dynamic>> _parseWelfareRecords(Map<String, dynamic> data) {
final records = <Map<String, dynamic>>[];
// 新人福利
final newUser = data['newUserBonus'] as Map<String, dynamic>?;
if (newUser != null) {
final claimed = newUser['claimed'] as bool? ?? false;
final eligible = newUser['eligible'] as bool? ?? false;
// 状态: 1=已领取, 0=可领取(待领取), 2=不可用(未解锁)
final int status;
if (claimed) {
status = 1;
} else if (eligible) {
status = 0;
} else {
status = 2;
}
records.add({
'type': 'new_user',
'title': '新人福利',
'amount': newUser['amount']?.toString() ?? '0.00',
'status': newUser['status'] ?? 0,
'amount': newUser['amount']?.toString() ?? '100.00',
'status': status,
'time': newUser['claimTime'] ?? newUser['createTime'],
});
}
// 推广福利列表
final referrals = data['referralBonuses'] as List?;
if (referrals != null) {
for (var r in referrals) {
final map = r as Map<String, dynamic>;
final referralRewards = data['referralRewards'] as List<dynamic>? ?? [];
for (var r in referralRewards) {
final map = r as Map<String, dynamic>;
final username = map['username'] as String? ?? '用户';
final milestones = map['milestones'] as List<dynamic>? ?? [];
final claimableCount = map['claimableCount'] as int? ?? 0;
// 每个 milestone 生成一条记录
for (var m in milestones) {
final ms = m as Map<String, dynamic>;
final earned = ms['earned'] as bool? ?? false;
final claimable = ms['claimable'] as bool? ?? false;
final milestoneVal = ms['milestone'] as int? ?? 1;
final int status;
if (earned) {
status = 1; // 已领取
} else if (claimable) {
status = 0; // 可领取
} else {
status = 2; // 未达标
}
records.add({
'type': 'referral',
'title': '推广福利 - ${map['referredUsername'] ?? '用户'}',
'amount': map['amount']?.toString() ?? '0.00',
'status': map['status'] ?? 0,
'time': map['claimTime'] ?? map['createTime'],
'title': '推广福利 - $username (${milestoneVal}000)',
'amount': '100.00',
'status': status,
'time': ms['claimTime'] ?? ms['createTime'],
});
}
// 如果没有 milestone 但有 claimableCount也生成记录
if (milestones.isEmpty && claimableCount > 0) {
records.add({
'type': 'referral',
'title': '推广福利 - $username',
'amount': '${claimableCount * 100}',
'status': 0,
'time': null,
});
}
}
@@ -340,7 +382,7 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
final amount = double.tryParse(record['amount']?.toString() ?? '0') ?? 0;
final status = record['status'] as int? ?? 0;
// status: 0=待领取, 1=已领取, 2=已过期
// status: 0=待领取, 1=已领取, 2=未达标
String statusText;
Color statusColor;
switch (status) {
@@ -349,7 +391,7 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
statusColor = context.appColors.up;
break;
case 2:
statusText = '已过期';
statusText = '未达标';
statusColor = colorScheme.onSurfaceVariant;
break;
default: