851 lines
17 KiB
Markdown
851 lines
17 KiB
Markdown
|
|
# 结伴客系统 API 接口文档
|
||
|
|
|
||
|
|
## 基础信息
|
||
|
|
|
||
|
|
**Base URL**: `http://localhost:3000/api/v1`
|
||
|
|
|
||
|
|
**认证方式**: Bearer Token (JWT)
|
||
|
|
|
||
|
|
**响应格式**: JSON
|
||
|
|
|
||
|
|
## 响应格式
|
||
|
|
|
||
|
|
### 成功响应
|
||
|
|
```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"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 认证接口
|
||
|
|
|
||
|
|
### 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@example.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, 密码"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2.1 微信登录
|
||
|
|
|
||
|
|
**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": "测试用户",
|
||
|
|
"email": "test@example.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**: `POST /auth/wechat-login`
|
||
|
|
|
||
|
|
**描述**: 微信授权登录
|
||
|
|
|
||
|
|
**请求体**:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": "string, required, 微信授权码",
|
||
|
|
"userInfo": {
|
||
|
|
"nickName": "string, optional, 微信昵称",
|
||
|
|
"avatarUrl": "string, optional, 微信头像",
|
||
|
|
"gender": "number, optional, 性别(0:未知,1:男,2:女)"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**响应**: 同登录接口
|
||
|
|
|
||
|
|
### 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://example.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"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. 更新用户信息
|
||
|
|
|
||
|
|
**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": "密码修改成功"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 用户接口
|
||
|
|
|
||
|
|
### 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@example.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://example.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://example.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://example.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://example.com/promotion?ref=user123",
|
||
|
|
"qr_code": "https://example.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://example.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次
|