package task import ( "go.uber.org/zap" "miniapp/global" "miniapp/model/app" "miniapp/model/common" "strconv" "strings" "time" ) // CheckUserSurgeryDate 检查用户是否已到手术日期 func CheckUserSurgeryDate() { go func() { global.GVA_LOG.Info("检查用户是否已到手术日期") var users []app.User global.GVA_DB.Model(&app.User{}).Find(&users) for _, user := range users { parse, _ := time.Parse("2006-01-02", user.SurgeryTime) if time.Now().Sub(parse).Hours()/24 == 0 { global.GVA_DB.Model(&app.User{}).Where("id = ?", user.ID).Updates(app.User{IsSurgery: 1}) } } }() } func SendMsg2User() { go func() { global.GVA_LOG.Info("执行发送消息定时任务") var ut []common.UserTodo err := global.GVA_DB.Model(&common.UserTodo{}).Find(&ut).Error if err != nil { global.GVA_LOG.Error("定时任务获取用户Todo列表失败:", zap.Error(err)) } for _, todo := range ut { if strings.Compare(todo.RemindDay, time.Now().Format("2006-01-02")) == 0 { // 创建定时任务 //WxTask := gocron.NewScheduler(time.Local) //Send(todo.UserId, todo.Content, todo.RemindTime, todo.Frequency) user := app.User{} err := global.GVA_DB.Model(&app.User{}).Where("id = ?", todo.UserId).Find(&user).Error if err != nil { global.GVA_LOG.Error("定时任务获取用户信息失败:%s", zap.Error(err)) return } // 根据用户手术信息 发送提醒消息 if user.IsSurgery == 0 && todo.RemindPeriod == 0 && todo.IsFinish == 0 { // 根据年月日时发送消息 job, err := WxTask.Every(1).Day().At(todo.RemindTime).LimitRunsTo(1).Do(MiniappSendMsg, strconv.Itoa(int(user.ID)), strconv.Itoa(int(todo.ID))) //job, err := WxTask.Cron("0 30 23 30 3 2024").Do(MiniappSendMsg, strconv.Itoa(int(user.ID)), strconv.Itoa(int(todo.ID))) //job, err := WxTask.Every(1).Day().At("23:51").LimitRunsTo(1).Do(MiniappSendMsg, strconv.Itoa(int(user.ID)), strconv.Itoa(int(todo.ID))) if err != nil { global.GVA_LOG.Error("定时任务创建失败:%s", zap.Error(err)) return } global.GVA_LOG.Info("定时任务创建成功", zap.Any("job", job.LastRun())) } } } }() }