本文档引用的文件
分享功能模块为AI有声书平台提供了完整的社交分享解决方案。该模块支持多种分享方式,包括分享卡片生成、二维码生成和用户行为追踪,旨在提升用户参与度和内容传播效果。
主要功能特性:
分享功能模块采用标准的三层架构设计:
graph TB
subgraph "前端层"
H5[H5页面]
App[App端]
小程序[小程序端]
end
subgraph "API层"
Router[路由控制器]
Auth[认证中间件]
RateLimiter[限流中间件]
end
subgraph "业务逻辑层"
ShareController[分享控制器]
ShareService[分享服务]
end
subgraph "数据访问层"
Prisma[Prisma ORM]
Database[(MySQL数据库)]
end
H5 --> Router
App --> Router
小程序 --> Router
Router --> Auth
Router --> RateLimiter
Router --> ShareController
ShareController --> ShareService
ShareService --> Prisma
Prisma --> Database
图表来源
章节来源
分享控制器负责处理所有与分享相关的HTTP请求,提供三个核心API接口:
GET /api/share/card/:audioId)GET /api/share/qrcode/:audioId)POST /api/share/track)每个接口都经过严格的参数验证和错误处理,确保系统的稳定性和安全性。
分享服务是业务逻辑的核心实现,包含以下关键功能:
章节来源
分享功能的整体架构采用分层设计,确保了良好的可维护性和扩展性:
sequenceDiagram
participant Client as 客户端
participant Router as 路由器
participant Middleware as 中间件
participant Controller as 控制器
participant Service as 服务层
participant Database as 数据库
Client->>Router : 发送分享请求
Router->>Middleware : 应用认证和限流中间件
Middleware->>Controller : 转发请求
Controller->>Service : 调用业务逻辑
Service->>Database : 查询数据
Database-->>Service : 返回结果
Service-->>Controller : 处理后的数据
Controller-->>Client : 响应结果
Note over Client,Database : 完整的分享流程
图表来源
分享卡片是用户分享内容时展示的主要信息载体,包含以下关键元素:
| 字段名 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| title | string | 分享标题 | "AI有声书 - 第3章 神秘的森林" |
| description | string | 内容描述 | "在神秘的森林中,主人公发现了一个古老的秘密..." |
| imageUrl | object | 封面图片配置 | {type: 'gradient', colors: ['#4f46e5', '#818cf8'], icon: '🎵'} |
| link | string | 分享链接 | "http://localhost:3000/#/pages/player/index?id=123" |
| chapterId | number | 章节ID | 123 |
| wordCount | number | 字数统计 | 1500 |
| audioDuration | number | 音频时长 | 1800 |
分享卡片的视觉设计采用渐变色彩方案,提供统一的品牌视觉体验:
graph LR
subgraph "渐变配置"
A[主色调: #4f46e5]
B[辅色调: #818cf8]
C[渐变效果]
end
subgraph "图标设置"
D[音乐符号: 🎵]
E[圆形边框]
F[居中对齐]
end
A --> C
B --> C
D --> E
E --> F
图表来源
描述内容的生成遵循以下优先级规则:
章节来源
二维码生成功能为用户提供便捷的分享方式,支持多种扫描设备:
| 属性 | 类型 | 描述 | 示例 |
|---|---|---|---|
| text | string | 二维码包含的文本数据 | "http://localhost:3000/#/pages/player/index?id=123" |
| format | string | 二维码格式 | "text" |
| size | number | 图像尺寸 | 200 |
flowchart TD
Start([开始生成]) --> Validate["验证章节ID"]
Validate --> Valid{"ID有效?"}
Valid --> |否| Error["返回错误"]
Valid --> |是| GetLink["获取分享链接"]
GetLink --> CreateQR["创建二维码数据"]
CreateQR --> Return["返回结果"]
Error --> End([结束])
Return --> End
图表来源
章节来源
分享行为追踪系统记录用户的所有分享活动,为后续的数据分析和奖励机制提供支持。
| 字段名 | 类型 | 描述 | 示例值 |
|---|---|---|---|
| userId | string | 用户ID | "user_001" |
| audioId | string | 音频ID | "audio_123" |
| platform | string | 分享平台 | "wechat" |
| timestamp | number | 分享时间戳 | 1640995200000 |
| userAgent | string | 用户代理信息 | "Mozilla/5.0..." |
sequenceDiagram
participant Client as 客户端
participant API as API接口
participant Auth as 认证中间件
participant Service as 分享服务
participant Logger as 日志系统
Client->>API : POST /api/share/track
API->>Auth : 验证用户身份
Auth->>Service : 调用trackShare方法
Service->>Logger : 记录分享日志
Logger-->>Service : 确认记录
Service-->>API : 返回成功
API-->>Client : 响应结果
图表来源
章节来源
不同社交平台有不同的分享参数要求和链接格式:
| 参数名 | 类型 | 必需 | 描述 | 示例值 |
|---|---|---|---|---|
| title | string | 是 | 分享标题 | "AI有声书精彩章节" |
| desc | string | 是 | 分享描述 | "推荐您收听这个精彩内容" |
| link | string | 是 | 分享链接 | "http://example.com/audio/123" |
| imgUrl | string | 是 | 缩略图URL | "http://example.com/image.jpg" |
| 参数名 | 类型 | 必需 | 描述 | 示例值 |
|---|---|---|---|---|
| url | string | 是 | 分享链接 | "http://example.com/audio/123" |
| title | string | 否 | 分享标题 | "AI有声书" |
| pic | string | 否 | 图片URL | "http://example.com/image.jpg" |
| appkey | string | 否 | 应用标识 | "123456789" |
| 参数名 | 类型 | 必需 | 描述 | 示例值 |
|---|---|---|---|---|
| url | string | 是 | 分享链接 | "http://example.com/audio/123" |
| title | string | 否 | 分享标题 | "AI有声书" |
| desc | string | 否 | 分享描述 | "精彩内容推荐" |
| summary | string | 否 | 内容摘要 | "详细内容描述" |
| site | string | 否 | 来源网站 | "AI有声书" |
| pics | string | 否 | 图片URL | "http://example.com/image.jpg" |
分享统计功能提供实时的分享数据分析,帮助运营团队了解内容传播效果。
| 指标名称 | 描述 | 计算方式 | 更新频率 |
|---|---|---|---|
| 分享次数 | 总分享数量 | COUNT(*) | 实时 |
| 平台分布 | 各平台分享占比 | GROUP BY platform | 实时 |
| 时段分析 | 不同时段分享趋势 | GROUP BY HOUR(timestamp) | 实时 |
| 内容热度 | 热门内容排行 | COUNT(*) ORDER BY DESC | 实时 |
| 用户活跃度 | 分享用户统计 | DISTINCT user_id | 实时 |
erDiagram
SHARE_ACTIVITY {
string id PK
string user_id
string audio_id
string platform
timestamp created_at
string ip_address
string user_agent
}
AUDIO_CONTENT {
int id PK
string title
int chapter_number
int book_id
int total_shares
int shares_today
timestamp last_shared_at
}
USER_PROFILE {
string id PK
string username
int share_count
int reward_points
timestamp created_at
}
SHARE_ACTIVITY }o--|| AUDIO_CONTENT : "关联"
SHARE_ACTIVITY }o--|| USER_PROFILE : "关联"
图表来源
分享功能模块的依赖关系清晰明确,遵循单一职责原则:
graph TB
subgraph "外部依赖"
JWT[jsonwebtoken]
UUID[uuid]
Prisma[@prisma/client]
end
subgraph "内部模块"
AuthMiddleware[认证中间件]
RateLimiter[限流中间件]
Security[安全中间件]
ErrorHandler[错误处理]
end
subgraph "核心模块"
ShareController[分享控制器]
ShareService[分享服务]
PrismaClient[Prisma客户端]
end
JWT --> AuthMiddleware
UUID --> ShareService
Prisma --> PrismaClient
AuthMiddleware --> ShareController
RateLimiter --> ShareController
Security --> ShareController
ErrorHandler --> ShareController
PrismaClient --> ShareService
ShareController --> ShareService
ShareService --> PrismaClient
图表来源
分享功能实现了多层次的安全防护和防刷机制:
系统支持可选的认证机制,开发环境下默认跳过认证:
flowchart TD
Start([请求到达]) --> CheckAuth{"是否启用认证?"}
CheckAuth --> |否| TestUser["使用测试用户"]
CheckAuth --> |是| CheckHeader["检查Authorization头"]
CheckHeader --> HeaderValid{"格式正确?"}
HeaderValid --> |否| AuthError["认证失败"]
HeaderValid --> |是| VerifyToken["验证JWT令牌"]
VerifyToken --> TokenValid{"令牌有效?"}
TokenValid --> |否| TokenError["令牌无效"]
TokenValid --> |是| SetUser["设置用户信息"]
TestUser --> SetUser
SetUser --> Next["继续处理"]
AuthError --> End([结束])
TokenError --> End
Next --> End
图表来源
系统采用灵活的限流策略,防止恶意刷量:
| 限流类型 | 配置参数 | 说明 |
|---|---|---|
| 全局限流 | 100次/分钟 | 防止整体系统过载 |
| 登录限流 | 5次/分钟 | 防止暴力破解 |
| 验证码限流 | 1次/分钟 | 防止短信轰炸 |
| TTS生成限流 | 20次/分钟 | 根据用户等级调整 |
| 文件上传限流 | 10次/分钟 | 防止大量文件上传 |
章节来源
分享功能在设计时充分考虑了性能优化:
问题症状:用户点击分享链接后无法正常播放音频
可能原因:
解决步骤:
问题症状:分享卡片显示空白或内容不完整
可能原因:
解决步骤:
问题症状:用户分享后统计数据不更新
可能原因:
解决步骤:
章节来源
分享功能模块为AI有声书平台提供了完整、安全、高效的社交分享解决方案。通过精心设计的架构和完善的防护机制,该模块能够满足各种复杂的业务需求。
该分享功能模块为平台的增长和用户参与度提升奠定了坚实的基础,是AI有声书生态系统中不可或缺的重要组成部分。