14 KiB
14 KiB
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 | 获取视频互动统计 | 视频所有者/管理员 |
四、与其他模块的关联
-
与User模块的关联
- 通过
UserFeignClient调用用户服务获取用户信息 - 更新用户统计数据(视频数、获赞数、收藏数等)
- 用户操作视频内容(播放、点赞、收藏等)
- 通过
-
与Comment模块的潜在关联
- 视频评论数的统计关联
- 评论系统会引用视频信息
-
与Gateway模块的关联
- 路由与权限控制
- API请求分发
-
与Auth模块的关联
- 用户认证与鉴权
- JWT令牌解析和使用