2135 lines
44 KiB
Markdown
2135 lines
44 KiB
Markdown
|
|
# 管理后台接口设计文档
|
|||
|
|
|
|||
|
|
## 版本历史
|
|||
|
|
| 版本 | 日期 | 作者 | 变更说明 |
|
|||
|
|
|------|------|------|----------|
|
|||
|
|
| 1.0 | 2024-01-20 | 后端团队 | 初始版本 |
|
|||
|
|
|
|||
|
|
## 1. 接口概述
|
|||
|
|
|
|||
|
|
### 1.1 设计原则
|
|||
|
|
- **RESTful风格**: 遵循REST架构风格,使用标准HTTP方法
|
|||
|
|
- **统一响应格式**: 所有接口返回统一的JSON格式
|
|||
|
|
- **版本控制**: 通过URL路径进行API版本管理
|
|||
|
|
- **安全认证**: 基于JWT的身份认证和权限控制
|
|||
|
|
- **参数验证**: 严格的输入参数验证和错误处理
|
|||
|
|
- **文档完整**: 详细的接口文档和示例
|
|||
|
|
|
|||
|
|
### 1.2 基础信息
|
|||
|
|
- **Base URL**: `https://api.xlxumu.com/admin/v1`
|
|||
|
|
- **Content-Type**: `application/json`
|
|||
|
|
- **字符编码**: `UTF-8`
|
|||
|
|
- **认证方式**: `Bearer Token (JWT)`
|
|||
|
|
|
|||
|
|
### 1.3 通用响应格式
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "操作成功",
|
|||
|
|
"data": {},
|
|||
|
|
"timestamp": 1705747200000,
|
|||
|
|
"request_id": "req_123456789"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1.4 错误响应格式
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"code": 400,
|
|||
|
|
"message": "参数错误",
|
|||
|
|
"errors": [
|
|||
|
|
{
|
|||
|
|
"field": "username",
|
|||
|
|
"message": "用户名不能为空"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"timestamp": 1705747200000,
|
|||
|
|
"request_id": "req_123456789"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1.5 状态码说明
|
|||
|
|
| 状态码 | 说明 | 描述 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| 200 | OK | 请求成功 |
|
|||
|
|
| 201 | Created | 创建成功 |
|
|||
|
|
| 400 | Bad Request | 请求参数错误 |
|
|||
|
|
| 401 | Unauthorized | 未授权 |
|
|||
|
|
| 403 | Forbidden | 禁止访问 |
|
|||
|
|
| 404 | Not Found | 资源不存在 |
|
|||
|
|
| 409 | Conflict | 资源冲突 |
|
|||
|
|
| 422 | Unprocessable Entity | 参数验证失败 |
|
|||
|
|
| 500 | Internal Server Error | 服务器内部错误 |
|
|||
|
|
|
|||
|
|
## 2. 认证授权
|
|||
|
|
|
|||
|
|
### 2.1 登录认证
|
|||
|
|
|
|||
|
|
#### 2.1.1 管理员登录
|
|||
|
|
**接口地址**: `POST /auth/login`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"username": "admin",
|
|||
|
|
"password": "password123",
|
|||
|
|
"captcha": "ABCD",
|
|||
|
|
"captcha_key": "captcha_key_123"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "登录成功",
|
|||
|
|
"data": {
|
|||
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|||
|
|
"refresh_token": "refresh_token_123",
|
|||
|
|
"expires_in": 7200,
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "admin",
|
|||
|
|
"real_name": "系统管理员",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"roles": ["super_admin"],
|
|||
|
|
"permissions": ["*"]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.1.2 刷新Token
|
|||
|
|
**接口地址**: `POST /auth/refresh`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"refresh_token": "refresh_token_123"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "刷新成功",
|
|||
|
|
"data": {
|
|||
|
|
"token": "new_jwt_token",
|
|||
|
|
"expires_in": 7200
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.1.3 退出登录
|
|||
|
|
**接口地址**: `POST /auth/logout`
|
|||
|
|
|
|||
|
|
**请求头**:
|
|||
|
|
```
|
|||
|
|
Authorization: Bearer {token}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "退出成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 权限验证
|
|||
|
|
|
|||
|
|
#### 2.2.1 获取用户信息
|
|||
|
|
**接口地址**: `GET /auth/user`
|
|||
|
|
|
|||
|
|
**请求头**:
|
|||
|
|
```
|
|||
|
|
Authorization: Bearer {token}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "admin",
|
|||
|
|
"real_name": "系统管理员",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"roles": ["super_admin"],
|
|||
|
|
"permissions": ["*"],
|
|||
|
|
"last_login_at": "2024-01-20 10:30:00",
|
|||
|
|
"last_login_ip": "192.168.1.100"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.2.2 获取用户菜单
|
|||
|
|
**接口地址**: `GET /auth/menus`
|
|||
|
|
|
|||
|
|
**请求头**:
|
|||
|
|
```
|
|||
|
|
Authorization: Bearer {token}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "系统管理",
|
|||
|
|
"path": "/system",
|
|||
|
|
"icon": "system",
|
|||
|
|
"sort_order": 1,
|
|||
|
|
"children": [
|
|||
|
|
{
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "用户管理",
|
|||
|
|
"path": "/system/users",
|
|||
|
|
"icon": "user",
|
|||
|
|
"sort_order": 1
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 用户管理
|
|||
|
|
|
|||
|
|
### 3.1 用户列表
|
|||
|
|
|
|||
|
|
#### 3.1.1 获取用户列表
|
|||
|
|
**接口地址**: `GET /users`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词 |
|
|||
|
|
| status | int | 否 | 用户状态:0-禁用,1-正常 |
|
|||
|
|
| role_id | int | 否 | 角色ID |
|
|||
|
|
| created_start | string | 否 | 创建开始时间 |
|
|||
|
|
| created_end | string | 否 | 创建结束时间 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三",
|
|||
|
|
"phone": "138****8000",
|
|||
|
|
"email": "zhang@example.com",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"status": 1,
|
|||
|
|
"roles": [
|
|||
|
|
{
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "养殖户",
|
|||
|
|
"code": "farmer"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"last_login_at": "2024-01-20 10:30:00",
|
|||
|
|
"created_at": "2024-01-15 09:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 100,
|
|||
|
|
"total_pages": 5
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 用户详情
|
|||
|
|
|
|||
|
|
#### 3.2.1 获取用户详情
|
|||
|
|
**接口地址**: `GET /users/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三",
|
|||
|
|
"phone": "13800138000",
|
|||
|
|
"email": "zhang@example.com",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"gender": 1,
|
|||
|
|
"birthday": "1990-01-01",
|
|||
|
|
"address": "北京市朝阳区",
|
|||
|
|
"id_card": "110101199001010001",
|
|||
|
|
"status": 1,
|
|||
|
|
"roles": [
|
|||
|
|
{
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "养殖户",
|
|||
|
|
"code": "farmer"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"farms": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"type": "pig",
|
|||
|
|
"status": 1
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"last_login_at": "2024-01-20 10:30:00",
|
|||
|
|
"last_login_ip": "192.168.1.100",
|
|||
|
|
"created_at": "2024-01-15 09:00:00",
|
|||
|
|
"updated_at": "2024-01-20 10:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.3 用户操作
|
|||
|
|
|
|||
|
|
#### 3.3.1 创建用户
|
|||
|
|
**接口地址**: `POST /users`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"username": "farmer002",
|
|||
|
|
"password": "password123",
|
|||
|
|
"real_name": "李四",
|
|||
|
|
"phone": "13900139000",
|
|||
|
|
"email": "li@example.com",
|
|||
|
|
"gender": 1,
|
|||
|
|
"birthday": "1985-05-15",
|
|||
|
|
"address": "上海市浦东新区",
|
|||
|
|
"role_ids": [2]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 201,
|
|||
|
|
"message": "创建成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 2,
|
|||
|
|
"username": "farmer002",
|
|||
|
|
"real_name": "李四",
|
|||
|
|
"phone": "139****9000",
|
|||
|
|
"email": "li@example.com",
|
|||
|
|
"status": 1,
|
|||
|
|
"created_at": "2024-01-20 11:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3.2 更新用户
|
|||
|
|
**接口地址**: `PUT /users/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"real_name": "李四四",
|
|||
|
|
"phone": "13900139001",
|
|||
|
|
"email": "li4@example.com",
|
|||
|
|
"gender": 1,
|
|||
|
|
"birthday": "1985-05-15",
|
|||
|
|
"address": "上海市浦东新区张江镇",
|
|||
|
|
"role_ids": [2, 3]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 2,
|
|||
|
|
"username": "farmer002",
|
|||
|
|
"real_name": "李四四",
|
|||
|
|
"phone": "139****9001",
|
|||
|
|
"email": "li4@example.com",
|
|||
|
|
"updated_at": "2024-01-20 11:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3.3 删除用户
|
|||
|
|
**接口地址**: `DELETE /users/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "删除成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3.4 批量删除用户
|
|||
|
|
**接口地址**: `DELETE /users`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"ids": [1, 2, 3]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "批量删除成功",
|
|||
|
|
"data": {
|
|||
|
|
"deleted_count": 3
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3.5 重置用户密码
|
|||
|
|
**接口地址**: `POST /users/{id}/reset-password`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"new_password": "newpassword123"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "密码重置成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3.6 启用/禁用用户
|
|||
|
|
**接口地址**: `POST /users/{id}/toggle-status`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 用户ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": 0
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "状态更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"status": 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 角色权限管理
|
|||
|
|
|
|||
|
|
### 4.1 角色管理
|
|||
|
|
|
|||
|
|
#### 4.1.1 获取角色列表
|
|||
|
|
**接口地址**: `GET /roles`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词 |
|
|||
|
|
| status | int | 否 | 角色状态 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "超级管理员",
|
|||
|
|
"code": "super_admin",
|
|||
|
|
"description": "系统超级管理员,拥有所有权限",
|
|||
|
|
"status": 1,
|
|||
|
|
"user_count": 1,
|
|||
|
|
"created_at": "2024-01-01 00:00:00"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "养殖户",
|
|||
|
|
"code": "farmer",
|
|||
|
|
"description": "普通养殖户用户",
|
|||
|
|
"status": 1,
|
|||
|
|
"user_count": 50,
|
|||
|
|
"created_at": "2024-01-01 00:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 5,
|
|||
|
|
"total_pages": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.1.2 获取角色详情
|
|||
|
|
**接口地址**: `GET /roles/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 角色ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "养殖户",
|
|||
|
|
"code": "farmer",
|
|||
|
|
"description": "普通养殖户用户",
|
|||
|
|
"status": 1,
|
|||
|
|
"permissions": [
|
|||
|
|
{
|
|||
|
|
"id": 10,
|
|||
|
|
"name": "查看养殖场",
|
|||
|
|
"code": "farm:view",
|
|||
|
|
"type": "api"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": 11,
|
|||
|
|
"name": "管理动物",
|
|||
|
|
"code": "animal:manage",
|
|||
|
|
"type": "api"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"users": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"created_at": "2024-01-01 00:00:00",
|
|||
|
|
"updated_at": "2024-01-15 10:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.1.3 创建角色
|
|||
|
|
**接口地址**: `POST /roles`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "运营管理员",
|
|||
|
|
"code": "operator",
|
|||
|
|
"description": "负责平台运营管理",
|
|||
|
|
"permission_ids": [10, 11, 12, 13]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 201,
|
|||
|
|
"message": "创建成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 3,
|
|||
|
|
"name": "运营管理员",
|
|||
|
|
"code": "operator",
|
|||
|
|
"description": "负责平台运营管理",
|
|||
|
|
"status": 1,
|
|||
|
|
"created_at": "2024-01-20 12:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.1.4 更新角色
|
|||
|
|
**接口地址**: `PUT /roles/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 角色ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "高级运营管理员",
|
|||
|
|
"description": "负责平台高级运营管理",
|
|||
|
|
"permission_ids": [10, 11, 12, 13, 14, 15]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 3,
|
|||
|
|
"name": "高级运营管理员",
|
|||
|
|
"description": "负责平台高级运营管理",
|
|||
|
|
"updated_at": "2024-01-20 12:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.1.5 删除角色
|
|||
|
|
**接口地址**: `DELETE /roles/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 角色ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "删除成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.2 权限管理
|
|||
|
|
|
|||
|
|
#### 4.2.1 获取权限树
|
|||
|
|
**接口地址**: `GET /permissions/tree`
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "系统管理",
|
|||
|
|
"code": "system",
|
|||
|
|
"type": "menu",
|
|||
|
|
"path": "/system",
|
|||
|
|
"icon": "system",
|
|||
|
|
"sort_order": 1,
|
|||
|
|
"children": [
|
|||
|
|
{
|
|||
|
|
"id": 2,
|
|||
|
|
"name": "用户管理",
|
|||
|
|
"code": "system:user",
|
|||
|
|
"type": "menu",
|
|||
|
|
"path": "/system/users",
|
|||
|
|
"icon": "user",
|
|||
|
|
"sort_order": 1,
|
|||
|
|
"children": [
|
|||
|
|
{
|
|||
|
|
"id": 3,
|
|||
|
|
"name": "查看用户",
|
|||
|
|
"code": "system:user:view",
|
|||
|
|
"type": "button",
|
|||
|
|
"sort_order": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": 4,
|
|||
|
|
"name": "创建用户",
|
|||
|
|
"code": "system:user:create",
|
|||
|
|
"type": "button",
|
|||
|
|
"sort_order": 2
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.2.2 获取权限列表
|
|||
|
|
**接口地址**: `GET /permissions`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| type | string | 否 | 权限类型:menu,button,api |
|
|||
|
|
| parent_id | int | 否 | 父权限ID |
|
|||
|
|
| status | int | 否 | 权限状态 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "系统管理",
|
|||
|
|
"code": "system",
|
|||
|
|
"type": "menu",
|
|||
|
|
"parent_id": null,
|
|||
|
|
"path": "/system",
|
|||
|
|
"icon": "system",
|
|||
|
|
"sort_order": 1,
|
|||
|
|
"status": 1,
|
|||
|
|
"created_at": "2024-01-01 00:00:00"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.2.3 创建权限
|
|||
|
|
**接口地址**: `POST /permissions`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "财务管理",
|
|||
|
|
"code": "finance",
|
|||
|
|
"type": "menu",
|
|||
|
|
"parent_id": null,
|
|||
|
|
"path": "/finance",
|
|||
|
|
"icon": "finance",
|
|||
|
|
"sort_order": 3
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 201,
|
|||
|
|
"message": "创建成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 20,
|
|||
|
|
"name": "财务管理",
|
|||
|
|
"code": "finance",
|
|||
|
|
"type": "menu",
|
|||
|
|
"parent_id": null,
|
|||
|
|
"path": "/finance",
|
|||
|
|
"icon": "finance",
|
|||
|
|
"sort_order": 3,
|
|||
|
|
"status": 1,
|
|||
|
|
"created_at": "2024-01-20 13:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 养殖场管理
|
|||
|
|
|
|||
|
|
### 5.1 养殖场列表
|
|||
|
|
|
|||
|
|
#### 5.1.1 获取养殖场列表
|
|||
|
|
**接口地址**: `GET /farms`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词 |
|
|||
|
|
| type | string | 否 | 养殖类型 |
|
|||
|
|
| status | int | 否 | 养殖场状态 |
|
|||
|
|
| province | string | 否 | 省份 |
|
|||
|
|
| city | string | 否 | 城市 |
|
|||
|
|
| user_id | int | 否 | 用户ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"code": "FARM001",
|
|||
|
|
"type": "pig",
|
|||
|
|
"area": 5000.00,
|
|||
|
|
"capacity": 500,
|
|||
|
|
"address": "北京市朝阳区某某村",
|
|||
|
|
"province": "北京市",
|
|||
|
|
"city": "北京市",
|
|||
|
|
"district": "朝阳区",
|
|||
|
|
"status": 1,
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三"
|
|||
|
|
},
|
|||
|
|
"animal_count": 150,
|
|||
|
|
"created_at": "2024-01-15 09:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 50,
|
|||
|
|
"total_pages": 3
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.2 养殖场详情
|
|||
|
|
|
|||
|
|
#### 5.2.1 获取养殖场详情
|
|||
|
|
**接口地址**: `GET /farms/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 养殖场ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"code": "FARM001",
|
|||
|
|
"type": "pig",
|
|||
|
|
"area": 5000.00,
|
|||
|
|
"capacity": 500,
|
|||
|
|
"address": "北京市朝阳区某某村123号",
|
|||
|
|
"province": "北京市",
|
|||
|
|
"city": "北京市",
|
|||
|
|
"district": "朝阳区",
|
|||
|
|
"longitude": 116.407526,
|
|||
|
|
"latitude": 39.904030,
|
|||
|
|
"license_number": "京农许字[2024]001号",
|
|||
|
|
"license_image": "https://example.com/license.jpg",
|
|||
|
|
"description": "专业养猪场,采用现代化养殖技术",
|
|||
|
|
"status": 1,
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三",
|
|||
|
|
"phone": "138****8000"
|
|||
|
|
},
|
|||
|
|
"statistics": {
|
|||
|
|
"total_animals": 150,
|
|||
|
|
"healthy_animals": 145,
|
|||
|
|
"sick_animals": 5,
|
|||
|
|
"total_value": 150000.00
|
|||
|
|
},
|
|||
|
|
"created_at": "2024-01-15 09:00:00",
|
|||
|
|
"updated_at": "2024-01-20 10:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.3 养殖场操作
|
|||
|
|
|
|||
|
|
#### 5.3.1 审核养殖场
|
|||
|
|
**接口地址**: `POST /farms/{id}/audit`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 养殖场ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": 1,
|
|||
|
|
"audit_notes": "审核通过,符合养殖标准"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "审核成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"status": 1,
|
|||
|
|
"audit_notes": "审核通过,符合养殖标准",
|
|||
|
|
"audited_at": "2024-01-20 14:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.3.2 获取养殖场统计
|
|||
|
|
**接口地址**: `GET /farms/{id}/statistics`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 养殖场ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"basic_stats": {
|
|||
|
|
"total_animals": 150,
|
|||
|
|
"healthy_animals": 145,
|
|||
|
|
"sick_animals": 5,
|
|||
|
|
"dead_animals": 0,
|
|||
|
|
"total_value": 150000.00
|
|||
|
|
},
|
|||
|
|
"breed_stats": [
|
|||
|
|
{
|
|||
|
|
"breed": "杜洛克猪",
|
|||
|
|
"count": 80,
|
|||
|
|
"percentage": 53.33
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"breed": "长白猪",
|
|||
|
|
"count": 70,
|
|||
|
|
"percentage": 46.67
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"health_stats": {
|
|||
|
|
"vaccination_rate": 95.5,
|
|||
|
|
"health_check_rate": 100.0,
|
|||
|
|
"disease_rate": 3.33
|
|||
|
|
},
|
|||
|
|
"financial_stats": {
|
|||
|
|
"total_income": 50000.00,
|
|||
|
|
"total_expense": 30000.00,
|
|||
|
|
"net_profit": 20000.00,
|
|||
|
|
"profit_margin": 40.0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. 动物管理
|
|||
|
|
|
|||
|
|
### 6.1 动物列表
|
|||
|
|
|
|||
|
|
#### 6.1.1 获取动物列表
|
|||
|
|
**接口地址**: `GET /animals`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词 |
|
|||
|
|
| farm_id | int | 否 | 养殖场ID |
|
|||
|
|
| category_id | int | 否 | 动物分类ID |
|
|||
|
|
| breed | string | 否 | 品种 |
|
|||
|
|
| gender | int | 否 | 性别 |
|
|||
|
|
| health_status | string | 否 | 健康状态 |
|
|||
|
|
| status | int | 否 | 动物状态 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"code": "PIG001",
|
|||
|
|
"name": "小猪001",
|
|||
|
|
"breed": "杜洛克猪",
|
|||
|
|
"gender": 1,
|
|||
|
|
"birth_date": "2023-06-15",
|
|||
|
|
"age_days": 219,
|
|||
|
|
"weight": 85.5,
|
|||
|
|
"health_status": "healthy",
|
|||
|
|
"status": 1,
|
|||
|
|
"farm": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"real_name": "张三"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"category": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "猪",
|
|||
|
|
"code": "pig"
|
|||
|
|
},
|
|||
|
|
"purchase_price": 800.00,
|
|||
|
|
"current_value": 1200.00,
|
|||
|
|
"created_at": "2023-06-15 10:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 500,
|
|||
|
|
"total_pages": 25
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 动物详情
|
|||
|
|
|
|||
|
|
#### 6.2.1 获取动物详情
|
|||
|
|
**接口地址**: `GET /animals/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 动物ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"code": "PIG001",
|
|||
|
|
"name": "小猪001",
|
|||
|
|
"breed": "杜洛克猪",
|
|||
|
|
"gender": 1,
|
|||
|
|
"birth_date": "2023-06-15",
|
|||
|
|
"age_days": 219,
|
|||
|
|
"weight": 85.5,
|
|||
|
|
"health_status": "healthy",
|
|||
|
|
"status": 1,
|
|||
|
|
"farm": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"code": "FARM001",
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"category": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "猪",
|
|||
|
|
"code": "pig"
|
|||
|
|
},
|
|||
|
|
"parents": {
|
|||
|
|
"father": {
|
|||
|
|
"id": 10,
|
|||
|
|
"code": "PIG010",
|
|||
|
|
"name": "种猪公001"
|
|||
|
|
},
|
|||
|
|
"mother": {
|
|||
|
|
"id": 11,
|
|||
|
|
"code": "PIG011",
|
|||
|
|
"name": "种猪母001"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"purchase_info": {
|
|||
|
|
"price": 800.00,
|
|||
|
|
"date": "2023-06-15",
|
|||
|
|
"source": "本地养殖场"
|
|||
|
|
},
|
|||
|
|
"current_value": 1200.00,
|
|||
|
|
"notes": "生长良好,无疾病史",
|
|||
|
|
"health_records_count": 5,
|
|||
|
|
"vaccination_records_count": 3,
|
|||
|
|
"created_at": "2023-06-15 10:00:00",
|
|||
|
|
"updated_at": "2024-01-20 10:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.3 健康记录
|
|||
|
|
|
|||
|
|
#### 6.3.1 获取动物健康记录
|
|||
|
|
**接口地址**: `GET /animals/{id}/health-records`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 动物ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| record_type | string | 否 | 记录类型 |
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"record_type": "checkup",
|
|||
|
|
"record_date": "2024-01-15",
|
|||
|
|
"symptoms": null,
|
|||
|
|
"diagnosis": "健康状况良好",
|
|||
|
|
"treatment": null,
|
|||
|
|
"medicine": null,
|
|||
|
|
"dosage": null,
|
|||
|
|
"veterinarian": "李兽医",
|
|||
|
|
"cost": 50.00,
|
|||
|
|
"next_checkup_date": "2024-02-15",
|
|||
|
|
"notes": "定期健康检查",
|
|||
|
|
"images": [
|
|||
|
|
"https://example.com/health1.jpg"
|
|||
|
|
],
|
|||
|
|
"created_by": {
|
|||
|
|
"id": 1,
|
|||
|
|
"real_name": "张三"
|
|||
|
|
},
|
|||
|
|
"created_at": "2024-01-15 14:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 5,
|
|||
|
|
"total_pages": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 订单管理
|
|||
|
|
|
|||
|
|
### 7.1 订单列表
|
|||
|
|
|
|||
|
|
#### 7.1.1 获取订单列表
|
|||
|
|
**接口地址**: `GET /orders`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词(订单号) |
|
|||
|
|
| order_type | string | 否 | 订单类型 |
|
|||
|
|
| order_status | string | 否 | 订单状态 |
|
|||
|
|
| payment_status | string | 否 | 支付状态 |
|
|||
|
|
| buyer_id | int | 否 | 买家ID |
|
|||
|
|
| seller_id | int | 否 | 卖家ID |
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"order_no": "ORD202401200001",
|
|||
|
|
"order_type": "animal",
|
|||
|
|
"total_amount": 2400.00,
|
|||
|
|
"discount_amount": 0.00,
|
|||
|
|
"shipping_fee": 100.00,
|
|||
|
|
"actual_amount": 2500.00,
|
|||
|
|
"payment_method": "alipay",
|
|||
|
|
"payment_status": "paid",
|
|||
|
|
"order_status": "confirmed",
|
|||
|
|
"buyer": {
|
|||
|
|
"id": 2,
|
|||
|
|
"username": "buyer001",
|
|||
|
|
"real_name": "李四"
|
|||
|
|
},
|
|||
|
|
"seller": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三"
|
|||
|
|
},
|
|||
|
|
"farm": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场"
|
|||
|
|
},
|
|||
|
|
"item_count": 2,
|
|||
|
|
"paid_at": "2024-01-20 10:30:00",
|
|||
|
|
"created_at": "2024-01-20 10:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 100,
|
|||
|
|
"total_pages": 5
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7.2 订单详情
|
|||
|
|
|
|||
|
|
#### 7.2.1 获取订单详情
|
|||
|
|
**接口地址**: `GET /orders/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 订单ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"order_no": "ORD202401200001",
|
|||
|
|
"order_type": "animal",
|
|||
|
|
"total_amount": 2400.00,
|
|||
|
|
"discount_amount": 0.00,
|
|||
|
|
"shipping_fee": 100.00,
|
|||
|
|
"actual_amount": 2500.00,
|
|||
|
|
"payment_method": "alipay",
|
|||
|
|
"payment_status": "paid",
|
|||
|
|
"order_status": "confirmed",
|
|||
|
|
"buyer": {
|
|||
|
|
"id": 2,
|
|||
|
|
"username": "buyer001",
|
|||
|
|
"real_name": "李四",
|
|||
|
|
"phone": "139****9000"
|
|||
|
|
},
|
|||
|
|
"seller": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三",
|
|||
|
|
"phone": "138****8000"
|
|||
|
|
},
|
|||
|
|
"farm": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场",
|
|||
|
|
"address": "北京市朝阳区某某村123号"
|
|||
|
|
},
|
|||
|
|
"shipping_address": {
|
|||
|
|
"name": "李四",
|
|||
|
|
"phone": "13900139000",
|
|||
|
|
"province": "上海市",
|
|||
|
|
"city": "上海市",
|
|||
|
|
"district": "浦东新区",
|
|||
|
|
"address": "张江镇某某路123号",
|
|||
|
|
"full_address": "上海市上海市浦东新区张江镇某某路123号"
|
|||
|
|
},
|
|||
|
|
"shipping_method": "express",
|
|||
|
|
"tracking_number": "SF1234567890",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"item_type": "animal",
|
|||
|
|
"item_id": 1,
|
|||
|
|
"item_name": "杜洛克猪",
|
|||
|
|
"item_code": "PIG001",
|
|||
|
|
"item_spec": "体重85kg,6月龄",
|
|||
|
|
"unit_price": 1200.00,
|
|||
|
|
"quantity": 2,
|
|||
|
|
"unit": "头",
|
|||
|
|
"subtotal": 2400.00,
|
|||
|
|
"notes": "健康状况良好"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"notes": "请尽快发货",
|
|||
|
|
"paid_at": "2024-01-20 10:30:00",
|
|||
|
|
"shipped_at": null,
|
|||
|
|
"delivered_at": null,
|
|||
|
|
"completed_at": null,
|
|||
|
|
"cancelled_at": null,
|
|||
|
|
"cancel_reason": null,
|
|||
|
|
"created_at": "2024-01-20 10:00:00",
|
|||
|
|
"updated_at": "2024-01-20 10:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7.3 订单操作
|
|||
|
|
|
|||
|
|
#### 7.3.1 订单审核
|
|||
|
|
**接口地址**: `POST /orders/{id}/audit`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 订单ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"action": "approve",
|
|||
|
|
"notes": "订单审核通过"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "审核成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"order_status": "confirmed",
|
|||
|
|
"audit_notes": "订单审核通过",
|
|||
|
|
"audited_at": "2024-01-20 15:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 7.3.2 订单退款
|
|||
|
|
**接口地址**: `POST /orders/{id}/refund`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 订单ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"refund_amount": 2500.00,
|
|||
|
|
"refund_reason": "买家申请退款",
|
|||
|
|
"notes": "同意退款申请"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "退款成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"payment_status": "refunded",
|
|||
|
|
"order_status": "cancelled",
|
|||
|
|
"refund_amount": 2500.00,
|
|||
|
|
"refund_reason": "买家申请退款",
|
|||
|
|
"refunded_at": "2024-01-20 15:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 8. 财务管理
|
|||
|
|
|
|||
|
|
### 8.1 财务记录
|
|||
|
|
|
|||
|
|
#### 8.1.1 获取财务记录列表
|
|||
|
|
**接口地址**: `GET /financial-records`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| record_type | string | 否 | 记录类型:income,expense |
|
|||
|
|
| category | string | 否 | 分类 |
|
|||
|
|
| user_id | int | 否 | 用户ID |
|
|||
|
|
| farm_id | int | 否 | 养殖场ID |
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
| min_amount | decimal | 否 | 最小金额 |
|
|||
|
|
| max_amount | decimal | 否 | 最大金额 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"record_type": "income",
|
|||
|
|
"category": "sale",
|
|||
|
|
"amount": 2400.00,
|
|||
|
|
"description": "销售杜洛克猪2头",
|
|||
|
|
"related_id": 1,
|
|||
|
|
"related_type": "order",
|
|||
|
|
"payment_method": "alipay",
|
|||
|
|
"receipt_image": "https://example.com/receipt1.jpg",
|
|||
|
|
"record_date": "2024-01-20",
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "farmer001",
|
|||
|
|
"real_name": "张三"
|
|||
|
|
},
|
|||
|
|
"farm": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "张三养猪场"
|
|||
|
|
},
|
|||
|
|
"notes": "订单收入",
|
|||
|
|
"created_by": {
|
|||
|
|
"id": 1,
|
|||
|
|
"real_name": "张三"
|
|||
|
|
},
|
|||
|
|
"created_at": "2024-01-20 16:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 200,
|
|||
|
|
"total_pages": 10
|
|||
|
|
},
|
|||
|
|
"summary": {
|
|||
|
|
"total_income": 50000.00,
|
|||
|
|
"total_expense": 30000.00,
|
|||
|
|
"net_profit": 20000.00
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 8.2 财务统计
|
|||
|
|
|
|||
|
|
#### 8.2.1 获取财务统计
|
|||
|
|
**接口地址**: `GET /financial-records/statistics`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
| user_id | int | 否 | 用户ID |
|
|||
|
|
| farm_id | int | 否 | 养殖场ID |
|
|||
|
|
| group_by | string | 否 | 分组方式:day,month,year |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"summary": {
|
|||
|
|
"total_income": 100000.00,
|
|||
|
|
"total_expense": 60000.00,
|
|||
|
|
"net_profit": 40000.00,
|
|||
|
|
"profit_margin": 40.0
|
|||
|
|
},
|
|||
|
|
"income_by_category": [
|
|||
|
|
{
|
|||
|
|
"category": "sale",
|
|||
|
|
"amount": 80000.00,
|
|||
|
|
"percentage": 80.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"category": "other",
|
|||
|
|
"amount": 20000.00,
|
|||
|
|
"percentage": 20.0
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"expense_by_category": [
|
|||
|
|
{
|
|||
|
|
"category": "feed",
|
|||
|
|
"amount": 30000.00,
|
|||
|
|
"percentage": 50.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"category": "medicine",
|
|||
|
|
"amount": 15000.00,
|
|||
|
|
"percentage": 25.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"category": "labor",
|
|||
|
|
"amount": 15000.00,
|
|||
|
|
"percentage": 25.0
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"trend_data": [
|
|||
|
|
{
|
|||
|
|
"date": "2024-01",
|
|||
|
|
"income": 25000.00,
|
|||
|
|
"expense": 15000.00,
|
|||
|
|
"profit": 10000.00
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"date": "2024-02",
|
|||
|
|
"income": 30000.00,
|
|||
|
|
"expense": 18000.00,
|
|||
|
|
"profit": 12000.00
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 9. 系统管理
|
|||
|
|
|
|||
|
|
### 9.1 系统配置
|
|||
|
|
|
|||
|
|
#### 9.1.1 获取系统配置
|
|||
|
|
**接口地址**: `GET /system/configs`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| config_key | string | 否 | 配置键 |
|
|||
|
|
| is_public | int | 否 | 是否公开 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"config_key": "site_name",
|
|||
|
|
"config_value": "畜牧养殖管理平台",
|
|||
|
|
"config_type": "string",
|
|||
|
|
"description": "网站名称",
|
|||
|
|
"is_public": 1,
|
|||
|
|
"created_at": "2024-01-01 00:00:00",
|
|||
|
|
"updated_at": "2024-01-15 10:00:00"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 9.1.2 更新系统配置
|
|||
|
|
**接口地址**: `PUT /system/configs/{id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 配置ID |
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"config_value": "新的网站名称",
|
|||
|
|
"description": "更新后的网站名称"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": 1,
|
|||
|
|
"config_key": "site_name",
|
|||
|
|
"config_value": "新的网站名称",
|
|||
|
|
"description": "更新后的网站名称",
|
|||
|
|
"updated_at": "2024-01-20 16:30:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9.2 操作日志
|
|||
|
|
|
|||
|
|
#### 9.2.1 获取操作日志
|
|||
|
|
**接口地址**: `GET /system/operation-logs`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| user_id | int | 否 | 用户ID |
|
|||
|
|
| module | string | 否 | 模块 |
|
|||
|
|
| action | string | 否 | 操作 |
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
| ip | string | 否 | IP地址 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"user": {
|
|||
|
|
"id": 1,
|
|||
|
|
"username": "admin",
|
|||
|
|
"real_name": "系统管理员"
|
|||
|
|
},
|
|||
|
|
"module": "user",
|
|||
|
|
"action": "create",
|
|||
|
|
"method": "POST",
|
|||
|
|
"url": "/admin/v1/users",
|
|||
|
|
"ip": "192.168.1.100",
|
|||
|
|
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
|
|||
|
|
"request_data": {
|
|||
|
|
"username": "farmer002",
|
|||
|
|
"real_name": "李四"
|
|||
|
|
},
|
|||
|
|
"response_data": {
|
|||
|
|
"success": true,
|
|||
|
|
"data": {
|
|||
|
|
"id": 2
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"status_code": 201,
|
|||
|
|
"execution_time": 150,
|
|||
|
|
"created_at": "2024-01-20 11:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 1000,
|
|||
|
|
"total_pages": 50
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 10. 数据统计
|
|||
|
|
|
|||
|
|
### 10.1 仪表板统计
|
|||
|
|
|
|||
|
|
#### 10.1.1 获取仪表板数据
|
|||
|
|
**接口地址**: `GET /dashboard/statistics`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"overview": {
|
|||
|
|
"total_users": 1000,
|
|||
|
|
"total_farms": 200,
|
|||
|
|
"total_animals": 50000,
|
|||
|
|
"total_orders": 5000,
|
|||
|
|
"total_revenue": 5000000.00
|
|||
|
|
},
|
|||
|
|
"growth_stats": {
|
|||
|
|
"user_growth": {
|
|||
|
|
"current": 1000,
|
|||
|
|
"previous": 950,
|
|||
|
|
"growth_rate": 5.26
|
|||
|
|
},
|
|||
|
|
"farm_growth": {
|
|||
|
|
"current": 200,
|
|||
|
|
"previous": 180,
|
|||
|
|
"growth_rate": 11.11
|
|||
|
|
},
|
|||
|
|
"animal_growth": {
|
|||
|
|
"current": 50000,
|
|||
|
|
"previous": 48000,
|
|||
|
|
"growth_rate": 4.17
|
|||
|
|
},
|
|||
|
|
"order_growth": {
|
|||
|
|
"current": 5000,
|
|||
|
|
"previous": 4500,
|
|||
|
|
"growth_rate": 11.11
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"recent_activities": [
|
|||
|
|
{
|
|||
|
|
"type": "user_register",
|
|||
|
|
"message": "新用户 farmer003 注册成功",
|
|||
|
|
"time": "2024-01-20 16:30:00"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"type": "order_created",
|
|||
|
|
"message": "订单 ORD202401200002 创建成功",
|
|||
|
|
"time": "2024-01-20 16:25:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"chart_data": {
|
|||
|
|
"user_trend": [
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-01",
|
|||
|
|
"count": 900
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-20",
|
|||
|
|
"count": 1000
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"order_trend": [
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-01",
|
|||
|
|
"count": 4000,
|
|||
|
|
"amount": 4000000.00
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-20",
|
|||
|
|
"count": 5000,
|
|||
|
|
"amount": 5000000.00
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 10.2 业务统计
|
|||
|
|
|
|||
|
|
#### 10.2.1 获取用户统计
|
|||
|
|
**接口地址**: `GET /statistics/users`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| start_date | string | 否 | 开始日期 |
|
|||
|
|
| end_date | string | 否 | 结束日期 |
|
|||
|
|
| group_by | string | 否 | 分组方式:day,month,year |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"summary": {
|
|||
|
|
"total_users": 1000,
|
|||
|
|
"active_users": 800,
|
|||
|
|
"new_users": 50,
|
|||
|
|
"retention_rate": 80.0
|
|||
|
|
},
|
|||
|
|
"user_by_role": [
|
|||
|
|
{
|
|||
|
|
"role": "farmer",
|
|||
|
|
"count": 900,
|
|||
|
|
"percentage": 90.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"role": "buyer",
|
|||
|
|
"count": 100,
|
|||
|
|
"percentage": 10.0
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"user_by_region": [
|
|||
|
|
{
|
|||
|
|
"province": "北京市",
|
|||
|
|
"count": 200,
|
|||
|
|
"percentage": 20.0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"province": "上海市",
|
|||
|
|
"count": 150,
|
|||
|
|
"percentage": 15.0
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"trend_data": [
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-01",
|
|||
|
|
"total": 950,
|
|||
|
|
"new": 20,
|
|||
|
|
"active": 760
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"date": "2024-01-20",
|
|||
|
|
"total": 1000,
|
|||
|
|
"new": 50,
|
|||
|
|
"active": 800
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 11. 文件上传
|
|||
|
|
|
|||
|
|
### 11.1 文件上传
|
|||
|
|
|
|||
|
|
#### 11.1.1 上传单个文件
|
|||
|
|
**接口地址**: `POST /upload/file`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
- Content-Type: `multipart/form-data`
|
|||
|
|
- file: 文件对象
|
|||
|
|
- type: 文件类型 (avatar, license, receipt, health_record)
|
|||
|
|
- category: 文件分类 (可选)
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "上传成功",
|
|||
|
|
"data": {
|
|||
|
|
"file_id": "file_123456",
|
|||
|
|
"file_name": "avatar.jpg",
|
|||
|
|
"file_size": 102400,
|
|||
|
|
"file_type": "image/jpeg",
|
|||
|
|
"file_url": "https://cdn.xlxumu.com/uploads/2024/01/20/avatar_123456.jpg",
|
|||
|
|
"thumbnail_url": "https://cdn.xlxumu.com/uploads/2024/01/20/thumb_avatar_123456.jpg",
|
|||
|
|
"uploaded_at": "2024-01-20 17:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 11.1.2 批量上传文件
|
|||
|
|
**接口地址**: `POST /upload/files`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
- Content-Type: `multipart/form-data`
|
|||
|
|
- files[]: 文件对象数组
|
|||
|
|
- type: 文件类型
|
|||
|
|
- category: 文件分类 (可选)
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "上传成功",
|
|||
|
|
"data": {
|
|||
|
|
"uploaded_files": [
|
|||
|
|
{
|
|||
|
|
"file_id": "file_123456",
|
|||
|
|
"file_name": "image1.jpg",
|
|||
|
|
"file_url": "https://cdn.xlxumu.com/uploads/2024/01/20/image1_123456.jpg"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"file_id": "file_123457",
|
|||
|
|
"file_name": "image2.jpg",
|
|||
|
|
"file_url": "https://cdn.xlxumu.com/uploads/2024/01/20/image2_123457.jpg"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"failed_files": [],
|
|||
|
|
"total_count": 2,
|
|||
|
|
"success_count": 2,
|
|||
|
|
"failed_count": 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 12. 导出功能
|
|||
|
|
|
|||
|
|
### 12.1 数据导出
|
|||
|
|
|
|||
|
|
#### 12.1.1 导出用户数据
|
|||
|
|
**接口地址**: `POST /export/users`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"format": "excel",
|
|||
|
|
"filters": {
|
|||
|
|
"status": 1,
|
|||
|
|
"role_id": 2,
|
|||
|
|
"created_start": "2024-01-01",
|
|||
|
|
"created_end": "2024-01-20"
|
|||
|
|
},
|
|||
|
|
"fields": ["username", "real_name", "phone", "email", "created_at"]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "导出任务创建成功",
|
|||
|
|
"data": {
|
|||
|
|
"task_id": "export_task_123456",
|
|||
|
|
"status": "processing",
|
|||
|
|
"estimated_time": 30
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 12.1.2 获取导出任务状态
|
|||
|
|
**接口地址**: `GET /export/tasks/{task_id}`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| task_id | string | 是 | 任务ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"task_id": "export_task_123456",
|
|||
|
|
"status": "completed",
|
|||
|
|
"progress": 100,
|
|||
|
|
"file_url": "https://cdn.xlxumu.com/exports/users_20240120.xlsx",
|
|||
|
|
"file_size": 204800,
|
|||
|
|
"record_count": 1000,
|
|||
|
|
"created_at": "2024-01-20 17:30:00",
|
|||
|
|
"completed_at": "2024-01-20 17:31:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 13. 通知管理
|
|||
|
|
|
|||
|
|
### 13.1 系统通知
|
|||
|
|
|
|||
|
|
#### 13.1.1 获取通知列表
|
|||
|
|
**接口地址**: `GET /notifications`
|
|||
|
|
|
|||
|
|
**请求参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| page | int | 否 | 页码,默认1 |
|
|||
|
|
| page_size | int | 否 | 每页数量,默认20 |
|
|||
|
|
| type | string | 否 | 通知类型 |
|
|||
|
|
| status | string | 否 | 通知状态 |
|
|||
|
|
| is_read | int | 否 | 是否已读 |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"type": "system",
|
|||
|
|
"title": "系统维护通知",
|
|||
|
|
"content": "系统将于今晚22:00-24:00进行维护",
|
|||
|
|
"is_read": 0,
|
|||
|
|
"created_at": "2024-01-20 18:00:00"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"pagination": {
|
|||
|
|
"page": 1,
|
|||
|
|
"page_size": 20,
|
|||
|
|
"total": 50,
|
|||
|
|
"total_pages": 3
|
|||
|
|
},
|
|||
|
|
"unread_count": 5
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 13.1.2 标记通知已读
|
|||
|
|
**接口地址**: `POST /notifications/{id}/read`
|
|||
|
|
|
|||
|
|
**路径参数**:
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | int | 是 | 通知ID |
|
|||
|
|
|
|||
|
|
**响应数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "标记成功"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 14. 错误处理
|
|||
|
|
|
|||
|
|
### 14.1 错误码定义
|
|||
|
|
|
|||
|
|
| 错误码 | HTTP状态码 | 错误信息 | 说明 |
|
|||
|
|
|--------|------------|----------|------|
|
|||
|
|
| 10001 | 400 | 参数错误 | 请求参数格式错误或缺失 |
|
|||
|
|
| 10002 | 401 | 未授权 | Token无效或已过期 |
|
|||
|
|
| 10003 | 403 | 禁止访问 | 权限不足 |
|
|||
|
|
| 10004 | 404 | 资源不存在 | 请求的资源不存在 |
|
|||
|
|
| 10005 | 409 | 资源冲突 | 资源已存在或状态冲突 |
|
|||
|
|
| 10006 | 422 | 参数验证失败 | 参数格式正确但验证失败 |
|
|||
|
|
| 10007 | 429 | 请求过于频繁 | 触发限流 |
|
|||
|
|
| 10008 | 500 | 服务器内部错误 | 系统异常 |
|
|||
|
|
| 20001 | 400 | 用户名已存在 | 用户注册时用户名重复 |
|
|||
|
|
| 20002 | 400 | 手机号已存在 | 用户注册时手机号重复 |
|
|||
|
|
| 20003 | 400 | 邮箱已存在 | 用户注册时邮箱重复 |
|
|||
|
|
| 20004 | 400 | 用户名或密码错误 | 登录验证失败 |
|
|||
|
|
| 20005 | 400 | 验证码错误 | 验证码验证失败 |
|
|||
|
|
| 30001 | 400 | 养殖场名称已存在 | 养殖场创建时名称重复 |
|
|||
|
|
| 30002 | 400 | 养殖场编码已存在 | 养殖场创建时编码重复 |
|
|||
|
|
| 40001 | 400 | 动物编码已存在 | 动物创建时编码重复 |
|
|||
|
|
| 50001 | 400 | 订单状态不允许此操作 | 订单状态错误 |
|
|||
|
|
| 50002 | 400 | 库存不足 | 商品库存不足 |
|
|||
|
|
|
|||
|
|
### 14.2 错误响应示例
|
|||
|
|
|
|||
|
|
#### 14.2.1 参数验证错误
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"code": 10006,
|
|||
|
|
"message": "参数验证失败",
|
|||
|
|
"errors": [
|
|||
|
|
{
|
|||
|
|
"field": "username",
|
|||
|
|
"message": "用户名长度必须在3-20个字符之间"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"field": "phone",
|
|||
|
|
"message": "手机号格式不正确"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"timestamp": 1705747200000,
|
|||
|
|
"request_id": "req_123456789"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 14.2.2 权限不足错误
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"code": 10003,
|
|||
|
|
"message": "权限不足,无法访问此资源",
|
|||
|
|
"timestamp": 1705747200000,
|
|||
|
|
"request_id": "req_123456789"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 15. 接口版本管理
|
|||
|
|
|
|||
|
|
### 15.1 版本策略
|
|||
|
|
- **URL版本控制**: 通过URL路径进行版本管理,如 `/admin/v1/users`
|
|||
|
|
- **向后兼容**: 新版本保持向后兼容,旧版本逐步废弃
|
|||
|
|
- **版本生命周期**: 每个版本至少维护12个月
|
|||
|
|
- **废弃通知**: 版本废弃前3个月发出通知
|
|||
|
|
|
|||
|
|
### 15.2 版本信息
|
|||
|
|
| 版本 | 发布日期 | 状态 | 废弃日期 | 说明 |
|
|||
|
|
|------|----------|------|----------|------|
|
|||
|
|
| v1.0 | 2024-01-01 | 当前版本 | - | 初始版本 |
|
|||
|
|
|
|||
|
|
## 16. 接口测试
|
|||
|
|
|
|||
|
|
### 16.1 测试环境
|
|||
|
|
- **测试地址**: `https://test-api.xlxumu.com/admin/v1`
|
|||
|
|
- **测试账号**: admin / test123456
|
|||
|
|
- **测试数据**: 系统提供测试数据,每日凌晨重置
|
|||
|
|
|
|||
|
|
### 16.2 Postman集合
|
|||
|
|
提供完整的Postman接口测试集合,包含:
|
|||
|
|
- 环境变量配置
|
|||
|
|
- 认证Token自动获取
|
|||
|
|
- 完整的接口测试用例
|
|||
|
|
- 测试数据和断言
|
|||
|
|
|
|||
|
|
### 16.3 接口文档
|
|||
|
|
- **在线文档**: https://docs.xlxumu.com/admin-api
|
|||
|
|
- **Swagger文档**: https://api.xlxumu.com/admin/docs
|
|||
|
|
- **更新频率**: 随版本发布实时更新
|
|||
|
|
|
|||
|
|
## 17. 总结
|
|||
|
|
|
|||
|
|
本文档详细定义了畜牧养殖管理平台管理后台的所有API接口,包括:
|
|||
|
|
|
|||
|
|
### 17.1 核心特性
|
|||
|
|
- **完整的RBAC权限体系**: 支持用户、角色、权限的灵活管理
|
|||
|
|
- **全面的业务功能**: 覆盖用户、养殖场、动物、订单、财务等核心业务
|
|||
|
|
- **统一的接口规范**: 标准化的请求响应格式和错误处理
|
|||
|
|
- **完善的数据统计**: 多维度的数据分析和可视化支持
|
|||
|
|
- **安全的认证机制**: 基于JWT的身份认证和权限控制
|
|||
|
|
|
|||
|
|
### 17.2 技术亮点
|
|||
|
|
- **RESTful设计**: 遵循REST架构原则,接口语义清晰
|
|||
|
|
- **分页查询**: 统一的分页参数和响应格式
|
|||
|
|
- **条件筛选**: 灵活的查询条件和排序支持
|
|||
|
|
- **批量操作**: 支持批量创建、更新、删除操作
|
|||
|
|
- **文件上传**: 完善的文件上传和管理功能
|
|||
|
|
- **数据导出**: 支持多格式数据导出功能
|
|||
|
|
|
|||
|
|
### 17.3 扩展性设计
|
|||
|
|
- **模块化架构**: 按业务模块组织接口,便于维护和扩展
|
|||
|
|
- **版本控制**: 完善的API版本管理策略
|
|||
|
|
- **错误处理**: 统一的错误码和错误信息定义
|
|||
|
|
- **监控日志**: 完整的操作日志和接口监控
|
|||
|
|
|
|||
|
|
### 17.4 后续优化
|
|||
|
|
- **性能优化**: 接口响应时间优化,缓存策略完善
|
|||
|
|
- **安全加固**: 接口安全防护,数据加密传输
|
|||
|
|
- **功能扩展**: 根据业务需求持续迭代新功能
|
|||
|
|
- **文档维护**: 保持文档与代码同步更新
|