From 91ec3a26016fa6eda198edc3b2cdcab6f1cc9948 Mon Sep 17 00:00:00 2001 From: Echo <1711788888@qq.com> Date: Sat, 11 Oct 2025 16:15:02 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=96=B0=E5=A2=9E=E6=B8=85=E7=90=86?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E5=92=8C=E5=AE=9A=E6=97=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=85=8D=E8=B4=B9=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- initialize/timer.go | 33 +++++++++++++++++++++++++++++++++ task/checkTeacherVip.go | 24 ++++++++++++++++++++++++ task/clearBot.go | 14 ++++++++++++++ task/setArticleFree.go | 8 ++++++++ 4 files changed, 79 insertions(+) create mode 100644 task/checkTeacherVip.go create mode 100644 task/clearBot.go create mode 100644 task/setArticleFree.go 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 +}