fix(mobile-app): 修复认种向导待办操作无法正确标记完成的问题

问题:用户完成认种并签署合同后,ADOPTION_WIZARD待办操作没有被标记为完成,
导致用户被卡在待办操作页面无法进入App。

原因:原来的检查逻辑只检查是否有"待签合同",当用户已签署合同后,
pendingTasks为空,返回false,导致待办操作无法完成。

修复方案:
- 改为检查用户是否有已支付的认种订单(PAID/FUND_ALLOCATED状态)
- 通过比较订单创建时间和待办操作创建时间来判断
- 订单在待办操作之后创建 → 已完成
- 订单在待办操作之前但相差不超过24小时 → 也认为已完成(兼容延迟)
- 保留待签合同的备用检查逻辑

影响范围:仅影响ADOPTION_WIZARD待办操作的完成检测

🤖 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:03:22 -08:00
parent 00264a721e
commit d1a52e74a0
1 changed files with 41 additions and 7 deletions

View File

@ -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<PendingActionsPage> {
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;
//