From c34ef6f79a68ae11d06a8e8f78122c711be8b848 Mon Sep 17 00:00:00 2001 From: yelan Date: Tue, 1 Sep 2026 10:11:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(auth):=20=E7=BB=9F=E4=B8=80=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E5=93=8D=E5=BA=94=E4=B8=8E=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clinical-web/src/api/auth.ts | 29 ++------------------ clinical-web/src/utils/api-response.ts | 37 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 clinical-web/src/utils/api-response.ts diff --git a/clinical-web/src/api/auth.ts b/clinical-web/src/api/auth.ts index 836af75..5c49c91 100644 --- a/clinical-web/src/api/auth.ts +++ b/clinical-web/src/api/auth.ts @@ -1,5 +1,6 @@ import axios from 'axios' +import { ApiResponseError, unwrapApiResponse } from '@/utils/api-response' import { request } from '@/utils/request' import type { AuthenticatedUser, @@ -9,33 +10,7 @@ import type { } from '@/types/auth' import type { ApiResponse } from '@/types/common' -export class ApiResponseError extends Error { - readonly code: number | string - readonly traceId?: string - - constructor(response: ApiResponse) { - super(response.message || '接口请求失败') - this.name = 'ApiResponseError' - this.code = response.code - this.traceId = response.traceId - } -} - -function isSuccessCode(code: number | string) { - return code === 0 || code === '0' -} - -function unwrapApiResponse(response: ApiResponse): T { - if (!isSuccessCode(response.code)) { - throw new ApiResponseError(response) - } - - if (response.data === null) { - throw new Error(response.message || '接口未返回业务数据') - } - - return response.data -} +export { ApiResponseError } from '@/utils/api-response' function normalizePermissions(value: unknown): string[] { if (Array.isArray(value)) { diff --git a/clinical-web/src/utils/api-response.ts b/clinical-web/src/utils/api-response.ts new file mode 100644 index 0000000..135292e --- /dev/null +++ b/clinical-web/src/utils/api-response.ts @@ -0,0 +1,37 @@ +import type { ApiResponse } from '@/types/common' + +export class ApiResponseError extends Error { + readonly code: number | string + readonly traceId?: string + + constructor(response: ApiResponse) { + super(response.message || '接口请求失败') + this.name = 'ApiResponseError' + this.code = response.code + this.traceId = response.traceId + } +} + +export function isSuccessCode(code: number | string) { + return code === 0 || code === '0' +} + +export function unwrapApiResponse(response: ApiResponse): T { + if (!isSuccessCode(response.code)) { + throw new ApiResponseError(response) + } + + if (response.data === null) { + throw new Error(response.message || '接口未返回业务数据') + } + + return response.data +} + +export function unwrapNullableApiResponse(response: ApiResponse): T | null { + if (!isSuccessCode(response.code)) { + throw new ApiResponseError(response) + } + + return response.data +}