实现周期提醒的一种方法

最近业务提了一个需求,希望可以让用户自己设置一个周期提醒,在他设置的时间可以给选择的下属发送定时提醒,记录一下自己的实现思路;

做好后就是这个样子的:
在这里插入图片描述

既然是周期提醒肯定不能手动触发,所以我们需要用到定时任务,
首先和业务确定周期提醒的最小单位是什么(时,分,秒)我们是时,知道最小单位后以最小单位设置一个定时任务
定时怎末才能查到,我们需要在数据库添加相关字段:
我们需要一个字段去标识周期是;月,周,还是天
还需要一个字段标识如果第一个字段选的月(每月的几号),选的周的话(每周的周几);
最后一个字段标识几时
为了方便前端处理,我把第二个字段拆成了两个如图:
在这里插入图片描述
然后就是查询:

 SELECT
        detail.*
        FROM notice_setting setting
	    LEFT JOIN assignment_detail detail on setting.detail_id = detail.detail_id
        WHERE ((setting.cycle = 0
            AND setting.notice_day = DATE_FORMAT(NOW(), '%d')
            AND setting.`hour` = DATE_FORMAT(NOW(), '%H')
            )
           OR (setting.cycle = 1
            AND setting.notice_week = DAYOFWEEK(NOW())
            AND setting.`hour` = DATE_FORMAT(NOW(), '%H')
            )
           OR (setting.cycle = 2
            AND setting.`hour` = DATE_FORMAT(NOW(), '%H')
            ))
            AND setting.del_flag = 0
			AND detail.assignment_state not in (2,21,4)
			AND detail.del_flag = 0
			AND detail.cash_flag =0

发消息和定时任务我们都是对接的公司其他服务,本文只是讲一下实现思路,希望可以和各位大佬交流

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值