diff --git a/CHANGELOG.md b/CHANGELOG.md index 72594cd..8206801 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## v1.0.19 + +- 优化任务 + ## v1.0.18 - 更新任务 diff --git a/jobs_common.go b/jobs_common/jobs_common.go similarity index 91% rename from jobs_common.go rename to jobs_common/jobs_common.go index 00ad596..96b5c20 100644 --- a/jobs_common.go +++ b/jobs_common/jobs_common.go @@ -1,4 +1,4 @@ -package gojobs +package jobs_common const ( TASK_IN = "IN" // 任务运行 diff --git a/jobs_gorm.go b/jobs_gorm.go index ab005e0..18ca919 100644 --- a/jobs_gorm.go +++ b/jobs_gorm.go @@ -1,12 +1,9 @@ package gojobs import ( - "go.dtapp.net/goarray" - "go.dtapp.net/goip" "go.dtapp.net/gojobs/jobs_gorm" "go.dtapp.net/goredis" "gorm.io/gorm" - "runtime" ) type ConfigJobsGorm struct { @@ -19,16 +16,9 @@ func NewJobsGorm(config *ConfigJobsGorm) *jobs_gorm.JobsGorm { var ( jobsGorm = &jobs_gorm.JobsGorm{} ) - jobsGorm.RunVersion = Version - jobsGorm.Os = runtime.GOOS - jobsGorm.Arch = runtime.GOARCH - jobsGorm.MaxProCs = runtime.GOMAXPROCS(0) - jobsGorm.Version = runtime.Version() - jobsGorm.MacAddrS = goarray.TurnString(goip.GetMacAddr()) - jobsGorm.InsideIp = goip.GetInsideIp() - jobsGorm.OutsideIp = goip.GetOutsideIp() - jobsGorm.MainService = config.MainService - jobsGorm.Db = config.Db - jobsGorm.Redis = config.Redis + jobsGorm = jobs_gorm.NewGorm(jobs_gorm.JobsGorm{ + Db: config.Db, + Redis: config.Redis, + }, config.MainService) return jobsGorm } diff --git a/jobs_gorm/check_task.go b/jobs_gorm/check_task.go index 7307dfd..4e35960 100644 --- a/jobs_gorm/check_task.go +++ b/jobs_gorm/check_task.go @@ -7,7 +7,7 @@ import ( ) func (jobsGorm *JobsGorm) Check(tx *gorm.DB, vs []Task) { - if jobsGorm.MainService > 0 && len(vs) > 0 { + if jobsGorm.mainService > 0 && len(vs) > 0 { for _, v := range vs { diffInSecondWithAbs := gotime.Current().DiffInSecondWithAbs(gotime.SetCurrentParse(v.UpdatedAt).Time) if diffInSecondWithAbs >= v.Frequency*3 { diff --git a/jobs_gorm/ip.go b/jobs_gorm/ip.go index 5c7f9d2..4627ede 100644 --- a/jobs_gorm/ip.go +++ b/jobs_gorm/ip.go @@ -8,12 +8,12 @@ import ( // RefreshIp 刷新Ip func (jobsGorm *JobsGorm) RefreshIp(tx *gorm.DB) { xip := goip.GetOutsideIp() - if jobsGorm.OutsideIp == "" || jobsGorm.OutsideIp == "0.0.0.0" { + if jobsGorm.outsideIp == "" || jobsGorm.outsideIp == "0.0.0.0" { return } - if jobsGorm.OutsideIp == xip { + if jobsGorm.outsideIp == xip { return } - tx.Where("ips = ?", jobsGorm.OutsideIp).Delete(&TaskIp{}) // 删除 - jobsGorm.OutsideIp = xip + tx.Where("ips = ?", jobsGorm.outsideIp).Delete(&TaskIp{}) // 删除 + jobsGorm.outsideIp = xip } diff --git a/jobs_gorm/jobs_gorm.go b/jobs_gorm/jobs_gorm.go index ebe201c..c45d936 100644 --- a/jobs_gorm/jobs_gorm.go +++ b/jobs_gorm/jobs_gorm.go @@ -1,18 +1,37 @@ package jobs_gorm -import "gorm.io/gorm" -import "go.dtapp.net/goredis" +import ( + "go.dtapp.net/goarray" + "go.dtapp.net/goip" + "go.dtapp.net/gojobs" + "go.dtapp.net/goredis" + "gorm.io/gorm" + "runtime" +) type JobsGorm struct { - RunVersion string // 运行版本 - Os string // 系统类型 - Arch string // 系统架构 - MaxProCs int // CPU核数 - Version string // GO版本 - MacAddrS string // Mac地址 - InsideIp string // 内网ip - OutsideIp string // 外网ip - MainService int // 主要服务 + runVersion string // 运行版本 + os string // 系统类型 + arch string // 系统架构 + maxProCs int // CPU核数 + version string // GO版本 + macAddrS string // Mac地址 + insideIp string // 内网ip + outsideIp string // 外网ip + mainService int // 主要服务 Db *gorm.DB // 数据库 Redis goredis.App // 缓存数据库服务 } + +func NewGorm(jobsGorm JobsGorm, mainService int) *JobsGorm { + jobsGorm.runVersion = gojobs.Version + jobsGorm.os = runtime.GOOS + jobsGorm.arch = runtime.GOARCH + jobsGorm.maxProCs = runtime.GOMAXPROCS(0) + jobsGorm.version = runtime.Version() + jobsGorm.macAddrS = goarray.TurnString(goip.GetMacAddr()) + jobsGorm.insideIp = goip.GetInsideIp() + jobsGorm.outsideIp = goip.GetOutsideIp() + jobsGorm.mainService = mainService + return &jobsGorm +} diff --git a/jobs_gorm/lock.go b/jobs_gorm/lock.go index 63e311e..81201ba 100644 --- a/jobs_gorm/lock.go +++ b/jobs_gorm/lock.go @@ -13,7 +13,7 @@ func (jobsGorm *JobsGorm) Lock(info Task, id any) string { if judgeCache != "" { return judgeCache } - jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器上锁成功", jobsGorm.OutsideIp), goredis.WithExpire(time.Millisecond*time.Duration(info.Frequency)*3)) + jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器上锁成功", jobsGorm.outsideIp), goredis.WithExpire(time.Millisecond*time.Duration(info.Frequency)*3)) return "" } @@ -30,6 +30,6 @@ func (jobsGorm *JobsGorm) LockForever(info Task, id any) string { if judgeCache != "" { return judgeCache } - jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器永远上锁成功", jobsGorm.OutsideIp)) + jobsGorm.Redis.NewStringOperation().Set(cacheName, fmt.Sprintf("已在%v机器永远上锁成功", jobsGorm.outsideIp)) return "" } diff --git a/jobs_gorm/model_task.go b/jobs_gorm/model_task.go index ea41543..5cda198 100644 --- a/jobs_gorm/model_task.go +++ b/jobs_gorm/model_task.go @@ -1,7 +1,7 @@ package jobs_gorm import ( - "go.dtapp.net/gojobs" + "go.dtapp.net/gojobs/jobs_common" "gorm.io/gorm" ) @@ -34,7 +34,7 @@ func (m *Task) TableName() string { // TaskTake 查询任务 func (jobsGorm *JobsGorm) TaskTake(tx *gorm.DB, customId string) (result Task) { - tx.Where("custom_id = ?", customId).Where("status = ?", gojobs.TASK_IN).Take(&result) + tx.Where("custom_id = ?", customId).Where("status = ?", jobs_common.TASK_IN).Take(&result) return result } @@ -52,13 +52,13 @@ func (jobsGorm *JobsGorm) TaskCustomIdTakeStatus(tx *gorm.DB, Type, customId, st // TaskFind 查询任务 func (jobsGorm *JobsGorm) TaskFind(tx *gorm.DB, frequency int64) (results []Task) { - tx.Table("task").Select("task.*").Where("task.frequency = ?", frequency).Where("task.status = ?", gojobs.TASK_IN).Where("task_ip.ips = ?", jobsGorm.OutsideIp).Order("task.id asc").Joins("left join task_ip on task_ip.task_type = task.type").Find(&results) + tx.Table("task").Select("task.*").Where("task.frequency = ?", frequency).Where("task.status = ?", jobs_common.TASK_IN).Where("task_ip.ips = ?", jobsGorm.outsideIp).Order("task.id asc").Joins("left join task_ip on task_ip.task_type = task.type").Find(&results) return jobsGorm.taskFindCheck(results) } // TaskFindAll 查询任务 func (jobsGorm *JobsGorm) TaskFindAll(tx *gorm.DB, frequency int64) (results []Task) { - tx.Where("frequency = ?", frequency).Where("status = ?", gojobs.TASK_IN).Order("id asc").Find(&results) + tx.Where("frequency = ?", frequency).Where("status = ?", jobs_common.TASK_IN).Order("id asc").Find(&results) return results } @@ -68,7 +68,7 @@ func (jobsGorm *JobsGorm) taskFindCheck(lists []Task) (results []Task) { if v.SpecifyIp == "" { results = append(results, v) } else { - if jobsGorm.OutsideIp == v.SpecifyIp { + if jobsGorm.outsideIp == v.SpecifyIp { results = append(results, v) } } diff --git a/jobs_gorm/model_task_ip.go b/jobs_gorm/model_task_ip.go index 4086066..93302ae 100644 --- a/jobs_gorm/model_task_ip.go +++ b/jobs_gorm/model_task_ip.go @@ -35,27 +35,27 @@ func (jobsGorm *JobsGorm) TaskIpUpdate(tx *gorm.DB, taskType, ips string) *gorm. // TaskIpInit 实例任务ip func (jobsGorm *JobsGorm) TaskIpInit(tx *gorm.DB, ips map[string]string) bool { - if jobsGorm.OutsideIp == "" || jobsGorm.OutsideIp == "0.0.0.0" { + if jobsGorm.outsideIp == "" || jobsGorm.outsideIp == "0.0.0.0" { return false } - tx.Where("ips = ?", jobsGorm.OutsideIp).Delete(&TaskIp{}) // 删除 + tx.Where("ips = ?", jobsGorm.outsideIp).Delete(&TaskIp{}) // 删除 for k, v := range ips { if v == "" { - jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp) + jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp) } else { find := strings.Contains(v, ",") if find == true { // 包含 parts := strings.Split(v, ",") for _, vv := range parts { - if vv == jobsGorm.OutsideIp { - jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp) + if vv == jobsGorm.outsideIp { + jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp) } } } else { // 不包含 - if v == jobsGorm.OutsideIp { - jobsGorm.TaskIpUpdate(tx, k, jobsGorm.OutsideIp) + if v == jobsGorm.outsideIp { + jobsGorm.TaskIpUpdate(tx, k, jobsGorm.outsideIp) } } } diff --git a/version.go b/version.go index 41f40d1..cdb0fe0 100644 --- a/version.go +++ b/version.go @@ -1,3 +1,3 @@ package gojobs -const Version = "1.0.18" +const Version = "1.0.19"