fix(shopUserAddress): 兼容多种地址列表响应格式并优化错误处理
- 支持响应为数组、标准包装格式和分页对象多种格式 - 兼容 code 为 0 或 200 的成功响应 - 在请求地址列表时增加日志输出,方便调试响应数据 - 删除 ShopUserAddress 接口定义,避免冗余 - request工具中支持 code 为 200 的请求成功判断 - useAddress钩子中添加加载地址日志和错误日志辅助调试
This commit is contained in:
@@ -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 || '获取地址列表失败'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user