259 lines
5.4 KiB
Markdown
259 lines
5.4 KiB
Markdown
|
|
# 产品管理员接口文档
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本文档描述了产品域的管理员接口,包括产品管理、分类管理和订阅管理功能。
|
|||
|
|
|
|||
|
|
## 接口列表
|
|||
|
|
|
|||
|
|
### 1. 产品管理
|
|||
|
|
|
|||
|
|
#### 1.1 创建产品
|
|||
|
|
- **接口地址**: `POST /api/v1/admin/products`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **请求体**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "产品名称",
|
|||
|
|
"code": "产品编号",
|
|||
|
|
"description": "产品描述",
|
|||
|
|
"content": "产品内容",
|
|||
|
|
"category_id": "分类ID",
|
|||
|
|
"price": 99.99,
|
|||
|
|
"is_enabled": true,
|
|||
|
|
"is_visible": true,
|
|||
|
|
"is_package": false,
|
|||
|
|
"seo_title": "SEO标题",
|
|||
|
|
"seo_description": "SEO描述",
|
|||
|
|
"seo_keywords": "SEO关键词"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 201,
|
|||
|
|
"message": "产品创建成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 1.2 更新产品
|
|||
|
|
- **接口地址**: `PUT /api/v1/admin/products/{id}`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **路径参数**:
|
|||
|
|
- `id`: 产品ID
|
|||
|
|
- **请求体**: 同创建产品
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "产品更新成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 1.3 删除产品
|
|||
|
|
- **接口地址**: `DELETE /api/v1/admin/products/{id}`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **路径参数**:
|
|||
|
|
- `id`: 产品ID
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "产品删除成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 分类管理
|
|||
|
|
|
|||
|
|
#### 2.1 创建分类
|
|||
|
|
- **接口地址**: `POST /api/v1/admin/product-categories`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **请求体**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "分类名称",
|
|||
|
|
"code": "分类编号",
|
|||
|
|
"description": "分类描述",
|
|||
|
|
"parent_id": "父分类ID(可选)",
|
|||
|
|
"level": 1,
|
|||
|
|
"sort": 0,
|
|||
|
|
"is_enabled": true,
|
|||
|
|
"is_visible": true
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 201,
|
|||
|
|
"message": "分类创建成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.2 更新分类
|
|||
|
|
- **接口地址**: `PUT /api/v1/admin/product-categories/{id}`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **路径参数**:
|
|||
|
|
- `id`: 分类ID
|
|||
|
|
- **请求体**: 同创建分类
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "分类更新成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.3 删除分类
|
|||
|
|
- **接口地址**: `DELETE /api/v1/admin/product-categories/{id}`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **路径参数**:
|
|||
|
|
- `id`: 分类ID
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "分类删除成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 订阅管理
|
|||
|
|
|
|||
|
|
#### 3.1 更新订阅价格
|
|||
|
|
- **接口地址**: `PUT /api/v1/admin/subscriptions/{id}/price`
|
|||
|
|
- **请求头**:
|
|||
|
|
- `Authorization: Bearer {token}` (需要管理员权限)
|
|||
|
|
- **路径参数**:
|
|||
|
|
- `id`: 订阅ID
|
|||
|
|
- **请求体**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"price": 199.99
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
- **响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "订阅价格更新成功",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 权限要求
|
|||
|
|
|
|||
|
|
所有管理员接口都需要:
|
|||
|
|
1. **JWT认证**: 有效的JWT token
|
|||
|
|
2. **管理员权限**: 用户必须具有管理员角色
|
|||
|
|
|
|||
|
|
## 错误处理
|
|||
|
|
|
|||
|
|
### 常见错误码
|
|||
|
|
|
|||
|
|
- `400`: 请求参数错误
|
|||
|
|
- `401`: 未认证或token无效
|
|||
|
|
- `403`: 权限不足(非管理员用户)
|
|||
|
|
- `404`: 资源不存在
|
|||
|
|
- `500`: 服务器内部错误
|
|||
|
|
|
|||
|
|
### 错误响应格式
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 400,
|
|||
|
|
"message": "错误描述信息",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 业务规则
|
|||
|
|
|
|||
|
|
### 产品管理
|
|||
|
|
1. 产品编号必须唯一
|
|||
|
|
2. 产品价格不能为负数
|
|||
|
|
3. 产品必须关联到有效的分类
|
|||
|
|
4. 删除产品时会进行软删除
|
|||
|
|
|
|||
|
|
### 分类管理
|
|||
|
|
1. 分类编号必须唯一
|
|||
|
|
2. 分类层级必须大于0
|
|||
|
|
3. 父分类必须存在且有效
|
|||
|
|
4. 不能删除有子分类的分类
|
|||
|
|
5. 删除分类时会进行软删除
|
|||
|
|
|
|||
|
|
### 订阅管理
|
|||
|
|
1. 订阅价格不能为负数
|
|||
|
|
2. 只能修改现有订阅的价格
|
|||
|
|
3. 价格修改会记录在日志中
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
### 创建产品示例
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/api/v1/admin/products \
|
|||
|
|
-H "Authorization: Bearer your-jwt-token" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"name": "API调用服务",
|
|||
|
|
"code": "API_CALL",
|
|||
|
|
"description": "提供API调用服务",
|
|||
|
|
"content": "详细的API调用服务说明",
|
|||
|
|
"category_id": "category-uuid",
|
|||
|
|
"price": 99.99,
|
|||
|
|
"is_enabled": true,
|
|||
|
|
"is_visible": true,
|
|||
|
|
"is_package": false,
|
|||
|
|
"seo_title": "API调用服务 - 专业API服务提供商",
|
|||
|
|
"seo_description": "提供高质量的API调用服务",
|
|||
|
|
"seo_keywords": "API,调用,服务"
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 创建分类示例
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8080/api/v1/admin/product-categories \
|
|||
|
|
-H "Authorization: Bearer your-jwt-token" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"name": "API服务",
|
|||
|
|
"code": "API_SERVICE",
|
|||
|
|
"description": "API相关服务分类",
|
|||
|
|
"level": 1,
|
|||
|
|
"sort": 1,
|
|||
|
|
"is_enabled": true,
|
|||
|
|
"is_visible": true
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 更新订阅价格示例
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X PUT http://localhost:8080/api/v1/admin/subscriptions/subscription-uuid/price \
|
|||
|
|
-H "Authorization: Bearer your-jwt-token" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"price": 199.99
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. 所有接口都需要管理员权限,普通用户无法访问
|
|||
|
|
2. 产品编号和分类编号必须唯一,重复时会返回错误
|
|||
|
|
3. 删除操作都是软删除,数据不会真正从数据库中删除
|
|||
|
|
4. 价格字段使用decimal类型,支持两位小数
|
|||
|
|
5. 所有时间字段使用ISO 8601格式
|
|||
|
|
6. 错误消息使用中文,便于用户理解
|