mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-02-04 06:54:41 +08:00
71 lines
2.2 KiB
Go
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
|
|
}
|