diff --git a/const.go b/const.go index 9e82a5a..9ce836e 100644 --- a/const.go +++ b/const.go @@ -1,3 +1,3 @@ package gojobs -const Version = "1.0.66" +const Version = "1.0.67" diff --git a/jobs_gorm_model/task.go b/jobs_gorm_model/task.go index 70231ae..119fc3c 100644 --- a/jobs_gorm_model/task.go +++ b/jobs_gorm_model/task.go @@ -24,6 +24,7 @@ type Task struct { SpecifyIp string `gorm:"index;comment:指定外网IP" json:"specify_ip"` // 指定外网IP UpdatedIp string `gorm:"comment:更新外网IP" json:"updated_ip"` // 更新外网IP Result string `gorm:"comment:结果" json:"result"` // 结果 + NextRunTime time.Time `gorm:"comment:下次运行时间" json:"next_run_time"` // 下次运行时间 CreatedAt time.Time `gorm:"autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间 UpdatedAt time.Time `gorm:"autoUpdateTime;comment:更新时间" json:"updated_at"` // 更新时间 DeletedAt gorm.DeletedAt `gorm:"index;comment:删除时间" json:"deleted_at"` // 删除时间 diff --git a/jobs_gorm_run.go b/jobs_gorm_run.go index 21ee6df..b2b4fce 100644 --- a/jobs_gorm_run.go +++ b/jobs_gorm_run.go @@ -3,16 +3,17 @@ package gojobs import ( "go.dtapp.net/gojobs/jobs_gorm_model" "go.dtapp.net/gostring" + "go.dtapp.net/gotime" "log" ) // Run 运行 -func (j *JobsGorm) Run(info jobs_gorm_model.Task, status int, desc string) { +func (j *JobsGorm) Run(info jobs_gorm_model.Task, status int, result string) { // 请求函数记录 err := j.gormClient.Db.Create(&jobs_gorm_model.TaskLog{ TaskId: info.Id, StatusCode: status, - Desc: desc, + Desc: result, Version: j.config.runVersion, }).Error if err != nil { @@ -20,12 +21,14 @@ func (j *JobsGorm) Run(info jobs_gorm_model.Task, status int, desc string) { } if status == 0 { err = j.EditTask(j.gormClient.Db, info.Id). - Select("run_id"). + Select("run_id", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ - RunId: gostring.GetUuId(), + RunId: gostring.GetUuId(), + Result: result, + NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, }).Error if err != nil { - log.Println("[gojobs.Run.EditTask]", err.Error()) + log.Println("[gojobs.Run.0.EditTask]", err.Error()) } return } @@ -33,46 +36,49 @@ func (j *JobsGorm) Run(info jobs_gorm_model.Task, status int, desc string) { if status == CodeSuccess { // 执行成功 err = j.EditTask(j.gormClient.Db, info.Id). - Select("status_desc", "number", "run_id", "updated_ip", "result"). + Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ - StatusDesc: "执行成功", - Number: info.Number + 1, - RunId: gostring.GetUuId(), - UpdatedIp: j.config.outsideIp, - Result: desc, + StatusDesc: "执行成功", + Number: info.Number + 1, + RunId: gostring.GetUuId(), + UpdatedIp: j.config.outsideIp, + Result: result, + NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, }).Error if err != nil { - log.Println("[gojobs.Run.EditTask]", err.Error()) + log.Println("[gojobs.Run.CodeSuccess.EditTask]", err.Error()) } } if status == CodeEnd { // 执行成功、提前结束 err = j.EditTask(j.gormClient.Db, info.Id). - Select("status", "status_desc", "number", "updated_ip", "result"). + Select("status", "status_desc", "number", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ - Status: TASK_SUCCESS, - StatusDesc: "结束执行", - Number: info.Number + 1, - UpdatedIp: j.config.outsideIp, - Result: desc, + Status: TASK_SUCCESS, + StatusDesc: "结束执行", + Number: info.Number + 1, + UpdatedIp: j.config.outsideIp, + Result: result, + NextRunTime: gotime.Current().Time, }).Error if err != nil { - log.Println("[gojobs.Run.EditTask]", err.Error()) + log.Println("[gojobs.Run.CodeEnd.EditTask]", err.Error()) } } if status == CodeError { // 执行失败 err = j.EditTask(j.gormClient.Db, info.Id). - Select("status_desc", "number", "run_id", "updated_ip", "result"). + Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ - StatusDesc: "执行失败", - Number: info.Number + 1, - RunId: gostring.GetUuId(), - UpdatedIp: j.config.outsideIp, - Result: desc, + StatusDesc: "执行失败", + Number: info.Number + 1, + RunId: gostring.GetUuId(), + UpdatedIp: j.config.outsideIp, + Result: result, + NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, }).Error if err != nil { - log.Println("[gojobs.Run.EditTask]", err.Error()) + log.Println("[gojobs.Run.CodeError.EditTask]", err.Error()) } } if info.MaxNumber != 0 { @@ -84,7 +90,7 @@ func (j *JobsGorm) Run(info jobs_gorm_model.Task, status int, desc string) { Status: TASK_TIMEOUT, }).Error if err != nil { - log.Println("[gojobs.Run.EditTask]", err.Error()) + log.Println("[gojobs.Run.TASK_TIMEOUT.EditTask]", err.Error()) } } } diff --git a/jobs_xorm_model/task.go b/jobs_xorm_model/task.go index 19dc53b..24a904f 100644 --- a/jobs_xorm_model/task.go +++ b/jobs_xorm_model/task.go @@ -1,26 +1,29 @@ package jobs_xorm_model +import "time" + // Task 任务 type Task struct { - Id uint `xorm:"pk autoincr" json:"id"` // 记录编号 - Status string `json:"status"` // 状态码 - Params string `json:"params"` // 参数 - ParamsType string `json:"params_type"` // 参数类型 - StatusDesc string `json:"status_desc"` // 状态描述 - Frequency int64 `json:"frequency"` // 频率(秒单位) - Number int64 `json:"number"` // 当前次数 - MaxNumber int64 `json:"max_number"` // 最大次数 - RunId string `json:"run_id"` // 执行编号 - CustomId string `json:"custom_id"` // 自定义编号 - CustomSequence int64 `json:"custom_sequence"` // 自定义顺序 - Type string `json:"type"` // 类型 - CreatedIp string `json:"created_ip"` // 创建外网IP - SpecifyIp string `json:"specify_ip"` // 指定外网IP - UpdatedIp string `json:"updated_ip"` // 更新外网IP - Result string `json:"result"` // 结果 - CreatedAt string `xorm:"created" json:"created_at"` // 创建时间 - UpdatedAt string `xorm:"created" json:"updated_at"` // 更新时间 - DeletedAt string `xorm:"deleted" json:"deleted_at"` // 删除时间 + Id uint `xorm:"pk autoincr" json:"id"` // 记录编号 + Status string `json:"status"` // 状态码 + Params string `json:"params"` // 参数 + ParamsType string `json:"params_type"` // 参数类型 + StatusDesc string `json:"status_desc"` // 状态描述 + Frequency int64 `json:"frequency"` // 频率(秒单位) + Number int64 `json:"number"` // 当前次数 + MaxNumber int64 `json:"max_number"` // 最大次数 + RunId string `json:"run_id"` // 执行编号 + CustomId string `json:"custom_id"` // 自定义编号 + CustomSequence int64 `json:"custom_sequence"` // 自定义顺序 + Type string `json:"type"` // 类型 + CreatedIp string `json:"created_ip"` // 创建外网IP + SpecifyIp string `json:"specify_ip"` // 指定外网IP + UpdatedIp string `json:"updated_ip"` // 更新外网IP + Result string `json:"result"` // 结果 + NextRunTime time.Time `json:"next_run_time"` // 下次运行时间 + CreatedAt string `xorm:"created" json:"created_at"` // 创建时间 + UpdatedAt string `xorm:"created" json:"updated_at"` // 更新时间 + DeletedAt string `xorm:"deleted" json:"deleted_at"` // 删除时间 } func (m *Task) TableName() string {