🎨 新增清理机器人和定时设置免费定时任务

This commit is contained in:
2025-10-11 16:15:02 +08:00
parent 481635d333
commit 91ec3a2601
4 changed files with 79 additions and 0 deletions

View File

@@ -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)
}
}()
}

24
task/checkTeacherVip.go Normal file
View File

@@ -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
}

14
task/clearBot.go Normal file
View File

@@ -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
}

8
task/setArticleFree.go Normal file
View File

@@ -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
}