# 管理员后台系统API文档 ## 概述 管理员后台系统提供了完整的系统管理功能,包括用户管理、动物管理、数据统计、系统监控等功能,支持管理员对整个平台进行全面的管理和监控。 ## 基础信息 - **基础URL**: `/api/v1/admin` - **认证方式**: Bearer Token - **数据格式**: JSON - **字符编码**: UTF-8 - **权限要求**: 管理员权限(admin 或 super_admin) ## 权限说明 ### 角色类型 - **super_admin**: 超级管理员,拥有所有权限 - **admin**: 普通管理员,拥有大部分管理权限 - **manager**: 部门经理,拥有部分管理权限 ### 权限控制 所有管理员接口都需要通过Bearer Token进行身份验证,并根据用户角色进行权限控制。 ## 用户管理模块 ### 1. 获取用户列表 **接口地址**: `GET /admin/users` **请求参数**: ```json { "page": 1, "limit": 10, "keyword": "搜索关键词", "user_type": "farmer", "status": "active", "start_date": "2024-01-01", "end_date": "2024-12-31", "sort_by": "created_at", "sort_order": "desc" } ``` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "users": [ { "id": 1, "username": "张三", "email": "zhangsan@example.com", "phone": "13800138001", "user_type": "farmer", "status": "active", "level": "bronze", "points": 1200, "travel_count": 5, "claim_count": 2, "last_login_at": "2024-12-01T10:30:00.000Z", "created_at": "2024-01-15T08:00:00.000Z" } ], "pagination": { "current_page": 1, "per_page": 10, "total": 1000, "total_pages": 100 } } } ``` ### 2. 获取用户详情 **接口地址**: `GET /admin/users/{user_id}` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "user": { "id": 1, "username": "张三", "email": "zhangsan@example.com", "phone": "13800138001", "user_type": "farmer", "status": "active", "level": "bronze", "points": 1200, "profile": { "real_name": "张三", "avatar": "/uploads/avatars/user1.jpg", "bio": "热爱农业的城市青年" } }, "statistics": { "travel_count": 5, "claim_count": 2, "order_count": 8, "total_spent": 2500.00 }, "recentActivities": [ { "type": "travel_created", "description": "创建了新的旅行计划", "created_at": "2024-12-01T10:00:00.000Z" } ] } } ``` ### 3. 更新用户状态 **接口地址**: `PUT /admin/users/{user_id}/status` **请求参数**: ```json { "status": "suspended", "reason": "违反平台规定" } ``` ### 4. 批量更新用户状态 **接口地址**: `PUT /admin/users/batch/status` **请求参数**: ```json { "user_ids": [1, 2, 3], "status": "suspended", "reason": "批量处理违规用户" } ``` ### 5. 获取用户统计信息 **接口地址**: `GET /admin/users/statistics` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "totalStats": { "total_users": 10000, "active_users": 8500, "new_users_today": 50, "new_users_week": 300 }, "typeStats": [ { "user_type": "farmer", "count": 6000, "percentage": 60.0 }, { "user_type": "merchant", "count": 4000, "percentage": 40.0 } ], "levelStats": [ { "level": "bronze", "count": 5000, "avg_points": 800 } ] } } ``` ### 6. 导出用户数据 **接口地址**: `GET /admin/users/export` **请求参数**: ```json { "format": "csv", "user_type": "farmer", "status": "active", "start_date": "2024-01-01", "end_date": "2024-12-31" } ``` ## 动物管理模块 ### 1. 获取动物列表 **接口地址**: `GET /admin/animals` **请求参数**: ```json { "page": 1, "limit": 10, "keyword": "小白", "species": "dog", "status": "available", "merchant_id": 1, "start_date": "2024-01-01", "end_date": "2024-12-31", "sort_by": "created_at", "sort_order": "desc" } ``` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "animals": [ { "id": 1, "name": "小白", "species": "dog", "breed": "金毛", "age": 12, "gender": "male", "price": 1200.00, "status": "available", "merchant_id": 1, "merchant_name": "阳光农场", "claim_count": 3, "created_at": "2024-01-15T08:00:00.000Z" } ], "pagination": { "current_page": 1, "per_page": 10, "total": 500, "total_pages": 50 } } } ``` ### 2. 获取动物详情 **接口地址**: `GET /admin/animals/{animal_id}` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "animal": { "id": 1, "name": "小白", "species": "dog", "breed": "金毛", "age": 12, "gender": "male", "price": 1200.00, "status": "available", "description": "温顺可爱的金毛犬", "images": ["/uploads/animals/dog1.jpg"], "merchant_name": "阳光农场" }, "claimStats": { "total_claims": 5, "pending_claims": 1, "approved_claims": 3, "rejected_claims": 1 }, "recentClaims": [ { "id": 1, "user_name": "张三", "status": "approved", "created_at": "2024-12-01T10:00:00.000Z" } ] } } ``` ### 3. 更新动物状态 **接口地址**: `PUT /admin/animals/{animal_id}/status` **请求参数**: ```json { "status": "unavailable", "reason": "动物健康检查" } ``` ### 4. 获取动物统计信息 **接口地址**: `GET /admin/animals/statistics` **响应示例**: ```json { "success": true, "message": "获取成功", "data": { "totalStats": { "total_animals": 500, "available_animals": 300, "claimed_animals": 150, "total_claims": 800, "avg_price": 1500.00 }, "speciesStats": [ { "species": "dog", "count": 200, "avg_price": 1200.00 } ], "monthlyTrend": [ { "month": "2024-12", "new_animals": 20, "new_claims": 35 } ] } } ``` ## 数据统计模块 ### 1. 获取系统概览统计 **接口地址**: `GET /admin/statistics/overview` **响应示例**: ```json { "success": true, "data": { "users": { "total_users": 10000, "active_users": 8500, "new_users_today": 50, "new_users_week": 300 }, "travels": { "total_travels": 2000, "published_travels": 1500, "new_travels_today": 10 }, "animals": { "total_animals": 500, "available_animals": 300, "claimed_animals": 150 }, "orders": { "total_orders": 5000, "completed_orders": 4500, "total_revenue": 500000.00 } } } ``` ### 2. 获取用户增长趋势 **接口地址**: `GET /admin/statistics/user-growth` **请求参数**: ```json { "period": "30d" } ``` **响应示例**: ```json { "success": true, "data": { "period": "30d", "trendData": [ { "date": "2024-12-01", "new_users": 25, "cumulative_users": 9975 } ] } } ``` ### 3. 获取业务数据统计 **接口地址**: `GET /admin/statistics/business` **请求参数**: ```json { "period": "30d" } ``` **响应示例**: ```json { "success": true, "data": { "period": "30d", "travelStats": [ { "date": "2024-12-01", "new_travels": 5, "published_travels": 4, "matched_travels": 3 } ], "claimStats": [ { "date": "2024-12-01", "new_claims": 8, "approved_claims": 6, "rejected_claims": 1 } ], "orderStats": [ { "date": "2024-12-01", "new_orders": 15, "completed_orders": 12, "daily_revenue": 2500.00 } ] } } ``` ### 4. 获取地域分布统计 **接口地址**: `GET /admin/statistics/geographic` **响应示例**: ```json { "success": true, "data": { "userDistribution": [ { "province": "北京市", "city": "北京市", "user_count": 1500 } ], "provinceStats": [ { "province": "北京市", "user_count": 1500, "farmer_count": 900, "merchant_count": 600 } ] } } ``` ### 5. 获取用户行为分析 **接口地址**: `GET /admin/statistics/user-behavior` **响应示例**: ```json { "success": true, "data": { "activityStats": [ { "activity_level": "high", "user_count": 2000 } ], "levelDistribution": [ { "level": "bronze", "user_count": 5000, "avg_points": 800, "avg_travel_count": 2.5, "avg_claim_count": 1.2 } ] } } ``` ### 6. 获取收入统计 **接口地址**: `GET /admin/statistics/revenue` **请求参数**: ```json { "period": "30d" } ``` **响应示例**: ```json { "success": true, "data": { "period": "30d", "revenueTrend": [ { "date": "2024-12-01", "daily_revenue": 2500.00, "completed_orders": 12, "total_orders": 15 } ], "revenueSource": [ { "order_type": "travel", "order_count": 800, "total_revenue": 120000.00, "avg_order_value": 150.00 } ], "paymentMethodStats": [ { "payment_method": "wechat", "order_count": 3000, "total_amount": 300000.00 } ] } } ``` ### 7. 导出统计报告 **接口地址**: `GET /admin/statistics/export` **请求参数**: ```json { "reportType": "overview", "period": "30d", "format": "csv" } ``` ## 错误码说明 | 错误码 | 说明 | |--------|------| | 200 | 请求成功 | | 400 | 参数错误 | | 401 | 未授权,需要登录 | | 403 | 权限不足 | | 404 | 资源不存在 | | 422 | 参数验证失败 | | 500 | 服务器内部错误 | ## 状态说明 ### 用户状态 - **active**: 正常状态 - **suspended**: 已暂停 - **banned**: 已封禁 - **inactive**: 未激活 ### 动物状态 - **available**: 可认领 - **claimed**: 已认领 - **unavailable**: 不可认领 ### 认领状态 - **pending**: 待审核 - **approved**: 已通过 - **rejected**: 已拒绝 - **cancelled**: 已取消 ## 业务规则 ### 用户管理规则 1. 只有超级管理员可以创建和删除管理员账户 2. 普通管理员可以管理普通用户,但不能管理其他管理员 3. 用户状态变更需要记录操作原因和操作人 4. 批量操作有数量限制,单次最多处理100个用户 ### 动物管理规则 1. 动物状态变更需要记录操作原因 2. 已有认领申请的动物不能直接删除 3. 动物价格修改需要管理员审核 4. 动物图片上传有格式和大小限制 ### 数据统计规则 1. 统计数据每小时更新一次 2. 导出功能有频率限制,每个管理员每天最多导出10次 3. 敏感数据需要特殊权限才能查看 4. 历史数据保留期限为2年 ## 注意事项 1. **权限控制**: 所有接口都需要管理员权限,请确保在请求头中包含有效的Bearer Token 2. **参数验证**: 请求参数会进行严格验证,确保传入正确的数据类型和格式 3. **频率限制**: 部分接口有频率限制,请合理控制请求频率 4. **数据安全**: 敏感数据会进行脱敏处理,完整数据需要特殊权限 5. **操作日志**: 所有管理操作都会记录日志,便于审计和追踪 ## 集成示例 ### JavaScript示例 ```javascript // 获取用户列表 async function getUserList(page = 1, limit = 10) { try { const response = await fetch('/api/v1/admin/users?' + new URLSearchParams({ page, limit, sort_by: 'created_at', sort_order: 'desc' }), { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); const result = await response.json(); if (result.success) { console.log('用户列表:', result.data.users); return result.data; } else { throw new Error(result.message); } } catch (error) { console.error('获取用户列表失败:', error); throw error; } } // 更新用户状态 async function updateUserStatus(userId, status, reason) { try { const response = await fetch(`/api/v1/admin/users/${userId}/status`, { method: 'PUT', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ status, reason }) }); const result = await response.json(); if (result.success) { console.log('用户状态更新成功'); return result; } else { throw new Error(result.message); } } catch (error) { console.error('更新用户状态失败:', error); throw error; } } // 获取系统统计数据 async function getSystemOverview() { try { const response = await fetch('/api/v1/admin/statistics/overview', { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); const result = await response.json(); if (result.success) { console.log('系统概览:', result.data); return result.data; } else { throw new Error(result.message); } } catch (error) { console.error('获取系统统计失败:', error); throw error; } } ``` ### Python示例 ```python import requests import json class AdminAPI: def __init__(self, base_url, token): self.base_url = base_url self.headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } def get_user_list(self, page=1, limit=10, **kwargs): """获取用户列表""" params = {'page': page, 'limit': limit, **kwargs} response = requests.get( f'{self.base_url}/admin/users', headers=self.headers, params=params ) return response.json() def update_user_status(self, user_id, status, reason=None): """更新用户状态""" data = {'status': status} if reason: data['reason'] = reason response = requests.put( f'{self.base_url}/admin/users/{user_id}/status', headers=self.headers, json=data ) return response.json() def get_system_overview(self): """获取系统概览""" response = requests.get( f'{self.base_url}/admin/statistics/overview', headers=self.headers ) return response.json() # 使用示例 api = AdminAPI('https://api.example.com/api/v1', 'your_token_here') # 获取用户列表 users = api.get_user_list(page=1, limit=20, user_type='farmer') print(f"获取到 {len(users['data']['users'])} 个用户") # 更新用户状态 result = api.update_user_status(1, 'suspended', '违反平台规定') if result['success']: print("用户状态更新成功") # 获取系统统计 overview = api.get_system_overview() print(f"系统用户总数: {overview['data']['users']['total_users']}") ``` ## 更新日志 ### v1.0.0 (2024-12-01) - 初始版本发布 - 实现用户管理基础功能 - 实现动物管理基础功能 - 实现数据统计基础功能 ### v1.1.0 (计划中) - 增加订单管理功能 - 增加商家管理功能 - 增加系统配置管理 - 优化统计报表功能