仿B站项目第四章学习(2)

终于回到项目学习中了。

本篇内容主要实现功能:视频投稿,瀑布流视频列表,视频在线播放,以及视频的点赞、收藏、投币等功能:

代码:videoapi---videoService---videoDao----mapper.video.xml

数据库表:

        文件表:t_file。

        视频表:t_video

        关联标签表:t_vedio_tag 

        标签表:t_tag

视频投稿

功能描述:用户可以上传视频,并附带标题,描述,标签等信息

功能开发:前端传入用户上传视频相关信息,后端首先将相关信息存入视频表数据库,获得新增id后将视频id与标签批量存入关联标签表中。

瀑布流视频列表

功能描述:视频网站上分页展示视频功能,分页查询视频功能

功能开发:前端传入视频标签,每页展示视频数以及视频页数,后端首先根据视频标签查看视频总数,若总数大于0,则根据size和no取出具体视频信息并返回。

可能存在的问题:性能问题,当用户大量频繁地进行翻页操作时,后端要频繁地请求数据库。可能会导致性能下降。

解决思路:采用redis继续缓存。当用户翻页操作时,先检查缓存中是否存在数据,如果存在则,直接返回。如果不存在再去请求数据库,并将其存在缓存中。

视频在线播放

功能描述:用户在线观看视频

功能解读:视频在线播放和视频下载本质上是同理的,都是对视频的下载,从云端服务器获得到我们想要的内容进行下载。

视频在线播放功能通过流式传输实现,允许用户实时观看,而不需要先下载整个视频。

功能开发:

1. 前端发起请求,带上url参数

2. controller--service--FastUtil工具类的viewVideoOnlineBySlices方法中

        1. 首先通过FastDfs获取视频文件的大小

        2. 构建视频文件子啊FastDfs服务器上的完整URL

        3. 获取用户发来的请求头headers

        4. 总request中读取range写入headers中,range:需要获取视频文件的范围

        5. 在响应头中加入信息

3. 调用工具类HttpUtil中get方法,填入刚才准备好的请求链接,请求头和响应头。

4. 在get方法中将获取的视频数据写入到http响应的输出流中。

视频相关功能(大部分是增删改查)

        视频点赞、取消点赞功能

数据库表t_video_like

用户点赞,取消点赞都在t_video_like表中增加或删除数据。

视频的总点赞存放在视频信息表中,避免重复查询点赞总数。

        视频收藏、取消收藏功能

数据库表t_video_collection

我觉得收藏本质上和点赞是差不多类型的东西。只不过收藏比点赞多了一个查看收藏,即通过收藏视频表查询出自己收藏过的视频,但是点赞实际上也可以做这个功能,查看自己点赞过的视频。

不同之处在于收藏可以设置分组

        视频投币功能

没有取消投币

数据库表:t_vdeo_coin:

t_user_coin:用户具有多少硬币

首先获取视频id,检查视频是否存在,然后获取用户硬币数是否大于投币的数量,接着再获取用户对该视频已经投币数量,最后新增数据库表数据,减少用户硬币数。

最后函数要加上

@Transactional  事务

        视频评论功能

数据库表:

评论功能比较简单,检查数据之后向数据库表中插入数据就可以了。

分页查询评论比较繁琐:

根据视频id查询出所有一级评论总数,分页查询一级评论,根据一级评论查询其子评论并查找相关用户,最后返回查询结果。

        视频详情

传入视频id,通过数据库查询视频信息,再通过视频信息取出视频所有者id,查询数据库取出视频作者信息,打包返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值