🐛 fix cron bug
This commit is contained in:
73
task/user.go
73
task/user.go
@@ -5,53 +5,60 @@ import (
|
||||
"miniapp/global"
|
||||
"miniapp/model/app"
|
||||
"miniapp/model/common"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CheckUserSurgeryDate 检查用户是否已到手术日期
|
||||
func CheckUserSurgeryDate() {
|
||||
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})
|
||||
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() {
|
||||
WxTask.Clear()
|
||||
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))
|
||||
}
|
||||
|
||||
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 {
|
||||
parse, _ := time.Parse("2006-01-02", todo.RemindDay)
|
||||
if time.Now().Sub(parse).Hours()/24 == 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 {
|
||||
// 根据年月日时发送消息
|
||||
_, err := WxTask.Every(1).Day().At(todo.RemindTime).Do(MiniappSendMsg, *user.WechatOpenId, todo.Content, todo.RemindPeriod, todo.RemindTime)
|
||||
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))
|
||||
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).Do(MiniappSendMsg, *user.WechatOpenId, todo.Content, todo.RemindPeriod, todo.RemindTime)
|
||||
job, err := WxTask.Every(1).Day().At(todo.RemindTime).Do(MiniappSendMsg, strconv.Itoa(int(user.ID)), strconv.Itoa(int(todo.ID)))
|
||||
global.GVA_LOG.Info("定时任务创建成功", zap.Any("job", job))
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("定时任务创建失败:%s", zap.Error(err))
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user