# 管理后台接口设计文档 ## 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 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设计的准确性和实用性。