Java原创项目:仿b站v1.0(附前后端源码及接口文档)
刚好历时两个月,这个项目也终于是完成了。这单纯是一个练手项目,是一个阶段性的总结。在项目推进过程中,我经历了诸多技术层面的迭代优化:数据库表结构前后调整了十余个版本,API接口也从最初规划的60余个扩展至最终100+。由于课业时间限制,许多设计都留下了优化空间——比如在后期引入Redis缓存时,才发现部分接口设计时未充分考虑缓存键的规范性,导致缓存策略实施效果未达预期,也算是一个教训吧。不光如此,
目录
一、技术栈
前端
- 核心架构:Vue 3 + Vite
- UI 组件:Element Plus
- 数据可视化:ECharts
- 表单验证:VeeValidate + Yup
- HTTP 请求:Axios
- 动画 & 工具:GSAP、Lodash、VueUse
- 多媒体:vue3-video-play + vue3-danmaku
- 加密 & 安全:CryptoJS、crypted-vue-route
后端
- 核心架构:Spring Boot
- 数据层:MySQL + MyBatis + Druid + Redis
- 搜索功能:Elasticsearch + High Level REST Client
- 消息通信:RabbitMQ + Spring AMQP
- 安全:Spring Security + JWT + Sensitive-Word
- 工具链:Hutool + Lombok + Fastjson/Jackson
- 云服务:阿里云 OSS(对象存储)
- 通信:WebSocket + RESTful API
二、项目展示及说明
(一)用户端
1.注册/登录界面
-
表单校验功能:实时校验用户名、密码、字段的格式和必填性,并提供即时错误提示。后续将加入邮箱验证功能。
-
密码加密功能:后端使用相应算法对用户原密码进行加密,保障用户账号安全性。
2.首页
- 推荐视频展示:展示推荐视频封面、标题、作者、发布时间,并点击跳转播放页。
- 实时热搜展示:展示全站搜索量Top10,轮播展示,点击直接搜索。
- 搜索历史展示:本地浏览器存储搜索记录,支持一键清除/单条删除,点击复用搜索。
3.视频播放页
- 视频信息展示:展示视频标题、日期、作者、简介、标签。
- 实时弹幕功能:实时接收/发送弹幕,支持暂停、隐藏。
- 作者关注功能:关注/取消关注,特别关注设置,显示粉丝数。
- 视频评论功能:多级评论,支持@和图片,分页加载,回复定位。
- 视频互动操作:支持点赞、投币、收藏、分享。
- 自动连播功能:播放完当前视频自动播放右侧第一个推荐视频。
4.搜索界面
- 搜索路径加密:保护用户隐私,加密搜索词传输和存储。
- 关键词高亮显示:在搜索结果中高亮匹配的关键词(标题、作者、简介、标签)。
- 视频搜索筛选功能:支持多条件筛选(相关度、播放量、收藏量、弹幕数、日期、时长)。
- 用户搜索功能:搜索注册用户,按粉丝量筛选,显示用户基本信息。
- 搜索结果分页:分页展示搜索结果,加快搜索速度,减轻后端压力,优化体验。
5.个人界面
用户自身的个人界面:
- 用户信息编辑:支持修改头像、昵称、简介等基本信息。
- 密码修改:支持新旧密码对照进行修改,并进行后端解密校对
- 投稿视频、收藏夹、投币视频展示:分页展示用户投稿、收藏和投币的视频列表。
- 投稿合集管理:支持创建、编辑、删除合集。
- 收藏夹管理:编辑收藏夹标题/描述,删除收藏夹,自定义封面。
- 动态管理:编辑、删除动态(图文/视频),展示动态流。
他人的个人界面:
- 关注功能:关注/取消关注,设置特别关注。
- 订阅文件夹:订阅他人的公开收藏夹,接收更新通知。
6.动态界面
-
发布动态:支持文字、图片(多图)、视频和标签。
-
动态列表展示:分页加载关注对象的动态(按发布时间倒序)。
-
单用户动态聚合:展示指定用户的全部动态。
-
敏感词过滤:自动过滤掉动态中的敏感词。
-
视频转发到动态:将视频以卡片形式分享到动态,支持添加转发评语。
-
动态互动功能:点赞/取消点赞,发布/回复评论(支持@他人和附带图片)。
7.私信界面
-
实时聊天功能:支持与互关用户在线实时聊天,消息即时推送,并有弹窗通知功能。
-
新视频发布通知:实时接收对方新视频动态,点击跳转播放页。
-
消息已读/未读状态:实时显示消息是否被对方阅读。
-
消息删除与撤回:支持单方面删除聊天记录,2分钟内可撤回消息。
-
多媒体消息支持:发送文字、图片,未来扩展视频/文件。
-
互动通知(回复/@/点赞):聚合通知页展示互动消息。
-
系统通知(公告/下架):支持接收官方公告,违规视频下架通知。
-
其他订阅通知:关注用户动态、收藏夹更新等。
8.历史界面
-
每日浏览视频记录:记录用户每天观看的视频及对应观看时长,支持按日期分类展示。
-
关闭/开启历史记录功能:允许用户自由关闭或开启历史记录功能,关闭后不再记录新数据。
-
一键清空历史功能:彻底清除所有历史记录。
9.投稿界面
-
视频投稿与敏感词过滤:支持上传视频文件,自定义标题、简介、标签等信息,自动检测敏感词并过滤(替换为“喵”)。
-
视频列表管理与排序:展示视频列表(待审核/已通过/未通过),支持按投稿时间、播放量等排序,未通过视频支持修改后重新投稿。
-
用户数据总览:展示用户总点赞数、粉丝数、评论数等核心数据。
-
数据可视化与趋势分析:图表展示粉丝、点赞、收藏的增长趋势,支持7/30/90天切换。
-
评论管理与搜索:展示所有视频评论,支持按时间、回复数、点赞数排序。搜索视频标题关联评论,支持删除评论。
(二)管理端
1.登陆界面
- 表单校验功能:实时校验用户名、密码、字段的格式和必填性,并提供即时错误提示。后续将加入邮箱验证功能。
2.首页
-
管理员信息展示:展示当前登录管理员的基本信息。
-
视频审核状态实时展示:展示待审核、未通过、已通过的视频数量。
-
数据总览:实时统计全平台注册用户数、投稿视频数等核心指标。
3.数据趋势界面
-
数据趋势可视化:展示视频投稿趋势(每日/每周/每月投稿量)、注册用户趋势(新增用户数)等核心数据,支持7天、30天、90天时间范围切换,动态更新图表。
4.视频审核界面
-
视频数据分类展示与分页:分页展示未通过、待审核、已通过的视频列表,支持切换标签页查看不同状态的数据。
-
搜索与筛选功能:按投稿日期范围(如最近7天、自定义区间)和视频标题关键词筛选数据。支持多条件组合查询(如“标题含‘游戏’且投稿时间为2025-05-01至2025-05-10”)。
-
视频详情:点击列表项展开详情页,展示视频元数据(如时长、标签)、审核记录、违规项(如涉黄、广告)
-
审核操作:
-
不通过/下架:需填写原因(必填),并通知用户。
-
通过:直接更新状态。
-
5.动态管理界面
-
动态数据分页展示:分页展示全站用户发布的动态,默认按时间倒序排列。
-
动态下架处理:对违规动态执行下架操作(内容不可见但保留记录),填写下架原因并通知用户。
-
日期范围筛选:按上传日期范围筛选数据。
6.用户管理界面
-
用户信息分页展示:分页展示所有注册用户信息。
-
数据筛选:按注册时间范围(如最近7天/30天)或按用户状态(正常/禁用)。
-
搜索功能:支持用户名关键词模糊匹配。
-
账号禁用:冻结违规账号填写原因,并实时通知用户并禁用相关功能。
7.管理员列表界面
-
管理员信息分页展示:分页展示所有管理员信息。
-
数据筛选:按注册时间范围(如最近7天/30天)或按用户状态(正常/禁用)。
-
搜索功能:支持用户名关键词模糊匹配。
-
账号禁用:冻结违规账号填写原因,冻结账号无法登录。
8.日志一览界面
-
分页展示用户端/管理端日志:分页展示用户端和管理端的操作日志。
-
时间范围筛选功能:支持选择日期范围(如最近7天、自定义区间)筛选日志。
(三)自动清除过旧数据
利用Spring Task每天凌晨两点自动清除:
-
半年前的聊天记录
-
每个用户十五天前的历史记录
-
单日搜索量小于一百的搜索数据
-
半年前的日志数据
三、源码
前后端代码、接口文档、sql脚本都在这里。
Github库中有详细说明,这里不做赘述。
四、最后想说
刚好历时两个月,这个项目也终于是完成了。
这单纯是一个练手项目,是一个阶段性的总结。
在项目推进过程中,我经历了诸多技术层面的迭代优化:数据库表结构前后调整了十余个版本,API接口也从最初规划的60余个扩展至最终100+。由于课业时间限制,许多设计都留下了优化空间——比如在后期引入Redis缓存时,才发现部分接口设计时未充分考虑缓存键的规范性,导致缓存策略实施效果未达预期,也算是一个教训吧。
代码质量方面,Service层的实现仍存在不少粗糙之处。受限于当前的技术认知水平,我决定暂时保持现状,待能力提升后再进行深度重构。最初设想的微服务架构也因经验不足改为单体架构,如今项目复杂度已使得服务拆分变得颇具挑战性,这项架构升级只能等有时间了再说……
前端是耗时最久的,有一半原因是因为不熟悉吧,导致最开始开发几个前端页面时的速度非常之缓慢,而且质量也不太行,基本就是纯堆砌的代码,还好后面渐渐熟悉了,也开始写得顺手了。
谨以此项目纪念这段学习旅程,也希望能为同样在技术道路上探索的你带来些许启发。
~码文不易,点个赞再走吧~
更多推荐
所有评论(0)