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. 错误消息使用中文,便于用户理解  |