目录

一、技术栈

二、项目展示及说明

(一)用户端

1.注册/登录界面

2.首页

3.视频播放页

4.搜索界面

5.个人界面

6.动态界面

7.私信界面

8.历史界面

9.投稿界面

(二)管理端

1.登陆界面

2.首页

3.数据趋势界面

4.视频审核界面

5.动态管理界面

6.用户管理界面

7.管理员列表界面

8.日志一览界面

(三)自动清除过旧数据

三、源码

四、最后想说


一、技术栈

前端

  • 核心架构: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库中有详细说明,这里不做赘述。

https://github.com/xie480/Yilena-video-web.git


四、最后想说

刚好历时两个月,这个项目也终于是完成了。

这单纯是一个练手项目,是一个阶段性的总结。

在项目推进过程中,我经历了诸多技术层面的迭代优化:数据库表结构前后调整了十余个版本,API接口也从最初规划的60余个扩展至最终100+。由于课业时间限制,许多设计都留下了优化空间——比如在后期引入Redis缓存时,才发现部分接口设计时未充分考虑缓存键的规范性,导致缓存策略实施效果未达预期,也算是一个教训吧。

代码质量方面,Service层的实现仍存在不少粗糙之处。受限于当前的技术认知水平,我决定暂时保持现状,待能力提升后再进行深度重构。最初设想的微服务架构也因经验不足改为单体架构,如今项目复杂度已使得服务拆分变得颇具挑战性,这项架构升级只能等有时间了再说……

前端是耗时最久的,有一半原因是因为不熟悉吧,导致最开始开发几个前端页面时的速度非常之缓慢,而且质量也不太行,基本就是纯堆砌的代码,还好后面渐渐熟悉了,也开始写得顺手了。

谨以此项目纪念这段学习旅程,也希望能为同样在技术道路上探索的你带来些许启发。

~码文不易,点个赞再走吧~

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐