forked from yoone/API
105 lines
3.1 KiB
Markdown
105 lines
3.1 KiB
Markdown
# 产品站点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<Product>
|
||
- 根据产品ID获取完整产品信息
|
||
- 包含站点SKU、分类、属性、组成等所有关联数据
|
||
- 自动处理单品和混装商品的组成信息
|
||
|
||
3. **findProductBySiteSku(siteSku: string)**: Promise<Product>
|
||
- 根据站点SKU查询对应的产品
|
||
- 返回完整的产品信息
|
||
- 如果站点SKU不存在则抛出错误
|
||
|
||
### 现有方法增强
|
||
|
||
1. **findProductsByName(name: string)**: 现在包含站点SKU数据
|
||
2. **findProductBySku(sku: string)**: 现在包含站点SKU数据
|
||
3. **getProductList**: 已经包含站点SKU数据(无需更改)
|
||
|
||
## 使用示例
|
||
|
||
### 获取产品的站点SKU列表
|
||
```javascript
|
||
// 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查询产品
|
||
```javascript
|
||
// GET /product/site-sku/SITE-SKU-001
|
||
// 返回完整的产品对象,包含:
|
||
// - 基本信息(SKU、名称、价格等)
|
||
// - 分类信息
|
||
// - 属性信息
|
||
// - 站点SKU列表
|
||
// - 组成信息
|
||
```
|
||
|
||
### 获取产品详情
|
||
```javascript
|
||
// GET /product/123
|
||
// 返回完整的产品对象,与站点SKU查询类似
|
||
```
|
||
|
||
## 数据库查询优化
|
||
|
||
所有新增和更新的方法都使用了TypeORM的关联查询,确保:
|
||
- 一次查询获取所有需要的数据
|
||
- 避免N+1查询问题
|
||
- 包含必要的关联关系(分类、属性、站点SKU、组成)
|
||
|
||
## 错误处理
|
||
|
||
所有方法都包含适当的错误处理:
|
||
- 产品不存在时抛出明确的错误信息
|
||
- 站点SKU不存在时抛出明确的错误信息
|
||
- 控制器层统一处理错误并返回适当的HTTP响应 |