本文节选自《实战演练专题》
通过一个小的业务点出发,搭建一个可以实例使用的项目工程,将各种知识点串联起来; 实战演练专题中,每一个项目都是可以独立运行的,包含若干知识点,甚至可以不做修改直接应用于生产项目;
今天的实战项目主要解决的业务需求为: 每日新增用户统计,生成报表,并邮件发送给相关人
本项目将包含以下知识点:
需要相对来说属于比较明确的了,目的就是实现一个自动报表统计的任务,查询出每日的用户新增情况,然后推送给指定的用户
因此我们将很清晰的知道,我们需要干的事情
定时任务
这里重点放在如何来支持这个任务的定时执行,通常来说定时任务会区分为固定时刻执行 + 间隔时长执行两种(注意这种区分主要是为了方便理解,如每天五点执行的任务,也可以理解为每隔24h执行一次)
前者常见于 一次性任务
,如本文中的每天统计一次,这种就是相对典型的固定时刻执行的任务;
后者常见于 轮询式任务
,如常见的应用探活(每隔30s发一个ping消息,判断服务是否健在)
定时任务的方案非常多,有兴趣的小伙伴可以关注一波“一灰灰blog”公众号,蹲守一个后续
本文将直接采用Spring的定时任务实现需求场景,对这块不熟悉的小伙伴可以看一下我之前的分享的博文
每日新增用户统计
每日新增用户统计,实现方式挺多的,比如举几个简单的实现思路
上面两个方案都需要借助额外的库表来辅助支持,本文则采用直接统计用户表,根据注册时间来聚合统计每日的新增用户数
关于如何使用mysql进行统计每日新增用户,不熟悉的小伙伴,推荐参考博主之前的分享文章
报表生成&推送用户
接下来就是将上面统计的数据,生成报表然后推送给用户;首先是如何将数据生成报表?其次则是如何推送给指定用户?
将数据组装成报表的方式通常取决于你选择的推送方式,如飞书、钉钉之类的,有对应的开发api,可以直接推送富文本;
本文的实现姿势则选择的是通过邮件的方式进行发送,why?
对于邮件,大家应该都有,无论是qq邮箱,还是工作邮箱;基本上对于想要直接跑本文的小伙伴来说,没有什么额外的门槛
关于java/spring如何使用邮箱,对此不太熟悉的小伙伴,可以参考博主之前的分享文章
上面文章中介绍的是FreeMaker来实现模板渲染,本文则介绍另外一个知识点,借助Thymleaf来实现数据报表的生成 (一篇文章获取这么多知识点,就问你开不开心O(∩_∩)O)
首选搭建一个基本的SpringBoot应用,相信这一步大家都很熟悉了;若有不懂的小伙伴,请点赞、评论加博主好友,手把手教你,不收费
最终的项目依赖如下
org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf com.google.guava guava 31.1-jre org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2