fix(mobile-app): 修复认种订单解析和状态检查问题
1. 修复 getMyOrders 解析:兼容后端直接返回数组格式
2. 添加 MINING_ENABLED 订单状态枚举和解析
3. 在 ADOPTION_WIZARD 完成检查中包含 miningEnabled 状态
问题原因:
- 后端返回订单列表格式是直接数组 [...],前端期望的是 {items: [...]}
- 后端返回的 MINING_ENABLED 状态未在前端枚举中定义
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
96a84cc281
commit
990f218051
|
|
@ -8,6 +8,7 @@ enum PlantingOrderStatus {
|
||||||
provinceCityConfirmed, // 已确认省市
|
provinceCityConfirmed, // 已确认省市
|
||||||
paid, // 已支付
|
paid, // 已支付
|
||||||
fundAllocated, // 资金已分配
|
fundAllocated, // 资金已分配
|
||||||
|
miningEnabled, // 挖矿已启用
|
||||||
cancelled, // 已取消
|
cancelled, // 已取消
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,6 +74,8 @@ class PlantingOrder {
|
||||||
return PlantingOrderStatus.paid;
|
return PlantingOrderStatus.paid;
|
||||||
case 'FUND_ALLOCATED':
|
case 'FUND_ALLOCATED':
|
||||||
return PlantingOrderStatus.fundAllocated;
|
return PlantingOrderStatus.fundAllocated;
|
||||||
|
case 'MINING_ENABLED':
|
||||||
|
return PlantingOrderStatus.miningEnabled;
|
||||||
case 'CANCELLED':
|
case 'CANCELLED':
|
||||||
return PlantingOrderStatus.cancelled;
|
return PlantingOrderStatus.cancelled;
|
||||||
default:
|
default:
|
||||||
|
|
@ -312,9 +315,17 @@ class PlantingService {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
final data = response.data as Map<String, dynamic>;
|
// 兼容两种格式:直接数组 [...] 或包装格式 {items: [...]}
|
||||||
final items = data['items'] as List<dynamic>? ?? [];
|
List<dynamic> items;
|
||||||
return items.map((e) => PlantingOrder.fromJson(e)).toList();
|
if (response.data is List) {
|
||||||
|
items = response.data as List<dynamic>;
|
||||||
|
} else if (response.data is Map<String, dynamic>) {
|
||||||
|
final data = response.data as Map<String, dynamic>;
|
||||||
|
items = data['items'] as List<dynamic>? ?? [];
|
||||||
|
} else {
|
||||||
|
items = [];
|
||||||
|
}
|
||||||
|
return items.map((e) => PlantingOrder.fromJson(e as Map<String, dynamic>)).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
throw Exception('获取订单列表失败: ${response.statusCode}');
|
throw Exception('获取订单列表失败: ${response.statusCode}');
|
||||||
|
|
|
||||||
|
|
@ -288,14 +288,15 @@ class _PendingActionsPageState extends ConsumerState<PendingActionsPage> {
|
||||||
|
|
||||||
case 'ADOPTION_WIZARD':
|
case 'ADOPTION_WIZARD':
|
||||||
// 检查用户是否有已完成支付的认种订单
|
// 检查用户是否有已完成支付的认种订单
|
||||||
// 通过检查订单状态(PAID/FUND_ALLOCATED)来判断
|
// 通过检查订单状态(PAID/FUND_ALLOCATED/MINING_ENABLED)来判断
|
||||||
final plantingService = ref.read(plantingServiceProvider);
|
final plantingService = ref.read(plantingServiceProvider);
|
||||||
try {
|
try {
|
||||||
final orders = await plantingService.getMyOrders(page: 1, pageSize: 10);
|
final orders = await plantingService.getMyOrders(page: 1, pageSize: 10);
|
||||||
for (final order in orders) {
|
for (final order in orders) {
|
||||||
// 检查订单是否已支付或资金已分配
|
// 检查订单是否已支付、资金已分配或挖矿已启用
|
||||||
final isCompleted = order.status == PlantingOrderStatus.paid ||
|
final isCompleted = order.status == PlantingOrderStatus.paid ||
|
||||||
order.status == PlantingOrderStatus.fundAllocated;
|
order.status == PlantingOrderStatus.fundAllocated ||
|
||||||
|
order.status == PlantingOrderStatus.miningEnabled;
|
||||||
if (isCompleted) {
|
if (isCompleted) {
|
||||||
// 检查订单是否在待办操作创建之后创建的
|
// 检查订单是否在待办操作创建之后创建的
|
||||||
// 这样可以支持用户多次执行认种向导
|
// 这样可以支持用户多次执行认种向导
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue