Files
GoFilm/server/model/system/Crontab.go
2025-02-27 00:17:34 +08:00

71 lines
2.2 KiB
Go

package system
import (
"encoding/json"
"errors"
"github.com/robfig/cron/v3"
"server/config"
"server/plugin/db"
)
/*
定时任务持久化
*/
// FilmCollectTask 影视采集任务
type FilmCollectTask struct {
Id string `json:"id"` // 唯一标识uid
Ids []string `json:"ids"` // 采集站id列表
Cid cron.EntryID `json:"cid"` // 定时任务Id
Time int `json:"time"` // 采集时长, 最新x小时更新的内容
Spec string `json:"spec"` // 执行周期 cron表达式
Model int `json:"model"` // 任务类型, 0 - 自动更新已启用站点 || 1 - 更新Ids中的资源站数据 || 2 - 定期清理失败采集记录
State bool `json:"state"` // 状态 开启 | 禁用
Remark string `json:"remark"` // 任务备注信息
}
// SaveFilmTask 保存影视采集任务信息 {EntryId:FilmCollectTask}
func SaveFilmTask(t FilmCollectTask) {
data, _ := json.Marshal(t)
db.Rdb.HSet(db.Cxt, config.FilmCrontabKey, t.Id, data)
}
// GetAllFilmTask 获取所有的任务信息
func GetAllFilmTask() []FilmCollectTask {
var tl []FilmCollectTask
tMap := db.Rdb.HGetAll(db.Cxt, config.FilmCrontabKey).Val()
for _, v := range tMap {
var t = FilmCollectTask{}
_ = json.Unmarshal([]byte(v), &t)
tl = append(tl, t)
}
return tl
}
// GetFilmTaskById 通过Id获取当前任务信息
func GetFilmTaskById(id string) (FilmCollectTask, error) {
var ft = FilmCollectTask{}
// 如果Id对应的task不存在则返回错误信息
if !db.Rdb.HExists(db.Cxt, config.FilmCrontabKey, id).Val() {
return ft, errors.New(" The task does not exist ")
}
data := db.Rdb.HGet(db.Cxt, config.FilmCrontabKey, id).Val()
err := json.Unmarshal([]byte(data), &ft)
return ft, err
}
// UpdateFilmTask 更新定时任务信息(直接覆盖Id对应的定时任务信息) -- 后续待调整
func UpdateFilmTask(t FilmCollectTask) {
SaveFilmTask(t)
}
// DelFilmTask 通过Id删除对应的定时任务信息
func DelFilmTask(id string) {
db.Rdb.HDel(db.Cxt, config.FilmCrontabKey, id)
}
// ExistTask 是否存在定时任务相关信息
func ExistTask() bool {
return db.Rdb.Exists(db.Cxt, config.FilmCrontabKey).Val() == 1
}