Files
HAOVP/docs/video-content模块目录架构、功能及接口文档.md
T

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 获取视频互动统计 视频所有者/管理员

四、与其他模块的关联

  1. 与User模块的关联

    • 通过UserFeignClient调用用户服务获取用户信息
    • 更新用户统计数据(视频数、获赞数、收藏数等)
    • 用户操作视频内容(播放、点赞、收藏等)
  2. 与Comment模块的潜在关联

    • 视频评论数的统计关联
    • 评论系统会引用视频信息
  3. 与Gateway模块的关联

    • 路由与权限控制
    • API请求分发
  4. 与Auth模块的关联

    • 用户认证与鉴权
    • JWT令牌解析和使用