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

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

mapper和实体类的定义忽略,只讲主体逻辑

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

假定我们已经连上员工信息存储的数据库。

# SQL和实体类忽略,只讲主体逻辑
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));

拿到周年数据,剩下的就是挨个发送了,这个后面有时间了再补充。当然生日祝福也是同样的逻辑。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值