“揭秘职场温馨瞬间:飞书、企业微信、钉钉如何精准推送入职与生日祝福背后的数据魔法“

职场中,每个人肯定都收到过飞书、企业微信或者钉钉发来的入职1周年,2周年, 乃至n周年的祝福,或者生日祝福。那么这些温馨的提醒是如何实现的呢?本文将从数据层面来分析下。

首先,让我们忽略mapper和实体类的定义,本次只讲主体逻辑

找到最早入职的人的入职时间

假定我们已经连上员工信息存储的数据库,通过特定的方法获取最早入职的员工的入职时间。

OffsetDateTime earliestStartDate = employeeMapper.getEarliestStartDate();

获取系统时间并初始化周年时间

时间的处理可以参考OffsetDateTime类

OffsetDateTime curTime = OffsetDateTime.now();
String initialPeriod = 1;
        OffsetDateTime offsetDateTimeYear = curTime.plusYears(-initialPeriod);
        String patten = "yyyy-MM-dd HH:mm:ss"
        String offsetTimeYmd = offsetDateTimeYear.format(DateTimeFormatter.ofPattern(patten));

遍历获取1,2,……,n周年数据

以最早入职的人的入职时间为基准,进行遍历操作,直到当前时间早于该基准时间。

List<EmployeeDto> result = new ArrayList<>();
while(earliestStartDate.isBefore(offsetDateTimeYear)){
            // getEmployeeByStartTime方法如果考虑性能,可以使用分页。如果数据量不大的话,加索引,暴力查。
            List<EmployeeDto> EmployeeList = employeeService.getEmployeeByStartTime(offsetTimeYmd + "00:00:00", offsetTimeYmd + "23:59:59");
            if(!ObjectUtils.isEmpty(EmployeeList) && EmployeeList.size() > 0){
                result.addAll(carOwnerList);
            }
            initialPeriod += 1;
            offsetDateTimeYear = curTime.minusYears(initialPeriod);
            offsetTimeYmd = offsetDateTimeYear.format(DateTimeFormatter.ofPattern(patten));

当我们成功拿到周年数据后,剩下的工作就是挨个发送祝福了。当然,生日祝福的实现逻辑也是类似的。发送祝福的逻辑,如果后续有时间,我们会进一步介绍具体实现方式

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding侠客

一起充电,一起成长。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值