forked from yoone/API
3.0 KiB
3.0 KiB
产品站点SKU查询方法测试文档
新增和更新的API接口
1. 根据产品ID获取站点SKU列表
接口: GET /product/:id/site-skus
功能: 获取指定产品的所有站点SKU列表
返回: 站点SKU对象数组,按创建时间升序排列
2. 根据站点SKU查询产品
接口: GET /product/site-sku/:siteSku
功能: 根据站点SKU代码查询对应的产品信息
返回: 完整的产品对象(包含站点SKU、分类、属性等关联数据)
3. 根据产品ID获取产品详情
接口: GET /product/:id
功能: 获取产品的完整详情信息
返回: 完整的产品对象(包含站点SKU、分类、属性、组成等关联数据)
4. 现有接口的增强
4.1 根据SKU查询产品
接口: GET /product/sku/:sku
增强: 现在返回的产品信息包含关联的站点SKU数据
4.2 搜索产品
接口: GET /product/search?name=:name
增强: 搜索结果现在包含每个产品的站点SKU数据
4.3 获取产品列表
接口: GET /product/list
增强: 产品列表中的每个产品现在都包含站点SKU数据
服务层新增方法
ProductService新增方法
-
getProductSiteSkus(productId: number): Promise<ProductSiteSku[]>
- 获取指定产品的所有站点SKU
- 包含产品关联信息
- 按创建时间排序
-
getProductById(id: number): Promise
- 根据产品ID获取完整产品信息
- 包含站点SKU、分类、属性、组成等所有关联数据
- 自动处理单品和混装商品的组成信息
-
findProductBySiteSku(siteSku: string): Promise
- 根据站点SKU查询对应的产品
- 返回完整的产品信息
- 如果站点SKU不存在则抛出错误
现有方法增强
- findProductsByName(name: string): 现在包含站点SKU数据
- findProductBySku(sku: string): 现在包含站点SKU数据
- getProductList: 已经包含站点SKU数据(无需更改)
使用示例
获取产品的站点SKU列表
// GET /product/123/site-skus
// 返回:
[
{
"id": 1,
"siteSku": "SITE-SKU-001",
"productId": 123,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
]
根据站点SKU查询产品
// GET /product/site-sku/SITE-SKU-001
// 返回完整的产品对象,包含:
// - 基本信息(SKU、名称、价格等)
// - 分类信息
// - 属性信息
// - 站点SKU列表
// - 组成信息
获取产品详情
// GET /product/123
// 返回完整的产品对象,与站点SKU查询类似
数据库查询优化
所有新增和更新的方法都使用了TypeORM的关联查询,确保:
- 一次查询获取所有需要的数据
- 避免N+1查询问题
- 包含必要的关联关系(分类、属性、站点SKU、组成)
错误处理
所有方法都包含适当的错误处理:
- 产品不存在时抛出明确的错误信息
- 站点SKU不存在时抛出明确的错误信息
- 控制器层统一处理错误并返回适当的HTTP响应