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:
hailin 2026-01-09 02:49:31 -08:00
parent 96a84cc281
commit 990f218051
2 changed files with 18 additions and 6 deletions

View File

@ -8,6 +8,7 @@ enum PlantingOrderStatus {
provinceCityConfirmed, //
paid, //
fundAllocated, //
miningEnabled, //
cancelled, //
}
@ -73,6 +74,8 @@ class PlantingOrder {
return PlantingOrderStatus.paid;
case 'FUND_ALLOCATED':
return PlantingOrderStatus.fundAllocated;
case 'MINING_ENABLED':
return PlantingOrderStatus.miningEnabled;
case 'CANCELLED':
return PlantingOrderStatus.cancelled;
default:
@ -312,9 +315,17 @@ class PlantingService {
);
if (response.statusCode == 200) {
final data = response.data as Map<String, dynamic>;
final items = data['items'] as List<dynamic>? ?? [];
return items.map((e) => PlantingOrder.fromJson(e)).toList();
// [...] {items: [...]}
List<dynamic> items;
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}');

View File

@ -288,14 +288,15 @@ class _PendingActionsPageState extends ConsumerState<PendingActionsPage> {
case 'ADOPTION_WIZARD':
//
// PAID/FUND_ALLOCATED
// PAID/FUND_ALLOCATED/MINING_ENABLED
final plantingService = ref.read(plantingServiceProvider);
try {
final orders = await plantingService.getMyOrders(page: 1, pageSize: 10);
for (final order in orders) {
//
//
final isCompleted = order.status == PlantingOrderStatus.paid ||
order.status == PlantingOrderStatus.fundAllocated;
order.status == PlantingOrderStatus.fundAllocated ||
order.status == PlantingOrderStatus.miningEnabled;
if (isCompleted) {
//
//