文章目录
- 前言
- 回顾
- 完成任务
-
- [1. 客户端创作中心数据统计](#1. 客户端创作中心数据统计)
-
- [1.1 统计播放量](#1.1 统计播放量)
- [1.2 统计粉丝量](#1.2 统计粉丝量)
- [1.3 统计评论量](#1.3 统计评论量)
- [1.4 统计 点赞、收藏、投币](#1.4 统计 点赞、收藏、投币)
- [1.5 获取前一天的数据量、总的数据量](#1.5 获取前一天的数据量、总的数据量)
- [1.6 获取一周的数量统计信息](#1.6 获取一周的数量统计信息)
- [2. 管理端数据统计](#2. 管理端数据统计)
- [3. 管理端稿件管理](#3. 管理端稿件管理)
- [3. 管理端互动管理](#3. 管理端互动管理)
- [4. 管理端用户管理](#4. 管理端用户管理)
- [5. 管理端系统管理](#5. 管理端系统管理)
- 总结

前言
本项目非原创,我只是个小小白,跟随 b 站脚步,找到老罗的这个项目,视频来源于:
高仿B站(单服务版) springboot项目实战 easylive
本人不分享项目源码,支持项目付费!!!
回顾
昨天完成通过 es 对视频搜索、AOP校验登录。接下来还有对数据进行统计,以及管理后台的任务功能。
完成任务
1. 客户端创作中心数据统计
用户的创作中心,会对用户的视频数据进行统计:
定时统计,将用户的视频数据定时更新到数据统计表中。
通过一个定时任务,将这个数据定时统计到数据表中:
@Scheduled(cron = "0 0 0 * * ?")
:定义一个定时任务 ,cron表达式指定了任务的执行时间。这里的0 0 0 * * ?表示任务将在每天的午夜(0点0分0秒)执行一次。
1.1 统计播放量

- 获取一天前的日期:
- 根据前一天的日期,从 Redis 中获取每个视频的播放量
Redis中存储的键值对是:"easylive:video:playcount:2025.12.08:sjkhfsdhfnd": 1,
用 keyList 存储前面的键,KeyValueList 存储后面的播放量,然后通过 lambda 表达式,将其分别存入 resaultMap 中。
- 再通过 lambda 表达式,获取键中的最后一个 " : " 后的 videoId,将它们存入 List 中,然后查询每个视频 Id 对应的视频信息 videoInfoList。
- 从 videoInfoList 中,根据用户 Id 进行分组,查询每个用户下的每个视频的播放量的总和 ,然后将用户 ID 和总播放量分别作为键 和值存入 videoCountMap.
- 最后遍历 Map,将数据插入数据统计表中。
1.2 统计粉丝量
1.3 统计评论量
和统计粉丝量一样:
video_user_id 是视频发布者的 id。
1.4 统计 点赞、收藏、投币

从用户操作表中分组查询信息:
1.5 获取前一天的数据量、总的数据量
上面已经将分类数据的数据量,存储在数据统计表中。现在就需要获取数据量。
对每个类型的数据,既要获取它的总数量、也要获取前一天的变化数量。

- 获取前一天的变化数量直接设置条件,从数据表中查找即可。
- 获取总的数据量:
除粉丝量需要单独使用粉丝表来获取,其他的都可以从视频表中获取:
注意:如果是管理员访问该接口,则不存在粉丝概念,查询的就应该是所有的用户量。
1.6 获取一周的数量统计信息
当点击指定类别后,下方会出现对应的一周内的统计信息。
返回指定的类型,过去 7 天每天的数据统计信息。
2. 管理端数据统计
管理端数据统计,和客户端的数据统计很相似。只是要把客户端统计的粉丝量转为用户量,其次,统计的不仅是一个用户的数据,而是所有的数据量。
在查询条件中,就不需要加上用户Id的条件。
查询过去一周每种类型的数据量,主要是在类型如果是 FANS (粉丝) 类型时,需要转为查询用户的加入数据量 。
3. 管理端稿件管理
之前对稿件做了审核,还剩推荐、删除、详情。
推荐视频:
删除视频,之前已经实现了,这里只记录了接口:
获取详情:
3. 管理端互动管理

实现过程比较简单,删除弹幕和删除评论的实现前面已经实现。
4. 管理端用户管理

5. 管理端系统管理

总结
这个项目的单服务的实现就完成了。
微服务还是这些业务,就是需要拆分为多个服务。
暂时先到这里,微服务后面再继续学啦~