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

1508 lines
37 KiB
Markdown
Raw Normal View History

# 管理后台接口设计文档
## 1. 概述
### 1.1 项目简介
本文档详细描述了结伴客管理后台系统的所有API接口设计包括用户管理、旅行管理、动物认领管理、订单管理、系统管理等模块的接口规范。
### 1.2 接口设计原则
- **RESTful风格**遵循REST架构风格
- **统一响应格式**:所有接口采用统一的响应格式
- **版本控制**支持API版本管理
- **安全认证**JWT Token认证机制
- **错误处理**:统一的错误码和错误信息
### 1.3 技术规范
- **协议**HTTPS
- **数据格式**JSON
- **字符编码**UTF-8
- **认证方式**JWT Bearer Token
- **API版本**v1
- **基础URL**`http://localhost:3000/api/v1`
### 1.4 API模块概览
| 模块 | 描述 | 接口数量 | 状态 |
|------|------|----------|------|
| 认证授权 | 管理员登录、权限验证 | 5 | ✅ |
| 用户管理 | 用户CRUD、状态管理 | 8 | ✅ |
| 商户管理 | 商户信息管理 | 7 | ✅ |
| 旅行管理 | 旅行活动管理 | 8 | ✅ |
| 动物管理 | 动物认领管理 | 12 | ✅ |
| 订单管理 | 订单处理、状态跟踪 | 15 | ✅ |
| 花卉管理 | 花卉商品管理 | 9 | ✅ |
| 促销活动 | 促销活动和奖励管理 | 10 | ✅ |
| 系统管理 | 系统配置、监控 | 12 | ✅ |
| 仪表板 | 数据统计、图表 | 6 | ✅ |
| 权限管理 | 角色权限管理 | 8 | ✅ |
## 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 管理员登录
#### 接口信息
- **接口路径**`POST /api/v1/admin/login`
- **接口描述**:管理员登录获取访问令牌
- **是否需要认证**:否
#### 请求参数
```json
{
"username": "admin",
"password": "password123"
}
```
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
#### 响应示例
```json
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 7200,
"admin": {
"id": 1,
"username": "admin",
"name": "系统管理员",
"email": "admin@example.com",
"role": "super_admin",
"permissions": ["user:read", "user:write", "system:manage"]
}
}
}
```
### 3.2 刷新令牌
#### 接口信息
- **接口路径**`POST /api/v1/admin/refresh`
- **接口描述**:刷新访问令牌
- **是否需要认证**:是
#### 响应示例
```json
{
"code": 200,
"message": "令牌刷新成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 7200
}
}
```
### 3.3 退出登录
#### 接口信息
- **接口路径**`POST /api/v1/admin/logout`
- **接口描述**:管理员退出登录
- **是否需要认证**:是
#### 响应示例
```json
{
"code": 200,
"message": "退出成功"
}
```
### 3.4 获取当前用户信息
#### 接口信息
- **接口路径**`GET /api/v1/admin/profile`
- **接口描述**:获取当前登录管理员信息
- **是否需要认证**:是
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"id": 1,
"username": "admin",
"name": "系统管理员",
"email": "admin@example.com",
"role": "super_admin",
"permissions": ["user:read", "user:write", "system:manage"],
"last_login": "2024-01-15T10:30:00Z"
}
}
```
### 3.5 修改密码
#### 接口信息
- **接口路径**`PUT /api/v1/admin/password`
- **接口描述**:修改管理员密码
- **是否需要认证**:是
#### 请求参数
```json
{
"old_password": "oldpassword123",
"new_password": "newpassword123"
}
```
## 4. 用户管理接口
### 4.1 获取用户列表
#### 接口信息
- **接口路径**`GET /api/v1/users`
- **接口描述**:获取用户列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(用户名、昵称、手机号) |
| status | string | 否 | 用户状态active, inactive, banned |
| gender | string | 否 | 性别male, female, other |
| age_min | integer | 否 | 最小年龄 |
| age_max | integer | 否 | 最大年龄 |
| created_start | string | 否 | 注册开始时间 |
| created_end | string | 否 | 注册结束时间 |
| sort | string | 否 | 排序字段 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"username": "user001",
"nickname": "小明",
"avatar": "https://example.com/avatar/1.jpg",
"phone": "13800138000",
"email": "user001@example.com",
"gender": "male",
"age": 25,
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"last_login": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 100,
"pages": 5
}
}
}
```
### 4.2 获取用户详情
#### 接口信息
- **接口路径**`GET /api/v1/users/{id}`
- **接口描述**:获取指定用户的详细信息
- **是否需要认证**:是
#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | integer | 是 | 用户ID |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"id": 1,
"username": "user001",
"nickname": "小明",
"avatar": "https://example.com/avatar/1.jpg",
"phone": "13800138000",
"email": "user001@example.com",
"gender": "male",
"age": 25,
"birthday": "1999-01-01",
"location": "北京市朝阳区",
"bio": "热爱旅行的90后",
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-15T10:30:00Z",
"last_login": "2024-01-15T10:30:00Z",
"stats": {
"travel_count": 5,
"animal_adoption_count": 2,
"order_count": 10,
"total_spent": 1500.00
}
}
}
```
### 4.3 创建用户
#### 接口信息
- **接口路径**`POST /api/v1/users`
- **接口描述**:创建新用户
- **是否需要认证**:是
#### 请求参数
```json
{
"username": "user002",
"nickname": "小红",
"phone": "13800138001",
"email": "user002@example.com",
"password": "password123",
"gender": "female",
"age": 23,
"location": "上海市浦东新区"
}
```
### 4.4 更新用户信息
#### 接口信息
- **接口路径**`PUT /api/v1/users/{id}`
- **接口描述**:更新用户信息
- **是否需要认证**:是
### 4.5 删除用户
#### 接口信息
- **接口路径**`DELETE /api/v1/users/{id}`
- **接口描述**:删除用户(软删除)
- **是否需要认证**:是
### 4.6 更新用户状态
#### 接口信息
- **接口路径**`PUT /api/v1/users/{id}/status`
- **接口描述**:更新用户状态(激活/禁用/封禁)
- **是否需要认证**:是
#### 请求参数
```json
{
"status": "banned",
"reason": "违规行为"
}
```
### 4.7 重置用户密码
#### 接口信息
- **接口路径**`PUT /api/v1/users/{id}/password`
- **接口描述**:重置用户密码
- **是否需要认证**:是
### 4.8 获取用户统计
#### 接口信息
- **接口路径**`GET /api/v1/users/stats`
- **接口描述**:获取用户统计数据
- **是否需要认证**:是
## 5. 商户管理接口
### 5.1 获取商户列表
#### 接口信息
- **接口路径**`GET /api/v1/merchants`
- **接口描述**:获取商户列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(商户名称、联系人) |
| status | string | 否 | 商户状态active, inactive, pending |
| category | string | 否 | 商户类别 |
| city | string | 否 | 所在城市 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"name": "阳光旅行社",
"logo": "https://example.com/logo/1.jpg",
"category": "travel",
"contact_person": "张经理",
"phone": "400-123-4567",
"email": "contact@sunshine-travel.com",
"address": "北京市朝阳区xxx街道xxx号",
"city": "北京",
"status": "active",
"rating": 4.8,
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 50,
"pages": 3
}
}
}
```
### 5.2 获取商户详情
#### 接口信息
- **接口路径**`GET /api/v1/merchants/{id}`
- **接口描述**:获取指定商户的详细信息
- **是否需要认证**:是
### 5.3 创建商户
#### 接口信息
- **接口路径**`POST /api/v1/merchants`
- **接口描述**:创建新商户
- **是否需要认证**:是
### 5.4 更新商户信息
#### 接口信息
- **接口路径**`PUT /api/v1/merchants/{id}`
- **接口描述**:更新商户信息
- **是否需要认证**:是
### 5.5 删除商户
#### 接口信息
- **接口路径**`DELETE /api/v1/merchants/{id}`
- **接口描述**:删除商户
- **是否需要认证**:是
### 5.6 更新商户状态
#### 接口信息
- **接口路径**`PUT /api/v1/merchants/{id}/status`
- **接口描述**:更新商户状态
- **是否需要认证**:是
### 5.7 获取商户统计
#### 接口信息
- **接口路径**`GET /api/v1/merchants/stats`
- **接口描述**:获取商户统计数据
- **是否需要认证**:是
## 6. 旅行管理接口
### 6.1 获取旅行列表
#### 接口信息
- **接口路径**`GET /api/v1/travels`
- **接口描述**:获取旅行活动列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(标题、目的地) |
| status | string | 否 | 状态draft, published, cancelled, completed |
| category | string | 否 | 旅行类别 |
| destination | string | 否 | 目的地 |
| price_min | number | 否 | 最低价格 |
| price_max | number | 否 | 最高价格 |
| start_date | string | 否 | 开始日期 |
| end_date | string | 否 | 结束日期 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"title": "云南大理古城三日游",
"description": "探索古城文化,体验白族风情",
"images": ["https://example.com/travel/1/1.jpg"],
"destination": "云南大理",
"category": "cultural",
"price": 1299.00,
"max_participants": 20,
"current_participants": 8,
"start_date": "2024-03-01",
"end_date": "2024-03-03",
"status": "published",
"organizer": {
"id": 1,
"name": "阳光旅行社"
},
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 80,
"pages": 4
}
}
}
```
### 6.2 获取旅行详情
#### 接口信息
- **接口路径**`GET /api/v1/travels/{id}`
- **接口描述**:获取指定旅行活动的详细信息
- **是否需要认证**:是
### 6.3 创建旅行活动
#### 接口信息
- **接口路径**`POST /api/v1/travels`
- **接口描述**:创建新的旅行活动
- **是否需要认证**:是
### 6.4 更新旅行活动
#### 接口信息
- **接口路径**`PUT /api/v1/travels/{id}`
- **接口描述**:更新旅行活动信息
- **是否需要认证**:是
### 6.5 删除旅行活动
#### 接口信息
- **接口路径**`DELETE /api/v1/travels/{id}`
- **接口描述**:删除旅行活动
- **是否需要认证**:是
### 6.6 更新旅行状态
#### 接口信息
- **接口路径**`PUT /api/v1/travels/{id}/status`
- **接口描述**:更新旅行活动状态
- **是否需要认证**:是
### 6.7 获取旅行参与者
#### 接口信息
- **接口路径**`GET /api/v1/travels/{id}/participants`
- **接口描述**:获取旅行活动参与者列表
- **是否需要认证**:是
### 6.8 获取旅行统计
#### 接口信息
- **接口路径**`GET /api/v1/travels/stats`
- **接口描述**:获取旅行活动统计数据
- **是否需要认证**:是
## 7. 动物管理接口
### 7.1 获取动物列表
#### 接口信息
- **接口路径**`GET /api/v1/animals`
- **接口描述**:获取动物列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(动物名称、品种) |
| species | string | 否 | 物种dog, cat, bird, other |
| status | string | 否 | 状态available, adopted, reserved |
| age_min | integer | 否 | 最小年龄(月) |
| age_max | integer | 否 | 最大年龄(月) |
| gender | string | 否 | 性别male, female |
| location | string | 否 | 所在地区 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"name": "小白",
"species": "dog",
"breed": "金毛",
"age": 24,
"gender": "male",
"color": "金黄色",
"weight": 25.5,
"images": ["https://example.com/animal/1/1.jpg"],
"description": "性格温顺,喜欢和人玩耍",
"health_status": "healthy",
"vaccination_status": "completed",
"sterilization_status": "completed",
"location": "北京市朝阳区",
"status": "available",
"rescue_date": "2024-01-01",
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 120,
"pages": 6
}
}
}
```
### 7.2 获取动物详情
#### 接口信息
- **接口路径**`GET /api/v1/animals/{id}`
- **接口描述**:获取指定动物的详细信息
- **是否需要认证**:是
### 7.3 创建动物信息
#### 接口信息
- **接口路径**`POST /api/v1/animals`
- **接口描述**:添加新的动物信息
- **是否需要认证**:是
### 7.4 更新动物信息
#### 接口信息
- **接口路径**`PUT /api/v1/animals/{id}`
- **接口描述**:更新动物信息
- **是否需要认证**:是
### 7.5 删除动物信息
#### 接口信息
- **接口路径**`DELETE /api/v1/animals/{id}`
- **接口描述**:删除动物信息
- **是否需要认证**:是
### 7.6 更新动物状态
#### 接口信息
- **接口路径**`PUT /api/v1/animals/{id}/status`
- **接口描述**:更新动物状态(可领养/已预约/已领养)
- **是否需要认证**:是
### 7.7 获取动物认领记录
#### 接口信息
- **接口路径**`GET /api/v1/animals/{id}/adoptions`
- **接口描述**:获取动物的认领记录
- **是否需要认证**:是
### 7.8 创建认领申请
#### 接口信息
- **接口路径**`POST /api/v1/animals/{id}/adoptions`
- **接口描述**:创建动物认领申请
- **是否需要认证**:是
### 7.9 处理认领申请
#### 接口信息
- **接口路径**`PUT /api/v1/adoptions/{id}/status`
- **接口描述**:处理认领申请(批准/拒绝)
- **是否需要认证**:是
### 7.10 获取认领申请列表
#### 接口信息
- **接口路径**`GET /api/v1/adoptions`
- **接口描述**:获取认领申请列表
- **是否需要认证**:是
### 7.11 获取动物统计
#### 接口信息
- **接口路径**`GET /api/v1/animals/stats`
- **接口描述**:获取动物统计数据
- **是否需要认证**:是
### 7.12 批量更新动物状态
#### 接口信息
- **接口路径**`PUT /api/v1/animals/batch/status`
- **接口描述**:批量更新动物状态
- **是否需要认证**:是
## 8. 订单管理接口
### 8.1 获取订单列表
#### 接口信息
- **接口路径**`GET /api/v1/orders`
- **接口描述**:获取订单列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(订单号、用户名) |
| status | string | 否 | 订单状态 |
| payment_status | string | 否 | 支付状态 |
| payment_method | string | 否 | 支付方式 |
| amount_min | number | 否 | 最小金额 |
| amount_max | number | 否 | 最大金额 |
| created_start | string | 否 | 创建开始时间 |
| created_end | string | 否 | 创建结束时间 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"order_no": "ORD202401150001",
"user": {
"id": 1,
"username": "user001",
"nickname": "小明"
},
"type": "travel",
"title": "云南大理古城三日游",
"amount": 1299.00,
"status": "completed",
"payment_status": "paid",
"payment_method": "wechat",
"created_at": "2024-01-15T10:00:00Z",
"paid_at": "2024-01-15T10:05:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 200,
"pages": 10
}
}
}
```
### 8.2 获取订单详情
#### 接口信息
- **接口路径**`GET /api/v1/orders/{id}`
- **接口描述**:获取指定订单的详细信息
- **是否需要认证**:是
### 8.3 更新订单信息
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}`
- **接口描述**:更新订单信息
- **是否需要认证**:是
### 8.4 删除订单
#### 接口信息
- **接口路径**`DELETE /api/v1/orders/{id}`
- **接口描述**:删除订单
- **是否需要认证**:是
### 8.5 更新订单状态
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}/status`
- **接口描述**:更新订单状态
- **是否需要认证**:是
### 8.6 订单发货
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}/ship`
- **接口描述**:订单发货
- **是否需要认证**:是
### 8.7 订单完成
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}/complete`
- **接口描述**:订单完成
- **是否需要认证**:是
### 8.8 订单取消
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}/cancel`
- **接口描述**:取消订单
- **是否需要认证**:是
### 8.9 订单退款
#### 接口信息
- **接口路径**`PUT /api/v1/orders/{id}/refund`
- **接口描述**:订单退款
- **是否需要认证**:是
### 8.10 获取订单统计
#### 接口信息
- **接口路径**`GET /api/v1/orders/stats`
- **接口描述**:获取订单统计数据
- **是否需要认证**:是
### 8.11 导出订单数据
#### 接口信息
- **接口路径**`GET /api/v1/orders/export`
- **接口描述**:导出订单数据
- **是否需要认证**:是
### 8.12 获取订单日统计
#### 接口信息
- **接口路径**`GET /api/v1/orders/daily-stats`
- **接口描述**:获取订单日统计数据
- **是否需要认证**:是
### 8.13 获取订单月统计
#### 接口信息
- **接口路径**`GET /api/v1/orders/monthly-stats`
- **接口描述**:获取订单月统计数据
- **是否需要认证**:是
### 8.14 批量处理订单
#### 接口信息
- **接口路径**`PUT /api/v1/orders/batch`
- **接口描述**:批量处理订单
- **是否需要认证**:是
### 8.15 获取支付统计
#### 接口信息
- **接口路径**`GET /api/v1/orders/payment-stats`
- **接口描述**:获取支付统计数据
- **是否需要认证**:是
## 9. 花卉管理接口
### 9.1 获取花卉列表
#### 接口信息
- **接口路径**`GET /api/v1/flowers`
- **接口描述**:获取花卉商品列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(花卉名称、品种) |
| category | string | 否 | 花卉类别 |
| status | string | 否 | 状态active, inactive |
| price_min | number | 否 | 最低价格 |
| price_max | number | 否 | 最高价格 |
| merchant_id | integer | 否 | 商户ID |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"name": "玫瑰花束",
"category": "rose",
"variety": "红玫瑰",
"price": 99.00,
"stock": 50,
"images": ["https://example.com/flower/1/1.jpg"],
"description": "新鲜红玫瑰,适合表达爱意",
"care_instructions": "保持水分,避免阳光直射",
"merchant": {
"id": 1,
"name": "花语花店"
},
"status": "active",
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 60,
"pages": 3
}
}
}
```
### 9.2 获取花卉详情
#### 接口信息
- **接口路径**`GET /api/v1/flowers/{id}`
- **接口描述**:获取指定花卉的详细信息
- **是否需要认证**:是
### 9.3 创建花卉商品
#### 接口信息
- **接口路径**`POST /api/v1/flowers`
- **接口描述**:创建新的花卉商品
- **是否需要认证**:是
### 9.4 更新花卉信息
#### 接口信息
- **接口路径**`PUT /api/v1/flowers/{id}`
- **接口描述**:更新花卉信息
- **是否需要认证**:是
### 9.5 删除花卉商品
#### 接口信息
- **接口路径**`DELETE /api/v1/flowers/{id}`
- **接口描述**:删除花卉商品
- **是否需要认证**:是
### 9.6 获取花卉销售记录
#### 接口信息
- **接口路径**`GET /api/v1/flowers/{id}/sales`
- **接口描述**:获取花卉销售记录
- **是否需要认证**:是
### 9.7 获取花卉统计
#### 接口信息
- **接口路径**`GET /api/v1/flowers/stats`
- **接口描述**:获取花卉统计数据
- **是否需要认证**:是
### 9.8 获取花卉商户列表
#### 接口信息
- **接口路径**`GET /api/v1/flowers/merchants`
- **接口描述**:获取花卉商户列表
- **是否需要认证**:是
### 9.9 批量更新花卉状态
#### 接口信息
- **接口路径**`PUT /api/v1/flowers/batch/status`
- **接口描述**:批量更新花卉状态
- **是否需要认证**:是
## 10. 促销活动接口
### 10.1 获取促销活动列表
#### 接口信息
- **接口路径**`GET /api/v1/promotions`
- **接口描述**:获取促销活动列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(活动名称) |
| type | string | 否 | 活动类型discount, coupon, gift |
| status | string | 否 | 状态active, inactive, expired |
| start_date | string | 否 | 开始日期 |
| end_date | string | 否 | 结束日期 |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"title": "春节特惠活动",
"description": "全场商品8折优惠",
"type": "discount",
"discount_rate": 0.8,
"min_amount": 100.00,
"max_discount": 200.00,
"start_date": "2024-02-01",
"end_date": "2024-02-15",
"status": "active",
"usage_count": 150,
"usage_limit": 1000,
"created_at": "2024-01-15T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 30,
"pages": 2
}
}
}
```
### 10.2 获取促销活动详情
#### 接口信息
- **接口路径**`GET /api/v1/promotions/{id}`
- **接口描述**:获取指定促销活动的详细信息
- **是否需要认证**:是
### 10.3 创建促销活动
#### 接口信息
- **接口路径**`POST /api/v1/promotions`
- **接口描述**:创建新的促销活动
- **是否需要认证**:是
### 10.4 更新促销活动
#### 接口信息
- **接口路径**`PUT /api/v1/promotions/{id}`
- **接口描述**:更新促销活动信息
- **是否需要认证**:是
### 10.5 删除促销活动
#### 接口信息
- **接口路径**`DELETE /api/v1/promotions/{id}`
- **接口描述**:删除促销活动
- **是否需要认证**:是
### 10.6 获取促销活动统计
#### 接口信息
- **接口路径**`GET /api/v1/promotions/stats`
- **接口描述**:获取促销活动统计数据
- **是否需要认证**:是
### 10.7 获取活动参与记录
#### 接口信息
- **接口路径**`GET /api/v1/promotions/{id}/participants`
- **接口描述**:获取活动参与记录
- **是否需要认证**:是
### 10.8 获取奖励记录
#### 接口信息
- **接口路径**`GET /api/v1/rewards`
- **接口描述**:获取奖励记录列表
- **是否需要认证**:是
### 10.9 创建奖励记录
#### 接口信息
- **接口路径**`POST /api/v1/rewards`
- **接口描述**:创建奖励记录
- **是否需要认证**:是
### 10.10 获取促销活动模板
#### 接口信息
- **接口路径**`GET /api/v1/promotions/templates`
- **接口描述**:获取促销活动模板
- **是否需要认证**:是
## 11. 系统管理接口
### 11.1 获取系统服务列表
#### 接口信息
- **接口路径**`GET /api/v1/system/services`
- **接口描述**:获取系统服务状态列表
- **是否需要认证**:是
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": [
{
"id": 1,
"name": "数据库服务",
"type": "database",
"status": "running",
"health": "healthy",
"cpu_usage": 15.5,
"memory_usage": 45.2,
"last_check": "2024-01-15T10:30:00Z"
},
{
"id": 2,
"name": "Redis缓存",
"type": "cache",
"status": "running",
"health": "healthy",
"cpu_usage": 5.2,
"memory_usage": 25.8,
"last_check": "2024-01-15T10:30:00Z"
}
]
}
```
### 11.2 更新服务状态
#### 接口信息
- **接口路径**`PUT /api/v1/system/services/{id}/status`
- **接口描述**:更新系统服务状态
- **是否需要认证**:是
### 11.3 获取系统统计
#### 接口信息
- **接口路径**`GET /api/v1/system/stats`
- **接口描述**:获取系统统计信息
- **是否需要认证**:是
### 11.4 获取系统日志
#### 接口信息
- **接口路径**`GET /api/v1/system/logs`
- **接口描述**:获取系统日志
- **是否需要认证**:是
### 11.5 清理系统日志
#### 接口信息
- **接口路径**`DELETE /api/v1/system/logs`
- **接口描述**:清理系统日志
- **是否需要认证**:是
### 11.6 获取系统配置
#### 接口信息
- **接口路径**`GET /api/v1/system/config`
- **接口描述**:获取系统配置
- **是否需要认证**:是
### 11.7 更新系统配置
#### 接口信息
- **接口路径**`PUT /api/v1/system/config`
- **接口描述**:更新系统配置
- **是否需要认证**:是
### 11.8 系统备份
#### 接口信息
- **接口路径**`POST /api/v1/system/backup`
- **接口描述**:创建系统备份
- **是否需要认证**:是
### 11.9 系统恢复
#### 接口信息
- **接口路径**`POST /api/v1/system/restore`
- **接口描述**:系统恢复
- **是否需要认证**:是
### 11.10 获取监控数据
#### 接口信息
- **接口路径**`GET /api/v1/system/monitoring`
- **接口描述**:获取系统监控数据
- **是否需要认证**:是
### 11.11 获取性能指标
#### 接口信息
- **接口路径**`GET /api/v1/system/metrics`
- **接口描述**:获取系统性能指标
- **是否需要认证**:是
### 11.12 系统健康检查
#### 接口信息
- **接口路径**`GET /api/v1/system/health`
- **接口描述**:系统健康检查
- **是否需要认证**:否
## 12. 仪表板接口
### 12.1 获取仪表板数据
#### 接口信息
- **接口路径**`GET /api/v1/dashboard`
- **接口描述**:获取仪表板统计数据
- **是否需要认证**:是
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"overview": {
"total_users": 1250,
"total_orders": 3580,
"total_revenue": 125000.00,
"active_travels": 45
},
"recent_stats": {
"new_users_today": 12,
"orders_today": 28,
"revenue_today": 3500.00
},
"growth_rate": {
"users": 15.5,
"orders": 22.3,
"revenue": 18.7
}
}
}
```
### 12.2 获取用户增长数据
#### 接口信息
- **接口路径**`GET /api/v1/dashboard/user-growth`
- **接口描述**:获取用户增长趋势数据
- **是否需要认证**:是
### 12.3 获取订单趋势数据
#### 接口信息
- **接口路径**`GET /api/v1/dashboard/order-trends`
- **接口描述**:获取订单趋势数据
- **是否需要认证**:是
### 12.4 获取收入统计
#### 接口信息
- **接口路径**`GET /api/v1/dashboard/revenue-stats`
- **接口描述**:获取收入统计数据
- **是否需要认证**:是
### 12.5 获取热门商品
#### 接口信息
- **接口路径**`GET /api/v1/dashboard/popular-items`
- **接口描述**:获取热门商品数据
- **是否需要认证**:是
### 12.6 获取实时数据
#### 接口信息
- **接口路径**`GET /api/v1/dashboard/realtime`
- **接口描述**:获取实时统计数据
- **是否需要认证**:是
## 13. 权限管理接口
### 13.1 获取权限列表
#### 接口信息
- **接口路径**`GET /api/v1/permissions`
- **接口描述**:获取权限列表,支持分页和筛选
- **是否需要认证**:是
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| page | integer | 否 | 页码默认1 |
| size | integer | 否 | 每页数量默认20 |
| keyword | string | 否 | 搜索关键词(权限名称、描述) |
| module | string | 否 | 权限模块 |
| type | string | 否 | 权限类型read, write, delete, manage |
#### 响应示例
```json
{
"code": 200,
"message": "获取成功",
"data": {
"items": [
{
"id": 1,
"name": "user:read",
"display_name": "查看用户",
"description": "查看用户信息的权限",
"module": "user",
"type": "read",
"created_at": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 20,
"total": 50,
"pages": 3
}
}
}
```
### 13.2 获取权限详情
#### 接口信息
- **接口路径**`GET /api/v1/permissions/{id}`
- **接口描述**:获取指定权限的详细信息
- **是否需要认证**:是
### 13.3 创建权限
#### 接口信息
- **接口路径**`POST /api/v1/permissions`
- **接口描述**:创建新权限
- **是否需要认证**:是
### 13.4 更新权限
#### 接口信息
- **接口路径**`PUT /api/v1/permissions/{id}`
- **接口描述**:更新权限信息
- **是否需要认证**:是
### 13.5 删除权限
#### 接口信息
- **接口路径**`DELETE /api/v1/permissions/{id}`
- **接口描述**:删除权限
- **是否需要认证**:是
### 13.6 获取角色列表
#### 接口信息
- **接口路径**`GET /api/v1/roles`
- **接口描述**:获取角色列表
- **是否需要认证**:是
### 13.7 创建角色
#### 接口信息
- **接口路径**`POST /api/v1/roles`
- **接口描述**:创建新角色
- **是否需要认证**:是
### 13.8 分配权限给角色
#### 接口信息
- **接口路径**`PUT /api/v1/roles/{id}/permissions`
- **接口描述**:为角色分配权限
- **是否需要认证**:是
## 14. 错误码说明
### 14.1 通用错误码
| 错误码 | HTTP状态码 | 说明 |
|--------|------------|------|
| 10000 | 200 | 操作成功 |
| 10001 | 400 | 请求参数错误 |
| 10002 | 401 | 未授权访问 |
| 10003 | 403 | 权限不足 |
| 10004 | 404 | 资源不存在 |
| 10005 | 409 | 资源冲突 |
| 10006 | 422 | 业务逻辑错误 |
| 10007 | 500 | 内部服务器错误 |
### 14.2 业务错误码
| 错误码 | 说明 |
|--------|------|
| 20001 | 用户名或密码错误 |
| 20002 | 用户不存在 |
| 20003 | 用户已被禁用 |
| 20004 | 用户名已存在 |
| 20005 | 邮箱已存在 |
| 20006 | 手机号已存在 |
| 30001 | 商户不存在 |
| 30002 | 商户已被禁用 |
| 40001 | 旅行活动不存在 |
| 40002 | 旅行活动已满员 |
| 40003 | 旅行活动已结束 |
| 50001 | 动物不存在 |
| 50002 | 动物已被认领 |
| 50003 | 认领申请不存在 |
| 60001 | 订单不存在 |
| 60002 | 订单状态错误 |
| 60003 | 订单已支付 |
| 60004 | 订单已取消 |
## 15. 接口测试
### 15.1 测试环境
- **测试地址**`https://api-test.jiebanke.com`
- **测试账号**admin / admin123
- **API文档**`https://api-test.jiebanke.com/docs`
### 15.2 测试工具推荐
- **Postman**用于API接口测试
- **Swagger UI**在线API文档和测试
- **curl**:命令行测试工具
### 15.3 测试示例
#### 登录测试
```bash
curl -X POST "https://api-test.jiebanke.com/api/v1/admin/login" \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "admin123"
}'
```
#### 获取用户列表测试
```bash
curl -X GET "https://api-test.jiebanke.com/api/v1/users?page=1&size=10" \
-H "Authorization: Bearer YOUR_TOKEN"
```
## 16. 版本更新记录
### v1.0.0 (2024-01-15)
- 初始版本发布
- 完成所有核心模块API设计
- 支持用户管理、旅行管理、动物认领等功能
### v1.1.0 (2024-01-20)
- 新增花卉管理模块
- 新增促销活动模块
- 优化权限管理功能
### v1.2.0 (2024-01-25)
- 新增仪表板统计接口
- 新增系统监控功能
- 优化错误处理机制
## 17. 总结
本文档详细描述了结伴客管理后台系统的所有API接口设计涵盖了用户管理、商户管理、旅行管理、动物认领、订单管理、花卉管理、促销活动、系统管理、仪表板统计和权限管理等11个核心模块共计100+个API接口。
所有接口均遵循RESTful设计原则采用统一的请求响应格式支持JWT认证和权限控制。文档提供了详细的接口说明、参数定义、响应示例和错误码说明为前端开发和接口对接提供了完整的技术规范。
随着业务的发展本文档将持续更新和完善确保API设计的准确性和实用性。