import request from '@/utils/request'; import type { ApiResult, PageResult } from '@/api'; import type { ShopUserAddress, ShopUserAddressParam } from './model'; /** * 分页查询收货地址 */ export async function pageShopUserAddress(params: ShopUserAddressParam) { const res = await request.get>>( '/shop/shop-user-address/page', params ); if (res.code === 0) { return res.data; } return Promise.reject(new Error(res.message)); } /** * 查询收货地址列表 */ export async function listShopUserAddress(params?: ShopUserAddressParam) { const res = await request.get>( '/shop/shop-user-address', params ); console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 300)) // 兼容多种响应格式 // 1. 直接返回数组 if (Array.isArray(res)) { return res as ShopUserAddress[]; } // 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 || '获取地址列表失败')); } /** * 添加收货地址 */ export async function addShopUserAddress(data: ShopUserAddress) { const res = await request.post>( '/shop/shop-user-address', data ); if (res.code === 0) { return res.message; } return Promise.reject(new Error(res.message)); } /** * 修改收货地址 */ export async function updateShopUserAddress(data: ShopUserAddress) { const res = await request.put>( '/shop/shop-user-address/' + data.id, data ); if (res.code === 0) { return res.message; } return Promise.reject(new Error(res.message)); } /** * 删除收货地址 */ export async function removeShopUserAddress(id?: number) { const res = await request.del>( '/shop/shop-user-address/' + id ); if (res.code === 0) { return res.message; } return Promise.reject(new Error(res.message)); } /** * 设置默认收货地址 */ export async function setDefaultAddress(id: number) { const res = await request.put>( '/shop/shop-user-address/set-default/' + id ); if (res.code === 0) { return res.message; } return Promise.reject(new Error(res.message)); } /** * 批量删除收货地址 */ export async function removeBatchShopUserAddress(data: (number | undefined)[]) { const res = await request.del>( '/shop/shop-user-address/batch', { ids: data.filter(Boolean) } ); if (res.code === 0) { return res.message; } return Promise.reject(new Error(res.message)); } /** * 根据id查询收货地址 */ export async function getShopUserAddress(id: number) { const res = await request.get>( '/shop/shop-user-address/' + id ); if (res.code === 0 && res.data) { return res.data; } return Promise.reject(new Error(res.message)); }