import type { PageResponse, Product, ProductCategory, ProductSku } from '../types' import { apiGet, apiPost, apiPut } from './http' export interface ProductQuery { keyword?: string categoryId?: number merchantId?: number pageNo?: number pageSize?: number } export function buildProductQuery(query: ProductQuery = {}) { const params: Record = { pageNo: query.pageNo || 1, pageSize: query.pageSize || 20 } if (query.keyword) params.keyword = query.keyword if (query.categoryId) params.categoryId = query.categoryId if (query.merchantId) params.merchantId = query.merchantId return params } export async function listProducts(query: ProductQuery = {}) { const page = await apiGet>('/api/admin/products/page', buildProductQuery(query)) return page.records } export function createProduct(data: Partial) { return apiPost('/api/admin/products', data) } export function updateProduct(id: number, data: Partial) { return apiPut(`/api/admin/products/${id}`, data) } export function onShelfProduct(id: number) { return apiPut(`/api/admin/products/${id}/on-shelf`) } export function offShelfProduct(id: number) { return apiPut(`/api/admin/products/${id}/off-shelf`) } export function listProductCategories() { return apiGet('/api/admin/product-categories') } export function createProductCategory(data: Partial) { return apiPost('/api/admin/product-categories', data) } export function addSku(productId: number, data: Partial) { return apiPost(`/api/admin/products/${productId}/skus`, data) } export function updateSku(productId: number, skuId: number, data: Partial) { return apiPut(`/api/admin/products/${productId}/skus/${skuId}`, data) }