diff --git a/frontend/mobile-app/lib/features/pending_actions/presentation/pages/pending_actions_page.dart b/frontend/mobile-app/lib/features/pending_actions/presentation/pages/pending_actions_page.dart index 9835e4f9..295468d3 100644 --- a/frontend/mobile-app/lib/features/pending_actions/presentation/pages/pending_actions_page.dart +++ b/frontend/mobile-app/lib/features/pending_actions/presentation/pages/pending_actions_page.dart @@ -5,6 +5,7 @@ import '../../../../core/di/injection_container.dart'; import '../../../../core/services/pending_action_service.dart'; import '../../../../core/services/contract_signing_service.dart'; import '../../../../core/services/reward_service.dart'; +import '../../../../core/services/planting_service.dart'; import '../../../../routes/route_paths.dart'; import '../../../kyc/data/kyc_service.dart'; import 'special_deduction_page.dart'; @@ -266,14 +267,47 @@ class _PendingActionsPageState extends ConsumerState { return false; case 'ADOPTION_WIZARD': - // 检查是否有待签署的合同(认种完成后会生成合同) - // 如果有待签合同,说明认种已完成 - final contractService = ref.read(contractSigningServiceProvider); - final pendingTasks = await contractService.getPendingTasks(); - if (pendingTasks.isNotEmpty) { - debugPrint('[PendingActionsPage] 存在待签合同,认种向导已完成'); - return true; + // 检查用户是否有已完成支付的认种订单 + // 通过检查订单状态(PAID/FUND_ALLOCATED)来判断 + 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; + if (isCompleted) { + // 检查订单是否在待办操作创建之后创建的 + // 这样可以支持用户多次执行认种向导 + if (order.createdAt.isAfter(action.createdAt)) { + debugPrint('[PendingActionsPage] 用户在待办操作后完成了认种订单 ${order.orderNo},认种向导已完成'); + return true; + } + // 如果订单在待办操作之前但相差不超过24小时,也认为是同一次认种 + // 这是为了兼容待办操作创建有延迟的情况 + final timeDiff = action.createdAt.difference(order.createdAt); + if (timeDiff.inHours < 24) { + debugPrint('[PendingActionsPage] 用户有近期完成的认种订单 ${order.orderNo}(相差${timeDiff.inHours}小时),认种向导已完成'); + return true; + } + } + } + } catch (e) { + debugPrint('[PendingActionsPage] 检查认种订单失败: $e'); } + + // 备用检查:是否有待签合同(说明认种已完成,只是还没签合同) + try { + final contractService = ref.read(contractSigningServiceProvider); + final pendingTasks = await contractService.getPendingTasks(); + if (pendingTasks.isNotEmpty) { + debugPrint('[PendingActionsPage] 存在待签合同,认种向导已完成'); + return true; + } + } catch (e) { + debugPrint('[PendingActionsPage] 检查待签合同失败: $e'); + } + return false; // 其他操作类型目前不做预检查