${data.metrics.http_reqs.count}
@@ -1311,7 +1311,7 @@ function generateHtmlReport(coverage) {
-
总体覆盖率
@@ -1542,7 +1542,7 @@ jobs:
## 📚 总结
-本测试文档全面覆盖了解班客项目的测试策略和实施方案,包括:
+本测试文档全面覆盖了结伴客项目的测试策略和实施方案,包括:
### 测试体系特点
@@ -1572,7 +1572,7 @@ jobs:
3. 根据业务变化调整测试策略
4. 培训团队成员测试最佳实践
-通过完善的测试体系,确保解班客项目的高质量交付和稳定运行。
+通过完善的测试体系,确保结伴客项目的高质量交付和稳定运行。
---
diff --git a/docs/用户手册文档.md b/docs/用户手册文档.md
index ce80da8..65e7cc2 100644
--- a/docs/用户手册文档.md
+++ b/docs/用户手册文档.md
@@ -1,9 +1,9 @@
-# 解班客用户手册文档
+# 结伴客用户手册文档
## 1. 文档概述
### 1.1 文档目的
-本文档为解班客平台的用户使用手册,包含小程序端用户指南和管理后台操作手册,帮助用户快速上手并充分利用平台功能。
+本文档为结伴客平台的用户使用手册,包含小程序端用户指南和管理后台操作手册,帮助用户快速上手并充分利用平台功能。
### 1.2 适用对象
- **普通用户**:使用小程序进行旅行结伴和动物认领的用户
@@ -33,7 +33,7 @@ graph TB
#### 2.1.1 首次使用
1. **下载安装**
- - 微信搜索"解班客"小程序
+ - 微信搜索"结伴客"小程序
- 或扫描二维码进入小程序
2. **授权登录**
@@ -423,4 +423,4 @@ graph TB
**文档版本**:v1.0.0
**最后更新**:2024-01-15
-**维护团队**:解班客技术团队
\ No newline at end of file
+**维护团队**:结伴客技术团队
\ No newline at end of file
diff --git a/docs/管理后台接口设计文档.md b/docs/管理后台接口设计文档.md
index d8e90ba..5809a09 100644
--- a/docs/管理后台接口设计文档.md
+++ b/docs/管理后台接口设计文档.md
@@ -3,7 +3,7 @@
## 1. 概述
### 1.1 项目简介
-本文档详细描述了解班客管理后台系统的所有API接口设计,包括用户管理、旅行管理、动物认领管理、订单管理、系统管理等模块的接口规范。
+本文档详细描述了结伴客管理后台系统的所有API接口设计,包括用户管理、旅行管理、动物认领管理、订单管理、系统管理等模块的接口规范。
### 1.2 接口设计原则
- **RESTful风格**:遵循REST架构风格
@@ -124,7 +124,7 @@ User-Agent: JieBanKe-Admin/1.0.0
### 3.1 管理员登录
#### 接口信息
-- **接口路径**:`POST /api/v1/auth/login`
+- **接口路径**:`POST /api/v1/admin/login`
- **接口描述**:管理员登录获取访问令牌
- **是否需要认证**:否
@@ -132,100 +132,88 @@ User-Agent: JieBanKe-Admin/1.0.0
```json
{
"username": "admin",
- "password": "password123",
- "captcha": "ABCD",
- "captcha_key": "captcha_key_123"
+ "password": "password123"
}
```
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
-| username | string | 是 | 用户名或邮箱 |
+| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
-| captcha | string | 是 | 验证码 |
-| captcha_key | string | 是 | 验证码key |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "登录成功",
"data": {
- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "expires_in": 7200,
- "token_type": "Bearer",
- "admin_info": {
+ "admin": {
"id": 1,
"username": "admin",
- "email": "admin@example.com",
- "real_name": "系统管理员",
- "avatar_url": "https://example.com/avatar.jpg",
- "roles": ["super_admin"],
- "permissions": ["*"]
- }
+ "role": "super_admin",
+ "created_at": "2024-01-01T10:00:00Z"
+ },
+ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
```
-### 3.2 刷新令牌
+### 3.2 获取管理员信息
#### 接口信息
-- **接口路径**:`POST /api/v1/auth/refresh`
-- **接口描述**:使用刷新令牌获取新的访问令牌
-- **是否需要认证**:否
-
-#### 请求参数
-```json
-{
- "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
-}
-```
-
-#### 响应示例
-```json
-{
- "code": 200,
- "message": "令牌刷新成功",
- "data": {
- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "expires_in": 7200,
- "token_type": "Bearer"
- }
-}
-```
-
-### 3.3 退出登录
-
-#### 接口信息
-- **接口路径**:`POST /api/v1/auth/logout`
-- **接口描述**:管理员退出登录
+- **接口路径**:`GET /api/v1/admin/profile`
+- **接口描述**:获取当前登录管理员的信息
- **是否需要认证**:是
#### 响应示例
```json
{
+ "success": true,
"code": 200,
- "message": "退出成功"
+ "message": "获取成功",
+ "data": {
+ "id": 1,
+ "username": "admin",
+ "role": "super_admin",
+ "created_at": "2024-01-01T10:00:00Z",
+ "last_login_at": "2024-01-15T09:30:00Z"
+ }
}
```
-### 3.4 获取验证码
+### 3.3 获取仪表板数据
#### 接口信息
-- **接口路径**:`GET /api/v1/auth/captcha`
-- **接口描述**:获取登录验证码
-- **是否需要认证**:否
+- **接口路径**:`GET /api/v1/admin/dashboard`
+- **接口描述**:获取管理后台仪表板统计数据
+- **是否需要认证**:是
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "captcha_key": "captcha_key_123",
- "captcha_image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
- "expires_in": 300
+ "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
+ }
}
}
```
@@ -235,55 +223,67 @@ User-Agent: JieBanKe-Admin/1.0.0
### 4.1 获取用户列表
#### 接口信息
-- **接口路径**:`GET /api/v1/users`
-- **接口描述**:分页获取用户列表
+- **接口路径**:`GET /api/v1/admin/users`
+- **接口描述**:获取用户列表,支持分页、搜索和筛选
- **是否需要认证**:是
-- **所需权限**:`user:read`
#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| page | integer | 否 | 页码,默认1 |
-| size | integer | 否 | 每页数量,默认20 |
-| sort | string | 否 | 排序,默认created_at:desc |
-| keyword | string | 否 | 搜索关键词(用户名、邮箱、手机号) |
-| status | integer | 否 | 用户状态:0-禁用,1-正常,2-待验证 |
-| user_type | integer | 否 | 用户类型:1-普通用户,2-商家用户 |
-| created_start | string | 否 | 创建时间开始(YYYY-MM-DD) |
-| created_end | string | 否 | 创建时间结束(YYYY-MM-DD) |
+| 参数名 | 类型 | 必填 | 默认值 | 说明 |
+|--------|------|------|--------|------|
+| 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) |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "items": [
+ "users": [
{
"id": 1,
- "uuid": "user_123456",
- "username": "testuser",
- "email": "test@example.com",
+ "openid": "wx_openid_123456",
+ "unionid": "wx_unionid_789012",
+ "nickname": "张三",
+ "avatar": "https://example.com/avatar.jpg",
"phone": "13800138000",
- "nickname": "测试用户",
- "avatar_url": "https://example.com/avatar.jpg",
+ "email": "zhangsan@example.com",
"gender": 1,
"birthday": "1990-01-01",
- "location": "北京市",
- "status": 1,
- "user_type": 1,
- "email_verified_at": "2024-01-01T10:00:00Z",
- "phone_verified_at": "2024-01-01T10:00:00Z",
- "last_login_at": "2024-01-15T09:30:00Z",
+ "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",
"created_at": "2024-01-01T10:00:00Z",
- "updated_at": "2024-01-15T09:30:00Z"
+ "updated_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
- "size": 20,
+ "pageSize": 10,
"total": 100,
- "pages": 5
+ "totalPages": 10
}
}
}
@@ -292,216 +292,210 @@ User-Agent: JieBanKe-Admin/1.0.0
### 4.2 获取用户详情
#### 接口信息
-- **接口路径**:`GET /api/v1/users/{id}`
+- **接口路径**:`GET /api/v1/admin/users/{userId}`
- **接口描述**:获取指定用户的详细信息
- **是否需要认证**:是
-- **所需权限**:`user:read`
#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
-| id | integer | 是 | 用户ID |
+| userId | integer | 是 | 用户ID |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "id": 1,
- "uuid": "user_123456",
- "username": "testuser",
- "email": "test@example.com",
- "phone": "13800138000",
- "nickname": "测试用户",
- "avatar_url": "https://example.com/avatar.jpg",
- "gender": 1,
- "birthday": "1990-01-01",
- "location": "北京市",
- "bio": "这是个人简介",
- "status": 1,
- "user_type": 1,
- "email_verified_at": "2024-01-01T10:00:00Z",
- "phone_verified_at": "2024-01-01T10:00:00Z",
- "last_login_at": "2024-01-15T09:30:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "updated_at": "2024-01-15T09:30:00Z",
- "profile": {
+ "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": "软件工程师",
"real_name": "张三",
"id_card": "110101199001011234",
- "id_card_verified": 1,
- "occupation": "软件工程师",
- "education": "本科",
- "income_level": 3,
- "travel_experience": "去过很多地方...",
- "interests": ["旅行", "摄影", "美食"],
- "languages": ["中文", "英语"],
- "emergency_contact": {
- "name": "李四",
- "phone": "13900139000",
- "relationship": "朋友"
- }
- },
- "statistics": {
+ "real_name_verified": true,
+ "phone_verified": true,
+ "email_verified": false,
+ "balance": 1500.00,
+ "points": 1200,
+ "level": 3,
"travel_count": 5,
- "adoption_count": 2,
- "order_count": 10,
- "total_spent": 5000.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"
}
}
}
```
-### 4.3 创建用户
+### 4.3 更新用户状态
#### 接口信息
-- **接口路径**:`POST /api/v1/users`
-- **接口描述**:创建新用户
+- **接口路径**:`PUT /api/v1/admin/users/{userId}/status`
+- **接口描述**:更新用户状态
- **是否需要认证**:是
-- **所需权限**:`user:create`
+
+#### 路径参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| userId | integer | 是 | 用户ID |
#### 请求参数
```json
{
- "username": "newuser",
- "email": "newuser@example.com",
- "phone": "13800138001",
- "password": "password123",
- "nickname": "新用户",
- "gender": 1,
- "birthday": "1995-05-15",
- "location": "上海市",
- "user_type": 1,
- "status": 1
+ "status": "banned",
+ "reason": "违规行为"
}
```
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
-| username | string | 是 | 用户名,3-20字符 |
-| email | string | 是 | 邮箱地址 |
-| phone | string | 否 | 手机号码 |
-| password | string | 是 | 密码,6-20字符 |
-| nickname | string | 否 | 昵称 |
-| gender | integer | 否 | 性别:0-未知,1-男,2-女 |
-| birthday | string | 否 | 生日,格式:YYYY-MM-DD |
-| location | string | 否 | 所在地 |
-| user_type | integer | 否 | 用户类型,默认1 |
-| status | integer | 否 | 状态,默认1 |
-
-#### 响应示例
-```json
-{
- "code": 201,
- "message": "创建成功",
- "data": {
- "id": 101,
- "uuid": "user_654321",
- "username": "newuser",
- "email": "newuser@example.com",
- "phone": "13800138001",
- "nickname": "新用户",
- "status": 1,
- "user_type": 1,
- "created_at": "2024-01-15T10:30:00Z"
- }
-}
-```
-
-### 4.4 更新用户信息
-
-#### 接口信息
-- **接口路径**:`PUT /api/v1/users/{id}`
-- **接口描述**:更新用户信息
-- **是否需要认证**:是
-- **所需权限**:`user:update`
-
-#### 请求参数
-```json
-{
- "nickname": "更新的昵称",
- "gender": 2,
- "birthday": "1995-05-15",
- "location": "深圳市",
- "bio": "更新的个人简介",
- "status": 1
-}
-```
-
-#### 响应示例
-```json
-{
- "code": 200,
- "message": "更新成功",
- "data": {
- "id": 1,
- "uuid": "user_123456",
- "username": "testuser",
- "nickname": "更新的昵称",
- "gender": 2,
- "location": "深圳市",
- "updated_at": "2024-01-15T10:35:00Z"
- }
-}
-```
-
-### 4.5 删除用户
-
-#### 接口信息
-- **接口路径**:`DELETE /api/v1/users/{id}`
-- **接口描述**:删除用户(软删除)
-- **是否需要认证**:是
-- **所需权限**:`user:delete`
-
-#### 响应示例
-```json
-{
- "code": 200,
- "message": "删除成功"
-}
-```
-
-### 4.6 批量操作用户
-
-#### 接口信息
-- **接口路径**:`POST /api/v1/users/batch`
-- **接口描述**:批量操作用户(启用、禁用、删除)
-- **是否需要认证**:是
-- **所需权限**:`user:batch`
-
-#### 请求参数
-```json
-{
- "action": "disable",
- "user_ids": [1, 2, 3, 4, 5],
- "reason": "违规操作"
-}
-```
-
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| action | string | 是 | 操作类型:enable-启用,disable-禁用,delete-删除 |
-| user_ids | array | 是 | 用户ID列表 |
+| status | string | 是 | 用户状态(active/inactive/banned) |
| reason | string | 否 | 操作原因 |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
- "message": "批量操作成功",
+ "message": "状态更新成功"
+}
+```
+
+### 4.4 批量更新用户状态
+
+#### 接口信息
+- **接口路径**:`PUT /api/v1/admin/users/batch-status`
+- **接口描述**:批量更新用户状态
+- **是否需要认证**:是
+
+#### 请求参数
+```json
+{
+ "userIds": [1, 2, 3],
+ "status": "inactive",
+ "reason": "批量操作"
+}
+```
+
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| userIds | array | 是 | 用户ID数组 |
+| status | string | 是 | 用户状态(active/inactive/banned) |
+| reason | string | 否 | 操作原因 |
+
+#### 响应示例
+```json
+{
+ "success": true,
+ "code": 200,
+ "message": "批量更新成功",
"data": {
- "success_count": 4,
- "failed_count": 1,
- "failed_items": [
- {
- "user_id": 3,
- "reason": "用户不存在"
- }
- ]
+ "successCount": 3,
+ "failedCount": 0
}
}
```
+### 4.5 获取用户统计数据
+
+#### 接口信息
+- **接口路径**:`GET /api/v1/admin/users/statistics`
+- **接口描述**:获取用户统计数据
+- **是否需要认证**:是
+
+#### 查询参数
+| 参数名 | 类型 | 必填 | 默认值 | 说明 |
+|--------|------|------|--------|------|
+| period | string | 否 | 30d | 统计周期(7d/30d/90d/1y) |
+
+#### 响应示例
+```json
+{
+ "success": true,
+ "code": 200,
+ "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
+ }
+ }
+}
+```
+
+### 4.6 导出用户数据
+
+#### 接口信息
+- **接口路径**:`GET /api/v1/admin/users/export`
+- **接口描述**:导出用户数据为Excel文件
+- **是否需要认证**:是
+
+#### 查询参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| format | string | 否 | 导出格式(excel/csv),默认excel |
+| keyword | string | 否 | 搜索关键词 |
+| status | string | 否 | 用户状态筛选 |
+| startDate | string | 否 | 开始日期 |
+| endDate | string | 否 | 结束日期 |
+
+#### 响应
+- 成功时返回文件流
+- 失败时返回JSON错误信息
+
## 5. 旅行管理接口
### 5.1 获取旅行列表
@@ -544,20 +538,24 @@ User-Agent: JieBanKe-Admin/1.0.0
"duration_days": 5,
"max_participants": 8,
"current_participants": 3,
- "budget_min": 2000.00,
- "budget_max": 3000.00,
+ "price_per_person": 2500.00,
+ "includes": "住宿、早餐、门票、导游",
+ "excludes": "午餐、晚餐、个人消费",
+ "itinerary": [
+ {
+ "day": 1,
+ "title": "抵达大理",
+ "activities": ["机场接机", "入住酒店", "古城漫步"]
+ }
+ ],
+ "requirements": "身体健康,有一定体力",
"travel_type": "cultural",
- "status": 1,
- "is_featured": 0,
+ "status": "recruiting",
+ "is_featured": false,
"view_count": 156,
"like_count": 23,
"comment_count": 8,
- "creator": {
- "id": 1,
- "username": "traveler001",
- "nickname": "旅行达人",
- "avatar_url": "https://example.com/avatar.jpg"
- },
+ "created_by": 1,
"images": [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg"
@@ -608,26 +606,20 @@ User-Agent: JieBanKe-Admin/1.0.0
"duration_days": 5,
"max_participants": 8,
"current_participants": 3,
- "min_age": 18,
- "max_age": 60,
- "gender_limit": 0,
- "budget_min": 2000.00,
- "budget_max": 3000.00,
+ "price_per_person": 2500.00,
+ "includes": "住宿、早餐、门票、导游",
+ "excludes": "午餐、晚餐、个人消费",
"travel_type": "cultural",
- "transportation": "高铁+包车",
- "accommodation": "客栈",
"itinerary": [
{
"day": 1,
"title": "抵达大理",
- "activities": ["接机", "入住客栈", "古城夜游"],
- "meals": ["晚餐"]
+ "activities": ["接机", "入住客栈", "古城夜游"]
},
{
"day": 2,
"title": "大理古城游览",
- "activities": ["洱海骑行", "三塔寺参观", "古城购物"],
- "meals": ["早餐", "午餐", "晚餐"]
+ "activities": ["洱海骑行", "三塔寺参观", "古城购物"]
}
],
"requirements": "身体健康,有一定体力",
@@ -767,69 +759,58 @@ User-Agent: JieBanKe-Admin/1.0.0
### 6.1 获取动物列表
#### 接口信息
-- **接口路径**:`GET /api/v1/animals`
-- **接口描述**:分页获取动物列表
+- **接口路径**:`GET /api/v1/admin/animals`
+- **接口描述**:获取动物列表,支持分页、搜索和筛选
- **是否需要认证**:是
-- **所需权限**:`animal:read`
#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| page | integer | 否 | 页码,默认1 |
-| size | integer | 否 | 每页数量,默认20 |
-| sort | string | 否 | 排序,默认created_at:desc |
-| keyword | string | 否 | 搜索关键词(动物名称) |
-| species | string | 否 | 物种 |
-| breed | string | 否 | 品种 |
-| status | integer | 否 | 状态:0-不可认领,1-可认领,2-已认领,3-暂停认领 |
-| location | string | 否 | 所在地 |
-| farm_id | integer | 否 | 农场ID |
+| 参数名 | 类型 | 必填 | 默认值 | 说明 |
+|--------|------|------|--------|------|
+| 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) |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "items": [
+ "animals": [
{
"id": 1,
- "uuid": "animal_123456",
"name": "小花",
"species": "猫",
"breed": "英国短毛猫",
- "gender": 2,
"age": 24,
- "weight": 4.5,
- "color": "银渐层",
+ "gender": "female",
+ "price": 500.00,
+ "status": "available",
"description": "性格温顺,喜欢晒太阳",
- "health_status": "健康",
- "location": "北京市朝阳区",
- "adoption_fee": 500.00,
- "monthly_cost": 200.00,
- "status": 1,
- "is_featured": 1,
- "view_count": 89,
- "like_count": 15,
- "adoption_count": 0,
"images": [
"https://example.com/cat1.jpg",
"https://example.com/cat2.jpg"
],
- "farm": {
- "id": 1,
- "name": "爱心动物农场",
- "location": "北京市朝阳区"
- },
+ "merchant_id": 1,
+ "merchant_name": "爱心动物农场",
+ "claim_count": 0,
"created_at": "2024-01-10T10:00:00Z",
"updated_at": "2024-01-15T10:00:00Z"
}
],
"pagination": {
"page": 1,
- "size": 20,
+ "limit": 10,
"total": 30,
- "pages": 2
+ "pages": 3
}
}
}
@@ -838,103 +819,262 @@ User-Agent: JieBanKe-Admin/1.0.0
### 6.2 获取动物详情
#### 接口信息
-- **接口路径**:`GET /api/v1/animals/{id}`
-- **接口描述**:获取动物详细信息
+- **接口路径**:`GET /api/v1/admin/animals/{animal_id}`
+- **接口描述**:获取指定动物的详细信息
- **是否需要认证**:是
-- **所需权限**:`animal:read`
+
+#### 路径参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| animal_id | integer | 是 | 动物ID |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "id": 1,
- "uuid": "animal_123456",
- "name": "小花",
- "species": "猫",
- "breed": "英国短毛猫",
- "gender": 2,
- "age": 24,
- "weight": 4.5,
- "color": "银渐层",
- "description": "小花是一只非常温顺的英国短毛猫,喜欢晒太阳和玩毛线球...",
- "personality": "温顺、亲人、活泼",
- "health_status": "健康",
- "vaccination_status": {
- "rabies": {
- "vaccinated": true,
- "date": "2023-12-01",
- "next_due": "2024-12-01"
- },
- "feline_distemper": {
- "vaccinated": true,
- "date": "2023-12-01",
- "next_due": "2024-12-01"
- }
- },
- "medical_history": "2023年11月进行了绝育手术,恢复良好",
- "location": "北京市朝阳区",
- "adoption_fee": 500.00,
- "monthly_cost": 200.00,
- "status": 1,
- "is_featured": 1,
- "view_count": 89,
- "like_count": 15,
- "adoption_count": 0,
- "images": [
- "https://example.com/cat1.jpg",
- "https://example.com/cat2.jpg"
- ],
- "videos": [
- "https://example.com/cat_video1.mp4"
- ],
- "farm": {
+ "animal": {
"id": 1,
- "name": "爱心动物农场",
+ "name": "小花",
+ "type": "猫",
+ "breed": "英国短毛猫",
+ "age": 24,
+ "gender": "female",
+ "price": 500.00,
+ "daily_cost": 15.00,
"location": "北京市朝阳区",
- "contact_phone": "13800138000",
- "description": "专业的动物救助机构"
- },
- "caretaker": {
- "id": 1,
- "name": "张三",
- "phone": "13900139000",
- "experience": "5年动物护理经验"
- },
- "adoptions": [
- {
+ "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": {
"id": 1,
- "user_id": 2,
- "user": {
- "nickname": "爱心用户",
- "avatar_url": "https://example.com/avatar.jpg"
- },
- "adoption_type": 1,
- "start_date": "2024-02-01",
- "status": 1,
- "created_at": "2024-01-15T10:00:00Z"
- }
- ],
- "created_at": "2024-01-10T10:00:00Z",
- "updated_at": "2024-01-15T10:00:00Z"
+ "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"
+ }
}
}
```
-### 6.3 创建动物信息
+### 6.3 更新动物状态
#### 接口信息
-- **接口路径**:`POST /api/v1/animals`
-- **接口描述**:创建新的动物信息
+- **接口路径**:`PUT /api/v1/admin/animals/{animal_id}/status`
+- **接口描述**:更新动物状态
- **是否需要认证**:是
+
+#### 路径参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| animal_id | integer | 是 | 动物ID |
+
+#### 请求参数
+```json
+{
+ "status": "unavailable",
+ "reason": "动物生病,暂停认领"
+}
+```
+
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| status | string | 是 | 动物状态(available/claimed/unavailable) |
+| reason | string | 否 | 操作原因 |
+
+#### 响应示例
+```json
+{
+ "success": true,
+ "code": 200,
+ "message": "状态更新成功"
+}
+```
+
+### 6.4 批量更新动物状态
+
+#### 接口信息
+- **接口路径**:`PUT /api/v1/admin/animals/batch/status`
+- **接口描述**:批量更新动物状态
+- **是否需要认证**:是
+
+#### 请求参数
+```json
+{
+ "animal_ids": [1, 2, 3],
+ "status": "unavailable",
+ "reason": "批量下架"
+}
+```
+
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| animal_ids | array | 是 | 动物ID数组 |
+| status | string | 是 | 动物状态(available/claimed/unavailable) |
+| reason | string | 否 | 操作原因 |
+
+#### 响应示例
+```json
+{
+ "success": true,
+ "code": 200,
+ "message": "批量更新成功",
+ "data": {
+ "successCount": 3,
+ "failedCount": 0
+ }
+}
+```
+
+### 6.5 获取动物统计数据
+
+#### 接口信息
+- **接口路径**:`GET /api/v1/admin/animals/statistics`
+- **接口描述**:获取动物统计数据
+- **是否需要认证**:是
+
+#### 响应示例
+```json
+{
+ "success": true,
+ "code": 200,
+ "message": "获取成功",
+ "data": {
+ "totalStats": {
+ "total_animals": 100,
+ "available_animals": 60,
+ "claimed_animals": 30,
+ "total_claims": 150,
+ "avg_price": 450.00
+ },
+ "speciesStats": [
+ {
+ "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"
+ }
+ ],
+ "pagination": {
+ "page": 1,
+ "limit": 10,
+ "total": 5,
+ "pages": 1
+ }
+ }
+}
+```
- **所需权限**:`animal:create`
#### 请求参数
```json
{
"name": "小白",
- "species": "狗",
+ "type": "狗",
"breed": "金毛寻回犬",
"gender": 1,
"age": 36,
@@ -943,16 +1083,16 @@ User-Agent: JieBanKe-Admin/1.0.0
"description": "性格活泼,喜欢运动",
"personality": "活泼、友善、聪明",
"health_status": "健康",
+ "vaccination_records": "已完成基础疫苗接种",
"location": "上海市浦东新区",
- "farm_id": 2,
- "caretaker_id": 3,
- "adoption_fee": 800.00,
- "monthly_cost": 300.00,
+ "farmer_id": 2,
+ "price": 800.00,
+ "daily_cost": 15.00,
"images": [
"https://example.com/dog1.jpg",
"https://example.com/dog2.jpg"
],
- "status": 1
+ "status": "available"
}
```
@@ -973,201 +1113,85 @@ User-Agent: JieBanKe-Admin/1.0.0
}
```
-### 6.4 获取认领申请列表
+## 7. 认领管理接口
+
+### 7.1 获取认领申请列表
#### 接口信息
-- **接口路径**:`GET /api/v1/adoptions`
-- **接口描述**:分页获取动物认领申请列表
+- **接口路径**:`GET /api/v1/admin/animal-claims`
+- **接口描述**:获取所有认领申请列表,支持分页、搜索和筛选
- **是否需要认证**:是
-- **所需权限**:`adoption:read`
#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| page | integer | 否 | 页码,默认1 |
-| size | integer | 否 | 每页数量,默认20 |
-| sort | string | 否 | 排序,默认created_at:desc |
-| status | integer | 否 | 状态:0-申请中,1-已通过,2-已拒绝,3-进行中,4-已完成,5-已取消 |
-| animal_id | integer | 否 | 动物ID |
-| user_id | integer | 否 | 用户ID |
-| adoption_type | integer | 否 | 认领类型:1-长期认领,2-短期认领,3-共同认领 |
+| 参数名 | 类型 | 必填 | 默认值 | 说明 |
+|--------|------|------|--------|------|
+| 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 | 否 | - | 结束日期 |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "items": [
+ "claims": [
{
"id": 1,
- "uuid": "adoption_123456",
- "animal": {
- "id": 1,
- "name": "小花",
- "species": "猫",
- "breed": "英国短毛猫",
- "images": ["https://example.com/cat1.jpg"]
- },
- "user": {
- "id": 2,
- "username": "user002",
- "nickname": "爱心用户",
- "avatar_url": "https://example.com/avatar.jpg"
- },
- "adoption_type": 1,
- "duration_months": 12,
- "start_date": "2024-02-01",
- "end_date": "2025-02-01",
- "monthly_fee": 200.00,
- "total_fee": 2400.00,
- "payment_status": 1,
- "status": 1,
- "special_requirements": "希望能定期收到小花的照片和视频",
- "approved_at": "2024-01-16T09:00:00Z",
- "created_at": "2024-01-15T15:30:00Z"
+ "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,
- "size": 20,
- "total": 15,
- "pages": 1
+ "limit": 10,
+ "total": 30,
+ "pages": 3
}
}
}
```
-### 6.5 审核认领申请
+### 7.2 获取认领申请详情
#### 接口信息
-- **接口路径**:`POST /api/v1/adoptions/{id}/review`
-- **接口描述**:审核动物认领申请
+- **接口路径**:`GET /api/v1/admin/animal-claims/{claim_id}`
+- **接口描述**:获取指定认领申请的详细信息
- **是否需要认证**:是
-- **所需权限**:`adoption:review`
-
-#### 请求参数
-```json
-{
- "action": "approve",
- "reason": "申请人条件符合要求,同意认领"
-}
-```
+#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
-| action | string | 是 | 审核动作:approve-通过,reject-拒绝 |
-| reason | string | 是 | 审核理由 |
-
-#### 响应示例
-```json
-{
- "code": 200,
- "message": "审核成功",
- "data": {
- "id": 1,
- "status": 1,
- "approved_at": "2024-01-16T09:00:00Z",
- "review_reason": "申请人条件符合要求,同意认领"
- }
-}
-```
-
-## 7. 订单管理接口
-
-### 7.1 获取订单列表
-
-#### 接口信息
-- **接口路径**:`GET /api/v1/orders`
-- **接口描述**:分页获取订单列表
-- **是否需要认证**:是
-- **所需权限**:`order:read`
-
-#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| page | integer | 否 | 页码,默认1 |
-| size | integer | 否 | 每页数量,默认20 |
-| sort | string | 否 | 排序,默认created_at:desc |
-| order_no | string | 否 | 订单号 |
-| user_id | integer | 否 | 用户ID |
-| order_type | string | 否 | 订单类型:travel,adoption,service |
-| status | integer | 否 | 订单状态:0-待支付,1-已支付,2-已完成,3-已取消,4-已退款 |
-| payment_status | integer | 否 | 支付状态:0-未支付,1-支付中,2-支付成功,3-支付失败 |
-| created_start | string | 否 | 创建时间开始(YYYY-MM-DD) |
-| created_end | string | 否 | 创建时间结束(YYYY-MM-DD) |
-| amount_min | number | 否 | 金额下限 |
-| amount_max | number | 否 | 金额上限 |
+| claim_id | integer | 是 | 认领申请ID |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "items": [
- {
- "id": 1,
- "order_no": "ORD202401150001",
- "user": {
- "id": 2,
- "username": "user002",
- "nickname": "小明",
- "avatar_url": "https://example.com/avatar.jpg"
- },
- "order_type": "adoption",
- "related_id": 1,
- "title": "认领小花(英国短毛猫)",
- "description": "12个月长期认领",
- "amount": 2400.00,
- "discount_amount": 0.00,
- "final_amount": 2400.00,
- "currency": "CNY",
- "status": 2,
- "payment_method": "wechat",
- "payment_status": 2,
- "paid_at": "2024-01-15T16:30:00Z",
- "completed_at": "2024-01-15T16:35:00Z",
- "created_at": "2024-01-15T16:00:00Z",
- "updated_at": "2024-01-15T16:35:00Z"
- }
- ],
- "pagination": {
- "page": 1,
- "size": 20,
- "total": 100,
- "pages": 5
- }
- }
-}
-```
-
-### 7.2 获取订单详情
-
-#### 接口信息
-- **接口路径**:`GET /api/v1/orders/{id}`
-- **接口描述**:获取订单详细信息
-- **是否需要认证**:是
-- **所需权限**:`order:read`
-
-#### 响应示例
-```json
-{
- "code": 200,
- "message": "获取成功",
- "data": {
- "id": 1,
- "order_no": "ORD202401150001",
- "user": {
- "id": 2,
- "username": "user002",
- "nickname": "小明",
- "avatar_url": "https://example.com/avatar.jpg",
- "phone": "13900139000"
- },
- "order_type": "adoption",
- "related_id": 1,
- "related_info": {
+ "claim": {
+ "id": 1,
+ "claim_no": "CLAIM202401150001",
"animal": {
"id": 1,
"name": "小花",
@@ -1175,135 +1199,349 @@ User-Agent: JieBanKe-Admin/1.0.0
"breed": "英国短毛猫",
"images": ["https://example.com/cat1.jpg"]
},
- "adoption": {
- "id": 1,
- "adoption_type": 1,
- "duration_months": 12,
- "start_date": "2024-02-01",
- "end_date": "2025-02-01"
- }
- },
- "title": "认领小花(英国短毛猫)",
- "description": "12个月长期认领,包含日常照料、医疗保健等服务",
- "amount": 2400.00,
- "discount_amount": 0.00,
- "final_amount": 2400.00,
- "currency": "CNY",
- "status": 2,
- "payment_method": "wechat",
- "payment_status": 2,
- "paid_at": "2024-01-15T16:30:00Z",
- "completed_at": "2024-01-15T16:35:00Z",
- "metadata": {
- "promotion_code": null,
- "source": "miniprogram"
- },
- "payments": [
- {
- "id": 1,
- "payment_no": "PAY202401150001",
- "payment_method": "wechat",
- "amount": 2400.00,
- "status": 2,
- "third_party_no": "wx_transaction_123456",
- "paid_at": "2024-01-15T16:30:00Z"
- }
- ],
- "created_at": "2024-01-15T16:00:00Z",
- "updated_at": "2024-01-15T16:35:00Z"
+ "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"
+ }
}
}
```
-### 7.3 订单退款
+### 7.3 审核认领申请
#### 接口信息
-- **接口路径**:`POST /api/v1/orders/{id}/refund`
-- **接口描述**:处理订单退款
+- **接口路径**:`PUT /api/v1/admin/animal-claims/{claim_id}/review`
+- **接口描述**:审核认领申请
- **是否需要认证**:是
-- **所需权限**:`order:refund`
+
+#### 路径参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| claim_id | integer | 是 | 认领申请ID |
#### 请求参数
```json
{
- "refund_amount": 2400.00,
- "refund_reason": "用户申请退款",
- "refund_type": "full"
+ "status": "approved",
+ "review_remark": "申请人条件符合要求,同意认领"
}
```
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
-| refund_amount | number | 是 | 退款金额 |
-| refund_reason | string | 是 | 退款原因 |
-| refund_type | string | 是 | 退款类型:full-全额退款,partial-部分退款 |
+| status | string | 是 | 审核状态(approved/rejected) |
+| review_remark | string | 否 | 审核备注 |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
- "message": "退款处理成功",
+ "message": "认领申请审核通过",
"data": {
- "order_id": 1,
- "refund_amount": 2400.00,
- "refund_status": "processing",
- "refund_no": "REF202401150001",
- "estimated_arrival": "2024-01-18T16:30:00Z"
+ "claim": {
+ "id": 1,
+ "status": "approved",
+ "review_remark": "申请人条件符合要求,同意认领",
+ "reviewed_by": 1,
+ "reviewed_at": "2024-01-16T09:00:00Z"
+ }
}
}
```
-## 8. 系统管理接口
-
-### 8.1 获取管理员列表
+### 7.4 获取认领统计数据
#### 接口信息
-- **接口路径**:`GET /api/v1/admins`
-- **接口描述**:分页获取管理员列表
+- **接口路径**:`GET /api/v1/admin/animal-claims/statistics`
+- **接口描述**:获取认领申请统计数据
- **是否需要认证**:是
-- **所需权限**:`admin:read`
-
-#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| page | integer | 否 | 页码,默认1 |
-| size | integer | 否 | 每页数量,默认20 |
-| sort | string | 否 | 排序,默认created_at:desc |
-| keyword | string | 否 | 搜索关键词(用户名、邮箱、真实姓名) |
-| status | integer | 否 | 状态:0-禁用,1-正常 |
#### 响应示例
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "items": [
+ "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 导出认领数据
+
+#### 接口信息
+- **接口路径**:`GET /api/v1/admin/animal-claims/export`
+- **接口描述**:导出认领申请数据
+- **是否需要认证**:是
+
+#### 查询参数
+| 参数名 | 类型 | 必填 | 说明 |
+|--------|------|------|------|
+| format | string | 否 | 导出格式(csv/json),默认csv |
+| status | string | 否 | 状态筛选 |
+| animal_type | string | 否 | 动物类型筛选 |
+| user_id | integer | 否 | 用户ID筛选 |
+| start_date | string | 否 | 开始日期 |
+| end_date | string | 否 | 结束日期 |
+
+#### 响应
+- 成功时返回文件流
+- 失败时返回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
+
+**请求参数:**
+```json
+{
+ "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,
+ "code": 200,
+ "message": "获取成功",
+ "data": {
+ "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": [
{
"id": 1,
"username": "admin",
"email": "admin@example.com",
- "real_name": "系统管理员",
- "avatar_url": "https://example.com/admin_avatar.jpg",
- "phone": "13800138000",
+ "nickname": "系统管理员",
+ "role": "super_admin",
"status": 1,
- "roles": [
- {
- "id": 1,
- "name": "超级管理员",
- "code": "super_admin"
- }
- ],
- "last_login_at": "2024-01-15T09:30:00Z",
- "created_at": "2024-01-01T10:00:00Z",
- "updated_at": "2024-01-15T09:30:00Z"
+ "last_login_at": "2023-12-01T09:30:00Z",
+ "created_at": "2023-01-01T10:00:00Z",
+ "updated_at": "2023-12-01T09:30:00Z"
}
],
"pagination": {
- "page": 1,
- "size": 20,
+ "current_page": 1,
+ "per_page": 10,
"total": 5,
- "pages": 1
+ "total_pages": 1
}
}
}
@@ -1311,61 +1549,97 @@ User-Agent: JieBanKe-Admin/1.0.0
### 8.2 创建管理员
-#### 接口信息
-- **接口路径**:`POST /api/v1/admins`
-- **接口描述**:创建新管理员
-- **是否需要认证**:是
-- **所需权限**:`admin:create`
+**接口路径:** `POST /admin`
-#### 请求参数
+**接口描述:** 创建新管理员
+
+**请求参数:**
```json
{
"username": "newadmin",
- "email": "newadmin@example.com",
"password": "password123",
- "real_name": "新管理员",
- "phone": "13900139000",
- "role_ids": [2, 3],
- "status": 1
+ "email": "newadmin@example.com",
+ "nickname": "新管理员",
+ "role": "admin"
}
```
-#### 响应示例
+**响应示例:**
```json
{
+ "success": true,
"code": 201,
"message": "创建成功",
"data": {
- "id": 6,
- "username": "newadmin",
- "email": "newadmin@example.com",
- "real_name": "新管理员",
- "status": 1,
- "created_at": "2024-01-15T10:30:00Z"
+ "admin": {
+ "id": 6,
+ "username": "newadmin",
+ "email": "newadmin@example.com",
+ "nickname": "新管理员",
+ "role": "admin",
+ "status": 1,
+ "created_at": "2023-12-01T10:30:00Z"
+ }
}
}
```
-### 8.3 获取角色列表
+### 8.3 更新管理员
-#### 接口信息
-- **接口路径**:`GET /api/v1/roles`
-- **接口描述**:获取所有角色列表
-- **是否需要认证**:是
-- **所需权限**:`role:read`
+**接口路径:** `PUT /admin/{id}`
-#### 响应示例
+**接口描述:** 更新管理员信息
+
+**路径参数:**
+- `id` (integer, required): 管理员ID
+
+**请求参数:**
```json
{
+ "email": "updated@example.com",
+ "nickname": "更新后的昵称",
+ "role": "admin",
+ "status": 1
+}
+```
+
+**响应示例:**
+```json
+{
+ "success": true,
"code": 200,
- "message": "获取成功",
+ "message": "更新成功",
"data": {
- "items": [
- {
- "id": 1,
- "name": "超级管理员",
- "code": "super_admin",
- "description": "拥有所有权限的超级管理员",
+ "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": "删除成功"
+}
+```
"status": 1,
"permissions": [
{
@@ -1438,124 +1712,299 @@ User-Agent: JieBanKe-Admin/1.0.0
}
```
-## 9. 统计分析接口
+## 9. 统计分析
-### 9.1 获取仪表板统计
+### 9.1 获取系统概览统计
-#### 接口信息
-- **接口路径**:`GET /api/v1/dashboard/stats`
-- **接口描述**:获取仪表板统计数据
-- **是否需要认证**:是
-- **所需权限**:`dashboard:read`
+**接口路径:** `GET /admin/statistics/overview`
-#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| period | string | 否 | 统计周期:today,week,month,year,默认today |
+**接口描述:** 获取系统概览统计数据
-#### 响应示例
+**响应示例:**
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "overview": {
+ "users": {
"total_users": 1250,
+ "active_users": 890,
"new_users_today": 15,
- "total_travels": 89,
- "active_travels": 23,
- "total_animals": 156,
- "adopted_animals": 67,
+ "new_users_week": 89
+ },
+ "travels": {
+ "total_travels": 156,
+ "published_travels": 89,
+ "new_travels_today": 3
+ },
+ "animals": {
+ "total_animals": 234,
+ "available_animals": 156,
+ "claimed_animals": 78
+ },
+ "orders": {
"total_orders": 445,
+ "completed_orders": 389,
+ "pending_orders": 56,
"total_revenue": 125600.00
- },
- "trends": {
- "user_growth": [
- {"date": "2024-01-08", "count": 8},
- {"date": "2024-01-09", "count": 12},
- {"date": "2024-01-10", "count": 15},
- {"date": "2024-01-11", "count": 10},
- {"date": "2024-01-12", "count": 18},
- {"date": "2024-01-13", "count": 22},
- {"date": "2024-01-14", "count": 15}
- ],
- "order_trends": [
- {"date": "2024-01-08", "count": 5, "amount": 2500.00},
- {"date": "2024-01-09", "count": 8, "amount": 4200.00},
- {"date": "2024-01-10", "count": 12, "amount": 6800.00},
- {"date": "2024-01-11", "count": 6, "amount": 3200.00},
- {"date": "2024-01-12", "count": 15, "amount": 8500.00},
- {"date": "2024-01-13", "count": 18, "amount": 9200.00},
- {"date": "2024-01-14", "count": 10, "amount": 5500.00}
- ]
- },
- "distributions": {
- "user_types": [
- {"type": "普通用户", "count": 1100, "percentage": 88.0},
- {"type": "商家用户", "count": 150, "percentage": 12.0}
- ],
- "travel_types": [
- {"type": "文化旅行", "count": 25, "percentage": 28.1},
- {"type": "休闲旅行", "count": 32, "percentage": 36.0},
- {"type": "探险旅行", "count": 18, "percentage": 20.2},
- {"type": "商务旅行", "count": 14, "percentage": 15.7}
- ],
- "animal_species": [
- {"species": "猫", "count": 78, "percentage": 50.0},
- {"species": "狗", "count": 45, "percentage": 28.8},
- {"species": "兔子", "count": 20, "percentage": 12.8},
- {"species": "其他", "count": 13, "percentage": 8.3}
- ]
}
}
}
```
-### 9.2 获取用户统计
+### 9.2 获取用户增长趋势
-#### 接口信息
-- **接口路径**:`GET /api/v1/statistics/users`
-- **接口描述**:获取用户相关统计数据
-- **是否需要认证**:是
-- **所需权限**:`statistics:read`
+**接口路径:** `GET /admin/statistics/user-growth`
-#### 查询参数
-| 参数名 | 类型 | 必填 | 说明 |
-|--------|------|------|------|
-| start_date | string | 否 | 开始日期(YYYY-MM-DD) |
-| end_date | string | 否 | 结束日期(YYYY-MM-DD) |
-| group_by | string | 否 | 分组方式:day,week,month,默认day |
+**接口描述:** 获取用户增长趋势数据
-#### 响应示例
+**查询参数:**
+- `period` (string, optional): 统计周期,可选值:7d, 30d, 90d, 365d,默认30d
+
+**响应示例:**
```json
{
+ "success": true,
"code": 200,
"message": "获取成功",
"data": {
- "summary": {
- "total_users": 1250,
- "active_users": 890,
- "new_users": 156,
- "retention_rate": 71.2
- },
- "registration_trends": [
- {"date": "2024-01-01", "count": 12},
- {"date": "2024-01-02", "count": 15},
- {"date": "2024-01-03", "count": 8}
+ "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
+ }
],
- "activity_trends": [
- {"date": "2024-01-01", "active_count": 245},
- {"date": "2024-01-02", "active_count": 289},
- {"date": "2024-01-03", "active_count": 267}
+ "claimStats": [
+ {
+ "date": "2023-11-01",
+ "new_claims": 8,
+ "approved_claims": 6,
+ "rejected_claims": 1
+ }
],
- "demographics": {
- "age_groups": [
- {"range": "18-25", "count": 320, "percentage": 25.6},
- {"range": "26-35", "count": 450, "percentage": 36.0},
- {"range": "36-45", "count": 280, "percentage": 22.4},
- {"range": "46+", "count": 200, "percentage": 16.0}
- ],
- "gender_distribution": [
+ "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
+ }
+}
+```
{"gender": "男", "count": 580, "percentage": 46.4},
{"gender": "女", "count": 620, "percentage": 49.6},
{"gender": "未知", "count": 50, "percentage": 4.0}
@@ -1811,7 +2260,7 @@ User-Agent: JieBanKe-Admin/1.0.0
"message": "获取成功",
"data": {
"site": {
- "name": "解班客",
+ "name": "结伴客",
"description": "专业的旅行结伴和动物认领平台",
"logo_url": "https://example.com/logo.png",
"favicon_url": "https://example.com/favicon.ico",
@@ -1851,7 +2300,7 @@ User-Agent: JieBanKe-Admin/1.0.0
```json
{
"site": {
- "name": "解班客",
+ "name": "结伴客",
"description": "专业的旅行结伴和动物认领平台"
},
"upload": {
@@ -1935,7 +2384,7 @@ User-Agent: JieBanKe-Admin/1.0.0
## 15. 总结
-本文档详细描述了解班客管理后台系统的所有API接口规范,包括:
+本文档详细描述了结伴客管理后台系统的所有API接口规范,包括:
1. **完整的接口定义**:涵盖认证、用户管理、旅行管理、动物认领、订单管理等所有核心功能
2. **统一的规范标准**:采用RESTful风格,统一的请求响应格式和错误处理机制
diff --git a/docs/管理后台架构文档.md b/docs/管理后台架构文档.md
index eb37c02..69fd8a8 100644
--- a/docs/管理后台架构文档.md
+++ b/docs/管理后台架构文档.md
@@ -1,9 +1,9 @@
-# 解班客管理后台架构文档
+# 结伴客管理后台架构文档
## 1. 项目概述
### 1.1 项目简介
-解班客管理后台是一个基于Vue.js 3.x + Element Plus的现代化管理系统,为运营人员提供用户管理、内容管理、数据分析等功能。采用前后端分离架构,支持多角色权限管理和实时数据监控。
+结伴客管理后台是一个基于Vue.js 3.x + Element Plus的现代化管理系统,为运营人员提供用户管理、内容管理、数据分析等功能。采用前后端分离架构,支持多角色权限管理和实时数据监控。
### 1.2 业务目标
- **运营管理**:提供完整的运营管理功能
@@ -719,7 +719,7 @@ export function setupRouterGuards(router: Router) {
// 全局后置守卫
router.afterEach((to) => {
// 设置页面标题
- document.title = `${to.meta.title || '管理后台'} - 解班客`
+ document.title = `${to.meta.title || '管理后台'} - 结伴客`
// 页面访问统计
// analytics.trackPageView(to.path)
@@ -2021,12 +2021,12 @@ export default defineConfig({
#### 8.1.2 环境配置
```typescript
// .env.development
-VITE_APP_TITLE=解班客管理后台
+VITE_APP_TITLE=结伴客管理后台
VITE_API_BASE_URL=http://localhost:8080/api
VITE_UPLOAD_URL=http://localhost:8080/upload
// .env.production
-VITE_APP_TITLE=解班客管理后台
+VITE_APP_TITLE=结伴客管理后台
VITE_API_BASE_URL=https://api.jiebanke.com
VITE_UPLOAD_URL=https://cdn.jiebanke.com/upload
```
@@ -2561,4 +2561,4 @@ export class Analytics {
- 自动化测试
- 开发工具链
-通过以上架构设计,解班客管理后台将具备高性能、高可用、易维护的特点,为运营团队提供强大的管理工具,支撑业务的快速发展。
\ No newline at end of file
+通过以上架构设计,结伴客管理后台将具备高性能、高可用、易维护的特点,为运营团队提供强大的管理工具,支撑业务的快速发展。
\ No newline at end of file
diff --git a/docs/部署文档.md b/docs/部署文档.md
index 05376c7..0b5fd23 100644
--- a/docs/部署文档.md
+++ b/docs/部署文档.md
@@ -1,4 +1,4 @@
-# 解班客项目部署文档
+# 结伴客项目部署文档
## 1. 部署概述
@@ -751,7 +751,7 @@ docker logs -f redis-master
## 12. 总结
-本部署文档涵盖了解班客项目的完整部署流程,包括:
+本部署文档涵盖了结伴客项目的完整部署流程,包括:
- **基础环境**:服务器配置、软件安装
- **数据库部署**:MySQL主从、Redis集群