2025-09-21 21:12:27 +08:00
|
|
|
|
# 管理后台接口设计文档
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 概述
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 项目简介
|
2025-09-22 02:04:07 +08:00
|
|
|
|
本文档详细描述了结伴客管理后台系统的所有API接口设计,包括用户管理、旅行管理、动物认领管理、订单管理、系统管理等模块的接口规范。
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
### 1.2 接口设计原则
|
|
|
|
|
|
- **RESTful风格**:遵循REST架构风格
|
|
|
|
|
|
- **统一响应格式**:所有接口采用统一的响应格式
|
|
|
|
|
|
- **版本控制**:支持API版本管理
|
|
|
|
|
|
- **安全认证**:JWT Token认证机制
|
|
|
|
|
|
- **错误处理**:统一的错误码和错误信息
|
|
|
|
|
|
|
|
|
|
|
|
### 1.3 技术规范
|
|
|
|
|
|
- **协议**:HTTPS
|
|
|
|
|
|
- **数据格式**:JSON
|
|
|
|
|
|
- **字符编码**:UTF-8
|
|
|
|
|
|
- **认证方式**:JWT Bearer Token
|
|
|
|
|
|
- **API版本**:v1
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 通用规范
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 请求格式
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.1.1 请求头
|
|
|
|
|
|
```http
|
|
|
|
|
|
Content-Type: application/json
|
|
|
|
|
|
Authorization: Bearer <JWT_TOKEN>
|
|
|
|
|
|
Accept: application/json
|
|
|
|
|
|
User-Agent: JieBanKe-Admin/1.0.0
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.1.2 请求参数
|
|
|
|
|
|
- **路径参数**:用于资源标识,如 `/api/v1/users/{id}`
|
|
|
|
|
|
- **查询参数**:用于过滤、排序、分页等,如 `?page=1&size=20&sort=created_at:desc`
|
|
|
|
|
|
- **请求体**:JSON格式的数据
|
|
|
|
|
|
|
|
|
|
|
|
### 2.2 响应格式
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.2.1 成功响应
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "操作成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
// 具体数据
|
|
|
|
|
|
},
|
|
|
|
|
|
"timestamp": "2024-01-15T10:30:00Z",
|
|
|
|
|
|
"request_id": "req_123456789"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.2.2 分页响应
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
// 数据列表
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
|
|
|
|
|
"size": 20,
|
|
|
|
|
|
"total": 100,
|
|
|
|
|
|
"pages": 5
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"timestamp": "2024-01-15T10:30:00Z",
|
|
|
|
|
|
"request_id": "req_123456789"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.2.3 错误响应
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 400,
|
|
|
|
|
|
"message": "请求参数错误",
|
|
|
|
|
|
"error": {
|
|
|
|
|
|
"type": "VALIDATION_ERROR",
|
|
|
|
|
|
"details": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"field": "email",
|
|
|
|
|
|
"message": "邮箱格式不正确"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
"timestamp": "2024-01-15T10:30:00Z",
|
|
|
|
|
|
"request_id": "req_123456789"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2.3 状态码规范
|
|
|
|
|
|
|
|
|
|
|
|
| 状态码 | 说明 | 使用场景 |
|
|
|
|
|
|
|--------|------|----------|
|
|
|
|
|
|
| 200 | 成功 | 请求成功处理 |
|
|
|
|
|
|
| 201 | 创建成功 | 资源创建成功 |
|
|
|
|
|
|
| 204 | 无内容 | 删除成功或更新成功无返回内容 |
|
|
|
|
|
|
| 400 | 请求错误 | 参数错误、格式错误 |
|
|
|
|
|
|
| 401 | 未授权 | 未登录或token无效 |
|
|
|
|
|
|
| 403 | 禁止访问 | 权限不足 |
|
|
|
|
|
|
| 404 | 资源不存在 | 请求的资源不存在 |
|
|
|
|
|
|
| 409 | 冲突 | 资源冲突,如用户名已存在 |
|
|
|
|
|
|
| 422 | 实体错误 | 业务逻辑错误 |
|
|
|
|
|
|
| 500 | 服务器错误 | 内部服务器错误 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.4 分页参数
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|------|--------|------|
|
|
|
|
|
|
| page | integer | 1 | 页码,从1开始 |
|
|
|
|
|
|
| size | integer | 20 | 每页数量,最大100 |
|
|
|
|
|
|
| sort | string | created_at:desc | 排序字段和方向 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2.5 排序参数格式
|
|
|
|
|
|
- 单字段排序:`sort=created_at:desc`
|
|
|
|
|
|
- 多字段排序:`sort=status:asc,created_at:desc`
|
|
|
|
|
|
- 支持的排序方向:`asc`(升序)、`desc`(降序)
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 认证授权接口
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 管理员登录
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`POST /api/v1/admin/login`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **接口描述**:管理员登录获取访问令牌
|
|
|
|
|
|
- **是否需要认证**:否
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"username": "admin",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"password": "password123"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| username | string | 是 | 用户名 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
| password | string | 是 | 密码 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "登录成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"admin": {
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"id": 1,
|
|
|
|
|
|
"username": "admin",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"role": "super_admin",
|
|
|
|
|
|
"created_at": "2024-01-01T10:00:00Z"
|
|
|
|
|
|
},
|
|
|
|
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 3.2 获取管理员信息
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/profile`
|
|
|
|
|
|
- **接口描述**:获取当前登录管理员的信息
|
|
|
|
|
|
- **是否需要认证**:是
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "获取成功",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"id": 1,
|
|
|
|
|
|
"username": "admin",
|
|
|
|
|
|
"role": "super_admin",
|
|
|
|
|
|
"created_at": "2024-01-01T10:00:00Z",
|
|
|
|
|
|
"last_login_at": "2024-01-15T09:30:00Z"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 3.3 获取仪表板数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/dashboard`
|
|
|
|
|
|
- **接口描述**:获取管理后台仪表板统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"statistics": {
|
|
|
|
|
|
"totalUsers": 1000,
|
|
|
|
|
|
"totalAnimals": 300,
|
|
|
|
|
|
"totalTravels": 200,
|
|
|
|
|
|
"totalOrders": 1500
|
|
|
|
|
|
},
|
|
|
|
|
|
"recentActivities": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "user_register",
|
|
|
|
|
|
"message": "新用户注册",
|
|
|
|
|
|
"time": "2024-01-15T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"systemInfo": {
|
|
|
|
|
|
"nodeVersion": "v18.17.0",
|
|
|
|
|
|
"platform": "linux",
|
|
|
|
|
|
"uptime": 86400
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 用户管理接口
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 获取用户列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/users`
|
|
|
|
|
|
- **接口描述**:获取用户列表,支持分页、搜索和筛选
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|------|------|--------|------|
|
|
|
|
|
|
| page | integer | 否 | 1 | 页码 |
|
|
|
|
|
|
| pageSize | integer | 否 | 10 | 每页数量 |
|
|
|
|
|
|
| keyword | string | 否 | - | 搜索关键词(昵称、手机号、邮箱) |
|
|
|
|
|
|
| userType | string | 否 | - | 用户类型 |
|
|
|
|
|
|
| status | string | 否 | - | 用户状态(active/inactive/banned) |
|
|
|
|
|
|
| startDate | string | 否 | - | 开始日期 |
|
|
|
|
|
|
| endDate | string | 否 | - | 结束日期 |
|
|
|
|
|
|
| sortField | string | 否 | created_at | 排序字段 |
|
|
|
|
|
|
| sortOrder | string | 否 | desc | 排序方向(asc/desc) |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"users": [
|
2025-09-21 21:12:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"openid": "wx_openid_123456",
|
|
|
|
|
|
"unionid": "wx_unionid_789012",
|
|
|
|
|
|
"nickname": "张三",
|
|
|
|
|
|
"avatar": "https://example.com/avatar.jpg",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"phone": "13800138000",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"email": "zhangsan@example.com",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"gender": 1,
|
|
|
|
|
|
"birthday": "1990-01-01",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"location": "北京市朝阳区",
|
|
|
|
|
|
"bio": "热爱旅行和小动物",
|
|
|
|
|
|
"user_type": "regular",
|
|
|
|
|
|
"status": "active",
|
|
|
|
|
|
"interests": ["旅行", "摄影"],
|
|
|
|
|
|
"occupation": "软件工程师",
|
|
|
|
|
|
"real_name": "张三",
|
|
|
|
|
|
"id_card": "110101199001011234",
|
|
|
|
|
|
"real_name_verified": true,
|
|
|
|
|
|
"phone_verified": true,
|
|
|
|
|
|
"email_verified": false,
|
|
|
|
|
|
"balance": 1500.00,
|
|
|
|
|
|
"points": 1200,
|
|
|
|
|
|
"level": 3,
|
|
|
|
|
|
"travel_count": 5,
|
|
|
|
|
|
"animal_claim_count": 2,
|
|
|
|
|
|
"last_login_at": "2024-01-15T10:30:00Z",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"created_at": "2024-01-01T10:00:00Z",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"updated_at": "2024-01-15T10:30:00Z"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"pageSize": 10,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"total": 100,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"totalPages": 10
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 获取用户详情
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/users/{userId}`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **接口描述**:获取指定用户的详细信息
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| userId | integer | 是 | 用户ID |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"user": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"openid": "wx_openid_123456",
|
|
|
|
|
|
"unionid": "wx_unionid_789012",
|
|
|
|
|
|
"nickname": "张三",
|
|
|
|
|
|
"avatar": "https://example.com/avatar.jpg",
|
|
|
|
|
|
"phone": "13800138000",
|
|
|
|
|
|
"email": "zhangsan@example.com",
|
|
|
|
|
|
"gender": 1,
|
|
|
|
|
|
"birthday": "1990-01-01",
|
|
|
|
|
|
"location": "北京市朝阳区",
|
|
|
|
|
|
"bio": "热爱旅行和小动物",
|
|
|
|
|
|
"user_type": "regular",
|
|
|
|
|
|
"status": "active",
|
|
|
|
|
|
"interests": ["旅行", "摄影"],
|
|
|
|
|
|
"occupation": "软件工程师",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"real_name": "张三",
|
|
|
|
|
|
"id_card": "110101199001011234",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"real_name_verified": true,
|
|
|
|
|
|
"phone_verified": true,
|
|
|
|
|
|
"email_verified": false,
|
|
|
|
|
|
"balance": 1500.00,
|
|
|
|
|
|
"points": 1200,
|
|
|
|
|
|
"level": 3,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"travel_count": 5,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"animal_claim_count": 2,
|
|
|
|
|
|
"recentTravels": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"title": "北京三日游",
|
|
|
|
|
|
"destination": "北京",
|
|
|
|
|
|
"start_date": "2024-01-10",
|
|
|
|
|
|
"end_date": "2024-01-12",
|
|
|
|
|
|
"status": "completed",
|
|
|
|
|
|
"created_at": "2024-01-05T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"recentClaims": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"animal_name": "小白",
|
|
|
|
|
|
"status": "approved",
|
|
|
|
|
|
"created_at": "2024-01-08T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"last_login_at": "2024-01-15T10:30:00Z",
|
|
|
|
|
|
"created_at": "2024-01-01T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:30:00Z"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 4.3 更新用户状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`PUT /api/v1/admin/users/{userId}/status`
|
|
|
|
|
|
- **接口描述**:更新用户状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
2025-09-22 02:04:07 +08:00
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| userId | integer | 是 | 用户ID |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "banned",
|
|
|
|
|
|
"reason": "违规行为"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| status | string | 是 | 用户状态(active/inactive/banned) |
|
|
|
|
|
|
| reason | string | 否 | 操作原因 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "状态更新成功"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 4.4 批量更新用户状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`PUT /api/v1/admin/users/batch-status`
|
|
|
|
|
|
- **接口描述**:批量更新用户状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"userIds": [1, 2, 3],
|
|
|
|
|
|
"status": "inactive",
|
|
|
|
|
|
"reason": "批量操作"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| userIds | array | 是 | 用户ID数组 |
|
|
|
|
|
|
| status | string | 是 | 用户状态(active/inactive/banned) |
|
|
|
|
|
|
| reason | string | 否 | 操作原因 |
|
|
|
|
|
|
|
2025-09-21 21:12:27 +08:00
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "批量更新成功",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"successCount": 3,
|
|
|
|
|
|
"failedCount": 0
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 4.5 获取用户统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/users/statistics`
|
|
|
|
|
|
- **接口描述**:获取用户统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
2025-09-22 02:04:07 +08:00
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|------|------|--------|------|
|
|
|
|
|
|
| period | string | 否 | 30d | 统计周期(7d/30d/90d/1y) |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"totalUsers": 1000,
|
|
|
|
|
|
"activeUsers": 800,
|
|
|
|
|
|
"newUsersToday": 10,
|
|
|
|
|
|
"newUsersThisWeek": 50,
|
|
|
|
|
|
"newUsersThisMonth": 200,
|
|
|
|
|
|
"userGrowthChart": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2024-01-01",
|
|
|
|
|
|
"count": 10
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"statusDistribution": {
|
|
|
|
|
|
"active": 800,
|
|
|
|
|
|
"inactive": 150,
|
|
|
|
|
|
"banned": 50
|
|
|
|
|
|
},
|
|
|
|
|
|
"levelDistribution": {
|
|
|
|
|
|
"1": 400,
|
|
|
|
|
|
"2": 300,
|
|
|
|
|
|
"3": 200,
|
|
|
|
|
|
"4": 80,
|
|
|
|
|
|
"5": 20
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 4.6 导出用户数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/users/export`
|
|
|
|
|
|
- **接口描述**:导出用户数据为Excel文件
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 查询参数
|
2025-09-21 21:12:27 +08:00
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| format | string | 否 | 导出格式(excel/csv),默认excel |
|
|
|
|
|
|
| keyword | string | 否 | 搜索关键词 |
|
|
|
|
|
|
| status | string | 否 | 用户状态筛选 |
|
|
|
|
|
|
| startDate | string | 否 | 开始日期 |
|
|
|
|
|
|
| endDate | string | 否 | 结束日期 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 响应
|
|
|
|
|
|
- 成功时返回文件流
|
|
|
|
|
|
- 失败时返回JSON错误信息
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
## 5. 旅行管理接口
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 获取旅行列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/travels`
|
|
|
|
|
|
- **接口描述**:分页获取旅行活动列表
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`travel:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| page | integer | 否 | 页码,默认1 |
|
|
|
|
|
|
| size | integer | 否 | 每页数量,默认20 |
|
|
|
|
|
|
| sort | string | 否 | 排序,默认created_at:desc |
|
|
|
|
|
|
| keyword | string | 否 | 搜索关键词(标题、目的地) |
|
|
|
|
|
|
| status | integer | 否 | 状态:0-草稿,1-发布,2-进行中,3-已完成,4-已取消 |
|
|
|
|
|
|
| travel_type | string | 否 | 旅行类型 |
|
|
|
|
|
|
| creator_id | integer | 否 | 创建者ID |
|
|
|
|
|
|
| destination | string | 否 | 目的地 |
|
|
|
|
|
|
| start_date | string | 否 | 开始日期(YYYY-MM-DD) |
|
|
|
|
|
|
| end_date | string | 否 | 结束日期(YYYY-MM-DD) |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"uuid": "travel_123456",
|
|
|
|
|
|
"title": "云南大理古城深度游",
|
|
|
|
|
|
"description": "探索大理古城的历史文化...",
|
|
|
|
|
|
"destination": "云南大理",
|
|
|
|
|
|
"start_date": "2024-03-01",
|
|
|
|
|
|
"end_date": "2024-03-05",
|
|
|
|
|
|
"duration_days": 5,
|
|
|
|
|
|
"max_participants": 8,
|
|
|
|
|
|
"current_participants": 3,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"price_per_person": 2500.00,
|
|
|
|
|
|
"includes": "住宿、早餐、门票、导游",
|
|
|
|
|
|
"excludes": "午餐、晚餐、个人消费",
|
|
|
|
|
|
"itinerary": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"day": 1,
|
|
|
|
|
|
"title": "抵达大理",
|
|
|
|
|
|
"activities": ["机场接机", "入住酒店", "古城漫步"]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"requirements": "身体健康,有一定体力",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"travel_type": "cultural",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "recruiting",
|
|
|
|
|
|
"is_featured": false,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"view_count": 156,
|
|
|
|
|
|
"like_count": 23,
|
|
|
|
|
|
"comment_count": 8,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"created_by": 1,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"images": [
|
|
|
|
|
|
"https://example.com/image1.jpg",
|
|
|
|
|
|
"https://example.com/image2.jpg"
|
|
|
|
|
|
],
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
|
|
|
|
|
"size": 20,
|
|
|
|
|
|
"total": 50,
|
|
|
|
|
|
"pages": 3
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 获取旅行详情
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/travels/{id}`
|
|
|
|
|
|
- **接口描述**:获取旅行活动详细信息
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`travel:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"uuid": "travel_123456",
|
|
|
|
|
|
"title": "云南大理古城深度游",
|
|
|
|
|
|
"description": "探索大理古城的历史文化,体验白族风情...",
|
|
|
|
|
|
"destination": "云南大理",
|
|
|
|
|
|
"destination_detail": {
|
|
|
|
|
|
"province": "云南省",
|
|
|
|
|
|
"city": "大理市",
|
|
|
|
|
|
"district": "大理古城",
|
|
|
|
|
|
"address": "大理古城南门",
|
|
|
|
|
|
"latitude": 25.6916,
|
|
|
|
|
|
"longitude": 100.1669
|
|
|
|
|
|
},
|
|
|
|
|
|
"start_date": "2024-03-01",
|
|
|
|
|
|
"end_date": "2024-03-05",
|
|
|
|
|
|
"duration_days": 5,
|
|
|
|
|
|
"max_participants": 8,
|
|
|
|
|
|
"current_participants": 3,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"price_per_person": 2500.00,
|
|
|
|
|
|
"includes": "住宿、早餐、门票、导游",
|
|
|
|
|
|
"excludes": "午餐、晚餐、个人消费",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"travel_type": "cultural",
|
|
|
|
|
|
"itinerary": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"day": 1,
|
|
|
|
|
|
"title": "抵达大理",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"activities": ["接机", "入住客栈", "古城夜游"]
|
2025-09-21 21:12:27 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"day": 2,
|
|
|
|
|
|
"title": "大理古城游览",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"activities": ["洱海骑行", "三塔寺参观", "古城购物"]
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"requirements": "身体健康,有一定体力",
|
|
|
|
|
|
"contact_info": {
|
|
|
|
|
|
"wechat": "traveler001",
|
|
|
|
|
|
"phone": "13800138000"
|
|
|
|
|
|
},
|
|
|
|
|
|
"images": [
|
|
|
|
|
|
"https://example.com/image1.jpg",
|
|
|
|
|
|
"https://example.com/image2.jpg"
|
|
|
|
|
|
],
|
|
|
|
|
|
"tags": ["文化", "古城", "摄影"],
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"is_featured": 0,
|
|
|
|
|
|
"view_count": 156,
|
|
|
|
|
|
"like_count": 23,
|
|
|
|
|
|
"comment_count": 8,
|
|
|
|
|
|
"share_count": 5,
|
|
|
|
|
|
"creator": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"username": "traveler001",
|
|
|
|
|
|
"nickname": "旅行达人",
|
|
|
|
|
|
"avatar_url": "https://example.com/avatar.jpg",
|
|
|
|
|
|
"travel_count": 15,
|
|
|
|
|
|
"rating": 4.8
|
|
|
|
|
|
},
|
|
|
|
|
|
"participants": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"user_id": 2,
|
|
|
|
|
|
"username": "user002",
|
|
|
|
|
|
"nickname": "小明",
|
|
|
|
|
|
"avatar_url": "https://example.com/avatar2.jpg",
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"applied_at": "2024-01-10T15:30:00Z",
|
|
|
|
|
|
"approved_at": "2024-01-11T09:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3 审核旅行活动
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`POST /api/v1/travels/{id}/review`
|
|
|
|
|
|
- **接口描述**:审核旅行活动
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`travel:review`
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"action": "approve",
|
|
|
|
|
|
"reason": "内容符合规范,通过审核",
|
|
|
|
|
|
"is_featured": 1
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| action | string | 是 | 审核动作:approve-通过,reject-拒绝 |
|
|
|
|
|
|
| reason | string | 是 | 审核理由 |
|
|
|
|
|
|
| is_featured | integer | 否 | 是否设为精选:0-否,1-是 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "审核成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"is_featured": 1,
|
|
|
|
|
|
"reviewed_at": "2024-01-15T10:30:00Z",
|
|
|
|
|
|
"review_reason": "内容符合规范,通过审核"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.4 获取旅行参与者
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/travels/{id}/participants`
|
|
|
|
|
|
- **接口描述**:获取旅行活动参与者列表
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`travel:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| status | integer | 否 | 参与状态:0-申请中,1-已通过,2-已拒绝,3-已退出 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"user_id": 2,
|
|
|
|
|
|
"user": {
|
|
|
|
|
|
"id": 2,
|
|
|
|
|
|
"username": "user002",
|
|
|
|
|
|
"nickname": "小明",
|
|
|
|
|
|
"avatar_url": "https://example.com/avatar2.jpg",
|
|
|
|
|
|
"gender": 1,
|
|
|
|
|
|
"age": 28,
|
|
|
|
|
|
"location": "北京市"
|
|
|
|
|
|
},
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"join_reason": "对大理文化很感兴趣,希望能参加这次旅行",
|
|
|
|
|
|
"contact_info": {
|
|
|
|
|
|
"wechat": "xiaoming123",
|
|
|
|
|
|
"phone": "13900139000"
|
|
|
|
|
|
},
|
|
|
|
|
|
"emergency_contact": {
|
|
|
|
|
|
"name": "李四",
|
|
|
|
|
|
"phone": "13800138000",
|
|
|
|
|
|
"relationship": "朋友"
|
|
|
|
|
|
},
|
|
|
|
|
|
"special_requirements": "素食主义者",
|
|
|
|
|
|
"applied_at": "2024-01-10T15:30:00Z",
|
|
|
|
|
|
"approved_at": "2024-01-11T09:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 动物认领管理接口
|
|
|
|
|
|
|
|
|
|
|
|
### 6.1 获取动物列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animals`
|
|
|
|
|
|
- **接口描述**:获取动物列表,支持分页、搜索和筛选
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|------|------|--------|------|
|
|
|
|
|
|
| page | integer | 否 | 1 | 页码 |
|
|
|
|
|
|
| limit | integer | 否 | 10 | 每页数量 |
|
|
|
|
|
|
| keyword | string | 否 | - | 搜索关键词(动物名称) |
|
|
|
|
|
|
| type | string | 否 | - | 动物类型 |
|
|
|
|
|
|
| status | string | 否 | - | 状态(available/claimed/unavailable) |
|
|
|
|
|
|
| farmer_id | integer | 否 | - | 农场主ID |
|
|
|
|
|
|
| start_date | string | 否 | - | 开始日期 |
|
|
|
|
|
|
| end_date | string | 否 | - | 结束日期 |
|
|
|
|
|
|
| sort_by | string | 否 | created_at | 排序字段 |
|
|
|
|
|
|
| sort_order | string | 否 | desc | 排序方向(asc/desc) |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"animals": [
|
2025-09-21 21:12:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"name": "小花",
|
|
|
|
|
|
"species": "猫",
|
|
|
|
|
|
"breed": "英国短毛猫",
|
|
|
|
|
|
"age": 24,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"gender": "female",
|
|
|
|
|
|
"price": 500.00,
|
|
|
|
|
|
"status": "available",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"description": "性格温顺,喜欢晒太阳",
|
|
|
|
|
|
"images": [
|
|
|
|
|
|
"https://example.com/cat1.jpg",
|
|
|
|
|
|
"https://example.com/cat2.jpg"
|
|
|
|
|
|
],
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"merchant_id": 1,
|
|
|
|
|
|
"merchant_name": "爱心动物农场",
|
|
|
|
|
|
"claim_count": 0,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"created_at": "2024-01-10T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"limit": 10,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"total": 30,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"pages": 3
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 6.2 获取动物详情
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animals/{animal_id}`
|
|
|
|
|
|
- **接口描述**:获取指定动物的详细信息
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
2025-09-22 02:04:07 +08:00
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| animal_id | integer | 是 | 动物ID |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"animal": {
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"id": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"name": "小花",
|
|
|
|
|
|
"type": "猫",
|
|
|
|
|
|
"breed": "英国短毛猫",
|
|
|
|
|
|
"age": 24,
|
|
|
|
|
|
"gender": "female",
|
|
|
|
|
|
"price": 500.00,
|
|
|
|
|
|
"daily_cost": 15.00,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"location": "北京市朝阳区",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "available",
|
|
|
|
|
|
"health_status": "健康",
|
|
|
|
|
|
"description": "小花是一只非常温顺的英国短毛猫,喜欢晒太阳和玩毛线球...",
|
|
|
|
|
|
"images": [
|
|
|
|
|
|
"https://example.com/cat1.jpg",
|
|
|
|
|
|
"https://example.com/cat2.jpg"
|
|
|
|
|
|
],
|
|
|
|
|
|
"vaccination_records": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"vaccine": "狂犬疫苗",
|
|
|
|
|
|
"date": "2024-01-01",
|
|
|
|
|
|
"next_date": "2025-01-01"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"farmer": {
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"id": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"name": "爱心动物农场",
|
|
|
|
|
|
"contact_phone": "13800138000"
|
|
|
|
|
|
},
|
|
|
|
|
|
"claim_count": 0,
|
|
|
|
|
|
"recent_claims": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"user_name": "张三",
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"created_at": "2024-01-10T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 6.3 更新动物状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`PUT /api/v1/admin/animals/{animal_id}/status`
|
|
|
|
|
|
- **接口描述**:更新动物状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| animal_id | integer | 是 | 动物ID |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 请求参数
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "unavailable",
|
|
|
|
|
|
"reason": "动物生病,暂停认领"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| status | string | 是 | 动物状态(available/claimed/unavailable) |
|
|
|
|
|
|
| reason | string | 否 | 操作原因 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "状态更新成功"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 6.4 批量更新动物状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`PUT /api/v1/admin/animals/batch/status`
|
|
|
|
|
|
- **接口描述**:批量更新动物状态
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"animal_ids": [1, 2, 3],
|
|
|
|
|
|
"status": "unavailable",
|
|
|
|
|
|
"reason": "批量下架"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| animal_ids | array | 是 | 动物ID数组 |
|
|
|
|
|
|
| status | string | 是 | 动物状态(available/claimed/unavailable) |
|
|
|
|
|
|
| reason | string | 否 | 操作原因 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "批量更新成功",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"successCount": 3,
|
|
|
|
|
|
"failedCount": 0
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 6.5 获取动物统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animals/statistics`
|
|
|
|
|
|
- **接口描述**:获取动物统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"totalStats": {
|
|
|
|
|
|
"total_animals": 100,
|
|
|
|
|
|
"available_animals": 60,
|
|
|
|
|
|
"claimed_animals": 30,
|
|
|
|
|
|
"total_claims": 150,
|
|
|
|
|
|
"avg_price": 450.00
|
|
|
|
|
|
},
|
|
|
|
|
|
"speciesStats": [
|
2025-09-21 21:12:27 +08:00
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"species": "猫",
|
|
|
|
|
|
"count": 50,
|
|
|
|
|
|
"percentage": 50.0
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"species": "狗",
|
|
|
|
|
|
"count": 30,
|
|
|
|
|
|
"percentage": 30.0
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"statusStats": {
|
|
|
|
|
|
"available": 60,
|
|
|
|
|
|
"claimed": 30,
|
|
|
|
|
|
"unavailable": 10
|
|
|
|
|
|
},
|
|
|
|
|
|
"monthlyTrends": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"month": "2024-01",
|
|
|
|
|
|
"new_animals": 10,
|
|
|
|
|
|
"claims": 15
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 6.6 导出动物数据
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animals/export`
|
|
|
|
|
|
- **接口描述**:导出动物数据
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| format | string | 否 | 导出格式(csv/json),默认csv |
|
|
|
|
|
|
| keyword | string | 否 | 搜索关键词 |
|
|
|
|
|
|
| species | string | 否 | 物种筛选 |
|
|
|
|
|
|
| status | string | 否 | 状态筛选 |
|
|
|
|
|
|
| merchant_id | integer | 否 | 商家ID筛选 |
|
|
|
|
|
|
| start_date | string | 否 | 开始日期 |
|
|
|
|
|
|
| end_date | string | 否 | 结束日期 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应
|
|
|
|
|
|
- 成功时返回文件流
|
|
|
|
|
|
- 失败时返回JSON错误信息
|
|
|
|
|
|
|
|
|
|
|
|
### 6.7 获取动物认领记录
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animals/{animal_id}/claims`
|
|
|
|
|
|
- **接口描述**:获取指定动物的认领记录
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| animal_id | integer | 是 | 动物ID |
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| page | integer | 否 | 页码,默认1 |
|
|
|
|
|
|
| limit | integer | 否 | 每页数量,默认10 |
|
|
|
|
|
|
| status | string | 否 | 认领状态(pending/approved/rejected/cancelled) |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"claims": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"user_id": 2,
|
|
|
|
|
|
"user_name": "张三",
|
|
|
|
|
|
"user_phone": "13800138000",
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"claim_reason": "喜欢小动物,有养宠经验",
|
|
|
|
|
|
"admin_note": "",
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"limit": 10,
|
|
|
|
|
|
"total": 5,
|
|
|
|
|
|
"pages": 1
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **所需权限**:`animal:create`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "小白",
|
|
|
|
|
|
"type": "狗",
|
|
|
|
|
|
"breed": "金毛寻回犬",
|
|
|
|
|
|
"gender": 1,
|
|
|
|
|
|
"age": 36,
|
|
|
|
|
|
"weight": 25.5,
|
|
|
|
|
|
"color": "金黄色",
|
|
|
|
|
|
"description": "性格活泼,喜欢运动",
|
|
|
|
|
|
"personality": "活泼、友善、聪明",
|
|
|
|
|
|
"health_status": "健康",
|
|
|
|
|
|
"vaccination_records": "已完成基础疫苗接种",
|
|
|
|
|
|
"location": "上海市浦东新区",
|
|
|
|
|
|
"farmer_id": 2,
|
|
|
|
|
|
"price": 800.00,
|
|
|
|
|
|
"daily_cost": 15.00,
|
|
|
|
|
|
"images": [
|
|
|
|
|
|
"https://example.com/dog1.jpg",
|
|
|
|
|
|
"https://example.com/dog2.jpg"
|
|
|
|
|
|
],
|
|
|
|
|
|
"status": "available"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 201,
|
|
|
|
|
|
"message": "创建成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"id": 101,
|
|
|
|
|
|
"uuid": "animal_654321",
|
|
|
|
|
|
"name": "小白",
|
|
|
|
|
|
"species": "狗",
|
|
|
|
|
|
"breed": "金毛寻回犬",
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"created_at": "2024-01-15T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 认领管理接口
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 获取认领申请列表
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animal-claims`
|
|
|
|
|
|
- **接口描述**:获取所有认领申请列表,支持分页、搜索和筛选
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
2025-09-22 02:04:07 +08:00
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|------|------|--------|------|
|
|
|
|
|
|
| page | integer | 否 | 1 | 页码 |
|
|
|
|
|
|
| limit | integer | 否 | 10 | 每页数量 |
|
|
|
|
|
|
| status | string | 否 | - | 申请状态(pending/approved/rejected/cancelled) |
|
|
|
|
|
|
| animal_type | string | 否 | - | 动物类型 |
|
|
|
|
|
|
| user_id | integer | 否 | - | 用户ID |
|
|
|
|
|
|
| start_date | string | 否 | - | 开始日期 |
|
|
|
|
|
|
| end_date | string | 否 | - | 结束日期 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"claims": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"claim_no": "CLAIM202401150001",
|
|
|
|
|
|
"animal_id": 1,
|
|
|
|
|
|
"animal_name": "小花",
|
|
|
|
|
|
"animal_type": "猫",
|
|
|
|
|
|
"animal_image": "https://example.com/cat1.jpg",
|
|
|
|
|
|
"user_id": 2,
|
|
|
|
|
|
"username": "张三",
|
|
|
|
|
|
"user_phone": "13800138000",
|
|
|
|
|
|
"claim_reason": "喜欢小动物,有养宠经验",
|
|
|
|
|
|
"claim_duration": 12,
|
|
|
|
|
|
"total_amount": 2400.00,
|
|
|
|
|
|
"contact_info": "微信:zhangsan123",
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
|
|
|
|
|
"limit": 10,
|
|
|
|
|
|
"total": 30,
|
|
|
|
|
|
"pages": 3
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 获取认领申请详情
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animal-claims/{claim_id}`
|
|
|
|
|
|
- **接口描述**:获取指定认领申请的详细信息
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| claim_id | integer | 是 | 认领申请ID |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"claim": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"claim_no": "CLAIM202401150001",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"animal": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"name": "小花",
|
|
|
|
|
|
"species": "猫",
|
|
|
|
|
|
"breed": "英国短毛猫",
|
|
|
|
|
|
"images": ["https://example.com/cat1.jpg"]
|
|
|
|
|
|
},
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"user": {
|
|
|
|
|
|
"id": 2,
|
|
|
|
|
|
"username": "张三",
|
|
|
|
|
|
"phone": "13800138000",
|
|
|
|
|
|
"avatar_url": "https://example.com/avatar.jpg"
|
|
|
|
|
|
},
|
|
|
|
|
|
"claim_reason": "喜欢小动物,有养宠经验,家里环境适合养宠物",
|
|
|
|
|
|
"claim_duration": 12,
|
|
|
|
|
|
"total_amount": 2400.00,
|
|
|
|
|
|
"contact_info": "微信:zhangsan123,QQ:123456789",
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"review_remark": "",
|
|
|
|
|
|
"reviewed_by": null,
|
|
|
|
|
|
"reviewed_at": null,
|
|
|
|
|
|
"created_at": "2024-01-15T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2024-01-15T10:00:00Z"
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 7.3 审核认领申请
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`PUT /api/v1/admin/animal-claims/{claim_id}/review`
|
|
|
|
|
|
- **接口描述**:审核认领申请
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
2025-09-22 02:04:07 +08:00
|
|
|
|
|
|
|
|
|
|
#### 路径参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| claim_id | integer | 是 | 认领申请ID |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "approved",
|
|
|
|
|
|
"review_remark": "申请人条件符合要求,同意认领"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| status | string | 是 | 审核状态(approved/rejected) |
|
|
|
|
|
|
| review_remark | string | 否 | 审核备注 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "认领申请审核通过",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"claim": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"status": "approved",
|
|
|
|
|
|
"review_remark": "申请人条件符合要求,同意认领",
|
|
|
|
|
|
"reviewed_by": 1,
|
|
|
|
|
|
"reviewed_at": "2024-01-16T09:00:00Z"
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 7.4 获取认领统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animal-claims/statistics`
|
|
|
|
|
|
- **接口描述**:获取认领申请统计数据
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"totalStats": {
|
|
|
|
|
|
"total_claims": 150,
|
|
|
|
|
|
"pending_claims": 20,
|
|
|
|
|
|
"approved_claims": 100,
|
|
|
|
|
|
"rejected_claims": 25,
|
|
|
|
|
|
"cancelled_claims": 5,
|
|
|
|
|
|
"total_amount": 360000.00,
|
|
|
|
|
|
"avg_duration": 10.5
|
|
|
|
|
|
},
|
|
|
|
|
|
"statusStats": {
|
|
|
|
|
|
"pending": 20,
|
|
|
|
|
|
"approved": 100,
|
|
|
|
|
|
"rejected": 25,
|
|
|
|
|
|
"cancelled": 5
|
|
|
|
|
|
},
|
|
|
|
|
|
"monthlyTrends": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"month": "2024-01",
|
|
|
|
|
|
"new_claims": 15,
|
|
|
|
|
|
"approved_claims": 12,
|
|
|
|
|
|
"total_amount": 28800.00
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"animalTypeStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"animal_type": "猫",
|
|
|
|
|
|
"count": 80,
|
|
|
|
|
|
"percentage": 53.3
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"animal_type": "狗",
|
|
|
|
|
|
"count": 50,
|
|
|
|
|
|
"percentage": 33.3
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.5 导出认领数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
2025-09-22 02:04:07 +08:00
|
|
|
|
- **接口路径**:`GET /api/v1/admin/animal-claims/export`
|
|
|
|
|
|
- **接口描述**:导出认领申请数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
| format | string | 否 | 导出格式(csv/json),默认csv |
|
|
|
|
|
|
| status | string | 否 | 状态筛选 |
|
|
|
|
|
|
| animal_type | string | 否 | 动物类型筛选 |
|
|
|
|
|
|
| user_id | integer | 否 | 用户ID筛选 |
|
|
|
|
|
|
| start_date | string | 否 | 开始日期 |
|
|
|
|
|
|
| end_date | string | 否 | 结束日期 |
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
#### 响应
|
|
|
|
|
|
- 成功时返回文件流
|
|
|
|
|
|
- 失败时返回JSON错误信息
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 订单管理
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 获取订单列表
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /orders/admin`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 管理员获取所有订单列表,支持分页和筛选
|
|
|
|
|
|
|
|
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `page` (integer, optional): 页码,默认为1
|
|
|
|
|
|
- `limit` (integer, optional): 每页数量,默认为10
|
|
|
|
|
|
- `status` (string, optional): 订单状态筛选
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"data": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"order_no": "ORD20231201001",
|
|
|
|
|
|
"user_id": 1,
|
|
|
|
|
|
"user_name": "张三",
|
|
|
|
|
|
"animal_id": 1,
|
|
|
|
|
|
"animal_name": "小花",
|
|
|
|
|
|
"merchant_id": 1,
|
|
|
|
|
|
"merchant_name": "爱心农场",
|
|
|
|
|
|
"total_amount": 299.00,
|
|
|
|
|
|
"status": "paid",
|
|
|
|
|
|
"created_at": "2023-12-01T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2023-12-01T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"current_page": 1,
|
|
|
|
|
|
"per_page": 10,
|
|
|
|
|
|
"total": 50,
|
|
|
|
|
|
"total_pages": 5
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 获取订单详情
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /orders/{orderId}`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取指定订单的详细信息
|
|
|
|
|
|
|
|
|
|
|
|
**路径参数:**
|
|
|
|
|
|
- `orderId` (integer, required): 订单ID
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"order": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"order_no": "ORD20231201001",
|
|
|
|
|
|
"user_id": 1,
|
|
|
|
|
|
"user_name": "张三",
|
|
|
|
|
|
"user_phone": "13800138000",
|
|
|
|
|
|
"animal_id": 1,
|
|
|
|
|
|
"animal_name": "小花",
|
|
|
|
|
|
"animal_species": "猫",
|
|
|
|
|
|
"merchant_id": 1,
|
|
|
|
|
|
"merchant_name": "爱心农场",
|
|
|
|
|
|
"total_amount": 299.00,
|
|
|
|
|
|
"status": "paid",
|
|
|
|
|
|
"payment_method": "wechat",
|
|
|
|
|
|
"payment_time": "2023-12-01T10:30:00Z",
|
|
|
|
|
|
"created_at": "2023-12-01T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2023-12-01T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.3 更新订单状态
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `PUT /orders/{orderId}/status`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 管理员更新订单状态
|
|
|
|
|
|
|
|
|
|
|
|
**路径参数:**
|
|
|
|
|
|
- `orderId` (integer, required): 订单ID
|
|
|
|
|
|
|
|
|
|
|
|
**请求参数:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"status": "cancelled",
|
|
|
|
|
|
"reason": "用户申请取消"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"message": "订单状态更新成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"order_id": 1,
|
|
|
|
|
|
"status": "cancelled",
|
|
|
|
|
|
"updated_at": "2023-12-01T15:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.4 删除订单
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `DELETE /orders/{orderId}`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 管理员删除订单
|
|
|
|
|
|
|
|
|
|
|
|
**路径参数:**
|
|
|
|
|
|
- `orderId` (integer, required): 订单ID
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"message": "订单删除成功"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7.5 获取订单统计数据
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/system/order-stats`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取订单统计数据
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"total": 1250,
|
|
|
|
|
|
"totalAmount": 125000.00,
|
|
|
|
|
|
"byStatus": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"count": 45
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"status": "paid",
|
|
|
|
|
|
"count": 980
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"status": "cancelled",
|
|
|
|
|
|
"count": 225
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"byDate": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-12-01",
|
|
|
|
|
|
"count": 25,
|
|
|
|
|
|
"amount": 2500.00
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 系统管理
|
|
|
|
|
|
|
|
|
|
|
|
### 8.1 获取管理员列表
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取管理员列表,支持分页和筛选
|
|
|
|
|
|
|
|
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `page` (integer, optional): 页码,默认为1
|
|
|
|
|
|
- `pageSize` (integer, optional): 每页数量,默认为10
|
|
|
|
|
|
- `username` (string, optional): 用户名搜索
|
|
|
|
|
|
- `role` (string, optional): 角色筛选
|
|
|
|
|
|
- `status` (integer, optional): 状态筛选
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"admins": [
|
2025-09-21 21:12:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"username": "admin",
|
|
|
|
|
|
"email": "admin@example.com",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"nickname": "系统管理员",
|
|
|
|
|
|
"role": "super_admin",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"status": 1,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"last_login_at": "2023-12-01T09:30:00Z",
|
|
|
|
|
|
"created_at": "2023-01-01T10:00:00Z",
|
|
|
|
|
|
"updated_at": "2023-12-01T09:30:00Z"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"current_page": 1,
|
|
|
|
|
|
"per_page": 10,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"total": 5,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"total_pages": 1
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 8.2 创建管理员
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口路径:** `POST /admin`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口描述:** 创建新管理员
|
|
|
|
|
|
|
|
|
|
|
|
**请求参数:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"username": "newadmin",
|
|
|
|
|
|
"password": "password123",
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"email": "newadmin@example.com",
|
|
|
|
|
|
"nickname": "新管理员",
|
|
|
|
|
|
"role": "admin"
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**响应示例:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 201,
|
|
|
|
|
|
"message": "创建成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"admin": {
|
|
|
|
|
|
"id": 6,
|
|
|
|
|
|
"username": "newadmin",
|
|
|
|
|
|
"email": "newadmin@example.com",
|
|
|
|
|
|
"nickname": "新管理员",
|
|
|
|
|
|
"role": "admin",
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"created_at": "2023-12-01T10:30:00Z"
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 8.3 更新管理员
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口路径:** `PUT /admin/{id}`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口描述:** 更新管理员信息
|
|
|
|
|
|
|
|
|
|
|
|
**路径参数:**
|
|
|
|
|
|
- `id` (integer, required): 管理员ID
|
|
|
|
|
|
|
|
|
|
|
|
**请求参数:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"email": "updated@example.com",
|
|
|
|
|
|
"nickname": "更新后的昵称",
|
|
|
|
|
|
"role": "admin",
|
|
|
|
|
|
"status": 1
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"message": "更新成功",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"admin": {
|
|
|
|
|
|
"id": 6,
|
|
|
|
|
|
"username": "newadmin",
|
|
|
|
|
|
"email": "updated@example.com",
|
|
|
|
|
|
"nickname": "更新后的昵称",
|
|
|
|
|
|
"role": "admin",
|
|
|
|
|
|
"status": 1,
|
|
|
|
|
|
"updated_at": "2023-12-01T15:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 8.4 删除管理员
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `DELETE /admin/{id}`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 删除管理员
|
|
|
|
|
|
|
|
|
|
|
|
**路径参数:**
|
|
|
|
|
|
- `id` (integer, required): 管理员ID
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "删除成功"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"status": 1,
|
|
|
|
|
|
"permissions": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"name": "用户管理",
|
|
|
|
|
|
"code": "user:*",
|
|
|
|
|
|
"type": "menu"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"created_at": "2024-01-01T10:00:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 8.4 获取权限列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/permissions`
|
|
|
|
|
|
- **接口描述**:获取权限树形结构
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`permission:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"name": "系统管理",
|
|
|
|
|
|
"code": "system",
|
|
|
|
|
|
"type": "menu",
|
|
|
|
|
|
"parent_id": null,
|
|
|
|
|
|
"sort_order": 1,
|
|
|
|
|
|
"children": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 2,
|
|
|
|
|
|
"name": "用户管理",
|
|
|
|
|
|
"code": "user",
|
|
|
|
|
|
"type": "menu",
|
|
|
|
|
|
"parent_id": 1,
|
|
|
|
|
|
"sort_order": 1,
|
|
|
|
|
|
"children": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 3,
|
|
|
|
|
|
"name": "查看用户",
|
|
|
|
|
|
"code": "user:read",
|
|
|
|
|
|
"type": "button",
|
|
|
|
|
|
"parent_id": 2,
|
|
|
|
|
|
"sort_order": 1
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 4,
|
|
|
|
|
|
"name": "创建用户",
|
|
|
|
|
|
"code": "user:create",
|
|
|
|
|
|
"type": "button",
|
|
|
|
|
|
"parent_id": 2,
|
|
|
|
|
|
"sort_order": 2
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
## 9. 统计分析
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 9.1 获取系统概览统计
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口路径:** `GET /admin/statistics/overview`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口描述:** 获取系统概览统计数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**响应示例:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"users": {
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"total_users": 1250,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"active_users": 890,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"new_users_today": 15,
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"new_users_week": 89
|
2025-09-21 21:12:27 +08:00
|
|
|
|
},
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"travels": {
|
|
|
|
|
|
"total_travels": 156,
|
|
|
|
|
|
"published_travels": 89,
|
|
|
|
|
|
"new_travels_today": 3
|
2025-09-21 21:12:27 +08:00
|
|
|
|
},
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"animals": {
|
|
|
|
|
|
"total_animals": 234,
|
|
|
|
|
|
"available_animals": 156,
|
|
|
|
|
|
"claimed_animals": 78
|
|
|
|
|
|
},
|
|
|
|
|
|
"orders": {
|
|
|
|
|
|
"total_orders": 445,
|
|
|
|
|
|
"completed_orders": 389,
|
|
|
|
|
|
"pending_orders": 56,
|
|
|
|
|
|
"total_revenue": 125600.00
|
2025-09-21 21:12:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
### 9.2 获取用户增长趋势
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口路径:** `GET /admin/statistics/user-growth`
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**接口描述:** 获取用户增长趋势数据
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `period` (string, optional): 统计周期,可选值:7d, 30d, 90d, 365d,默认30d
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
2025-09-21 21:12:27 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"success": true,
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"period": "30d",
|
|
|
|
|
|
"trendData": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-01",
|
|
|
|
|
|
"new_users": 12,
|
|
|
|
|
|
"total_users": 1180
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-02",
|
|
|
|
|
|
"new_users": 15,
|
|
|
|
|
|
"total_users": 1195
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 9.3 获取业务统计
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/statistics/business`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取业务相关统计数据
|
|
|
|
|
|
|
|
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `period` (string, optional): 统计周期,可选值:7d, 30d, 90d,默认30d
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"period": "30d",
|
|
|
|
|
|
"travelStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-01",
|
|
|
|
|
|
"new_travels": 5,
|
|
|
|
|
|
"published_travels": 3,
|
|
|
|
|
|
"total_views": 245
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
],
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"claimStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-01",
|
|
|
|
|
|
"new_claims": 8,
|
|
|
|
|
|
"approved_claims": 6,
|
|
|
|
|
|
"rejected_claims": 1
|
|
|
|
|
|
}
|
2025-09-21 21:12:27 +08:00
|
|
|
|
],
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"orderStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-01",
|
|
|
|
|
|
"new_orders": 12,
|
|
|
|
|
|
"completed_orders": 10,
|
|
|
|
|
|
"daily_revenue": 2500.00
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 9.4 获取地域分布统计
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/statistics/geographic`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取地域分布统计数据
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"userDistribution": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"province": "北京市",
|
|
|
|
|
|
"city": "北京市",
|
|
|
|
|
|
"user_count": 156
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"province": "上海市",
|
|
|
|
|
|
"city": "上海市",
|
|
|
|
|
|
"user_count": 134
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"provinceStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"province": "北京市",
|
|
|
|
|
|
"user_count": 156,
|
|
|
|
|
|
"farmer_count": 23,
|
|
|
|
|
|
"merchant_count": 12
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"destinationStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"destination": "云南大理",
|
|
|
|
|
|
"travel_count": 45
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"destination": "西藏拉萨",
|
|
|
|
|
|
"travel_count": 38
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 9.5 获取用户行为分析
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/statistics/user-behavior`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取用户行为分析数据
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"activityStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"activity_level": "高活跃",
|
|
|
|
|
|
"user_count": 234
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"activity_level": "中活跃",
|
|
|
|
|
|
"user_count": 456
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"activity_level": "低活跃",
|
|
|
|
|
|
"user_count": 560
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"levelDistribution": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"level": "新手",
|
|
|
|
|
|
"user_count": 456,
|
|
|
|
|
|
"avg_points": 120.5,
|
|
|
|
|
|
"avg_travel_count": 1.2,
|
|
|
|
|
|
"avg_claim_count": 0.8
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"behaviorStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"behavior_type": "浏览旅行",
|
|
|
|
|
|
"user_count": 890
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"behavior_type": "发布旅行",
|
|
|
|
|
|
"user_count": 234
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"behavior_type": "认领动物",
|
|
|
|
|
|
"user_count": 156
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 9.6 获取收入统计
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/statistics/revenue`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 获取收入统计数据
|
|
|
|
|
|
|
|
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `period` (string, optional): 统计周期,可选值:7d, 30d, 90d, 365d,默认30d
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"period": "30d",
|
|
|
|
|
|
"revenueStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "2023-11-01",
|
|
|
|
|
|
"total_revenue": 2500.00,
|
|
|
|
|
|
"order_count": 12,
|
|
|
|
|
|
"avg_order_value": 208.33
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"categoryStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"category": "旅行费用",
|
|
|
|
|
|
"total_revenue": 45600.00,
|
|
|
|
|
|
"order_count": 156,
|
|
|
|
|
|
"avg_order_value": 292.31
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"paymentMethodStats": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"payment_method": "微信支付",
|
|
|
|
|
|
"order_count": 234,
|
|
|
|
|
|
"total_amount": 56780.00
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"payment_method": "支付宝",
|
|
|
|
|
|
"order_count": 189,
|
|
|
|
|
|
"total_amount": 45230.00
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 9.7 导出统计报告
|
|
|
|
|
|
|
|
|
|
|
|
**接口路径:** `GET /admin/statistics/export`
|
|
|
|
|
|
|
|
|
|
|
|
**接口描述:** 导出统计报告
|
|
|
|
|
|
|
|
|
|
|
|
**查询参数:**
|
|
|
|
|
|
- `reportType` (string, optional): 报告类型,可选值:overview, users, revenue,默认overview
|
|
|
|
|
|
- `period` (string, optional): 统计周期,可选值:7d, 30d, 90d,默认30d
|
|
|
|
|
|
- `format` (string, optional): 导出格式,可选值:csv, json,默认csv
|
|
|
|
|
|
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "导出成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"downloadUrl": "https://example.com/exports/report_20231201.csv",
|
|
|
|
|
|
"filename": "统计报告_20231201.csv",
|
|
|
|
|
|
"fileSize": 2048
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2025-09-21 21:12:27 +08:00
|
|
|
|
{"gender": "男", "count": 580, "percentage": 46.4},
|
|
|
|
|
|
{"gender": "女", "count": 620, "percentage": 49.6},
|
|
|
|
|
|
{"gender": "未知", "count": 50, "percentage": 4.0}
|
|
|
|
|
|
],
|
|
|
|
|
|
"location_distribution": [
|
|
|
|
|
|
{"province": "北京", "count": 180, "percentage": 14.4},
|
|
|
|
|
|
{"province": "上海", "count": 165, "percentage": 13.2},
|
|
|
|
|
|
{"province": "广东", "count": 220, "percentage": 17.6},
|
|
|
|
|
|
{"province": "浙江", "count": 145, "percentage": 11.6},
|
|
|
|
|
|
{"province": "其他", "count": 540, "percentage": 43.2}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 10. 文件管理接口
|
|
|
|
|
|
|
|
|
|
|
|
### 10.1 上传文件
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`POST /api/v1/files/upload`
|
|
|
|
|
|
- **接口描述**:上传文件(图片、视频、文档等)
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`file:upload`
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
- **Content-Type**:`multipart/form-data`
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| file | file | 是 | 上传的文件 |
|
|
|
|
|
|
| type | string | 否 | 文件类型:image,video,document,默认auto |
|
|
|
|
|
|
| category | string | 否 | 文件分类:avatar,travel,animal,other |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "上传成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"filename": "image_20240115_103000.jpg",
|
|
|
|
|
|
"original_name": "beautiful_scenery.jpg",
|
|
|
|
|
|
"file_path": "/uploads/images/2024/01/15/image_20240115_103000.jpg",
|
|
|
|
|
|
"file_url": "https://cdn.example.com/uploads/images/2024/01/15/image_20240115_103000.jpg",
|
|
|
|
|
|
"file_size": 1024000,
|
|
|
|
|
|
"mime_type": "image/jpeg",
|
|
|
|
|
|
"file_type": "image",
|
|
|
|
|
|
"category": "travel",
|
|
|
|
|
|
"uploaded_at": "2024-01-15T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 10.2 批量上传文件
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`POST /api/v1/files/batch-upload`
|
|
|
|
|
|
- **接口描述**:批量上传多个文件
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`file:upload`
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
- **Content-Type**:`multipart/form-data`
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| files[] | file[] | 是 | 上传的文件数组 |
|
|
|
|
|
|
| category | string | 否 | 文件分类 |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "批量上传完成",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"success_count": 3,
|
|
|
|
|
|
"failed_count": 1,
|
|
|
|
|
|
"success_files": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"filename": "image1.jpg",
|
|
|
|
|
|
"file_url": "https://cdn.example.com/uploads/images/image1.jpg"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 2,
|
|
|
|
|
|
"filename": "image2.jpg",
|
|
|
|
|
|
"file_url": "https://cdn.example.com/uploads/images/image2.jpg"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"failed_files": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"filename": "large_file.jpg",
|
|
|
|
|
|
"error": "文件大小超过限制"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 10.3 获取文件列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/files`
|
|
|
|
|
|
- **接口描述**:分页获取文件列表
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`file:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| page | integer | 否 | 页码,默认1 |
|
|
|
|
|
|
| size | integer | 否 | 每页数量,默认20 |
|
|
|
|
|
|
| file_type | string | 否 | 文件类型:image,video,document |
|
|
|
|
|
|
| category | string | 否 | 文件分类 |
|
|
|
|
|
|
| keyword | string | 否 | 搜索关键词(文件名) |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"filename": "image_20240115_103000.jpg",
|
|
|
|
|
|
"original_name": "beautiful_scenery.jpg",
|
|
|
|
|
|
"file_url": "https://cdn.example.com/uploads/images/2024/01/15/image_20240115_103000.jpg",
|
|
|
|
|
|
"file_size": 1024000,
|
|
|
|
|
|
"mime_type": "image/jpeg",
|
|
|
|
|
|
"file_type": "image",
|
|
|
|
|
|
"category": "travel",
|
|
|
|
|
|
"uploaded_at": "2024-01-15T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
|
|
|
|
|
"size": 20,
|
|
|
|
|
|
"total": 100,
|
|
|
|
|
|
"pages": 5
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 11. 消息通知接口
|
|
|
|
|
|
|
|
|
|
|
|
### 11.1 获取通知列表
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/notifications`
|
|
|
|
|
|
- **接口描述**:分页获取系统通知列表
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`notification:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 查询参数
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| page | integer | 否 | 页码,默认1 |
|
|
|
|
|
|
| size | integer | 否 | 每页数量,默认20 |
|
|
|
|
|
|
| type | string | 否 | 通知类型:system,order,travel,adoption |
|
|
|
|
|
|
| status | integer | 否 | 状态:0-未读,1-已读 |
|
|
|
|
|
|
| user_id | integer | 否 | 用户ID |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"id": 1,
|
|
|
|
|
|
"type": "order",
|
|
|
|
|
|
"title": "订单支付成功",
|
|
|
|
|
|
"content": "您的订单 ORD202401150001 支付成功,感谢您的支持!",
|
|
|
|
|
|
"user_id": 2,
|
|
|
|
|
|
"related_type": "order",
|
|
|
|
|
|
"related_id": 1,
|
|
|
|
|
|
"status": 0,
|
|
|
|
|
|
"created_at": "2024-01-15T16:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"pagination": {
|
|
|
|
|
|
"page": 1,
|
|
|
|
|
|
"size": 20,
|
|
|
|
|
|
"total": 50,
|
|
|
|
|
|
"pages": 3
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 11.2 发送通知
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`POST /api/v1/notifications`
|
|
|
|
|
|
- **接口描述**:发送系统通知
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`notification:send`
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "system",
|
|
|
|
|
|
"title": "系统维护通知",
|
|
|
|
|
|
"content": "系统将于今晚22:00-24:00进行维护,期间可能影响正常使用,敬请谅解。",
|
|
|
|
|
|
"target_type": "all",
|
|
|
|
|
|
"user_ids": [],
|
|
|
|
|
|
"send_immediately": true
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
| 参数名 | 类型 | 必填 | 说明 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| type | string | 是 | 通知类型:system,order,travel,adoption |
|
|
|
|
|
|
| title | string | 是 | 通知标题 |
|
|
|
|
|
|
| content | string | 是 | 通知内容 |
|
|
|
|
|
|
| target_type | string | 是 | 目标类型:all-所有用户,specific-指定用户 |
|
|
|
|
|
|
| user_ids | array | 否 | 用户ID列表(target_type为specific时必填) |
|
|
|
|
|
|
| send_immediately | boolean | 否 | 是否立即发送,默认true |
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "通知发送成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"notification_id": 101,
|
|
|
|
|
|
"target_count": 1250,
|
|
|
|
|
|
"sent_count": 1250,
|
|
|
|
|
|
"failed_count": 0
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 12. 系统配置接口
|
|
|
|
|
|
|
|
|
|
|
|
### 12.1 获取系统配置
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`GET /api/v1/system/config`
|
|
|
|
|
|
- **接口描述**:获取系统配置信息
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`system:config:read`
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "获取成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"site": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"name": "结伴客",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"description": "专业的旅行结伴和动物认领平台",
|
|
|
|
|
|
"logo_url": "https://example.com/logo.png",
|
|
|
|
|
|
"favicon_url": "https://example.com/favicon.ico",
|
|
|
|
|
|
"keywords": "旅行,结伴,动物认领,宠物",
|
|
|
|
|
|
"icp_number": "京ICP备12345678号"
|
|
|
|
|
|
},
|
|
|
|
|
|
"upload": {
|
|
|
|
|
|
"max_file_size": 10485760,
|
|
|
|
|
|
"allowed_image_types": ["jpg", "jpeg", "png", "gif", "webp"],
|
|
|
|
|
|
"allowed_video_types": ["mp4", "avi", "mov"],
|
|
|
|
|
|
"allowed_document_types": ["pdf", "doc", "docx", "xls", "xlsx"]
|
|
|
|
|
|
},
|
|
|
|
|
|
"payment": {
|
|
|
|
|
|
"wechat_enabled": true,
|
|
|
|
|
|
"alipay_enabled": true,
|
|
|
|
|
|
"min_amount": 0.01,
|
|
|
|
|
|
"max_amount": 50000.00
|
|
|
|
|
|
},
|
|
|
|
|
|
"notification": {
|
|
|
|
|
|
"email_enabled": true,
|
|
|
|
|
|
"sms_enabled": true,
|
|
|
|
|
|
"push_enabled": true
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 12.2 更新系统配置
|
|
|
|
|
|
|
|
|
|
|
|
#### 接口信息
|
|
|
|
|
|
- **接口路径**:`PUT /api/v1/system/config`
|
|
|
|
|
|
- **接口描述**:更新系统配置
|
|
|
|
|
|
- **是否需要认证**:是
|
|
|
|
|
|
- **所需权限**:`system:config:update`
|
|
|
|
|
|
|
|
|
|
|
|
#### 请求参数
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"site": {
|
2025-09-22 02:04:07 +08:00
|
|
|
|
"name": "结伴客",
|
2025-09-21 21:12:27 +08:00
|
|
|
|
"description": "专业的旅行结伴和动物认领平台"
|
|
|
|
|
|
},
|
|
|
|
|
|
"upload": {
|
|
|
|
|
|
"max_file_size": 20971520
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 响应示例
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
"message": "配置更新成功",
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"updated_keys": ["site.name", "site.description", "upload.max_file_size"],
|
|
|
|
|
|
"updated_at": "2024-01-15T10:30:00Z"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 13. 错误码说明
|
|
|
|
|
|
|
|
|
|
|
|
### 13.1 通用错误码
|
|
|
|
|
|
|
|
|
|
|
|
| 错误码 | HTTP状态码 | 说明 |
|
|
|
|
|
|
|--------|------------|------|
|
|
|
|
|
|
| 200 | 200 | 请求成功 |
|
|
|
|
|
|
| 400 | 400 | 请求参数错误 |
|
|
|
|
|
|
| 401 | 401 | 未授权,需要登录 |
|
|
|
|
|
|
| 403 | 403 | 权限不足 |
|
|
|
|
|
|
| 404 | 404 | 资源不存在 |
|
|
|
|
|
|
| 409 | 409 | 资源冲突 |
|
|
|
|
|
|
| 422 | 422 | 业务逻辑错误 |
|
|
|
|
|
|
| 429 | 429 | 请求频率限制 |
|
|
|
|
|
|
| 500 | 500 | 服务器内部错误 |
|
|
|
|
|
|
|
|
|
|
|
|
### 13.2 业务错误码
|
|
|
|
|
|
|
|
|
|
|
|
| 错误码 | 说明 |
|
|
|
|
|
|
|--------|------|
|
|
|
|
|
|
| 10001 | 用户名已存在 |
|
|
|
|
|
|
| 10002 | 邮箱已存在 |
|
|
|
|
|
|
| 10003 | 手机号已存在 |
|
|
|
|
|
|
| 10004 | 用户不存在 |
|
|
|
|
|
|
| 10005 | 密码错误 |
|
|
|
|
|
|
| 10006 | 验证码错误 |
|
|
|
|
|
|
| 10007 | 验证码已过期 |
|
|
|
|
|
|
| 20001 | 旅行活动不存在 |
|
|
|
|
|
|
| 20002 | 旅行活动已满员 |
|
|
|
|
|
|
| 20003 | 旅行活动已结束 |
|
|
|
|
|
|
| 20004 | 已参加该旅行活动 |
|
|
|
|
|
|
| 30001 | 动物不存在 |
|
|
|
|
|
|
| 30002 | 动物不可认领 |
|
|
|
|
|
|
| 30003 | 动物已被认领 |
|
|
|
|
|
|
| 30004 | 已认领该动物 |
|
|
|
|
|
|
| 40001 | 订单不存在 |
|
|
|
|
|
|
| 40002 | 订单状态错误 |
|
|
|
|
|
|
| 40003 | 支付失败 |
|
|
|
|
|
|
| 40004 | 退款失败 |
|
|
|
|
|
|
| 50001 | 文件上传失败 |
|
|
|
|
|
|
| 50002 | 文件类型不支持 |
|
|
|
|
|
|
| 50003 | 文件大小超限 |
|
|
|
|
|
|
|
|
|
|
|
|
## 14. 接口测试
|
|
|
|
|
|
|
|
|
|
|
|
### 14.1 测试环境
|
|
|
|
|
|
|
|
|
|
|
|
- **测试地址**:`https://api-test.jiebanke.com`
|
|
|
|
|
|
- **测试账号**:
|
|
|
|
|
|
- 用户名:`test_admin`
|
|
|
|
|
|
- 密码:`test123456`
|
|
|
|
|
|
|
|
|
|
|
|
### 14.2 Postman集合
|
|
|
|
|
|
|
|
|
|
|
|
提供完整的Postman测试集合,包含所有接口的测试用例和环境变量配置。
|
|
|
|
|
|
|
|
|
|
|
|
### 14.3 接口文档
|
|
|
|
|
|
|
|
|
|
|
|
- **在线文档**:`https://docs.jiebanke.com/api`
|
|
|
|
|
|
- **Swagger UI**:`https://api-test.jiebanke.com/docs`
|
|
|
|
|
|
|
|
|
|
|
|
## 15. 总结
|
|
|
|
|
|
|
2025-09-22 02:04:07 +08:00
|
|
|
|
本文档详细描述了结伴客管理后台系统的所有API接口规范,包括:
|
2025-09-21 21:12:27 +08:00
|
|
|
|
|
|
|
|
|
|
1. **完整的接口定义**:涵盖认证、用户管理、旅行管理、动物认领、订单管理等所有核心功能
|
|
|
|
|
|
2. **统一的规范标准**:采用RESTful风格,统一的请求响应格式和错误处理机制
|
|
|
|
|
|
3. **详细的参数说明**:每个接口都包含完整的请求参数、响应示例和错误码说明
|
|
|
|
|
|
4. **安全认证机制**:基于JWT的认证体系和细粒度的权限控制
|
|
|
|
|
|
5. **扩展性设计**:支持API版本管理和功能扩展
|
|
|
|
|
|
|
|
|
|
|
|
该接口设计文档为前端开发、测试和运维提供了完整的技术规范,确保系统各模块间的高效协作和数据一致性。
|