zksu
/
API
forked from yoone/API
1
0
Fork 0
API/test-site-sku-methods.md

3.1 KiB
Raw Blame History

产品站点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新增方法

  1. getProductSiteSkus(productId: number): Promise<ProductSiteSku[]>

    • 获取指定产品的所有站点SKU
    • 包含产品关联信息
    • 按创建时间排序
  2. getProductById(id: number): Promise

    • 根据产品ID获取完整产品信息
    • 包含站点SKU、分类、属性、组成等所有关联数据
    • 自动处理单品和混装商品的组成信息
  3. findProductBySiteSku(siteSku: string): Promise

    • 根据站点SKU查询对应的产品
    • 返回完整的产品信息
    • 如果站点SKU不存在则抛出错误

现有方法增强

  1. findProductsByName(name: string): 现在包含站点SKU数据
  2. findProductBySku(sku: string): 现在包含站点SKU数据
  3. 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响应