– 有的时候工作起来经常忘记喝水。我们如何设定一个自己的喝水消息提醒呢?
– 最近一直在搞自己的go框架。里面封装了定时任务调度。以及钉钉推送提醒。那么我们可以用这个东东来搞点事情了
– 我们定时任务每半个小时执行一次。为了保证半夜不会收到喝水提醒。所以我们需要对推送的时间做出限制。只有在指定的时间段才推送消息。
下面看下具体的逻辑代码
定时任务主代码
package main
import (
"fmt"
"gin/cmd/heshui/job"
"gin/common/env"
"gin/common/function"
"github.com/reugn/go-quartz/quartz"
)
func main() {
env.Active().Value()
sampleJobs2()
}
func sampleJobs2() {
sched := quartz.NewStdScheduler()
sched.Start()
cronTrigger, err := quartz.NewCronTrigger("0 0/30 * * * *")
//cronTrigger := quartz.NewRunOnceTrigger(time.Second * 1)
//cronTrigger, err := quartz.NewCronTrigger("0 0/1 * * * *")
if err != nil {
fmt.Println(err)
return
}
exitChan := make(chan bool, 1)
cronJob := job.Xueqiu{"Cron job", exitChan}
//for {
start_time := function.ExeStart()
sched.ScheduleJob(&cronJob, cronTrigger)
for i := 0; i < 1; i++ {
<-exitChan
}
function.PrintUseTime(start_time)
sched.DeleteJob(cronJob.Key())
//}
sched.Stop()
}
具体逻辑代码
// Execute is called by a Scheduler when the Trigger associated with this job fires.
func (pj *Xueqiu) Execute() {
currentHour := time.Now().Hour()
allow := []int{
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
}
title := "主人,该喝水啦~~~"
if php2go.InArray(currentHour, allow) == true {
function.SendToDingDingAt(config.Config.DINGding.Heshuipush, title, title, "18163912092")
}
}
这样就实现了每隔半个小时 就会有一个机器人来告诉你应该喝水了。。。。