docs(content): Document content module structure and APIs

This commit is contained in:
2025-04-10 00:26:28 +08:00
parent bb41632578
commit af6d2fbb14
@@ -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令牌解析和使用