diff --git a/docs/video-content模块目录架构、功能及接口文档.md b/docs/video-content模块目录架构、功能及接口文档.md new file mode 100644 index 0000000..5ad7ae8 --- /dev/null +++ b/docs/video-content模块目录架构、功能及接口文档.md @@ -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令牌解析和使用