From b9f96889cc697065c97b4cc1b8b76c1459dc291a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sat, 11 Jun 2022 18:30:09 +0800 Subject: [PATCH] - update --- CHANGELOG.md | 2 +- jobs_gorm/jobs_gorm.go | 104 +++++++++++++++++++++++++++++++++++++++++ version.go | 2 +- 3 files changed, 106 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b51231..895154b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## v1.0.22-27 +## v1.0.22-28 - update diff --git a/jobs_gorm/jobs_gorm.go b/jobs_gorm/jobs_gorm.go index e2b6b71..e435b2c 100644 --- a/jobs_gorm/jobs_gorm.go +++ b/jobs_gorm/jobs_gorm.go @@ -7,8 +7,10 @@ import ( "go.dtapp.net/goip" "go.dtapp.net/gojobs/jobs_common" "go.dtapp.net/goredis" + "go.dtapp.net/gotime" "go.dtapp.net/gouuid" "gorm.io/gorm" + "log" "runtime" ) @@ -180,3 +182,105 @@ func (jobsGorm *JobsGorm) CreateInCustomIdMaxNumberOnly(config *ConfigCreateInCu } return nil } + +// RunAddLog 任务执行日志 +func (jobsGorm *JobsGorm) RunAddLog(tx *gorm.DB, id uint, runId string) *gorm.DB { + return tx.Create(&TaskLogRun{ + TaskId: id, + RunId: runId, + InsideIp: jobsGorm.insideIp, + OutsideIp: jobsGorm.outsideIp, + Os: jobsGorm.os, + Arch: jobsGorm.arch, + Gomaxprocs: jobsGorm.maxProCs, + GoVersion: jobsGorm.version, + MacAddrs: jobsGorm.macAddrS, + CreatedAt: gotime.Current().Format(), + }) +} + +// Run 任务执行 +func (jobsGorm *JobsGorm) Run(tx *gorm.DB, info Task, status int, desc string) { + // 请求函数记录 + statusCreate := tx.Create(&TaskLog{ + TaskId: info.Id, + StatusCode: status, + Desc: desc, + Version: jobsGorm.runVersion, + CreatedAt: gotime.Current().Format(), + }) + if statusCreate.RowsAffected == 0 { + log.Println("statusCreate", statusCreate.Error) + } + if status == 0 { + statusEdit := jobsGorm.EditTask(tx, info.Id).Select("run_id").Updates(Task{ + RunId: gouuid.GetUuId(), + }) + if statusEdit.RowsAffected == 0 { + log.Println("statusEdit", statusEdit.Error) + } + return + } + // 任务 + if status == CodeSuccess { + // 执行成功 + statusEdit := jobsGorm.EditTask(tx, info.Id). + Select("status_desc", "number", "run_id", "updated_ip", "updated_at", "result"). + Updates(Task{ + StatusDesc: "执行成功", + Number: info.Number + 1, + RunId: gouuid.GetUuId(), + UpdatedIp: jobsGorm.outsideIp, + UpdatedAt: gotime.Current().Format(), + Result: desc, + }) + if statusEdit.RowsAffected == 0 { + log.Println("statusEdit", statusEdit.Error) + } + } + if status == CodeEnd { + // 执行成功、提前结束 + statusEdit := jobsGorm.EditTask(tx, info.Id). + Select("status", "status_desc", "number", "updated_ip", "updated_at", "result"). + Updates(Task{ + Status: jobs_common.TASK_SUCCESS, + StatusDesc: "结束执行", + Number: info.Number + 1, + UpdatedIp: jobsGorm.outsideIp, + UpdatedAt: gotime.Current().Format(), + Result: desc, + }) + if statusEdit.RowsAffected == 0 { + log.Println("statusEdit", statusEdit.Error) + } + } + if status == CodeError { + // 执行失败 + statusEdit := jobsGorm.EditTask(tx, info.Id). + Select("status_desc", "number", "run_id", "updated_ip", "updated_at", "result"). + Updates(Task{ + StatusDesc: "执行失败", + Number: info.Number + 1, + RunId: gouuid.GetUuId(), + UpdatedIp: jobsGorm.outsideIp, + UpdatedAt: gotime.Current().Format(), + Result: desc, + }) + if statusEdit.RowsAffected == 0 { + log.Println("statusEdit", statusEdit.Error) + } + } + if info.MaxNumber != 0 { + if info.Number+1 >= info.MaxNumber { + // 关闭执行 + statusEdit := jobsGorm.EditTask(tx, info.Id). + Select("status"). + Updates(Task{ + Status: jobs_common.TASK_TIMEOUT, + }) + if statusEdit.RowsAffected == 0 { + log.Println("statusEdit", statusEdit.Error) + } + } + } +} diff --git a/version.go b/version.go index 3deaa14..03d94e0 100644 --- a/version.go +++ b/version.go @@ -1,3 +1,3 @@ package gojobs -const Version = "1.0.27" +const Version = "1.0.28"