diff --git a/frontend/mobile-app/lib/core/services/account_service.dart b/frontend/mobile-app/lib/core/services/account_service.dart index 56ab0cab..1aa382f4 100644 --- a/frontend/mobile-app/lib/core/services/account_service.dart +++ b/frontend/mobile-app/lib/core/services/account_service.dart @@ -1411,6 +1411,31 @@ class AccountService { } } + /// 验证推荐码是否存在 + /// + /// [referralCode] - 推荐码 + /// 返回用户信息(如果存在),否则抛出异常 + Future> verifyReferralCode(String referralCode) async { + debugPrint('$_tag verifyReferralCode() - 验证推荐码: $referralCode'); + + try { + final response = await _apiClient.get( + '/user/by-referral-code/$referralCode', + ); + debugPrint('$_tag verifyReferralCode() - 推荐码有效'); + + final responseData = response.data as Map; + return responseData['data'] as Map? ?? responseData; + } on ApiException catch (e) { + debugPrint('$_tag verifyReferralCode() - 推荐码无效: $e'); + throw ApiException('推荐码不存在或无效'); + } catch (e, stackTrace) { + debugPrint('$_tag verifyReferralCode() - 未知异常: $e'); + debugPrint('$_tag verifyReferralCode() - 堆栈: $stackTrace'); + throw ApiException('推荐码验证失败: $e'); + } + } + /// 发送短信验证码 /// /// [phoneNumber] - 手机号(中国大陆格式:1开头,11位) diff --git a/frontend/mobile-app/lib/features/auth/presentation/pages/phone_register_page.dart b/frontend/mobile-app/lib/features/auth/presentation/pages/phone_register_page.dart index e76c0422..f1d25ec3 100644 --- a/frontend/mobile-app/lib/features/auth/presentation/pages/phone_register_page.dart +++ b/frontend/mobile-app/lib/features/auth/presentation/pages/phone_register_page.dart @@ -76,12 +76,12 @@ class _PhoneRegisterPageState extends ConsumerState { } void _onPhoneChanged() { - // 清除错误信息 - if (_errorMessage != null) { - setState(() { + // 手机号变化时更新按钮状态 + setState(() { + if (_errorMessage != null) { _errorMessage = null; - }); - } + } + }); } /// 验证手机号格式 @@ -111,6 +111,14 @@ class _PhoneRegisterPageState extends ConsumerState { try { final accountService = ref.read(accountServiceProvider); + // 验证推荐码(如果有) + if (widget.inviterReferralCode != null && + widget.inviterReferralCode!.isNotEmpty) { + debugPrint('[PhoneRegisterPage] 验证推荐码: ${widget.inviterReferralCode}'); + await accountService.verifyReferralCode(widget.inviterReferralCode!); + debugPrint('[PhoneRegisterPage] 推荐码验证通过'); + } + // 发送验证码 debugPrint('[PhoneRegisterPage] 发送验证码...'); await accountService.sendSmsCode(phone, SmsCodeType.register);