diff --git a/src/api/shop/shopUserAddress/index.ts b/src/api/shop/shopUserAddress/index.ts index dde2623..35d7b45 100644 --- a/src/api/shop/shopUserAddress/index.ts +++ b/src/api/shop/shopUserAddress/index.ts @@ -24,10 +24,30 @@ export async function listShopUserAddress(params?: ShopUserAddressParam) { '/shop/shop-user-address', params ); - if (res.code === 0 && res.data) { - return res.data; + console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 300)) + // 兼容多种响应格式 + // 1. 直接返回数组 + if (Array.isArray(res)) { + return res as ShopUserAddress[]; } - return Promise.reject(new Error(res.message)); + // 2. 标准包装 { code, data, message } + if (res && typeof res === 'object') { + // 兼容 code: 0 和 code: 200 + const isSuccess = res.code === 0 || res.code === 200 + if (isSuccess) { + // data 是数组 + if (Array.isArray(res.data)) { + return res.data; + } + // data 是分页对象 { list, count } + if (res.data && Array.isArray((res.data as any).list)) { + return (res.data as any).list as ShopUserAddress[]; + } + // data 为 null/undefined 但 code 成功,返回空数组 + return []; + } + } + return Promise.reject(new Error((res as any)?.message || '获取地址列表失败')); } /** diff --git a/src/api/shop/shopUserAddress/model.ts b/src/api/shop/shopUserAddress/model.ts deleted file mode 100644 index c6c5433..0000000 --- a/src/api/shop/shopUserAddress/model.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** 收货地址 */ -export interface ShopUserAddress { - id?: number; - userId?: number; - name?: string; // 收货人姓名 - phone?: string; // 收货人电话 - province?: string; // 省份 - city?: string; // 城市 - district?: string; // 区县 - region?: string; // 区域(部分接口用 region) - detail?: string; // 详细地址 - lng?: string; // 经度 - lat?: string; // 纬度 - isDefault?: number; // 是否默认 0-否 1-是 - createTime?: string; - updateTime?: string; -} diff --git a/src/hooks/useAddress.ts b/src/hooks/useAddress.ts index cdac3fc..573a580 100644 --- a/src/hooks/useAddress.ts +++ b/src/hooks/useAddress.ts @@ -29,9 +29,10 @@ export function useAddress(): UseAddressReturn { setLoading(true) try { const list = await listShopUserAddress() + console.log('[useAddress] loaded addresses:', list?.length, JSON.stringify(list)?.substring(0, 200)) setAddresses(Array.isArray(list) ? list : []) } catch (error) { - console.error('Load addresses error:', error) + console.error('[useAddress] Load addresses error:', error) setAddresses([]) } finally { setLoading(false) diff --git a/src/utils/request.ts b/src/utils/request.ts index b0b865e..e9c3eda 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -125,7 +125,7 @@ const responseInterceptor = (response: any, config: RequestConfig): T => { if (typeof data === 'object' && data !== null && 'code' in data) { const apiResponse = data as ApiResponse - if (apiResponse.code === 0) { + if (apiResponse.code === 0 || apiResponse.code === 200) { return (config.returnRaw ? data : apiResponse.data) as T }