Files
soul-yongping/开发文档/5、接口/API接口完整文档.md
2026-03-07 22:58:43 +08:00

641 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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规范,响应格式统一,错误处理清晰。所有接口都有明确的认证要求和错误处理。核心功能包括内容获取、支付流程、分销系统、用户管理、匹配功能。