From 14d4107a10f1a43db32e0d4f061e6c6149b46f5d Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 20 Dec 2025 23:41:53 -0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E7=A0=81=E9=AA=8C=E8=AF=81=20API=20=E9=94=99=E8=AF=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端修复: - getUserByReferralCode() 在推荐码不存在时抛出异常 - 之前返回 null,导致前端无法正确判断错误 前端修复: - 增强 verifyReferralCode() 的响应检查 - 检查 response.data 和 data 字段是否为 null - 添加详细的 debug 日志输出 - null 响应视为推荐码无效并抛出异常 问题原因: - 后端返回 null 时,前端解析 response.data.data 会得到 null - 前端没有检查 null 情况,导致显示 "status: null" 错误 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../services/user-application.service.ts | 4 +++- .../lib/core/services/account_service.dart | 24 +++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/backend/services/identity-service/src/application/services/user-application.service.ts b/backend/services/identity-service/src/application/services/user-application.service.ts index 22cb92ed..dade703c 100644 --- a/backend/services/identity-service/src/application/services/user-application.service.ts +++ b/backend/services/identity-service/src/application/services/user-application.service.ts @@ -779,7 +779,9 @@ export class UserApplicationService { const account = await this.userRepository.findByReferralCode( ReferralCode.create(query.referralCode), ); - if (!account) return null; + if (!account) { + throw new ApplicationError('推荐码不存在或无效'); + } return { userId: account.userId.toString(), diff --git a/frontend/mobile-app/lib/core/services/account_service.dart b/frontend/mobile-app/lib/core/services/account_service.dart index 1aa382f4..32cd91bc 100644 --- a/frontend/mobile-app/lib/core/services/account_service.dart +++ b/frontend/mobile-app/lib/core/services/account_service.dart @@ -1422,13 +1422,27 @@ class AccountService { 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; + debugPrint('$_tag verifyReferralCode() - API 响应: ${response.data}'); + + // 检查响应数据 + final responseData = response.data as Map?; + if (responseData == null) { + debugPrint('$_tag verifyReferralCode() - 响应数据为 null'); + throw ApiException('推荐码不存在或无效'); + } + + final data = responseData['data']; + if (data == null) { + debugPrint('$_tag verifyReferralCode() - data 字段为 null'); + throw ApiException('推荐码不存在或无效'); + } + + debugPrint('$_tag verifyReferralCode() - 推荐码有效'); + return data as Map; } on ApiException catch (e) { - debugPrint('$_tag verifyReferralCode() - 推荐码无效: $e'); - throw ApiException('推荐码不存在或无效'); + debugPrint('$_tag verifyReferralCode() - API 异常: $e'); + rethrow; } catch (e, stackTrace) { debugPrint('$_tag verifyReferralCode() - 未知异常: $e'); debugPrint('$_tag verifyReferralCode() - 堆栈: $stackTrace');