docs(content): Document content module structure and APIs
This commit is contained in:
@@ -0,0 +1,230 @@
|
|||||||
|
# video-content模块目录架构、功能及接口文档
|
||||||
|
|
||||||
|
## 一、目录架构
|
||||||
|
|
||||||
|
```
|
||||||
|
video-content/
|
||||||
|
├── src/
|
||||||
|
│ ├── main/
|
||||||
|
│ │ ├── java/
|
||||||
|
│ │ │ └── com/nuaa/video/content/
|
||||||
|
│ │ │ ├── config/ # 配置类
|
||||||
|
│ │ │ │ ├── SecurityConfig.java # 安全配置
|
||||||
|
│ │ │ │ ├── MinioConfig.java # MinIO配置
|
||||||
|
│ │ │ │ └── FFmpegConfig.java # FFmpeg配置
|
||||||
|
│ │ │ ├── controller/ # 控制器
|
||||||
|
│ │ │ │ ├── VideoController.java # 视频控制器
|
||||||
|
│ │ │ │ ├── CategoryController.java # 分类控制器
|
||||||
|
│ │ │ │ ├── TagController.java # 标签控制器
|
||||||
|
│ │ │ │ ├── DanmakuController.java # 弹幕控制器
|
||||||
|
│ │ │ │ ├── FavoriteController.java # 收藏夹控制器
|
||||||
|
│ │ │ │ └── VideoStatController.java # 视频统计控制器
|
||||||
|
│ │ │ ├── entity/ # 实体类
|
||||||
|
│ │ │ │ ├── ContentVideo.java # 视频信息实体
|
||||||
|
│ │ │ │ ├── ContentCategory.java # 视频分类实体
|
||||||
|
│ │ │ │ ├── ContentTag.java # 视频标签实体
|
||||||
|
│ │ │ │ ├── ContentVideoTag.java # 视频标签关联实体
|
||||||
|
│ │ │ │ ├── ContentDanmaku.java # 弹幕实体
|
||||||
|
│ │ │ │ ├── ContentVideoLike.java # 视频点赞实体
|
||||||
|
│ │ │ │ ├── ContentVideoCoin.java # 视频投币实体
|
||||||
|
│ │ │ │ ├── ContentUserFavorite.java # 用户收藏夹实体
|
||||||
|
│ │ │ │ ├── ContentVideoFavorite.java # 视频收藏实体
|
||||||
|
│ │ │ │ ├── ContentVideoStatDaily.java # 视频每日统计实体
|
||||||
|
│ │ │ │ ├── ContentVideoReview.java # 视频审核记录实体
|
||||||
|
│ │ │ │ └── ContentVideoPlayRecord.java # 视频播放记录实体
|
||||||
|
│ │ │ ├── mapper/ # Mapper接口
|
||||||
|
│ │ │ │ ├── ContentVideoMapper.java
|
||||||
|
│ │ │ │ ├── ContentCategoryMapper.java
|
||||||
|
│ │ │ │ ├── ContentTagMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoTagMapper.java
|
||||||
|
│ │ │ │ ├── ContentDanmakuMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoLikeMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoCoinMapper.java
|
||||||
|
│ │ │ │ ├── ContentUserFavoriteMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoFavoriteMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoStatDailyMapper.java
|
||||||
|
│ │ │ │ ├── ContentVideoReviewMapper.java
|
||||||
|
│ │ │ │ └── ContentVideoPlayRecordMapper.java
|
||||||
|
│ │ │ ├── dto/ # DTO对象
|
||||||
|
│ │ │ │ ├── VideoUploadDTO.java # 视频上传DTO
|
||||||
|
│ │ │ │ ├── VideoUpdateDTO.java # 视频更新DTO
|
||||||
|
│ │ │ │ ├── VideoQueryDTO.java # 视频查询DTO
|
||||||
|
│ │ │ │ ├── FavoriteDTO.java # 收藏DTO
|
||||||
|
│ │ │ │ ├── DanmakuDTO.java # 弹幕DTO
|
||||||
|
│ │ │ │ └── PlayRecordDTO.java # 播放记录DTO
|
||||||
|
│ │ │ ├── vo/ # VO对象
|
||||||
|
│ │ │ │ ├── VideoInfoVO.java # 视频详情VO
|
||||||
|
│ │ │ │ ├── VideoListVO.java # 视频列表VO
|
||||||
|
│ │ │ │ ├── CategoryVO.java # 分类VO
|
||||||
|
│ │ │ │ ├── TagVO.java # 标签VO
|
||||||
|
│ │ │ │ ├── DanmakuVO.java # 弹幕VO
|
||||||
|
│ │ │ │ ├── FavoriteVO.java # 收藏夹VO
|
||||||
|
│ │ │ │ └── UploadResultVO.java # 上传结果VO
|
||||||
|
│ │ │ ├── service/ # 服务层
|
||||||
|
│ │ │ │ ├── VideoService.java # 视频服务接口
|
||||||
|
│ │ │ │ ├── CategoryService.java # 分类服务接口
|
||||||
|
│ │ │ │ ├── TagService.java # 标签服务接口
|
||||||
|
│ │ │ │ ├── DanmakuService.java # 弹幕服务接口
|
||||||
|
│ │ │ │ ├── FavoriteService.java # 收藏夹服务接口
|
||||||
|
│ │ │ │ ├── VideoStatService.java # 视频统计服务接口
|
||||||
|
│ │ │ │ └── impl/ # 实现类
|
||||||
|
│ │ │ │ ├── VideoServiceImpl.java
|
||||||
|
│ │ │ │ ├── CategoryServiceImpl.java
|
||||||
|
│ │ │ │ ├── TagServiceImpl.java
|
||||||
|
│ │ │ │ ├── DanmakuServiceImpl.java
|
||||||
|
│ │ │ │ ├── FavoriteServiceImpl.java
|
||||||
|
│ │ │ │ └── VideoStatServiceImpl.java
|
||||||
|
│ │ │ ├── utils/ # 工具类
|
||||||
|
│ │ │ │ └── VideoProcessor.java # 视频处理工具类
|
||||||
|
│ │ │ ├── feign/ # Feign客户端
|
||||||
|
│ │ │ │ ├── UserFeignClient.java # 用户服务客户端
|
||||||
|
│ │ │ │ └── UserFeignClientFallbackFactory.java # 降级工厂
|
||||||
|
│ │ │ ├── mq/ # 消息队列
|
||||||
|
│ │ │ │ ├── producer/ # 生产者
|
||||||
|
│ │ │ │ │ └── VideoMessageProducer.java
|
||||||
|
│ │ │ │ └── consumer/ # 消费者
|
||||||
|
│ │ │ │ └── VideoMessageConsumer.java
|
||||||
|
│ │ │ ├── filter/ # 过滤器
|
||||||
|
│ │ │ │ └── JwtAuthenticationFilter.java # JWT认证过滤器
|
||||||
|
│ │ │ ├── task/ # 定时任务
|
||||||
|
│ │ │ │ └── VideoStatsSyncTask.java # 视频统计同步任务
|
||||||
|
│ │ │ ├── enums/ # 枚举类
|
||||||
|
│ │ │ │ ├── VideoStatusEnum.java # 视频状态枚举
|
||||||
|
│ │ │ │ └── DanmakuPositionEnum.java # 弹幕位置枚举
|
||||||
|
│ │ │ └── ContentApplication.java # 启动类
|
||||||
|
│ │ └── resources/
|
||||||
|
│ │ ├── mapper/ # MyBatis XML映射文件
|
||||||
|
│ │ │ ├── ContentVideoMapper.xml
|
||||||
|
│ │ │ ├── ContentTagMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoTagMapper.xml
|
||||||
|
│ │ │ ├── ContentDanmakuMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoLikeMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoCoinMapper.xml
|
||||||
|
│ │ │ ├── ContentUserFavoriteMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoFavoriteMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoStatDailyMapper.xml
|
||||||
|
│ │ │ ├── ContentVideoReviewMapper.xml
|
||||||
|
│ │ │ └── ContentVideoPlayRecordMapper.xml
|
||||||
|
│ │ ├── application.yml # 主配置文件
|
||||||
|
│ │ └── application-dev.yml # 开发环境配置
|
||||||
|
└── pom.xml # 项目依赖配置
|
||||||
|
```
|
||||||
|
|
||||||
|
## 二、核心功能概述
|
||||||
|
|
||||||
|
### 1. 视频管理
|
||||||
|
- 视频上传与处理:上传视频文件,自动提取封面,处理视频元数据
|
||||||
|
- 视频CRUD:创建、更新、删除、查询视频
|
||||||
|
- 视频搜索与过滤:按分类、标签、关键词搜索视频
|
||||||
|
|
||||||
|
### 2. 分类与标签管理
|
||||||
|
- 分类树管理:支持多级分类结构
|
||||||
|
- 标签管理:创建、更新、删除标签
|
||||||
|
- 视频关联:将视频关联到分类和标签
|
||||||
|
|
||||||
|
### 3. 用户互动
|
||||||
|
- 点赞功能:用户可点赞/取消点赞视频
|
||||||
|
- 投币功能:用户可给视频投币
|
||||||
|
- 收藏功能:用户可将视频收藏到不同收藏夹
|
||||||
|
- 分享功能:记录视频分享行为
|
||||||
|
|
||||||
|
### 4. 弹幕系统
|
||||||
|
- 发送弹幕:用户可在视频不同时间点发送弹幕
|
||||||
|
- 查询弹幕:获取视频指定时间段或全部弹幕
|
||||||
|
|
||||||
|
### 5. 数据统计
|
||||||
|
- 浏览数统计:记录视频播放次数和播放时长
|
||||||
|
- 互动数据统计:包括点赞、投币、收藏、评论、分享等统计
|
||||||
|
- 每日数据统计:记录视频每日增长数据
|
||||||
|
|
||||||
|
### 6. 视频审核
|
||||||
|
- 自动审核:通过消息队列的审核流程
|
||||||
|
- 人工审核:支持管理员手动审核视频
|
||||||
|
|
||||||
|
### 7. 收藏夹管理
|
||||||
|
- 收藏夹CRUD:创建、更新、删除收藏夹
|
||||||
|
- 收藏视频:将视频收藏到指定收藏夹
|
||||||
|
- 浏览收藏:查看收藏夹中的视频
|
||||||
|
|
||||||
|
## 三、主要接口说明
|
||||||
|
|
||||||
|
### 1. 视频相关接口
|
||||||
|
|
||||||
|
| 接口路径 | 方法 | 功能描述 | 权限要求 |
|
||||||
|
| ----------------------------------- | ------ | ---------------- | ---------- |
|
||||||
|
| `/content/video/upload` | POST | 上传视频文件 | 登录用户 |
|
||||||
|
| `/content/video` | POST | 创建视频记录 | 登录用户 |
|
||||||
|
| `/content/video/{id}` | GET | 获取视频详情 | 公开 |
|
||||||
|
| `/content/video/list` | GET | 分页查询视频列表 | 公开 |
|
||||||
|
| `/content/video` | PUT | 更新视频信息 | 视频所有者 |
|
||||||
|
| `/content/video/{id}` | DELETE | 删除视频 | 视频所有者 |
|
||||||
|
| `/content/video/like/{videoId}` | POST | 点赞视频 | 登录用户 |
|
||||||
|
| `/content/video/like/{videoId}` | DELETE | 取消点赞 | 登录用户 |
|
||||||
|
| `/content/video/coin/{videoId}` | POST | 投币 | 登录用户 |
|
||||||
|
| `/content/video/favorite` | POST | 收藏视频 | 登录用户 |
|
||||||
|
| `/content/video/favorite/{videoId}` | DELETE | 取消收藏 | 登录用户 |
|
||||||
|
| `/content/video/share/{videoId}` | POST | 分享视频 | 登录用户 |
|
||||||
|
| `/content/video/play` | POST | 记录播放 | 登录用户 |
|
||||||
|
| `/content/video/user/{userId}` | GET | 获取用户视频列表 | 公开 |
|
||||||
|
| `/content/video/review/{videoId}` | POST | 审核视频 | 管理员 |
|
||||||
|
|
||||||
|
### 2. 分类与标签接口
|
||||||
|
|
||||||
|
| 接口路径 | 方法 | 功能描述 | 权限要求 |
|
||||||
|
| ------------------------------ | ------ | ------------ | -------- |
|
||||||
|
| `/content/category/tree` | GET | 获取分类树 | 公开 |
|
||||||
|
| `/content/category/list` | GET | 获取分类列表 | 公开 |
|
||||||
|
| `/content/category` | POST | 添加分类 | 管理员 |
|
||||||
|
| `/content/category` | PUT | 更新分类 | 管理员 |
|
||||||
|
| `/content/category/{id}` | DELETE | 删除分类 | 管理员 |
|
||||||
|
| `/content/tag/list` | GET | 获取标签列表 | 公开 |
|
||||||
|
| `/content/tag/page` | GET | 分页获取标签 | 公开 |
|
||||||
|
| `/content/tag` | POST | 添加标签 | 管理员 |
|
||||||
|
| `/content/tag` | PUT | 更新标签 | 管理员 |
|
||||||
|
| `/content/tag/{id}` | DELETE | 删除标签 | 管理员 |
|
||||||
|
| `/content/tag/video/{videoId}` | GET | 获取视频标签 | 公开 |
|
||||||
|
|
||||||
|
### 3. 弹幕接口
|
||||||
|
|
||||||
|
| 接口路径 | 方法 | 功能描述 | 权限要求 |
|
||||||
|
| -------------------------------- | ---- | ------------------ | -------- |
|
||||||
|
| `/content/danmaku` | POST | 发送弹幕 | 登录用户 |
|
||||||
|
| `/content/danmaku/time` | GET | 获取指定时间段弹幕 | 公开 |
|
||||||
|
| `/content/danmaku/all/{videoId}` | GET | 获取视频所有弹幕 | 公开 |
|
||||||
|
|
||||||
|
### 4. 收藏夹接口
|
||||||
|
|
||||||
|
| 接口路径 | 方法 | 功能描述 | 权限要求 |
|
||||||
|
| --------------------------------------- | ------ | ------------------ | ---------------- |
|
||||||
|
| `/content/favorite/list` | GET | 获取用户收藏夹列表 | 登录用户 |
|
||||||
|
| `/content/favorite` | POST | 创建收藏夹 | 登录用户 |
|
||||||
|
| `/content/favorite` | PUT | 更新收藏夹 | 收藏夹所有者 |
|
||||||
|
| `/content/favorite/{id}` | DELETE | 删除收藏夹 | 收藏夹所有者 |
|
||||||
|
| `/content/favorite/{favoriteId}/videos` | GET | 获取收藏夹视频 | 根据收藏夹可见性 |
|
||||||
|
|
||||||
|
### 5. 统计接口
|
||||||
|
|
||||||
|
| 接口路径 | 方法 | 功能描述 | 权限要求 |
|
||||||
|
| ------------------------------------- | ---- | ---------------- | ----------------- |
|
||||||
|
| `/content/stat/daily/{videoId}` | GET | 获取视频每日统计 | 视频所有者/管理员 |
|
||||||
|
| `/content/stat/play/trend/{videoId}` | GET | 获取视频播放趋势 | 视频所有者/管理员 |
|
||||||
|
| `/content/stat/interaction/{videoId}` | GET | 获取视频互动统计 | 视频所有者/管理员 |
|
||||||
|
|
||||||
|
## 四、与其他模块的关联
|
||||||
|
|
||||||
|
1. **与User模块的关联**
|
||||||
|
- 通过`UserFeignClient`调用用户服务获取用户信息
|
||||||
|
- 更新用户统计数据(视频数、获赞数、收藏数等)
|
||||||
|
- 用户操作视频内容(播放、点赞、收藏等)
|
||||||
|
|
||||||
|
2. **与Comment模块的潜在关联**
|
||||||
|
- 视频评论数的统计关联
|
||||||
|
- 评论系统会引用视频信息
|
||||||
|
|
||||||
|
3. **与Gateway模块的关联**
|
||||||
|
- 路由与权限控制
|
||||||
|
- API请求分发
|
||||||
|
|
||||||
|
4. **与Auth模块的关联**
|
||||||
|
- 用户认证与鉴权
|
||||||
|
- JWT令牌解析和使用
|
||||||
Reference in New Issue
Block a user