From 2a5cb0d2ecad1fb2a9c750aa83c89a4879b7dc4d Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 21 Dec 2025 05:47:02 -0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E5=90=91=E5=AF=BC=E9=A1=B5?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A8=E8=8D=90=E7=A0=81API=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在用户点击"继续"按钮时,调用API验证推荐码是否有效: - 推荐码不存在或已失效时显示错误提示 - 网络错误时显示友好提示 - 验证通过后才保存并跳转到注册页 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../auth/presentation/pages/guide_page.dart | 53 ++++++++++++++----- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/frontend/mobile-app/lib/features/auth/presentation/pages/guide_page.dart b/frontend/mobile-app/lib/features/auth/presentation/pages/guide_page.dart index 65d2082d..b31a555a 100644 --- a/frontend/mobile-app/lib/features/auth/presentation/pages/guide_page.dart +++ b/frontend/mobile-app/lib/features/auth/presentation/pages/guide_page.dart @@ -343,22 +343,49 @@ class _WelcomePageContentState extends ConsumerState<_WelcomePageContent> { Future _saveReferralCodeAndProceed() async { if (!_canProceed) return; - // 推荐码必填,保存到本地存储 final inviterCode = _referralCodeController.text.trim(); - final secureStorage = ref.read(secureStorageProvider); - await secureStorage.write( - key: StorageKeys.inviterReferralCode, - value: inviterCode, - ); - debugPrint('[GuidePage] 保存邀请人推荐码: $inviterCode'); - if (!mounted) return; + // 调用API验证推荐码是否有效 + try { + final accountService = ref.read(accountServiceProvider); + final isValid = await accountService.verifyReferralCode(inviterCode); - // 跳转到手机号注册页面 - context.push( - RoutePaths.phoneRegister, - extra: PhoneRegisterParams(inviterReferralCode: inviterCode), - ); + if (!isValid) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('推荐码不存在或已失效'), + backgroundColor: Colors.redAccent, + ), + ); + return; + } + + // 验证通过,保存到本地存储 + final secureStorage = ref.read(secureStorageProvider); + await secureStorage.write( + key: StorageKeys.inviterReferralCode, + value: inviterCode, + ); + debugPrint('[GuidePage] 保存邀请人推荐码: $inviterCode'); + + if (!mounted) return; + + // 跳转到手机号注册页面 + context.push( + RoutePaths.phoneRegister, + extra: PhoneRegisterParams(inviterReferralCode: inviterCode), + ); + } catch (e) { + debugPrint('[GuidePage] 验证推荐码失败: $e'); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('网络错误,请稍后重试'), + backgroundColor: Colors.redAccent, + ), + ); + } } /// 打开二维码扫描页面