# 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令牌解析和使用