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, // 已确认省市
|
||||
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}');
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
// 检查订单是否在待办操作创建之后创建的
|
||||
// 这样可以支持用户多次执行认种向导
|
||||
|
|
|
|||
Loading…
Reference in New Issue