Files
soul-yongping/开发文档/5、接口/API接口完整文档.md

641 lines
11 KiB
Markdown
Raw Permalink Normal View History

# API接口完整文档 - Soul创业实验项目
> **API风格**: RESTful | **版本**: v1.0 | **基础路径**: `/api`
> **说明**本文档已整合原《API接口》内容为项目唯一 API 参考。
**我是卡若。**
接口设计原则:**简单、清晰、易用**。
---
## 1. 接口总览
### 1.1 接口分类
| 模块 | 路径前缀 | 描述 |
|------|---------|------|
| 书籍内容 | `/api/book` | 章节列表、内容获取、同步 |
| 支付系统 | `/api/payment` | 订单创建、支付回调、状态查询 |
| 分销系统 | `/api/referral` | 邀请码、收益查询、提现 |
| 用户系统 | `/api/user` | 登录、注册、信息更新 |
| 匹配系统 | `/api/match` | 寻找匹配、匹配历史 |
| 管理后台 | `/api/admin` | 内容/订单/用户/分销管理 |
| 配置系统 | `/api/config` | 系统配置获取 |
### 1.2 认证方式
**用户认证** (可选):
```
Cookie: session_id=<session-id>
```
**管理员认证** (必需):
```
Authorization: Bearer admin-token-secret
```
---
## 2. 书籍内容API
### 2.1 获取所有章节
**接口**: `GET /api/book/all-chapters`
**请求**:
```bash
curl https://your-domain.com/api/book/all-chapters
```
**响应**:
```json
{
"success": true,
"data": [
{
"id": "part-1",
"number": "01",
"title": "真实的人",
"subtitle": "人性观察与社交逻辑",
"chapters": [
{
"id": "chapter-1",
"title": "人与人之间的底层逻辑",
"sections": [
{
"id": "1.1",
"title": "自行车荷总:一个行业做到极致是什么样",
"price": 1,
"isFree": true,
"filePath": "book/第一篇|真实的人/...",
"unlockAfterDays": 0
}
]
}
]
}
],
"total": 64
}
```
### 2.2 获取单章内容
**接口**: `GET /api/book/chapter/:id`
**请求**:
```bash
curl https://your-domain.com/api/book/chapter/1.1
```
**响应**:
```json
{
"success": true,
"data": {
"id": "1.1",
"title": "自行车荷总:一个行业做到极致是什么样",
"content": "# 章节内容...",
"chapter": "第1章人与人之间的底层逻辑",
"section": "第一篇|真实的人",
"isFree": true,
"price": 1,
"prev": null,
"next": "1.2"
}
}
```
### 2.3 同步章节
**接口**: `POST /api/book/sync`
**请求**:
```bash
curl -X POST https://your-domain.com/api/book/sync \
-H "Authorization: Bearer admin-token-secret"
```
**响应**:
```json
{
"success": true,
"message": "同步完成",
"synced": 64,
"updated": 3
}
```
---
## 3. 支付API
### 3.1 创建订单
**接口**: `POST /api/payment/create-order`
**请求**:
```bash
curl -X POST https://your-domain.com/api/payment/create-order \
-H "Content-Type: application/json" \
-d '{
"userId": "user_123",
"type": "fullbook",
"amount": 9.9,
"paymentMethod": "alipay"
}'
```
**参数**:
```typescript
{
userId: string // 用户ID
type: 'section' | 'fullbook' // 订单类型
sectionId?: string // 章节ID (章节购买时必需)
amount: number // 支付金额
paymentMethod: 'wechat' | 'alipay' | 'usdt' // 支付方式
}
```
**响应**:
```json
{
"success": true,
"data": {
"orderId": "order_1705230000000",
"amount": 9.9,
"qrCode": "https://qr.alipay.com/...",
"expireTime": "2026-01-14T11:00:00.000Z"
}
}
```
### 3.2 支付回调 - 支付宝
**接口**: `POST /api/payment/alipay/notify`
**参数** (支付宝POST):
```
out_trade_no: "order_1705230000000"
trade_status: "TRADE_SUCCESS"
total_amount: "9.90"
buyer_id: "2088xxx"
sign: "..."
```
**响应**:
```
success
```
### 3.3 支付回调 - 微信
**接口**: `POST /api/payment/wechat/notify`
**参数** (微信XML):
```xml
<xml>
<return_code>SUCCESS</return_code>
<out_trade_no>order_1705230000000</out_trade_no>
<total_fee>990</total_fee>
</xml>
```
**响应**:
```xml
<xml>
<return_code>SUCCESS</return_code>
<return_msg>OK</return_msg>
</xml>
```
### 3.4 验证支付状态
**接口**: `GET /api/payment/verify?orderId={orderId}`
**请求**:
```bash
curl "https://your-domain.com/api/payment/verify?orderId=order_123"
```
**响应**:
```json
{
"success": true,
"data": {
"orderId": "order_123",
"status": "completed",
"paidAt": "2026-01-14T10:30:00.000Z"
}
}
```
---
## 4. 分销API
### 4.1 获取邀请码
**接口**: `GET /api/referral/code`
**认证**: 需要用户登录
**请求**:
```bash
curl https://your-domain.com/api/referral/code \
-H "Cookie: session_id=xxx"
```
**响应**:
```json
{
"success": true,
"data": {
"code": "REF1705230",
"url": "https://your-domain.com?ref=REF1705230"
}
}
```
### 4.2 绑定推荐关系
**接口**: `POST /api/referral/bind`
**请求**:
```bash
curl -X POST https://your-domain.com/api/referral/bind \
-H "Content-Type: application/json" \
-d '{
"userId": "user_123",
"referralCode": "REF1705229"
}'
```
**响应**:
```json
{
"success": true,
"message": "绑定成功"
}
```
### 4.3 查询收益
**接口**: `GET /api/referral/earnings`
**认证**: 需要用户登录
**请求**:
```bash
curl https://your-domain.com/api/referral/earnings \
-H "Cookie: session_id=xxx"
```
**响应**:
```json
{
"success": true,
"data": {
"total": 89.10,
"pending": 35.64,
"withdrawn": 53.46,
"referralCount": 10,
"recentOrders": [
{
"userId": "user_456",
"amount": 9.9,
"earnings": 8.91,
"createdAt": "2026-01-14T10:00:00.000Z"
}
]
}
}
```
### 4.4 申请提现
**接口**: `POST /api/referral/withdraw`
**认证**: 需要用户登录
**请求**:
```bash
curl -X POST https://your-domain.com/api/referral/withdraw \
-H "Content-Type: application/json" \
-H "Cookie: session_id=xxx" \
-d '{
"amount": 50,
"method": "alipay",
"account": "13800138000",
"name": "王**"
}'
```
**响应**:
```json
{
"success": true,
"data": {
"withdrawalId": "wd_123",
"amount": 50,
"status": "pending",
"estimatedTime": "1-3个工作日"
}
}
```
---
## 5. 用户API
### 5.1 登录
**接口**: `POST /api/user/login`
**请求**:
```bash
curl -X POST https://your-domain.com/api/user/login \
-H "Content-Type: application/json" \
-d '{
"phone": "13800138000",
"code": "123456"
}'
```
**响应**:
```json
{
"success": true,
"data": {
"user": {
"id": "user_123",
"phone": "****8000",
"nickname": "创业者小王",
"hasFullBook": false
},
"token": "session_token_xxx"
}
}
```
### 5.2 注册
**接口**: `POST /api/user/register`
**请求**:
```bash
curl -X POST https://your-domain.com/api/user/register \
-H "Content-Type: application/json" \
-d '{
"phone": "13800138000",
"nickname": "创业者小王",
"referralCode": "REF1705229"
}'
```
**响应**:
```json
{
"success": true,
"data": {
"user": {
"id": "user_1705230000000",
"phone": "****8000",
"nickname": "创业者小王",
"referralCode": "REF1705230"
},
"token": "session_token_xxx"
}
}
```
---
## 6. 匹配API
### 6.1 寻找匹配
**接口**: `POST /api/match/find`
**认证**: 需要用户登录
**请求**:
```bash
curl -X POST https://your-domain.com/api/match/find \
-H "Content-Type: application/json" \
-H "Cookie: session_id=xxx" \
-d '{
"mbti": "INTP",
"interests": ["私域运营", "内容创业"]
}'
```
**响应**:
```json
{
"success": true,
"data": {
"matchId": "match_123",
"user": {
"nickname": "创业者小李",
"mbti": "ENTJ",
"interests": ["私域运营", "供应链"],
"matchRate": 85
},
"commonInterests": ["私域运营"]
}
}
```
### 6.2 匹配历史
**接口**: `GET /api/match/history`
**认证**: 需要用户登录
**响应**:
```json
{
"success": true,
"data": [
{
"matchId": "match_123",
"nickname": "创业者小李",
"matchRate": 85,
"createdAt": "2026-01-14T10:00:00.000Z"
}
]
}
```
---
## 7. 管理后台API
### 7.1 概览数据
**接口**: `GET /api/admin`
**认证**: 管理员Token
**响应**:
```json
{
"success": true,
"data": {
"content": {
"totalChapters": 65,
"totalWords": 120000,
"publishedChapters": 60,
"draftChapters": 5
},
"payment": {
"totalRevenue": 12800.50,
"todayRevenue": 560.00,
"totalOrders": 128,
"todayOrders": 12
},
"referral": {
"totalReferrers": 45,
"activeReferrers": 28,
"totalCommission": 11520.45
},
"users": {
"totalUsers": 1200,
"purchasedUsers": 128,
"activeUsers": 456
}
}
}
```
### 7.2 内容管理
**接口**: `GET /api/admin/content`
**接口**: `POST /api/admin/content` - 创建
**接口**: `PUT /api/admin/content/:id` - 更新
**接口**: `DELETE /api/admin/content/:id` - 删除
### 7.3 订单管理
**接口**: `GET /api/admin/payment?status=completed&page=1&limit=20`
**响应**:
```json
{
"success": true,
"data": {
"orders": [
{
"id": "order_123",
"userId": "user_123",
"amount": 9.9,
"status": "completed",
"createdAt": "2026-01-14T10:00:00.000Z"
}
],
"total": 128,
"page": 1,
"limit": 20
}
}
```
---
## 8. 错误码规范
### 8.1 HTTP状态码
| 状态码 | 含义 | 使用场景 |
|--------|------|----------|
| 200 | 成功 | 请求成功 |
| 201 | 创建成功 | 资源创建成功 |
| 400 | 请求错误 | 参数错误 |
| 401 | 未授权 | 需要登录 |
| 403 | 禁止访问 | 权限不足 |
| 404 | 未找到 | 资源不存在 |
| 500 | 服务器错误 | 内部错误 |
### 8.2 业务错误码
```typescript
enum ErrorCode {
// 用户相关
USER_NOT_FOUND = 1001,
USER_ALREADY_EXISTS = 1002,
INVALID_PHONE = 1003,
INVALID_CODE = 1004,
// 支付相关
ORDER_NOT_FOUND = 2001,
PAYMENT_FAILED = 2002,
INSUFFICIENT_BALANCE = 2003,
// 分销相关
INVALID_REFERRAL_CODE = 3001,
WITHDRAWAL_FAILED = 3002,
INSUFFICIENT_EARNINGS = 3003,
// 内容相关
CHAPTER_NOT_FOUND = 4001,
CHAPTER_NOT_PURCHASED = 4002,
}
```
**错误响应格式**:
```json
{
"success": false,
"error": {
"code": 1001,
"message": "用户不存在",
"details": "用户ID: user_123"
}
}
```
---
## 9. 接口性能优化
### 9.1 缓存策略
**内容缓存**:
```typescript
// 章节内容缓存1小时
res.setHeader('Cache-Control', 'public, max-age=3600')
// 章节列表缓存10分钟
res.setHeader('Cache-Control', 'public, max-age=600')
```
**ETag**:
```typescript
const etag = generateETag(content)
res.setHeader('ETag', etag)
if (req.headers['if-none-match'] === etag) {
return res.status(304).end()
}
```
### 9.2 限流策略
```typescript
// 接口限流: 100次/分钟
const limiter = {
'/api/book/all-chapters': { limit: 100, window: 60 },
'/api/payment/create-order': { limit: 10, window: 60 },
'/api/admin/*': { limit: 1000, window: 60 }
}
```
---
**总结**: API设计遵循RESTful规范,响应格式统一,错误处理清晰。所有接口都有明确的认证要求和错误处理。核心功能包括内容获取、支付流程、分销系统、用户管理、匹配功能。