chore: push latest changes
This commit is contained in:
182
.trae/documents/aiqiyi_video_app_prd.md
Normal file
182
.trae/documents/aiqiyi_video_app_prd.md
Normal file
@@ -0,0 +1,182 @@
|
||||
## 1. 产品概述
|
||||
|
||||
一款集短视频、长视频、音乐、小说于一体的综合娱乐平台应用,为用户提供多元化的数字娱乐体验。通过智能推荐算法,为用户推送个性化内容,打造一站式娱乐消费场景。
|
||||
|
||||
- 解决用户多平台切换的痛点,提供统一的娱乐内容消费体验
|
||||
- 目标用户群体:15-45岁的移动互联网用户,涵盖娱乐内容消费者
|
||||
- 通过内容生态整合,提升用户粘性和平台价值
|
||||
|
||||
## 2. 核心功能
|
||||
|
||||
### 2.1 用户角色
|
||||
|
||||
| 角色 | 注册方式 | 核心权限 |
|
||||
|------|----------|----------|
|
||||
| 游客用户 | 无需注册 | 浏览部分内容,基础播放功能 |
|
||||
| 注册用户 | 手机号/第三方登录 | 完整播放权限,收藏评论,个人中心 |
|
||||
| VIP会员 | 付费订阅 | 无广告观看,独家内容,高清播放 |
|
||||
| 内容创作者 | 实名认证申请 | 发布内容,获得收益,数据分析 |
|
||||
|
||||
### 2.2 功能模块
|
||||
|
||||
本产品包含以下主要功能页面:
|
||||
|
||||
1. **首页**:个性化推荐内容聚合,分类导航入口
|
||||
2. **短视频**:沉浸式竖屏短视频体验,支持滑动切换
|
||||
3. **长视频**:电影、电视剧、综艺等长视频内容浏览
|
||||
4. **音乐**:在线音乐播放,歌单管理,歌词同步
|
||||
5. **小说**:电子书阅读,书架管理,分类浏览
|
||||
6. **个人中心**:用户信息,观看历史,设置管理
|
||||
7. **搜索**:全局内容搜索,智能联想
|
||||
8. **播放页**:视频/音乐播放器,支持多种播放模式
|
||||
9. **详情页**:内容详细介绍,相关推荐
|
||||
10. **书架/收藏**:用户收藏的内容管理
|
||||
|
||||
### 2.3 页面详情
|
||||
|
||||
| 页面名称 | 模块名称 | 功能描述 |
|
||||
|----------|----------|----------|
|
||||
| 首页 | 推荐流 | 基于算法推荐个性化内容,支持下拉刷新 |
|
||||
| 首页 | 分类导航 | 影视、音乐、小说等分类入口,图标展示 |
|
||||
| 首页 | 搜索栏 | 顶部搜索框,支持语音输入和热门搜索 |
|
||||
| 短视频 | 视频播放器 | 全屏竖屏播放,支持手势控制音量亮度 |
|
||||
| 短视频 | 互动操作 | 点赞、评论、分享、关注创作者 |
|
||||
| 短视频 | 视频流 | 上下滑动切换视频,预加载机制 |
|
||||
| 长视频 | 分类筛选 | 按类型、地区、年份等维度筛选内容 |
|
||||
| 长视频 | 排行榜 | 热播榜、新上架、评分榜等多维度排行 |
|
||||
| 长视频 | 详情展示 | 剧集信息、演员表、剧情简介、评分 |
|
||||
| 音乐 | 播放器 | 底部悬浮播放器,支持后台播放 |
|
||||
| 音乐 | 歌单管理 | 创建、编辑、分享个人歌单 |
|
||||
| 音乐 | 歌词显示 | 实时歌词同步,支持歌词翻译 |
|
||||
| 小说 | 阅读器 | 仿真翻页效果,字体背景自定义 |
|
||||
| 小说 | 书架管理 | 分类整理,阅读进度同步 |
|
||||
| 小说 | 目录导航 | 章节列表,快速跳转,书签功能 |
|
||||
| 个人中心 | 用户信息 | 头像、昵称、会员状态展示 |
|
||||
| 个人中心 | 观看历史 | 跨设备同步,按时间分类展示 |
|
||||
| 个人中心 | 设置管理 | 播放设置、通知设置、隐私设置 |
|
||||
| 搜索 | 智能联想 | 输入时实时联想,热门搜索推荐 |
|
||||
| 搜索 | 结果分类 | 按内容类型分类展示搜索结果 |
|
||||
| 播放页 | 播放控制 | 播放/暂停、快进快退、倍速播放 |
|
||||
| 播放页 | 画质选择 | 自动/高清/标清等多档画质切换 |
|
||||
| 详情页 | 内容展示 | 详细介绍、演员信息、用户评分 |
|
||||
| 详情页 | 相关推荐 | 基于内容相似度的推荐 |
|
||||
|
||||
## 3. 核心流程
|
||||
|
||||
### 3.1 用户浏览流程
|
||||
用户打开App → 进入首页推荐流 → 选择感兴趣的内容 → 进入详情页 → 点击播放 → 观看内容 → 互动操作(点赞/评论/分享) → 返回继续浏览
|
||||
|
||||
### 3.2 短视频消费流程
|
||||
进入短视频tab → 自动播放推荐视频 → 上下滑动切换 → 点赞评论互动 → 关注创作者 → 分享视频
|
||||
|
||||
### 3.3 长视频观看流程
|
||||
浏览分类/搜索 → 选择影片 → 查看详情 → 选择剧集 → 播放观看 → 调整画质 → 添加收藏 → 继续观看其他内容
|
||||
|
||||
### 3.4 音乐播放流程
|
||||
进入音乐tab → 浏览歌单/排行榜 → 选择歌曲 → 播放音乐 → 查看歌词 → 添加收藏 → 创建歌单
|
||||
|
||||
### 3.5 小说阅读流程
|
||||
进入小说tab → 浏览分类/排行榜 → 选择小说 → 查看详情 → 开始阅读 → 调整设置 → 加入书架 → 继续阅读
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[启动App] --> B{用户状态}
|
||||
B -->|游客| C[浏览部分内容]
|
||||
B -->|注册用户| D[完整体验]
|
||||
B -->|VIP用户| E[无广告+独家内容]
|
||||
|
||||
C --> F[引导注册]
|
||||
D --> G[个性化推荐]
|
||||
E --> G
|
||||
|
||||
G --> H[底部导航]
|
||||
H --> I[首页]
|
||||
H --> J[短视频]
|
||||
H --> K[长视频]
|
||||
H --> L[音乐]
|
||||
H --> M[小说]
|
||||
H --> N[我的]
|
||||
|
||||
I --> O[内容消费]
|
||||
J --> P[短视频播放]
|
||||
K --> Q[长视频播放]
|
||||
L --> R[音乐播放]
|
||||
M --> S[小说阅读]
|
||||
N --> T[个人管理]
|
||||
```
|
||||
|
||||
## 4. 用户界面设计
|
||||
|
||||
### 4.1 设计风格
|
||||
|
||||
- **主色调**:深紫色渐变(#6B46C1 → #9333EA),营造高端娱乐氛围
|
||||
- **辅助色**:暖橙色(#F97316)用于强调,深灰色(#1F2937)用于背景
|
||||
- **按钮样式**:圆角矩形,3D悬浮效果,点击有按压反馈
|
||||
- **字体方案**:主标题使用思源黑体,正文使用苹方/思源黑体,字号14-18px
|
||||
- **布局风格**:卡片式布局,圆角设计,阴影效果,层次分明
|
||||
- **图标风格**:线性图标为主,选中状态填充,符合现代设计趋势
|
||||
- **动画效果**:页面切换使用淡入淡出,按钮点击有缩放效果,加载使用骨架屏
|
||||
|
||||
### 4.2 页面设计概述
|
||||
|
||||
| 页面名称 | 模块名称 | UI设计说明 |
|
||||
|----------|----------|------------|
|
||||
| 首页 | 顶部导航 | 渐变紫色背景,搜索框居中,右侧消息和个人头像 |
|
||||
| 首页 | 推荐流 | 两列瀑布流布局,卡片圆角8px,阴影深度2px |
|
||||
| 首页 | 分类导航 | 圆形图标+文字,4×2网格布局,图标使用线性风格 |
|
||||
| 短视频 | 播放界面 | 全屏竖屏,底部操作栏半透明,右侧互动按钮垂直排列 |
|
||||
| 短视频 | 用户资料 | 头像圆形边框,用户名白色,关注按钮橙色高亮 |
|
||||
| 长视频 | 分类标签 | 横向滚动标签,选中状态紫色背景,圆角20px |
|
||||
| 长视频 | 海报展示 | 16:9比例海报,悬停效果,评分标签右上角 |
|
||||
| 音乐 | 播放器 | 底部悬浮条,专辑封面圆形,进度条渐变紫色 |
|
||||
| 音乐 | 歌单列表 | 左侧封面+右侧信息,分割线浅灰色,悬停背景色 |
|
||||
| 小说 | 阅读器 | 仿真纸张背景,护眼模式,字体大小可调节 |
|
||||
| 小说 | 书架 | 网格布局,书籍封面3D效果,阅读进度条 |
|
||||
| 个人中心 | 用户信息 | 顶部大图背景,头像圆形重叠,渐变遮罩 |
|
||||
| 个人中心 | 功能列表 | 图标+文字+箭头,分组标题,分割线设计 |
|
||||
| 搜索 | 搜索框 | 圆角输入框,语音图标,历史记录标签云 |
|
||||
| 搜索 | 结果页 | Tab切换+卡片列表,加载更多按钮 |
|
||||
|
||||
### 4.3 响应式设计
|
||||
|
||||
- **移动端优先**:基于375px宽度设计,向上适配各种屏幕尺寸
|
||||
- **平板适配**:横屏时采用双列布局,充分利用屏幕空间
|
||||
- **手势优化**:支持滑动、捏合、长按等手势操作
|
||||
- **横竖屏切换**:视频播放自动适配横竖屏,保持最佳观看体验
|
||||
- **暗黑模式**:支持系统主题切换,护眼模式自动调节
|
||||
- **字体缩放**:支持系统字体大小设置,保证可读性
|
||||
|
||||
### 4.4 交互体验
|
||||
|
||||
- **加载体验**:骨架屏预加载,减少等待焦虑
|
||||
- **反馈机制**:操作即时反馈,toast提示,震动反馈
|
||||
- **导航体验**:底部导航固定,手势返回,面包屑导航
|
||||
- **搜索体验**:实时联想,搜索历史,热门推荐
|
||||
- **播放体验**:断点续播,后台播放,画中画模式
|
||||
- **阅读体验**:仿真翻页,护眼模式,字体调节
|
||||
|
||||
## 5. 技术实现
|
||||
|
||||
### 5.1 开发框架
|
||||
|
||||
- **跨平台方案**:uniapp-x,一套代码多端运行
|
||||
- **支持平台**:iOS、Android、微信小程序、H5
|
||||
- **状态管理**:Vuex/Pinia,统一管理应用状态
|
||||
- **网络请求**:uni.request封装,支持拦截器
|
||||
- **本地存储**:uni.storage,支持同步异步
|
||||
|
||||
### 5.2 性能优化
|
||||
|
||||
- **图片优化**:懒加载,WebP格式,CDN加速
|
||||
- **视频优化**:预加载策略,清晰度自适应,缓存机制
|
||||
- **包体积优化**:按需加载,代码分割,资源压缩
|
||||
- **内存优化**:页面销毁,资源释放,缓存清理
|
||||
- **网络优化**:请求合并,缓存策略,弱网适配
|
||||
|
||||
### 5.3 用户体验
|
||||
|
||||
- **启动速度**:分包加载,预加载关键资源
|
||||
- **播放流畅度**:多码率适配,缓冲策略优化
|
||||
- **交互响应**:防抖节流,异步处理,骨架屏
|
||||
- **离线体验**:内容缓存,离线阅读,断网提示
|
||||
- **多端同步**:观看进度,收藏列表,阅读书签
|
||||
549
.trae/documents/aiqiyi_video_app_technical_architecture.md
Normal file
549
.trae/documents/aiqiyi_video_app_technical_architecture.md
Normal file
@@ -0,0 +1,549 @@
|
||||
## 1. 架构设计
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[用户设备] --> B[uniapp-x跨平台应用]
|
||||
B --> C[微信小程序]
|
||||
B --> D[iOS App]
|
||||
B --> E[Android App]
|
||||
B --> F[H5 Web]
|
||||
|
||||
C --> G[微信API]
|
||||
D --> H[iOS原生API]
|
||||
E --> I[Android原生API]
|
||||
F --> J[浏览器API]
|
||||
|
||||
G --> K[业务服务层]
|
||||
H --> K
|
||||
I --> K
|
||||
J --> K
|
||||
|
||||
K --> L[内容分发网络CDN]
|
||||
K --> M[后端API服务]
|
||||
K --> N[实时通信服务]
|
||||
|
||||
M --> O[(数据库)]
|
||||
M --> P[(Redis缓存)]
|
||||
M --> Q[(对象存储)]
|
||||
|
||||
subgraph "前端层"
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
end
|
||||
|
||||
subgraph "平台适配层"
|
||||
G
|
||||
H
|
||||
I
|
||||
J
|
||||
end
|
||||
|
||||
subgraph "服务层"
|
||||
K
|
||||
L
|
||||
M
|
||||
N
|
||||
O
|
||||
P
|
||||
Q
|
||||
end
|
||||
```
|
||||
|
||||
## 2. 技术描述
|
||||
|
||||
### 前端技术栈
|
||||
|
||||
* **跨平台框架**: uniapp-x (Vue3 + TypeScript)
|
||||
|
||||
* **状态管理**: Pinia (替代Vuex)
|
||||
|
||||
* **UI组件库**: uView-plus (uniapp生态组件库)
|
||||
|
||||
* **构建工具**: Vite (开发环境) + Webpack (生产环境)
|
||||
|
||||
* **样式方案**: SCSS + CSS变量 + Flex布局
|
||||
|
||||
* **图标方案**: iconfont + 本地SVG图标
|
||||
|
||||
* **动画库**: CSS3动画 + uni.createAnimation API
|
||||
|
||||
### 后端技术栈
|
||||
|
||||
* **API服务**: Node.js + Express/Koa2
|
||||
|
||||
* **数据库**: MySQL 8.0 (主数据库)
|
||||
|
||||
* **缓存**: Redis 6.0 (会话缓存 + 热点数据)
|
||||
|
||||
* **文件存储**: 阿里云OSS / 腾讯云COS
|
||||
|
||||
* **CDN加速**: 阿里云CDN / 腾讯云CDN
|
||||
|
||||
* **实时通信**: WebSocket + Socket.io
|
||||
|
||||
* **消息队列**: Redis Pub/Sub (轻量级)
|
||||
|
||||
### 第三方服务
|
||||
|
||||
* **视频服务**: 腾讯云点播 / 阿里云视频点播
|
||||
|
||||
* **音频服务**: 腾讯云音视频 / 网易云信
|
||||
|
||||
* **推送服务**: 个推 / 极光推送
|
||||
|
||||
* **登录认证**: 微信登录 + 手机号验证码
|
||||
|
||||
* **支付服务**: 微信支付 + 支付宝支付
|
||||
|
||||
## 3. 路由定义
|
||||
|
||||
### 底部导航路由
|
||||
|
||||
| 路由路径 | 页面名称 | 功能描述 |
|
||||
| ------------------------------ | ---- | ------------- |
|
||||
| /pages/index/index | 首页 | 推荐内容聚合,个性化内容流 |
|
||||
| /pages/short-video/short-video | 短视频 | 沉浸式竖屏短视频播放 |
|
||||
| /pages/long-video/long-video | 长视频 | 影视综等长视频内容分类 |
|
||||
| /pages/music/music | 音乐 | 在线音乐播放和歌单管理 |
|
||||
| /pages/novel/novel | 小说 | 电子书阅读和书架管理 |
|
||||
| /pages/profile/profile | 我的 | 个人中心和相关设置 |
|
||||
|
||||
### 功能页面路由
|
||||
|
||||
| 路由路径 | 页面名称 | 功能描述 |
|
||||
| -------------------------- | ---- | ----------- |
|
||||
| /pages/search/search | 搜索页 | 全局内容搜索和智能联想 |
|
||||
| /pages/player/player | 播放器 | 视频/音乐播放控制页面 |
|
||||
| /pages/detail/detail | 详情页 | 内容详细信息展示 |
|
||||
| /pages/category/category | 分类页 | 内容分类筛选和浏览 |
|
||||
| /pages/reader/reader | 阅读器 | 小说阅读界面 |
|
||||
| /pages/bookshelf/bookshelf | 书架 | 用户收藏的小说管理 |
|
||||
| /pages/history/history | 历史记录 | 观看/收听/阅读历史 |
|
||||
| /pages/settings/settings | 设置页 | 应用设置和偏好配置 |
|
||||
| /pages/login/login | 登录页 | 用户登录和注册 |
|
||||
| /pages/vip/vip | 会员页 | VIP会员开通和管理 |
|
||||
|
||||
### 子页面路由
|
||||
|
||||
| 路由路径 | 页面名称 | 功能描述 |
|
||||
| --------------------------- | ---- | -------- |
|
||||
| /pages/profile/edit-profile | 编辑资料 | 用户个人信息编辑 |
|
||||
| /pages/profile/favorites | 我的收藏 | 收藏内容管理 |
|
||||
| /pages/profile/download | 离线下载 | 离线内容管理 |
|
||||
| /pages/music/playlist | 歌单详情 | 音乐歌单详细页面 |
|
||||
| /pages/long-video/series | 剧集列表 | 电视剧分集选择 |
|
||||
| /pages/short-video/upload | 上传视频 | 短视频上传发布 |
|
||||
|
||||
## 4. API定义
|
||||
|
||||
### 4.1 用户认证相关API
|
||||
|
||||
#### 用户登录
|
||||
|
||||
```
|
||||
POST /api/auth/login
|
||||
```
|
||||
|
||||
请求参数:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
| -------- | ------ | -- | -------------------------- |
|
||||
| mobile | string | 是 | 手机号 |
|
||||
| code | string | 是 | 短信验证码 |
|
||||
| platform | string | 是 | 平台类型:wechat/ios/android/h5 |
|
||||
|
||||
响应示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "登录成功",
|
||||
"data": {
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"userInfo": {
|
||||
"userId": "123456",
|
||||
"nickname": "用户昵称",
|
||||
"avatar": "https://example.com/avatar.jpg",
|
||||
"vipLevel": 1,
|
||||
"expireTime": "2024-12-31 23:59:59"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 获取验证码
|
||||
|
||||
```
|
||||
POST /api/auth/sendCode
|
||||
```
|
||||
|
||||
请求参数:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
| ------ | ------ | -- | -------------------- |
|
||||
| mobile | string | 是 | 手机号 |
|
||||
| type | string | 是 | 验证码类型:login/register |
|
||||
|
||||
### 4.2 内容相关API
|
||||
|
||||
#### 获取首页推荐内容
|
||||
|
||||
```
|
||||
GET /api/content/recommend
|
||||
```
|
||||
|
||||
请求参数:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
| ----------- | ------ | -- | -------------------------- |
|
||||
| page | number | 否 | 页码,默认1 |
|
||||
| pageSize | number | 否 | 每页数量,默认20 |
|
||||
| contentType | string | 否 | 内容类型:all/video/music/novel |
|
||||
|
||||
#### 获取短视频列表
|
||||
|
||||
```
|
||||
GET /api/short-video/list
|
||||
```
|
||||
|
||||
请求参数:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
| -------- | ------ | -- | --------- |
|
||||
| lastId | string | 否 | 最后一条视频ID |
|
||||
| count | number | 否 | 获取数量,默认10 |
|
||||
| category | string | 否 | 视频分类 |
|
||||
|
||||
#### 获取长视频分类
|
||||
|
||||
```
|
||||
GET /api/long-video/category
|
||||
```
|
||||
|
||||
#### 获取音乐歌单
|
||||
|
||||
```
|
||||
GET /api/music/playlist
|
||||
```
|
||||
|
||||
#### 获取小说分类
|
||||
|
||||
```
|
||||
GET /api/novel/category
|
||||
```
|
||||
|
||||
### 4.3 播放相关API
|
||||
|
||||
#### 获取视频播放地址
|
||||
|
||||
```
|
||||
GET /api/player/video/url
|
||||
```
|
||||
|
||||
请求参数:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
| ------- | ------ | -- | ----------------- |
|
||||
| videoId | string | 是 | 视频ID |
|
||||
| quality | string | 否 | 清晰度:auto/hd/sd/ld |
|
||||
|
||||
#### 获取音乐播放地址
|
||||
|
||||
```
|
||||
GET /api/player/music/url
|
||||
```
|
||||
|
||||
#### 记录播放进度
|
||||
|
||||
```
|
||||
POST /api/player/progress
|
||||
```
|
||||
|
||||
### 4.4 用户行为API
|
||||
|
||||
#### 点赞/取消点赞
|
||||
|
||||
```
|
||||
POST /api/interact/like
|
||||
```
|
||||
|
||||
#### 收藏/取消收藏
|
||||
|
||||
```
|
||||
POST /api/interact/favorite
|
||||
```
|
||||
|
||||
#### 发表评论
|
||||
|
||||
```
|
||||
POST /api/interact/comment
|
||||
```
|
||||
|
||||
#### 关注/取消关注
|
||||
|
||||
```
|
||||
POST /api/interact/follow
|
||||
```
|
||||
|
||||
### 4.5 搜索相关API
|
||||
|
||||
#### 搜索建议
|
||||
|
||||
```
|
||||
GET /api/search/suggest
|
||||
```
|
||||
|
||||
#### 搜索结果
|
||||
|
||||
```
|
||||
GET /api/search/result
|
||||
```
|
||||
|
||||
## 5. 服务器架构设计
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[客户端请求] --> B[API网关层]
|
||||
B --> C[负载均衡器]
|
||||
C --> D[应用服务集群]
|
||||
|
||||
D --> E[用户服务]
|
||||
D --> F[内容服务]
|
||||
D --> G[播放服务]
|
||||
D --> H[推荐服务]
|
||||
|
||||
E --> I[(用户数据库)]
|
||||
F --> J[(内容数据库)]
|
||||
G --> K[(播放记录)]
|
||||
H --> L[(Redis缓存)]
|
||||
|
||||
D --> M[消息队列]
|
||||
M --> N[日志服务]
|
||||
M --> O[统计服务]
|
||||
|
||||
subgraph "网关层"
|
||||
B
|
||||
C
|
||||
end
|
||||
|
||||
subgraph "应用层"
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
H
|
||||
end
|
||||
|
||||
subgraph "数据层"
|
||||
I
|
||||
J
|
||||
K
|
||||
L
|
||||
end
|
||||
|
||||
subgraph "服务层"
|
||||
M
|
||||
N
|
||||
O
|
||||
end
|
||||
```
|
||||
|
||||
## 6. 数据模型
|
||||
|
||||
### 6.1 用户相关数据模型
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
USER ||--o{ USER_PROFILE : has
|
||||
USER ||--o{ USER_VIP : has
|
||||
USER ||--o{ USER_FAVORITE : has
|
||||
USER ||--o{ USER_HISTORY : has
|
||||
USER ||--o{ USER_FOLLOW : follows
|
||||
|
||||
USER {
|
||||
string userId PK
|
||||
string mobile UK
|
||||
string password
|
||||
string nickname
|
||||
string avatar
|
||||
integer status
|
||||
datetime createTime
|
||||
datetime updateTime
|
||||
}
|
||||
|
||||
USER_PROFILE {
|
||||
string userId PK
|
||||
string gender
|
||||
date birthday
|
||||
string city
|
||||
string signature
|
||||
integer level
|
||||
integer experience
|
||||
}
|
||||
|
||||
USER_VIP {
|
||||
string userId PK
|
||||
integer vipLevel
|
||||
datetime startTime
|
||||
datetime expireTime
|
||||
boolean autoRenew
|
||||
}
|
||||
|
||||
USER_FAVORITE {
|
||||
string id PK
|
||||
string userId FK
|
||||
string contentId FK
|
||||
string contentType
|
||||
datetime createTime
|
||||
}
|
||||
|
||||
USER_HISTORY {
|
||||
string id PK
|
||||
string userId FK
|
||||
string contentId FK
|
||||
string contentType
|
||||
integer progress
|
||||
datetime lastPlayTime
|
||||
}
|
||||
```
|
||||
|
||||
### 6.2 内容相关数据模型
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
CONTENT ||--o{ CONTENT_DETAIL : has
|
||||
CONTENT ||--o{ CONTENT_TAG : has
|
||||
CONTENT ||--o{ CONTENT_STAT : has
|
||||
CONTENT ||--o{ COMMENT : has
|
||||
|
||||
CONTENT {
|
||||
string contentId PK
|
||||
string title
|
||||
string cover
|
||||
string contentType
|
||||
string category
|
||||
integer duration
|
||||
string tags
|
||||
integer status
|
||||
datetime publishTime
|
||||
}
|
||||
|
||||
CONTENT_DETAIL {
|
||||
string contentId PK
|
||||
string description
|
||||
string director
|
||||
string actors
|
||||
string area
|
||||
integer year
|
||||
float rating
|
||||
integer episodeCount
|
||||
}
|
||||
|
||||
CONTENT_TAG {
|
||||
string id PK
|
||||
string contentId FK
|
||||
string tagName
|
||||
integer weight
|
||||
}
|
||||
|
||||
CONTENT_STAT {
|
||||
string contentId PK
|
||||
integer viewCount
|
||||
integer likeCount
|
||||
integer favoriteCount
|
||||
integer commentCount
|
||||
integer shareCount
|
||||
}
|
||||
```
|
||||
|
||||
### 6.3 数据库表结构示例
|
||||
|
||||
#### 用户表 (users)
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
user_id VARCHAR(32) PRIMARY KEY COMMENT '用户ID',
|
||||
mobile VARCHAR(11) UNIQUE NOT NULL COMMENT '手机号',
|
||||
password VARCHAR(64) NOT NULL COMMENT '密码',
|
||||
nickname VARCHAR(50) NOT NULL COMMENT '昵称',
|
||||
avatar VARCHAR(255) COMMENT '头像URL',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:1正常 0禁用',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
INDEX idx_mobile (mobile),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||||
```
|
||||
|
||||
#### 内容表 (contents)
|
||||
|
||||
```sql
|
||||
CREATE TABLE contents (
|
||||
content_id VARCHAR(32) PRIMARY KEY COMMENT '内容ID',
|
||||
title VARCHAR(100) NOT NULL COMMENT '标题',
|
||||
cover VARCHAR(255) COMMENT '封面URL',
|
||||
content_type VARCHAR(20) NOT NULL COMMENT '内容类型:video/music/novel',
|
||||
category VARCHAR(50) COMMENT '分类',
|
||||
duration INT COMMENT '时长(秒)',
|
||||
tags TEXT COMMENT '标签,逗号分隔',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:1正常 0下架',
|
||||
publish_time DATETIME COMMENT '发布时间',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
INDEX idx_type_category (content_type, category),
|
||||
INDEX idx_status_time (status, publish_time DESC),
|
||||
INDEX idx_tags (tags(100))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='内容表';
|
||||
```
|
||||
|
||||
#### 用户历史记录表 (user\_history)
|
||||
|
||||
```sql
|
||||
CREATE TABLE user_history (
|
||||
id VARCHAR(32) PRIMARY KEY COMMENT '记录ID',
|
||||
user_id VARCHAR(32) NOT NULL COMMENT '用户ID',
|
||||
content_id VARCHAR(32) NOT NULL COMMENT '内容ID',
|
||||
content_type VARCHAR(20) NOT NULL COMMENT '内容类型',
|
||||
progress INT DEFAULT 0 COMMENT '播放进度(秒)',
|
||||
last_play_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后播放时间',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
UNIQUE KEY uk_user_content (user_id, content_id),
|
||||
INDEX idx_user_time (user_id, last_play_time DESC),
|
||||
INDEX idx_content_type (content_type)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户播放历史表';
|
||||
```
|
||||
|
||||
## 7. 性能优化方案
|
||||
|
||||
### 7.1 前端优化
|
||||
|
||||
* **资源压缩**:图片压缩、代码混淆、分包加载
|
||||
|
||||
* **懒加载**:图片懒加载、组件懒加载、路由懒加载
|
||||
|
||||
* **缓存策略**:接口缓存、图片缓存、离线包机制
|
||||
|
||||
* **渲染优化**:虚拟列表、防抖节流、异步渲染
|
||||
|
||||
### 7.2 后端优化
|
||||
|
||||
* **数据库优化**:索引优化、查询优化、分库分表
|
||||
|
||||
* **缓存策略**:Redis缓存、CDN缓存、浏览器缓存
|
||||
|
||||
* **接口优化**:接口合并、数据压缩、分页加载
|
||||
|
||||
* **并发处理**:连接池、异步处理、队列机制
|
||||
|
||||
### 7.3 内容分发优化
|
||||
|
||||
* **CDN加速**:静态资源CDN、视频CDN、音频CDN
|
||||
|
||||
* **预加载策略**:智能预加载、按需加载、优先级加载
|
||||
|
||||
* **多码率适配**:根据网络自动选择清晰度
|
||||
|
||||
* **断点续传**:支持大文件断点续传,提升用户体验
|
||||
|
||||
Reference in New Issue
Block a user