From 1d6cbf9335a03145365859e6c982165102208c58 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 24 Dec 2025 21:00:53 -0800 Subject: [PATCH] =?UTF-8?q?feat(kyc):=20=E5=AE=9E=E5=90=8D=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E5=89=8D=E6=A3=80=E6=9F=A5=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 点击实名认证时检查手机号是否已验证 - 未验证时显示提示弹窗,引导用户先验证手机号 - 实名认证卡片显示"请先验证手机号"提示 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 50 +++++++++- contract.docx | Bin 0 -> 38257 bytes .../presentation/pages/kyc_entry_page.dart | 86 +++++++++++++++++- 3 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 contract.docx diff --git a/.claude/settings.local.json b/.claude/settings.local.json index dd43080b..871480f3 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -353,7 +353,55 @@ "Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" add backend/services/identity-service/src/api/controllers/internal.controller.ts)", "Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" commit -m \"$\\(cat <<''EOF''\nfix\\(identity\\): 使用Prisma直接查询用户详情\n\ngetUserDetailBySequence 方法改用 Prisma 直接查询数据库,\n以获取 email 和 realName 等领域模型中未暴露的字段。\n\n之前的实现通过领域模型 UserAccount 访问这些字段会导致编译错误,\n因为领域模型没有直接暴露这些属性。\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")", "Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" add backend/api-gateway/kong.yml frontend/mobile-app/lib/core/services/notification_service.dart)", - "Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" commit -m \"$\\(cat <<''EOF''\nfix\\(notification\\): 修复通知中心API路径\n\n问题: 前端调用 /admin-service/mobile/notifications 路径不存在于Kong网关\n\n修复:\n1. Kong网关添加 /api/v1/mobile/notifications 路由到 admin-service\n2. 前端 NotificationService 修正 API 路径:\n - /admin-service/mobile/notifications -> /mobile/notifications\n - /admin-service/mobile/notifications/unread-count -> /mobile/notifications/unread-count\n - /admin-service/mobile/notifications/mark-read -> /mobile/notifications/mark-read\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")" + "Bash(git -C \"c:/Users/dong/Desktop/rwadurian\" commit -m \"$\\(cat <<''EOF''\nfix\\(notification\\): 修复通知中心API路径\n\n问题: 前端调用 /admin-service/mobile/notifications 路径不存在于Kong网关\n\n修复:\n1. Kong网关添加 /api/v1/mobile/notifications 路由到 admin-service\n2. 前端 NotificationService 修正 API 路径:\n - /admin-service/mobile/notifications -> /mobile/notifications\n - /admin-service/mobile/notifications/unread-count -> /mobile/notifications/unread-count\n - /admin-service/mobile/notifications/mark-read -> /mobile/notifications/mark-read\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")", + "Bash(set DATABASE_URL=postgresql://postgres:postgres@localhost:5432/rwadurian_planting?schema=public:*)", + "Bash($env:DATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/rwadurian_planting?schema=public\")", + "Bash(python -c:*)", + "Bash(pip install:*)", + "Bash(backend/services/planting-service/package.json )", + "Bash(backend/services/planting-service/prisma/schema.prisma )", + "Bash(backend/services/planting-service/prisma/migrations/20241224000000_add_contract_signing/ )", + "Bash(backend/services/planting-service/prisma/seed.ts )", + "Bash(backend/services/planting-service/src/api/api.module.ts )", + "Bash(backend/services/planting-service/src/api/controllers/index.ts )", + "Bash(backend/services/planting-service/src/api/controllers/contract-signing.controller.ts )", + "Bash(backend/services/planting-service/src/application/application.module.ts )", + "Bash(backend/services/planting-service/src/application/services/index.ts )", + "Bash(backend/services/planting-service/src/application/services/planting-application.service.ts )", + "Bash(backend/services/planting-service/src/application/services/contract-signing.service.ts )", + "Bash(backend/services/planting-service/src/application/jobs/ )", + "Bash(backend/services/planting-service/src/domain/aggregates/index.ts )", + "Bash(backend/services/planting-service/src/domain/aggregates/contract-signing-task.aggregate.ts )", + "Bash(backend/services/planting-service/src/domain/aggregates/contract-template.aggregate.ts )", + "Bash(backend/services/planting-service/src/domain/repositories/index.ts )", + "Bash(backend/services/planting-service/src/domain/repositories/contract-signing-task.repository.interface.ts )", + "Bash(backend/services/planting-service/src/domain/repositories/contract-template.repository.interface.ts )", + "Bash(backend/services/planting-service/src/domain/value-objects/index.ts )", + "Bash(backend/services/planting-service/src/domain/value-objects/contract-signing-status.enum.ts )", + "Bash(backend/services/planting-service/src/infrastructure/infrastructure.module.ts )", + "Bash(backend/services/planting-service/src/infrastructure/kafka/event-publisher.service.ts )", + "Bash(backend/services/planting-service/src/infrastructure/kafka/index.ts )", + "Bash(backend/services/planting-service/src/infrastructure/kafka/contract-signing-event.consumer.ts )", + "Bash(backend/services/planting-service/src/infrastructure/persistence/repositories/index.ts )", + "Bash(backend/services/planting-service/src/infrastructure/persistence/repositories/contract-signing-task.repository.impl.ts )", + "Bash(backend/services/planting-service/src/infrastructure/persistence/repositories/contract-template.repository.impl.ts )", + "Bash(backend/services/planting-service/src/main.ts )", + "Bash(backend/services/referral-service/src/application/event-handlers/index.ts )", + "Bash(backend/services/referral-service/src/application/event-handlers/planting-created.handler.ts )", + "Bash(backend/services/referral-service/src/application/event-handlers/contract-signing.handler.ts )", + "Bash(backend/services/referral-service/src/infrastructure/external/index.ts )", + "Bash(backend/services/referral-service/src/infrastructure/external/wallet-service.client.ts )", + "Bash(backend/services/referral-service/src/modules/application.module.ts )", + "Bash(backend/services/referral-service/src/modules/infrastructure.module.ts )", + "Bash(backend/services/reward-service/src/application/services/reward-application.service.ts )", + "Bash(backend/services/reward-service/src/domain/services/reward-calculation.service.ts )", + "Bash(backend/services/reward-service/src/infrastructure/external/wallet-service/wallet-service.client.ts )", + "Bash(backend/services/reward-service/src/infrastructure/kafka/event-consumer.controller.ts)", + "Bash(frontend/mobile-app/lib/core/di/injection_container.dart )", + "Bash(frontend/mobile-app/lib/core/services/contract_check_service.dart )", + "Bash(frontend/mobile-app/lib/core/services/contract_signing_service.dart )", + "Bash(frontend/mobile-app/lib/features/contract_signing/ )", + "Bash(frontend/mobile-app/lib/features/home/presentation/pages/home_shell_page.dart )" ], "deny": [], "ask": [] diff --git a/contract.docx b/contract.docx new file mode 100644 index 0000000000000000000000000000000000000000..3c85bbc0b0bb686ac6a97bf1f701fcec3838fd11 GIT binary patch literal 38257 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 W!_H`t;o=7ixQR*uR}Ilv(EkAGuj3^E literal 0 HcmV?d00001 diff --git a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart index 16457dfd..2a13a3f4 100644 --- a/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart +++ b/frontend/mobile-app/lib/features/kyc/presentation/pages/kyc_entry_page.dart @@ -226,27 +226,105 @@ class KycEntryPage extends ConsumerWidget { Widget _buildLevel1Card(BuildContext context, WidgetRef ref, KycStatusResponse status) { final level1 = status.level1; final isCompleted = level1.verified; + // 必须先验证手机号才能进行实名认证 + final needsPhoneVerification = !status.phoneVerified; final isEnabled = !isCompleted; + String description; + if (isCompleted) { + description = '${level1.realName ?? ''} (${_maskIdCard(level1.idCardNumber)})'; + } else if (needsPhoneVerification) { + description = '请先验证手机号'; + } else { + description = '验证姓名和身份证号'; + } + return _buildStepCard( context: context, ref: ref, stepNumber: 1, title: '实名认证', subtitle: '二要素验证', - description: isCompleted - ? '${level1.realName ?? ''} (${_maskIdCard(level1.idCardNumber)})' - : '验证姓名和身份证号', + description: description, isCompleted: isCompleted, isEnabled: isEnabled, + isLocked: needsPhoneVerification && !isCompleted, onTap: () { if (isEnabled) { - context.push(RoutePaths.kycId); + if (needsPhoneVerification) { + // 手机号未验证,跳转到验证手机号页面 + _showPhoneVerificationRequiredDialog(context); + } else { + context.push(RoutePaths.kycId); + } } }, ); } + /// 显示需要先验证手机号的弹窗 + void _showPhoneVerificationRequiredDialog(BuildContext context) { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.r), + ), + title: Row( + children: [ + Icon(Icons.phone_android, color: const Color(0xFF2E7D32), size: 24.sp), + SizedBox(width: 8.w), + Text( + '请先验证手机号', + style: TextStyle( + fontSize: 18.sp, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + content: Text( + '进行实名认证前,需要先验证您的手机号码。', + style: TextStyle( + fontSize: 14.sp, + color: const Color(0xFF666666), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(ctx).pop(), + child: Text( + '稍后验证', + style: TextStyle( + fontSize: 14.sp, + color: const Color(0xFF999999), + ), + ), + ), + ElevatedButton( + onPressed: () { + Navigator.of(ctx).pop(); + context.push(RoutePaths.changePhone); + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF2E7D32), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.r), + ), + ), + child: Text( + '去验证', + style: TextStyle( + fontSize: 14.sp, + color: Colors.white, + ), + ), + ), + ], + ), + ); + } + /// 层级2: 实人认证卡片 Widget _buildLevel2Card(BuildContext context, WidgetRef ref, KycStatusResponse status) { final level2 = status.level2;