Files
xlxumu/docs/design/管理后台接口设计文档.md

2135 lines
44 KiB
Markdown
Raw Permalink Normal View History

# 管理后台接口设计文档
## 版本历史
| 版本 | 日期 | 作者 | 变更说明 |
|------|------|------|----------|
| 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": "体重85kg6月龄",
"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 后续优化
- **性能优化**: 接口响应时间优化,缓存策略完善
- **安全加固**: 接口安全防护,数据加密传输
- **功能扩展**: 根据业务需求持续迭代新功能
- **文档维护**: 保持文档与代码同步更新