diff --git a/initialize/timer.go b/initialize/timer.go index 2b90a6d..46e4591 100644 --- a/initialize/timer.go +++ b/initialize/timer.go @@ -58,5 +58,38 @@ func Timer() { if err != nil { fmt.Println("add timer error:", err) } + + // 定时检查讲师VIP是否过期 + _, err = global.GVA_Timer.AddTaskByFunc("CheckTeacherVip", "0 0/5 * * * ?", func() { + err5 := task.CheckTeacherVip(global.GVA_DB) + if err5 != nil { + fmt.Println("清理过期讲师VIP定时任务失败:", err5) + } + }, "定时清理过期讲师VIP日志内容:", option...) + if err != nil { + fmt.Println("add timer error:", err) + } + + // 清理机器人 + _, err = global.GVA_Timer.AddTaskByFunc("ClearBot", "0 0 22 * * ?", func() { + err6 := task.ClearBot(global.GVA_DB) + if err6 != nil { + fmt.Println("清理机器人定时任务失败:", err6) + } + }, "定时清理机器人日志内容:", option...) + if err != nil { + fmt.Println("add timer error:", err) + } + + // 每天21:20 将所有文章设为免费 + _, err = global.GVA_Timer.AddTaskByFunc("SetArticleFree", "0 20 21 * * ?", func() { + err7 := task.SetArticleFree(global.GVA_DB) + if err7 != nil { + fmt.Println("将文章设为免费定时任务失败:", err7) + } + }, "将所有文章设为免费", option...) + if err != nil { + fmt.Println("add timer error:", err) + } }() } diff --git a/task/checkTeacherVip.go b/task/checkTeacherVip.go new file mode 100644 index 0000000..154fd1e --- /dev/null +++ b/task/checkTeacherVip.go @@ -0,0 +1,24 @@ +package task + +import ( + "git.echol.cn/loser/lckt/global" + "git.echol.cn/loser/lckt/model/app" + "gorm.io/gorm" +) + +// CheckTeacherVip 检查讲师VIP是否过期 +func CheckTeacherVip(db *gorm.DB) error { + global.GVA_LOG.Info("开始检查用户讲师包月是否过期...") + var userTeacherVips []app.UserTeacherVip + // 根据当前时间和expire_at对比 查看是否到过期时间 + db.Where("expire_at < ? AND is_expire = 1", gorm.Expr("NOW()")).Find(&userTeacherVips) + for _, u := range userTeacherVips { + u.IsExpire = 2 + err := db.Save(&u).Error + if err != nil { + return err + } + } + global.GVA_LOG.Info("检查用户讲师包月是否过期完成...") + return nil +} diff --git a/task/clearBot.go b/task/clearBot.go new file mode 100644 index 0000000..51119e1 --- /dev/null +++ b/task/clearBot.go @@ -0,0 +1,14 @@ +package task + +import ( + "gorm.io/gorm" +) + +// ClearBot 清理机器人消息 +func ClearBot(db *gorm.DB) error { + // 删除所有机器人 + if err := db.Exec("TRUNCATE TABLE bots").Error; err != nil { + return err + } + return nil +} diff --git a/task/setArticleFree.go b/task/setArticleFree.go new file mode 100644 index 0000000..2069a7d --- /dev/null +++ b/task/setArticleFree.go @@ -0,0 +1,8 @@ +package task + +import "gorm.io/gorm" + +// SetArticleFree 定时将到期的付费文章设置为免费 +func SetArticleFree(db *gorm.DB) error { + return db.Exec("UPDATE `article` SET is_free = 1, price = 0 WHERE is_free = 0 AND `status` = 1").Error +}