# 结伴客系统 API 接口文档 ## 基础信息 **Base URL**: `https://www.jiebanke.com/api/v1` **认证方式**: Bearer Token (JWT) **响应格式**: JSON **API版本**: v1 **开发状态**: 开发中 ## 响应格式 ### 成功响应 ```json { "success": true, "code": 200, "message": "操作成功", "data": { // 具体数据 }, "timestamp": "2025-01-01T00:00:00.000Z" } ``` ### 错误响应 ```json { "success": false, "code": 400, "message": "错误信息", "error": "详细错误描述", "timestamp": "2025-01-01T00:00:00.000Z" } ``` ## 通用状态码 | 状态码 | 说明 | |--------|------| | 200 | 请求成功 | | 201 | 创建成功 | | 400 | 请求参数错误 | | 401 | 未授权访问 | | 403 | 权限不足 | | 404 | 资源不存在 | | 429 | 请求过于频繁 | | 500 | 服务器内部错误 | ## 认证接口 ### 1. 用户注册 **Endpoint**: `POST /auth/register` **描述**: 创建新用户账号 **请求体**: ```json { "username": "string, required, 用户名(4-20字符)", "password": "string, required, 密码(6-20字符)", "nickname": "string, optional, 昵称", "email": "string, optional, 邮箱", "phone": "string, optional, 手机号", "gender": "string, optional, 性别(male/female/unknown)", "birthday": "string, optional, 生日(YYYY-MM-DD)" } ``` **响应**: ```json { "success": true, "code": 201, "message": "注册成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@jiebanke.com", "phone": "13800138000", "avatar": "", "gender": "unknown", "points": 0, "level": 1, "status": "active", "created_at": "2025-01-01T00:00:00.000Z" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 2. 用户登录 **Endpoint**: `POST /auth/login` **描述**: 用户登录获取访问令牌 **请求体**: ```json { "username": "string, required, 用户名/邮箱/手机号", "password": "string, required, 密码" } ``` **响应**: ```json { "success": true, "code": 200, "message": "登录成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@jiebanke.com", "phone": "13800138000", "avatar": "", "gender": "unknown", "points": 100, "level": 2, "status": "active", "last_login_at": "2025-01-01T00:00:00.000Z" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 3. 获取当前用户信息 **Endpoint**: `GET /auth/me` **认证**: 需要Bearer Token **描述**: 获取当前登录用户信息 **响应**: ```json { "success": true, "code": 200, "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@jiebanke.com", "phone": "13800138000", "avatar": "https://www.jiebanke.com/avatar.jpg", "gender": "male", "birthday": "1990-01-01", "points": 1000, "level": 3, "balance": 500.00, "travel_count": 5, "animal_adopt_count": 2, "flower_order_count": 3, "status": "active", "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 4. 更新用户信息 **Endpoint**: `PUT /auth/profile` **认证**: 需要Bearer Token **描述**: 更新用户个人信息 **请求体**: ```json { "nickname": "string, optional, 昵称", "avatar": "string, optional, 头像URL", "gender": "string, optional, 性别(male/female/other)", "birthday": "string, optional, 生日(YYYY-MM-DD)" } ``` **响应**: ```json { "success": true, "code": 200, "message": "用户信息更新成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "新昵称", "avatar": "https://www.jiebanke.com/new-avatar.jpg", "gender": "male", "birthday": "1990-01-01", "updated_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 5. 微信登录 **Endpoint**: `POST /auth/wechat-login` **描述**: 微信授权登录 **请求体**: ```json { "code": "string, required, 微信授权码", "userInfo": { "nickName": "string, optional, 微信昵称", "avatarUrl": "string, optional, 微信头像", "gender": "number, optional, 性别(0:未知,1:男,2:女)" } } ``` **响应**: ```json { "success": true, "code": 200, "message": "微信登录成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "avatar": "https://www.jiebanke.com/avatar.jpg", "gender": "male", "points": 100, "level": 2, "status": "active", "last_login_at": "2025-01-01T00:00:00.000Z" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 4. 获取当前用户信息 **Endpoint**: `GET /auth/me` **认证**: 需要Bearer Token **描述**: 获取当前登录用户信息 **响应**: ```json { "success": true, "code": 200, "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "avatar": "https://www.jiebanke.com/avatar.jpg", "gender": "male", "birthday": "1990-01-01", "points": 1000, "level": 3, "balance": 500.00, "travel_count": 5, "animal_adopt_count": 2, "flower_order_count": 3, "status": "active", "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 6. 更新用户信息 **Endpoint**: `PUT /auth/profile` **认证**: 需要Bearer Token **描述**: 更新用户个人信息 **请求体**: ```json { "nickname": "string, optional, 昵称", "avatar": "string, optional, 头像URL", "gender": "string, optional, 性别(male/female/other)", "birthday": "string, optional, 生日(YYYY-MM-DD)" } ``` **响应**: ```json { "success": true, "code": 200, "message": "用户信息更新成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "新昵称", "avatar": "https://example.com/new-avatar.jpg", "gender": "male", "birthday": "1990-01-01", "updated_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 用户服务接口 ### 1. 获取用户列表 **Endpoint**: `GET /users` **认证**: 需要Bearer Token **描述**: 获取用户列表(管理员权限) **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `username` (可选): 用户名模糊搜索 - `status` (可选): 状态过滤 **响应**: ```json { "success": true, "code": 200, "data": { "users": [ { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "avatar": "https://www.jiebanke.com/avatar.jpg", "gender": "male", "points": 100, "level": 2, "status": "active", "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 100, "page": 1, "limit": 20, "pages": 5 } } } ``` ### 2. 获取用户详情 **Endpoint**: `GET /users/{id}` **认证**: 需要Bearer Token **描述**: 获取指定用户的详细信息 **响应**: ```json { "success": true, "code": 200, "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "avatar": "https://www.jiebanke.com/avatar.jpg", "gender": "male", "birthday": "1990-01-01", "points": 1000, "level": 3, "balance": 500.00, "travel_count": 5, "animal_adopt_count": 2, "flower_order_count": 3, "status": "active", "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 8. 管理员接口 ### 8.1 管理员登录 - **Endpoint**: POST /api/v1/admin/login - **认证要求**: 无 - **描述**: 管理员登录系统 - **请求体**: ```json { "username": "admin", "password": "password123" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "登录成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "admin": { "id": 1, "username": "admin", "email": "admin@jiebanke.com", "nickname": "超级管理员", "avatar": "https://example.com/avatar.jpg", "role": "super_admin", "status": 1, "last_login": "2024-01-15T10:30:00.000Z" } } } ``` ### 8.2 获取管理员信息 - **Endpoint**: GET /api/v1/admin/profile - **认证要求**: Bearer Token - **描述**: 获取当前登录管理员信息 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "id": 1, "username": "admin", "email": "admin@example.com", "nickname": "超级管理员", "avatar": "https://example.com/avatar.jpg", "role": "super_admin", "status": 1, "last_login": "2024-01-15T10:30:00.000Z", "created_at": "2024-01-01T00:00:00.000Z", "updated_at": "2024-01-15T10:30:00.000Z" } } ``` ### 8.3 更新管理员信息 - **Endpoint**: PUT /api/v1/admin/profile - **认证要求**: Bearer Token - **描述**: 更新当前登录管理员信息 - **请求体**: ```json { "nickname": "新昵称", "email": "newemail@example.com", "avatar": "https://example.com/new-avatar.jpg" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "更新成功", "data": { "id": 1, "username": "admin", "email": "newemail@example.com", "nickname": "新昵称", "avatar": "https://example.com/new-avatar.jpg", "role": "super_admin", "status": 1 } } ``` ### 8.4 修改密码 - **Endpoint**: PUT /api/v1/admin/password - **认证要求**: Bearer Token - **描述**: 修改当前登录管理员密码 - **请求体**: ```json { "old_password": "oldpassword123", "new_password": "newpassword456" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "密码修改成功" } ``` ### 7. 获取管理员信息 **Endpoint**: `GET /auth/admin/me` **认证**: 需要Bearer Token **描述**: 获取当前登录管理员信息及权限 **响应**: ```json { "success": true, "code": 200, "data": { "user": { "id": 1, "username": "admin", "email": "admin@jiebanke.com", "real_name": "管理员", "avatar": "", "status": "active", "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" }, "roles": [ { "id": 2, "name": "admin", "description": "普通管理员" } ], "permissions": [ "user:manage", "content:review", "content:publish", "data:view", "data:export" ] } } ``` ### 9. 管理员后台接口 #### 9.1 用户管理接口 ##### 9.1.1 获取用户列表 - **Endpoint**: GET /api/v1/admin/users - **认证要求**: Bearer Token,需要user:manage权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `username` (可选): 用户名模糊搜索 - `user_type` (可选): 用户类型过滤(normal/merchant/farmer/organizer) - `status` (可选): 状态过滤(active/inactive/banned) - `start_date` (可选): 注册开始时间 - `end_date` (可选): 注册结束时间 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "users": [ { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "user_type": "normal", "status": "active", "points": 100, "level": 2, "travel_count": 5, "animal_adopt_count": 2, "flower_order_count": 3, "created_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 100, "page": 1, "limit": 20, "pages": 5 }, "statistics": { "total_users": 100, "active_users": 80, "new_users_today": 5, "merchant_users": 15, "farmer_users": 10 } } } ``` ##### 9.1.2 获取用户详情 - **Endpoint**: GET /api/v1/admin/users/{id} - **认证要求**: Bearer Token,需要user:manage权限 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "avatar": "https://example.com/avatar.jpg", "gender": "male", "birthday": "1990-01-01", "user_type": "normal", "status": "active", "points": 1000, "level": 3, "balance": 500.00, "travel_count": 5, "animal_adopt_count": 2, "flower_order_count": 3, "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" }, "activity_stats": { "last_7_days_login_count": 5, "total_travel_plans": 3, "total_animal_claims": 2, "total_flower_orders": 1 } } } ``` ##### 9.1.3 更新用户状态 - **Endpoint**: PUT /api/v1/admin/users/{id}/status - **认证要求**: Bearer Token,需要user:manage权限 - **请求体**: ```json { "status": "banned", "reason": "违反平台规则" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "用户状态更新成功" } ``` ##### 9.1.4 导出用户数据 - **Endpoint**: GET /api/v1/admin/users/export - **认证要求**: Bearer Token,需要user:manage权限 - **查询参数**: - `format` (可选): 导出格式(csv/excel),默认csv - `start_date` (可选): 注册开始时间 - `end_date` (可选): 注册结束时间 - `user_type` (可选): 用户类型过滤 - **响应**: 返回文件下载流 #### 9.2 商家审核接口 ##### 9.2.1 获取待审核商家列表 - **Endpoint**: GET /api/v1/admin/merchants/pending - **认证要求**: Bearer Token,需要merchant:review权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `merchant_type` (可选): 商家类型(flower_shop/farm/activity_organizer) - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "merchants": [ { "id": 1, "user_id": 2, "shop_name": "鲜花小店", "merchant_type": "flower_shop", "contact_name": "张老板", "contact_phone": "13800138001", "business_license": "https://www.jiebanke.com/license.jpg", "status": "pending", "apply_reason": "希望加入平台提供鲜花服务", "created_at": "2025-01-01T00:00:00.000Z", "user_info": { "username": "merchant1", "nickname": "花店老板", "email": "merchant@jiebanke.com" } } ], "pagination": { "total": 10, "page": 1, "limit": 20, "pages": 1 } } } ``` ##### 9.2.2 审核商家申请 - **Endpoint**: POST /api/v1/admin/merchants/{id}/review - **认证要求**: Bearer Token,需要merchant:review权限 - **请求体**: ```json { "action": "approve", "review_notes": "资质齐全,符合要求", "reject_reason": "" } ``` 或者 ```json { "action": "reject", "review_notes": "营业执照不清晰", "reject_reason": "营业执照图片模糊,无法辨认" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "商家审核完成" } ``` ##### 9.2.3 获取商家列表 - **Endpoint**: GET /api/v1/admin/merchants - **认证要求**: Bearer Token,需要merchant:manage权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - "shop_name" (可选): 店铺名称模糊搜索 - "merchant_type" (可选): 商家类型 - "status" (可选): 状态(active/inactive/rejected) - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "merchants": [ { "id": 1, "user_id": 2, "shop_name": "鲜花小店", "merchant_type": "flower_shop", "contact_name": "张老板", "contact_phone": "13800138001", "business_license": "https://www.jiebanke.com/license.jpg", "status": "active", "total_products": 15, "total_orders": 120, "total_revenue": 5000.00, "avg_rating": 4.8, "created_at": "2025-01-01T00:00:00.000Z", "approved_at": "2025-01-02T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "limit": 20, "pages": 3 }, "statistics": { "total_merchants": 50, "active_merchants": 45, "flower_shops": 20, "farms": 15, "organizers": 15, "pending_reviews": 5 } } } ``` #### 9.3 内容审核接口 ##### 9.3.1 获取待审核内容列表 - **Endpoint**: GET /api/v1/admin/content/pending - **认证要求**: Bearer Token,需要content:review权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `content_type` (可选): 内容类型(travel_plan/dynamic/comment) - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "contents": [ { "id": 1, "type": "travel_plan", "title": "云南大理之旅", "content": "计划去大理游玩5天,寻找同行伙伴...", "author_id": 3, "author_name": "旅行爱好者", "status": "pending", "created_at": "2025-01-01T00:00:00.000Z", "review_count": 0 }, { "id": 2, "type": "dynamic", "title": "", "content": "今天认领了一只可爱的小羊!", "images": ["https://www.jiebanke.com/sheep.jpg"], "author_id": 4, "author_name": "动物爱好者", "status": "pending", "created_at": "2025-01-01T00:00:00.000Z", "review_count": 0 } ], "pagination": { "total": 25, "page": 1, "limit": 20, "pages": 2 } } } ``` ##### 9.3.2 审核内容 - **Endpoint**: POST /api/v1/admin/content/{id}/review - **认证要求**: Bearer Token,需要content:review权限 - **请求体**: ```json { "action": "approve", "review_notes": "内容符合规范" } ``` 或者 ```json { "action": "reject", "review_notes": "包含不当内容", "reject_reason": "包含联系方式" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "内容审核完成" } ``` ##### 9.3.3 获取内容统计 - **Endpoint**: GET /api/v1/admin/content/statistics - **认证要求**: Bearer Token,需要content:review权限 - **查询参数**: - `days` (可选): 统计天数,默认7 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "total_contents": 1000, "pending_review": 25, "approved": 900, "rejected": 75, "daily_stats": [ { "date": "2025-01-01", "total": 50, "approved": 45, "rejected": 5 } ], "by_type": { "travel_plan": 300, "dynamic": 500, "comment": 200 } } } ``` #### 9.4 数据统计接口 ##### 9.4.1 获取平台概览数据 - **Endpoint**: GET /api/v1/admin/dashboard/overview - **认证要求**: Bearer Token,需要data:view权限 - **查询参数**: - `days` (可选): 统计天数,默认30 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "user_stats": { "total_users": 10000, "new_users_today": 50, "new_users_7d": 300, "new_users_30d": 1200, "active_users_7d": 2000, "active_users_30d": 6000 }, "order_stats": { "total_orders": 5000, "today_orders": 25, "revenue_today": 1250.00, "revenue_7d": 8500.00, "revenue_30d": 35000.00, "avg_order_value": 70.00 }, "content_stats": { "total_travel_plans": 2000, "total_animal_claims": 800, "total_flower_orders": 1200, "total_dynamics": 3000 }, "merchant_stats": { "total_merchants": 150, "active_merchants": 120, "flower_shops": 60, "farms": 50, "organizers": 40 } } } ``` ##### 9.4.2 获取用户增长图表 - **Endpoint**: GET /api/v1/admin/dashboard/user-growth - **认证要求**: Bearer Token,需要data:view权限 - **查询参数**: - `days` (可选): 统计天数,默认30 - `group_by` (可选): 分组方式(day/week/month),默认day - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "chart_data": [ { "date": "2025-01-01", "new_users": 45, "total_users": 10045 }, { "date": "2025-01-02", "new_users": 52, "total_users": 10097 } ], "summary": { "total_new_users": 1200, "growth_rate": 12.5, "avg_daily_new_users": 40 } } } ``` ##### 9.4.3 获取订单统计图表 - **Endpoint**: GET /api/v1/admin/dashboard/order-stats - **认证要求**: Bearer Token,需要data:view权限 - **查询参数**: - `days` (可选): 统计天数,默认30 - `order_type` (可选): 订单类型(flower/animal/travel) - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "chart_data": [ { "date": "2025-01-01", "total_orders": 28, "total_revenue": 1960.00, "flower_orders": 15, "animal_orders": 8, "travel_orders": 5 } ], "summary": { "total_revenue": 35000.00, "avg_daily_revenue": 1166.67, "order_conversion_rate": 8.5 } } } ``` ##### 9.4.4 导出数据报表 - **Endpoint**: GET /api/v1/admin/dashboard/export - **认证要求**: Bearer Token,需要data:export权限 - **查询参数**: - `report_type` (必选): 报表类型(users/orders/contents/merchants) - `format` (可选): 格式(csv/excel),默认csv - `start_date` (可选): 开始时间 - `end_date` (可选): 结束时间 - **响应**: 返回文件下载流 #### 9.5 权限管理接口 ##### 9.5.1 获取管理员列表 - **Endpoint**: GET /api/v1/admin/administrators - **认证要求**: Bearer Token,需要admin:manage权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `username` (可选): 用户名模糊搜索 - `role` (可选): 角色过滤 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "admins": [ { "id": 1, "username": "admin", "email": "admin@example.com", "nickname": "超级管理员", "avatar": "https://example.com/avatar.jpg", "role": "super_admin", "status": 1, "last_login": "2025-01-15T10:30:00.000Z", "created_at": "2025-01-01T00:00:00.000Z", "permissions": ["user:manage", "content:review", "data:view", "data:export"] } ], "pagination": { "total": 10, "page": 1, "limit": 20, "pages": 1 } } } ``` ##### 9.5.2 创建管理员账号 - **Endpoint**: POST /api/v1/admin/administrators - **认证要求**: Bearer Token,需要admin:manage权限 - **请求体**: ```json { "username": "newadmin", "password": "password123", "email": "newadmin@example.com", "nickname": "新管理员", "role": "content_admin", "permissions": ["content:review", "content:publish"] } ``` - **响应**: ```json { "success": true, "code": 201, "message": "管理员创建成功", "data": { "id": 2, "username": "newadmin", "email": "newadmin@example.com", "nickname": "新管理员", "role": "content_admin", "status": 1, "created_at": "2025-01-01T00:00:00.000Z" } } ``` ##### 9.5.3 更新管理员权限 - **Endpoint**: PUT /api/v1/admin/administrators/{id}/permissions - **认证要求**: Bearer Token,需要admin:manage权限 - **请求体**: ```json { "permissions": ["content:review", "content:publish", "data:view"] } ``` - **响应**: ```json { "success": true, "code": 200, "message": "权限更新成功" } ``` ##### 9.5.4 禁用/启用管理员账号 - **Endpoint**: PUT /api/v1/admin/administrators/{id}/status - **认证要求**: Bearer Token,需要admin:manage权限 - **请求体**: ```json { "status": 0 } ``` - **响应**: ```json { "success": true, "code": 200, "message": "管理员状态更新成功" } ``` ##### 9.5.5 获取权限列表 - **Endpoint**: GET /api/v1/admin/permissions - **认证要求**: Bearer Token,需要admin:manage权限 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "permissions": [ { "code": "user:manage", "name": "用户管理", "description": "管理用户账号和状态" }, { "code": "content:review", "name": "内容审核", "description": "审核用户发布的内容" }, { "code": "content:publish", "name": "内容发布", "description": "发布和管理平台内容" }, { "code": "data:view", "name": "数据查看", "description": "查看平台统计数据" }, { "code": "data:export", "name": "数据导出", "description": "导出数据报表" }, { "code": "merchant:review", "name": "商家审核", "description": "审核商家入驻申请" }, { "code": "merchant:manage", "name": "商家管理", "description": "管理商家账号和信息" }, { "code": "admin:manage", "name": "管理员管理", "description": "管理其他管理员账号" } ] } } ``` #### 9.6 操作日志接口 ##### 9.6.1 获取操作日志列表 - **Endpoint**: GET /api/v1/admin/operation-logs - **认证要求**: Bearer Token,需要admin:manage权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `admin_id` (可选): 操作管理员ID - `action_type` (可选): 操作类型 - `start_date` (可选): 开始时间 - `end_date` (可选): 结束时间 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "logs": [ { "id": 1, "admin_id": 1, "admin_name": "超级管理员", "action_type": "user_status_update", "target_type": "user", "target_id": 5, "target_name": "testuser", "old_value": "active", "new_value": "banned", "ip_address": "192.168.1.100", "user_agent": "Mozilla/5.0...", "created_at": "2025-01-01T10:30:00.000Z" } ], "pagination": { "total": 1000, "page": 1, "limit": 20, "pages": 50 } } } ``` ##### 9.6.2 导出操作日志 - **Endpoint**: GET /api/v1/admin/operation-logs/export - **认证要求**: Bearer Token,需要admin:manage权限 - **查询参数**: - `format` (可选): 格式(csv/excel),默认csv - `start_date` (可选): 开始时间 - `end_date` (可选): 结束时间 - **响应**: 返回文件下载流 ], "pagination": { "total": 100, "page": 1, "limit": 20, "pages": 5 } } } ``` #### 9.2 获取用户详情 - **Endpoint**: GET /api/v1/users/{id} - **认证要求**: Bearer Token,需要user:manage权限 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "user_type": "farmer", "status": "active", "points": 100, "level": 2, "created_at": "2025-01-01T00:00:00.000Z", "last_login_at": "2025-01-01T00:00:00.000Z" } } } ``` #### 9.3 更新用户状态 - **Endpoint**: PUT /api/v1/users/{id}/status - **认证要求**: Bearer Token,需要user:manage权限 - **请求体**: ```json { "status": "active" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "用户状态更新成功" } ``` #### 9.4 删除用户 - **Endpoint**: DELETE /api/v1/users/{id} - **认证要求**: Bearer Token,需要user:manage权限 - **响应**: ```json { "success": true, "code": 200, "message": "用户删除成功" } ``` ### 10. 系统管理接口 #### 10.1 获取系统信息 - **Endpoint**: GET /api/v1/admin/system/info - **认证要求**: Bearer Token,需要system:view权限 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "system": { "version": "1.0.0", "node_version": "v18.17.0", "platform": "linux", "arch": "x64", "uptime": 123456, "memory_usage": { "total": 17179869184, "used": 8589934592, "free": 8589934592 }, "cpu_usage": 25.5 } } } ``` #### 10.2 获取系统服务列表 - **Endpoint**: GET /api/v1/admin/system/services - **认证要求**: Bearer Token,需要system:manage权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `type` (可选): 服务类型(database/cache/mq) - `status` (可选): 服务状态(running/stopped) - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "services": [ { "id": "mysql", "name": "MySQL数据库", "type": "database", "status": "running", "host": "mysql.jiebanke.com", "port": 3306, "description": "主数据库服务", "created_at": "2024-01-01T00:00:00.000Z", "updated_at": "2024-01-15T10:30:00.000Z" } ], "pagination": { "total": 5, "page": 1, "limit": 20, "pages": 1 } } } ``` #### 10.3 更新服务状态 - **Endpoint**: PUT /api/v1/admin/system/services/{id}/status - **认证要求**: Bearer Token,需要system:manage权限 - **请求体**: ```json { "status": "stopped" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "服务状态更新成功" } ``` #### 10.4 获取系统配置 - **Endpoint**: GET /api/v1/admin/system/configs - **认证要求**: Bearer Token,需要system:config权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `group` (可选): 配置分组 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "configs": [ { "id": "site_name", "name": "网站名称", "value": "结伴客", "type": "string", "group": "basic", "description": "网站显示名称", "created_at": "2024-01-01T00:00:00.000Z", "updated_at": "2024-01-15T10:30:00.000Z" } ], "pagination": { "total": 10, "page": 1, "limit": 20, "pages": 1 } } } ``` #### 10.5 更新系统配置 - **Endpoint**: PUT /api/v1/admin/system/configs/{id} - **认证要求**: Bearer Token,需要system:config权限 - **请求体**: ```json { "value": "新网站名称" } ``` - **响应**: ```json { "success": true, "code": 200, "message": "配置更新成功" } ``` ### 11. 内容管理接口 #### 11.1 获取内容列表 - **Endpoint**: GET /admin/contents - **认证要求**: Bearer Token,需要content:review权限 - **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `type` (可选): 内容类型 - `status` (可选): 审核状态 - **响应**: ```json { "success": true, "code": 200, "message": "获取成功", "data": { "contents": [ { "id": 1, "title": "测试内容", "type": "article", "author": "测试用户", "status": "pending", "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "limit": 20, "pages": 3 } } } ``` #### 9.2 获取内容详情 **Endpoint**: `GET /admin/contents/{id}` **认证**: 需要Bearer Token,需要content:review权限 **响应**: ```json { "success": true, "code": 200, "data": { "content": { "id": 1, "title": "测试内容", "type": "article", "content": "详细内容文本...", "author": { "id": 1, "username": "testuser", "nickname": "测试用户" }, "images": ["https://www.jiebanke.com/image1.jpg"], "status": "pending", "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" } } } ``` #### 9.3 审核内容 **Endpoint**: `PUT /admin/contents/{id}/review` **认证**: 需要Bearer Token,需要content:review权限 **请求体**: ```json { "status": "string, required, 审核状态(approved/rejected)", "review_comment": "string, optional, 审核意见" } ``` **响应**: ```json { "success": true, "code": 200, "message": "内容审核完成" } ``` #### 9.4 批量审核内容 **Endpoint**: `POST /admin/contents/batch-review` **认证**: 需要Bearer Token,需要content:review权限 **请求体**: ```json { "content_ids": ["number, required, 内容ID列表"], "status": "string, required, 审核状态(approved/rejected)", "review_comment": "string, optional, 审核意见" } ``` **响应**: ```json { "success": true, "code": 200, "message": "批量审核完成", "data": { "success_count": 5, "failed_count": 0 } } ``` ### 13. 商家管理接口 #### 13.1 获取商家申请列表 **Endpoint**: `GET /admin/merchant-applications` **认证**: 需要Bearer Token,需要merchant:approve权限 **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `status` (可选): 状态过滤(pending/approved/rejected) - `business_name` (可选): 商家名称搜索 **响应**: ```json { "success": true, "code": 200, "data": { "applications": [ { "id": 1, "user_id": 1, "business_name": "XX农场", "contact_person": "张三", "contact_phone": "13800138000", "merchant_type": "farm_owner", "status": "pending", "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" } ], "pagination": { "total": 15, "page": 1, "limit": 20, "pages": 1 } } } ``` #### 13.2 审核商家申请 **Endpoint**: `PUT /admin/merchant-applications/{id}/review` **认证**: 需要Bearer Token,需要merchant:approve权限 **请求体**: ```json { "status": "string, required, 审核状态(approved/rejected)", "review_comment": "string, optional, 审核意见" } ``` **响应**: ```json { "success": true, "code": 200, "message": "商家申请审核完成" } ``` #### 13.3 获取商家列表 **Endpoint**: `GET /admin/merchants` **认证**: 需要Bearer Token,需要merchant:view权限 **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `merchant_type` (可选): 商家类型过滤 - `status` (可选): 状态过滤(active/inactive) - `business_name` (可选): 商家名称搜索 **响应**: ```json { "success": true, "code": 200, "data": { "merchants": [ { "id": 1, "user_id": 1, "business_name": "XX农场", "merchant_type": "farm_owner", "contact_person": "张三", "contact_phone": "13800138000", "status": "active", "product_count": 5, "order_count": 20, "total_revenue": 50000.00, "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" } ], "pagination": { "total": 25, "page": 1, "limit": 20, "pages": 2 } } } ``` #### 13.4 更新商家状态 **Endpoint**: `PUT /admin/merchants/{id}/status` **认证**: 需要Bearer Token,需要merchant:manage权限 **请求体**: ```json { "status": "string, required, 状态(active/inactive)" } ``` **响应**: ```json { "success": true, "code": 200, "message": "商家状态更新成功" } ``` ### 14. 系统配置接口 #### 14.1 获取系统配置 **Endpoint**: `GET /admin/system-configs` **认证**: 需要Bearer Token,需要system:config权限 **查询参数**: - `group` (可选): 配置组过滤 **响应**: ```json { "success": true, "code": 200, "data": { "configs": [ { "id": "site_name", "name": "网站名称", "value": "结伴客", "type": "string", "group": "general", "description": "网站显示的名称", "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" }, { "id": "site_description", "name": "网站描述", "value": "专业的旅行结伴和动物认领平台", "type": "text", "group": "general", "description": "网站的简要描述", "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" }, { "id": "max_file_size", "name": "最大文件大小", "value": "10", "type": "number", "group": "upload", "description": "允许上传的最大文件大小(MB)", "created_at": "2025-01-01T12:00:00.000Z", "updated_at": "2025-01-01T12:00:00.000Z" } ] } } ``` #### 14.2 更新系统配置 **Endpoint**: `PUT /admin/system-configs/{id}` **认证**: 需要Bearer Token,需要system:config权限 **请求体**: ```json { "value": "string, required, 配置值" } ``` **响应**: ```json { "success": true, "code": 200, "message": "配置更新成功" } ``` #### 14.3 批量更新系统配置 **Endpoint**: `POST /admin/system-configs/batch-update` **认证**: 需要Bearer Token,需要system:config权限 **请求体**: ```json { "configs": [ { "id": "site_name", "value": "新网站名称" }, { "id": "site_description", "value": "新的网站描述" } ] } ``` **响应**: ```json { "success": true, "code": 200, "message": "批量配置更新成功", "data": { "success_count": 2, "failed_count": 0 } } ``` ### 10. 数据统计接口 #### 10.1 获取系统统计数据 **Endpoint**: `GET /admin/statistics` **认证**: 需要Bearer Token,需要data:view权限 **响应**: ```json { "success": true, "code": 200, "data": { "user_count": 1000, "active_user_count": 500, "new_user_today": 20, "order_count": 300, "revenue_today": 5000.00, "content_count": 200, "pending_review_count": 15, "animal_claim_count": 150, "travel_plan_count": 80, "flower_order_count": 120, "merchant_count": 25, "pending_merchant_approval_count": 8 } } ``` #### 10.2 获取数据趋势图表 **Endpoint**: `GET /admin/statistics/trend` **认证**: 需要Bearer Token,需要data:view权限 **查询参数**: - `type` (必选): 数据类型(user/order/revenue/content) - `days` (可选): 天数,默认7天 **响应**: ```json { "success": true, "code": 200, "data": { "labels": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05", "2025-01-06", "2025-01-07"], "datasets": [ { "label": "用户增长", "data": [100, 120, 150, 180, 200, 220, 250], "borderColor": "rgb(75, 192, 192)" } ] } } ``` #### 10.3 导出数据 **Endpoint**: `GET /admin/export/{type}` **认证**: 需要Bearer Token,需要data:export权限 **查询参数**: - `start_date` (可选): 开始日期 - `end_date` (可选): 结束日期 - `format` (可选): 导出格式(csv/excel),默认csv **响应**: 返回CSV或Excel文件下载 ### 11. 权限管理接口 #### 11.1 获取角色列表 **Endpoint**: `GET /admin/roles` **认证**: 需要Bearer Token,需要role:manage权限 **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 **响应**: ```json { "success": true, "code": 200, "data": { "roles": [ { "id": 1, "name": "super_admin", "description": "超级管理员", "permission_count": 20, "user_count": 3, "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z" }, { "id": 2, "name": "content_admin", "description": "内容管理员", "permission_count": 8, "user_count": 5, "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 10, "page": 1, "limit": 20, "pages": 1 } } } ``` #### 11.2 创建角色 **Endpoint**: `POST /admin/roles` **认证**: 需要Bearer Token,需要role:manage权限 **请求体**: ```json { "name": "string, required, 角色名称", "description": "string, required, 角色描述", "permissions": ["string, required, 权限列表"] } ``` **响应**: ```json { "success": true, "code": 201, "message": "角色创建成功", "data": { "role": { "id": 3, "name": "data_admin", "description": "数据管理员", "permissions": ["data:view", "data:export"], "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z" } } } ``` #### 11.3 更新角色权限 **Endpoint**: `PUT /admin/roles/{id}` **认证**: 需要Bearer Token,需要role:manage权限 **请求体**: ```json { "description": "string, optional, 角色描述", "permissions": ["string, required, 权限列表"] } ``` **响应**: ```json { "success": true, "code": 200, "message": "角色更新成功" } ``` #### 11.4 删除角色 **Endpoint**: `DELETE /admin/roles/{id}` **认证**: 需要Bearer Token,需要role:manage权限 **响应**: ```json { "success": true, "code": 200, "message": "角色删除成功" } ``` #### 11.5 获取权限列表 **Endpoint**: `GET /admin/permissions` **认证**: 需要Bearer Token,需要role:manage权限 **响应**: ```json { "success": true, "code": 200, "data": { "permissions": [ { "id": "user:view", "name": "查看用户", "description": "允许查看用户列表和详情", "category": "用户管理" }, { "id": "user:manage", "name": "管理用户", "description": "允许修改用户状态和信息", "category": "用户管理" }, { "id": "content:review", "name": "审核内容", "description": "允许审核用户发布的内容", "category": "内容管理" }, { "id": "content:publish", "name": "发布内容", "description": "允许发布系统公告和内容", "category": "内容管理" }, { "id": "data:view", "name": "查看数据", "description": "允许查看系统统计数据", "category": "数据统计" }, { "id": "data:export", "name": "导出数据", "description": "允许导出系统数据", "category": "数据统计" }, { "id": "role:manage", "name": "管理角色", "description": "允许管理角色和权限", "category": "权限管理" }, { "id": "merchant:approve", "name": "审核商家", "description": "允许审核商家入驻申请", "category": "商家管理" }, { "id": "system:config", "name": "系统配置", "description": "允许修改系统配置参数", "category": "系统管理" } ] } } ``` #### 11.6 分配用户角色 **Endpoint**: `POST /admin/users/{userId}/roles` **认证**: 需要Bearer Token,需要role:manage权限 **请求体**: ```json { "roleIds": ["number, required, 角色ID列表"] } ``` **响应**: ```json { "success": true, "code": 200, "message": "角色分配成功" } ``` ### 12. 操作日志接口 #### 12.1 获取操作日志列表 **Endpoint**: `GET /admin/operation-logs` **认证**: 需要Bearer Token,需要audit:view权限 **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `admin_id` (可选): 管理员ID过滤 - `module` (可选): 操作模块过滤 - `operation` (可选): 操作类型过滤 - `target_type` (可选): 目标对象类型过滤 - `status` (可选): 操作状态过滤(success/failed) - `start_date` (可选): 开始日期 - `end_date` (可选): 结束日期 - `keyword` (可选): 关键词搜索(管理员姓名/操作描述) **响应**: ```json { "success": true, "code": 200, "data": { "logs": [ { "id": 1, "admin_id": 1, "admin_name": "管理员A", "module": "用户管理", "operation": "user:update", "operation_name": "更新用户", "target_id": "2", "target_type": "user", "target_name": "用户B", "request_method": "PUT", "request_url": "/admin/users/2", "request_params": "{\"status\":\"inactive\"}", "ip_address": "192.168.1.100", "user_agent": "Mozilla/5.0...", "status": "success", "execution_time": 150, "created_at": "2025-01-01T12:00:00.000Z" }, { "id": 2, "admin_id": 2, "admin_name": "管理员B", "module": "内容审核", "operation": "content:review", "operation_name": "审核内容", "target_id": "5", "target_type": "content", "target_name": "测试文章", "request_method": "PUT", "request_url": "/admin/contents/5/review", "request_params": "{\"status\":\"approved\",\"review_comment\":\"内容符合规范\"}", "ip_address": "192.168.1.101", "user_agent": "Mozilla/5.0...", "status": "success", "execution_time": 200, "created_at": "2025-01-01T12:30:00.000Z" } ], "pagination": { "total": 1000, "page": 1, "limit": 20, "pages": 50 } } } ``` #### 12.2 获取操作日志详情 **Endpoint**: `GET /admin/operation-logs/{id}` **认证**: 需要Bearer Token,需要audit:view权限 **响应**: ```json { "success": true, "code": 200, "data": { "log": { "id": 1, "admin_id": 1, "admin_name": "管理员A", "module": "用户管理", "operation": "user:update", "operation_name": "更新用户", "target_id": "2", "target_type": "user", "target_name": "用户B", "request_method": "PUT", "request_url": "/admin/users/2", "request_params": { "status": "inactive" }, "request_headers": { "authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user-agent": "Mozilla/5.0...", "accept": "application/json" }, "ip_address": "192.168.1.100", "user_agent": "Mozilla/5.0...", "status": "success", "error_message": null, "execution_time": 150, "created_at": "2025-01-01T12:00:00.000Z" } } } ``` #### 12.3 导出操作日志 **Endpoint**: `GET /admin/operation-logs/export` **认证**: 需要Bearer Token,需要audit:export权限 **查询参数**: - `start_date` (可选): 开始日期 - `end_date` (可选): 结束日期 - `module` (可选): 操作模块过滤 - `operation` (可选): 操作类型过滤 - `status` (可选): 操作状态过滤 - `format` (可选): 导出格式(csv/excel),默认csv **响应**: 返回CSV或Excel文件下载 #### 12.4 获取操作统计 **Endpoint**: `GET /admin/operation-logs/statistics` **认证**: 需要Bearer Token,需要audit:view权限 **查询参数**: - `start_date` (可选): 开始日期 - `end_date` (可选): 结束日期 **响应**: ```json { "success": true, "code": 200, "data": { "total_operations": 1250, "success_count": 1200, "failed_count": 50, "avg_execution_time": 180, "top_modules": [ {"module": "用户管理", "count": 450, "percentage": 36.0}, {"module": "内容审核", "count": 300, "percentage": 24.0}, {"module": "数据统计", "count": 200, "percentage": 16.0}, {"module": "系统配置", "count": 150, "percentage": 12.0}, {"module": "权限管理", "count": 100, "percentage": 8.0}, {"module": "其他", "count": 50, "percentage": 4.0} ], "top_operations": [ {"operation": "user:update", "count": 200, "percentage": 16.0}, {"operation": "content:review", "count": 180, "percentage": 14.4}, {"operation": "data:view", "count": 150, "percentage": 12.0}, {"operation": "user:create", "count": 120, "percentage": 9.6}, {"operation": "system:config", "count": 100, "percentage": 8.0} ], "top_admins": [ {"admin_id": 1, "admin_name": "管理员A", "count": 500, "percentage": 40.0}, {"admin_id": 2, "admin_name": "管理员B", "count": 400, "percentage": 32.0}, {"admin_id": 3, "admin_name": "管理员C", "count": 350, "percentage": 28.0} ] } } ``` ## 旅行结伴接口 ### 11. 发布旅行计划 **Endpoint**: `POST /travel/plans` **认证**: 需要Bearer Token **请求体**: ```json { "title": "string, required, 计划标题", "description": "string, required, 计划描述", "destination": "string, required, 目的地", "start_date": "string, required, 开始日期(YYYY-MM-DD)", "end_date": "string, required, 结束日期(YYYY-MM-DD)", "max_members": "number, required, 最大参与人数", "budget": "number, optional, 预算金额", "tags": "array, optional, 标签数组", "images": "array, optional, 图片URL数组" } ``` **响应**: ```json { "success": true, "code": 201, "message": "旅行计划发布成功", "data": { "plan": { "id": 1, "title": "周末杭州西湖游", "description": "寻找志同道合的伙伴一起游玩西湖", "destination": "杭州西湖", "start_date": "2025-01-15", "end_date": "2025-01-16", "max_members": 6, "current_members": 1, "budget": 500, "status": "recruiting", "tags": ["休闲", "摄影", "美食"], "images": [], "creator_id": 1, "created_at": "2025-01-01T00:00:00.000Z", "updated_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 12. 获取旅行计划列表 **Endpoint**: `GET /travel/plans` **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `destination` (可选): 目的地搜索 - `start_date` (可选): 开始日期筛选 - `end_date` (可选): 结束日期筛选 - `status` (可选): 状态筛选(recruiting/in_progress/completed/cancelled) - `sort` (可选): 排序方式(created_at/start_date) **响应**: ```json { "success": true, "code": 200, "data": { "plans": [ { "id": 1, "title": "周末杭州西湖游", "destination": "杭州西湖", "start_date": "2025-01-15", "end_date": "2025-01-16", "max_members": 6, "current_members": 3, "budget": 500, "status": "recruiting", "tags": ["休闲", "摄影", "美食"], "creator": { "id": 1, "username": "testuser", "nickname": "测试用户", "avatar": "" }, "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "limit": 20, "pages": 3 } } } ``` ### 13. 加入旅行计划 **Endpoint**: `POST /travel/plans/{id}/join` **认证**: 需要Bearer Token **请求体**: ```json { "message": "string, optional, 加入留言" } ``` **响应**: ```json { "success": true, "code": 200, "message": "成功加入旅行计划", "data": { "membership": { "id": 1, "plan_id": 1, "user_id": 2, "status": "pending", "message": "希望能一起游玩", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 动物认领接口 ### 14. 获取可认领动物列表 **Endpoint**: `GET /animals/adoptable` **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `type` (可选): 动物类型 - `breed` (可选): 品种筛选 - `age_min` (可选): 最小年龄 - `age_max` (可选): 最大年龄 - `location` (可选): 地理位置 **响应**: ```json { "success": true, "code": 200, "data": { "animals": [ { "id": 1, "name": "小白", "type": "dog", "breed": "中华田园犬", "age": 2, "gender": "male", "description": "温顺可爱的狗狗,寻找有爱心的主人", "vaccination_status": "vaccinated", "sterilization_status": "sterilized", "location": "北京市朝阳区", "images": ["https://www.jiebanke.com/animal1.jpg"], "status": "available", "shelter": { "id": 1, "name": "爱心动物救助站", "contact": "13800138000" }, "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 30, "page": 1, "limit": 20, "pages": 2 } } } ``` ### 15. 申请认领动物 **Endpoint**: `POST /animals/{id}/adopt` **认证**: 需要Bearer Token **请求体**: ```json { "application_reason": "string, required, 申请理由", "living_environment": "string, required, 居住环境描述", "experience": "string, optional, 养宠经验", "contact_info": "string, required, 联系方式" } ``` **响应**: ```json { "success": true, "code": 201, "message": "认领申请已提交", "data": { "application": { "id": 1, "animal_id": 1, "applicant_id": 1, "status": "pending", "application_reason": "非常喜欢狗狗,有养宠经验", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 花卉订购接口 ### 16. 获取花卉商品列表 **Endpoint**: `GET /flowers/products` **查询参数**: - `page` (可选): 页码,默认1 - `limit` (可选): 每页数量,默认20 - `category" (可选): 分类筛选 - "min_price" (可选): 最低价格 - "max_price" (可选): 最高价格 - "sort" (可选): 排序方式(price/created_at/sales) **响应**: ```json { "success": true, "code": 200, "data": { "products": [ { "id": 1, "name": "玫瑰花束", "description": "新鲜玫瑰花束,适合送礼", "category": "鲜花", "price": 99.00, "original_price": 129.00, "stock": 50, "sales": 120, "images": ["https://www.jiebanke.com/rose.jpg"], "merchant": { "id": 1, "name": "花语花店", "rating": 4.8 }, "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 100, "page": 1, "limit": 20, "pages": 5 } } } ``` ### 17. 创建花卉订单 **Endpoint**: `POST /flowers/orders` **认证**: 需要Bearer Token **请求体**: ```json { "items": [ { "product_id": 1, "quantity": 2, "message": "string, optional, 留言卡片内容" } ], "shipping_address": { "recipient": "string, required, 收货人", "phone": "string, required, 联系电话", "address": "string, required, 详细地址", "postal_code": "string, optional, 邮政编码" }, "delivery_date": "string, required, 配送日期(YYYY-MM-DD)", "delivery_time": "string, required, 配送时间段" } ``` **响应**: ```json { "success": true, "code": 201, "message": "订单创建成功", "data": { "order": { "id": 1, "order_number": "F202501010001", "total_amount": 198.00, "status": "pending", "items": [ { "product_id": 1, "product_name": "玫瑰花束", "quantity": 2, "price": 99.00, "subtotal": 198.00 } ], "shipping_address": { "recipient": "张三", "phone": "13800138000", "address": "北京市朝阳区某某街道123号" }, "delivery_date": "2025-01-15", "delivery_time": "14:00-16:00", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 社交互动接口 ### 18. 发布动态 **Endpoint**: `POST /social/posts` **认证**: 需要Bearer Token **请求体**: ```json { "content": "string, required, 动态内容", "images": "array, optional, 图片URL数组", "visibility": "string, optional, 可见性(public/friends/private)", "location": "string, optional, 位置信息" } ``` **响应**: ```json { "success": true, "code": 201, "message": "动态发布成功", "data": { "post": { "id": 1, "content": "今天去了西湖,风景真美!", "images": ["https://www.jiebanke.com/westlake.jpg"], "visibility": "public", "location": "杭州西湖", "like_count": 0, "comment_count": 0, "author": { "id": 1, "username": "testuser", "nickname": "测试用户", "avatar": "" }, "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 19. 点赞动态 **Endpoint**: `POST /social/posts/{id}/like` **认证**: 需要Bearer Token **响应**: ```json { "success": true, "code": 200, "message": "点赞成功", "data": { "like_count": 15 } } ``` ### 20. 评论动态 **Endpoint**: `POST /social/posts/{id}/comments` **认证**: 需要Bearer Token **请求体**: ```json { "content": "string, required, 评论内容", "parent_id": "number, optional, 父评论ID" } ``` **响应**: ```json { "success": true, "code": 201, "message": "评论成功", "data": { "comment": { "id": 1, "content": "照片拍得真漂亮!", "author": { "id": 2, "username": "user2", "nickname": "用户二", "avatar": "" }, "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 错误码说明 | 错误码 | 说明 | |--------|------| | 200 | 成功 | | 201 | 创建成功 | | 400 | 请求参数错误 | | 401 | 未授权 | | 403 | 权限不足 | | 404 | 资源不存在 | | 500 | 服务器内部错误 | **Endpoint**: `PUT /auth/profile` **认证**: 需要Bearer Token **描述**: 更新用户个人信息 **请求体**: ```json { "nickname": "string, optional, 昵称", "avatar": "string, optional, 头像URL", "gender": "string, optional, 性别(male/female/unknown)", "birthday": "string, optional, 生日(YYYY-MM-DD)" } ``` **响应**: 同获取用户信息接口 ### 6. 修改密码 **Endpoint**: `PUT /auth/password` **认证**: 需要Bearer Token **描述**: 修改用户密码 **请求体**: ```json { "currentPassword": "string, required, 当前密码", "newPassword": "string, required, 新密码(6-20字符)" } ``` **响应**: ```json { "success": true, "code": 200, "message": "密码修改成功" } ``` ### 7. 退出登录 **Endpoint**: `POST /auth/logout` **认证**: 需要Bearer Token **描述**: 用户退出登录,使token失效 **响应**: ```json { "success": true, "code": 200, "message": "退出登录成功" } ``` ### 8. 刷新token **Endpoint**: `POST /auth/refresh` **认证**: 需要Bearer Token **描述**: 刷新访问令牌 **响应**: ```json { "success": true, "code": 200, "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ## 用户接口 ### 1. 获取用户列表 **Endpoint**: `GET /users` **认证**: 需要Bearer Token (管理员权限) **查询参数**: - `page`: number, optional, 页码 (默认: 1) - `pageSize`: number, optional, 每页数量 (默认: 20) - `search`: string, optional, 搜索关键词 - `status`: string, optional, 状态过滤(active/inactive/banned) **响应**: ```json { "success": true, "code": 200, "data": { "users": [ { "id": 1, "username": "user1", "nickname": "用户1", "email": "user1@jiebanke.com", "phone": "13800138001", "status": "active", "level": 2, "created_at": "2025-01-01极速版T00:00:00.000Z" } ], "pagination": { "total": 100, "page": 1, "pageSize": 20, "totalPages": 5 } } } ``` ### 2. 获取用户详情 **Endpoint**: `GET /users/:id` **认证**: 需要Bearer Token **响应**: ```json { "success": true, "code": 200, "data": { "user": { "id": 1, "username": "testuser", "nickname": "测试用户", "email": "test@example.com", "phone": "13800138000", "avatar": "https://example.com/avatar.jpg", "gender": "male", "points": 1000, "level": 3, "status": "active", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 旅行接口 ### 1. 创建旅行计划 **Endpoint**: `POST /travel/plans` **认证**: 需要Bearer Token **请求体**: ```json { "destination": "string, required, 目的地", "start_date": "string, required, 开始日期(YYYY-MM-DD)", "end_date": "string, required, 结束日期(YYYY-MM-DD)", "budget": "number, required, 预算", "interests": "string, optional, 兴趣偏好", "visibility": "string, optional, 可见范围(public/friends/private)" } ``` **响应**: ```json { "success": true, "code": 201, "message": "旅行计划创建成功", "data": { "plan": { "id": 1, "title": "西藏自驾游", "description": "寻找志同道合的旅友一起探索西藏", "destination": "西藏", "start_date": "2025-07-01", "end_date": "2025-07-15", "budget": 5000, "max_members": 4, "current_members": 1, "status": "recruiting", "tags": ["自驾", "摄影", "探险"], "creator_id": 1, "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 2. 获取旅行计划列表 **Endpoint**: `GET /travel/plans` **查询参数**: - `page`: number, optional, 页码 - `pageSize`: number, optional, 每页数量 - `destination`: string, optional, 目的地搜索 - `start_date`: string, optional, 开始日期之后 - `end_date`: string, optional, 结束日期之前 - `status`: string, optional, 状态(recruiting/in_progress/completed/cancelled) - `tags`: string, optional, 标签过滤(多个用逗号分隔) **响应**: ```json { "success": true, "code": 200, "data": { "plans": [ { "id": 1, "destination": "西藏", "start_date": "2025-07-01", "end_date": "2025-07-15", "budget": 5000.00, "interests": "自驾,摄影,探险", "visibility": "public", "creator": { "id": 1, "nickname": "旅行达人", "avatar": "https://example.com/avatar.jpg" }, "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "pageSize": 20, "totalPages": 3 } } } ``` ### 3. 匹配旅行伙伴 **Endpoint**: `GET /travel/matches` **认证**: 需要Bearer Token **查询参数**: - `plan_id`: number, required, 旅行计划ID - `page`: number, optional, 页码 - `pageSize`: number, optional, 每页数量 **响应**: ```json { "success": true, "code": 200, "data": { "list": [ { "id": 2, "destination": "西藏", "start_date": "2025-07-02", "end_date": "2025-07-08", "budget": 4500.00, "interests": "徒步,美食", "match_score": 0.85, "user": { "id": 2, "nickname": "旅行伙伴", "avatar": "https://www.jiebanke.com/avatar2.jpg" } } ], "pagination": { "page": 1, "size": 10, "total": 1 } } } ``` ## 动物认领接口 ### 1. 发布动物认领 **Endpoint**: `POST /animals` **认证**: 需要Bearer Token **请求体**: ```json { "name": "string, required, 动物名称", "species": "string, required, 物种", "breed": "string, optional, 品种", "age": "number, optional, 年龄", "gender": "string, optional, 性别(male/female/unknown)", "description": "string, required, 描述", "location": "string, required, 位置", "images": "array, optional, 图片URL数组", "vaccination_status": "string, optional, 疫苗接种情况", "sterilization_status": "string, optional, 绝育情况" } ``` **响应**: ```json { "success": true, "code": 201, "message": "动物认领发布成功", "data": { "animal": { "id": 1, "name": "小白", "species": "猫", "breed": "中华田园猫", "age": 2, "gender": "male", "description": "非常温顺的猫咪,寻找有爱心的主人", "location": "北京市朝阳区", "status": "available", "images": ["https://www.jiebanke.com/cat1.jpg"], "creator_id": 1, "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 商家服务接口 ### 1. 商家注册 **Endpoint**: `POST /merchants/register` **认证**: 需要Bearer Token **请求体**: ```json { "merchant_type": "string, required, 商家类型(flower_shop/activity_organizer/farm_owner)", "business_name": "string, required, 商家名称", "business_license": "string, optional, 营业执照URL", "contact_person": "string, required, 联系人", "contact_phone": "string, required, 联系电话", "address": "string, optional, 地址", "description": "string, optional, 商家介绍" } ``` **响应**: ```json { "success": true, "code": 201, "message": "商家注册申请已提交", "data": { "merchant": { "id": 1, "user_id": 1, "merchant_type": "farm_owner", "business_name": "XX农场", "business_license": "https://example.com/license.jpg", "contact_person": "张三", "contact_phone": "13800138000", "address": "北京市朝阳区XX路XX号", "description": "专业养殖羊驼的农场", "status": "pending", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ### 2. 发布商品/服务 **Endpoint**: `POST /merchants/products` **认证**: 需要Bearer Token **请求体**: ```json { "name": "string, required, 商品名称", "description": "string, required, 商品描述", "price": "number, required, 价格", "image_url": "string, optional, 图片URL", "category": "string, required, 商品类别", "status": "string, optional, 状态(available/unavailable)" } ``` **响应**: ```json { "success": true, "code": 201, "message": "商品发布成功", "data": { "product": { "id": 1, "merchant_id": 1, "name": "羊驼认领体验", "description": "提供一个月的羊驼认领体验服务", "price": 1000.00, "image_url": "https://www.jiebanke.com/product.jpg", "category": "animal_claim", "status": "available", "created_at": "202极速版5-01-01T00:00:00.000Z" } } } ``` ### 3. 获取商家订单 **Endpoint**: `GET /merchants/orders` **认证**: 需要Bearer Token **查询参数**: - `page`: number, optional, 页码 - `pageSize`: number, optional, 每页数量 - `status`: string, optional, 订单状态 **响应**: ```json { "success": true, "code": 200, "data": { "orders": [ { "id": 1, "user_id": 2, "order_number": "ORD202501010001", "total_amount": 1000.00, "status": "paid", "ordered_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "pageSize": 20, "totalPages": 3 } } } ``` ## 鲜花订购接口 ### 1. 创建鲜花订单 **Endpoint**: `POST /flowers/orders` **认证**: 需要Bearer Token **请求体**: ```json { "product_id": "number, required, 商品ID", "quantity": "number, required, 数量", "recipient_name": "string, required, 收花人姓名", "recipient_phone": "string, required, 收花人电话", "delivery_address": "string, required, 配送地址", "delivery_date": "string, required, 配送日期(YYYY-MM-DD)", "delivery_time": "string, required, 配送时间段", "message": "string, optional, 祝福语", "special_instructions": "string, optional, 特殊说明" } ``` **响应**: ```json { "success": true, "code": 201, "message": "订单创建成功", "data": { "order": { "极速版id": 1, "order_number": "F202501010001", "product_id": 1, "quantity": 1, "total_amount": 199.00, "status": "pending", "recipient_name": "张三", "recipient_phone": "13800138000", "delivery_address": "北京市朝阳区xxx路xxx号", "delivery_date": "2025-01-01", "delivery_time": "09:00-12:00", "created_at": "2025-01-01T00:00:00.000Z" } } } ``` ## 推广奖励接口 ### 1. 获取推广链接 **Endpoint**: `GET /promotion/link` **认证**: 需要Bearer Token **响应**: ```json { "success": true, "code": 200, "data": { "promotion_link": "https://www.jiebanke.com/promotion?ref=user123", "qr_code": "https://www.jiebanke.com/qrcode.png" } } ``` ### 2. 获取推广数据 **Endpoint**: `GET /promotion/stats` **认证**: 需要Bearer Token **响应**: ```json { "success": true, "code": 200, "data": { "total_referrals": 50, "successful_registrations": 25, "total_rewards": 500.00, "available_rewards": 300.00, "withdrawn_rewards": 200.00 } } ``` ### 3. 申请提现 **Endpoint**: `POST /promotion/withdraw` **认证**: 需要Bearer Token **请求体**: ```json { "amount": "number, required, 提现金额", "payment_method": "string, required, 支付方式(wechat/alipay)" } ``` **响应**: ```json { "success": true, "code": 200, "message": "提现申请已提交", "data": { "withdrawal_id": "WD202501010001", "status": "processing" } } ``` ## 系统接口 ### 1. 健康检查 **Endpoint**: `GET /health` **描述**: 检查服务健康状态 **响应**: ```json { "status": "OK", "timestamp": "2025-01-01T00:00:00.000Z", "uptime": 12345.67, "environment": "development", "services": { "database": "connected", "redis": "disconnected", "rabbitmq": "disconnected" } } ``` ## 官网接口 ### 1. 提交商家入驻申请 **Endpoint**: `POST /website/merchant/apply` **请求体**: ```json { "business_name": "string, required, 商家名称", "contact_person": "string, required, 联系人", "contact_phone": "string, required, 联系电话", "email": "string, optional, 邮箱", "description": "string, optional, 商家描述" } ``` **响应**: ```json { "success": true, "code": 201, "message": "入驻申请已提交", "data": { "application_id": 1, "status": "pending" } } ``` ### 2. 获取成功案例列表 **Endpoint**: `GET /website/cases` **查询参数**: - `page`: number, optional, 页码 - `pageSize`: number, optional, 每页数量 **响应**: ```json { "success": true, "code": 200, "data": { "cases": [ { "id": 1, "title": "XX农场成功入驻案例", "description": "XX农场通过平台实现了数字化转型", "image_url": "https://www.jiebanke.com/case1.jpg", "created_at": "2025-01-01T00:00:00.000Z" } ], "pagination": { "total": 50, "page": 1, "pageSize": 20, "totalPages": 3 } } } ``` ## 错误码说明 | 错误码 | 说明 | 处理建议 | |--------|------|----------| | 200 | 成功 | 操作成功 | | 201 | 创建成功 | 资源创建成功 | | 400 | 请求错误 | 检查请求参数 | | 401 | 未授权 | 需要登录认证 | | 403 | 禁止访问 | 权限不足 | | 404 | 资源不存在 | 检查资源ID | | 409 | 资源冲突 | 资源已存在 | | 429 | 请求过多 | 降低请求频率 | | 500 | 服务器错误 | 联系管理员 | ## 版本历史 | 版本 | 日期 | 说明 | |------|------|------| | v1.0 | 2025-01-01 | 初始版本发布 | | v1.1 | 2025-02-01 | 新增微信登录接口 | | v1.2 | 2025-03-01 | 优化错误处理机制 | ## 注意事项 1. 所有时间格式均为 ISO 8601 格式 (YYYY-MM-DDTHH:mm:ss.sssZ) 2. 金额单位为元,保留两位小数 3. 图片URL需要支持HTTPS 4. 敏感操作需要二次验证 5. API调用频率限制为每分钟100次