- update gorm model

master v1.0.85
李光春 2 years ago
parent 1d1be8330b
commit 6b3b29d0c2

@ -88,6 +88,8 @@ func NewClient(config *ClientConfig) (*Client, error) {
if redisClient != nil && redisClient.Db != nil {
c.cache.redisClient = redisClient
c.cache.redisLockClient = c.cache.redisClient.NewLock()
} else {
return nil, redisPrefixFunNoConfig
}
// 缓存前缀
@ -105,9 +107,6 @@ func NewClient(config *ClientConfig) (*Client, error) {
c.db.gormClient = gormClient
c.autoMigrateTask(ctx)
c.autoMigrateTaskIp(ctx)
c.autoMigrateTaskLog(ctx)
c.autoMigrateTaskLogRun(ctx)
} else {
return nil, gormClientFunNoConfig
}

@ -1,6 +1,6 @@
package gojobs
const (
Version = "1.0.84"
Version = "1.0.85"
SpecifyIpNull = "0.0.0.0"
)

@ -3,8 +3,6 @@ package gojobs
import (
"go.dtapp.net/gojobs/jobs_gorm_model"
"gorm.io/gorm"
"log"
"strings"
)
// TaskTakeId 查询单任务
@ -160,60 +158,3 @@ func (c *Client) UpdateFrequency(tx *gorm.DB, id uint, frequency int64) *gorm.DB
Frequency: frequency,
})
}
func (c *Client) taskIpTake(tx *gorm.DB, taskType, ips string) (result jobs_gorm_model.TaskIp) {
tx.Where("task_type = ?", taskType).Where("ips = ?", ips).Take(&result)
return result
}
// TaskIpUpdate 更新ip
func (c *Client) TaskIpUpdate(tx *gorm.DB, taskType, ips string) *gorm.DB {
query := c.taskIpTake(tx, taskType, ips)
if query.Id != 0 {
return tx
}
updateStatus := tx.Create(&jobs_gorm_model.TaskIp{
TaskType: taskType,
Ips: ips,
})
if updateStatus.RowsAffected == 0 {
log.Println("任务更新失败:", updateStatus.Error)
}
return updateStatus
}
// TaskIpInit 实例任务ip
func (c *Client) TaskIpInit(tx *gorm.DB, ips map[string]string) bool {
if c.config.systemOutsideIp == "" || c.config.systemOutsideIp == "0.0.0.0" {
return false
}
tx.Where("ips = ?", c.config.systemOutsideIp).Delete(&jobs_gorm_model.TaskIp{}) // 删除
for k, v := range ips {
if v == "" {
c.TaskIpUpdate(tx, k, c.config.systemOutsideIp)
} else {
find := strings.Contains(v, ",")
if find == true {
// 包含
parts := strings.Split(v, ",")
for _, vv := range parts {
if vv == c.config.systemOutsideIp {
c.TaskIpUpdate(tx, k, c.config.systemOutsideIp)
}
}
} else {
// 不包含
if v == c.config.systemOutsideIp {
c.TaskIpUpdate(tx, k, c.config.systemOutsideIp)
}
}
}
}
return true
}
// TaskLogRunTake 查询任务执行日志
func (c *Client) TaskLogRunTake(tx *gorm.DB, taskId uint, runId string) (result jobs_gorm_model.TaskLogRun) {
tx.Select("id", "os", "arch", "outside_ip", "created_at").Where("task_id = ?", taskId).Where("run_id = ?", runId).Take(&result)
return result
}

21
ip.go

@ -1,21 +0,0 @@
package gojobs
import (
"context"
"go.dtapp.net/goip"
"go.dtapp.net/gojobs/jobs_gorm_model"
"gorm.io/gorm"
)
// RefreshIp 刷新Ip
func (c *Client) RefreshIp(ctx context.Context, tx *gorm.DB) {
xip := goip.GetOutsideIp(ctx)
if c.config.systemOutsideIp == "" || c.config.systemOutsideIp == "0.0.0.0" {
return
}
if c.config.systemOutsideIp == xip {
return
}
tx.Where("ips = ?", c.config.systemOutsideIp).Delete(&jobs_gorm_model.TaskIp{}) // 删除
c.config.systemOutsideIp = xip
}

@ -1,12 +0,0 @@
package jobs_gorm_model
// TaskIp 任务Ip
type TaskIp struct {
Id int64 `gorm:"primaryKey;comment:记录编号" json:"id"` // 记录编号
TaskType string `gorm:"comment:任务编号" json:"task_type"` // 任务编号
Ips string `gorm:"comment:任务IP" json:"ips"` // 任务IP
}
func (TaskIp) TableName() string {
return "task_ip"
}

@ -1,17 +0,0 @@
package jobs_gorm_model
import "time"
// TaskLog 任务日志模型
type TaskLog struct {
Id uint `gorm:"primaryKey;comment:记录编号" json:"id"` // 记录编号
TaskId uint `gorm:"index;comment:任务编号" json:"task_id"` // 任务编号
StatusCode int `gorm:"index;comment:状态码" json:"status_code"` // 状态码
Desc string `gorm:"comment:结果" json:"desc"` // 结果
Version string `gorm:"comment:版本" json:"version"` // 版本
CreatedAt time.Time `gorm:"autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
}
func (TaskLog) TableName() string {
return "task_log"
}

@ -1,23 +0,0 @@
package jobs_gorm_model
import "time"
// TaskLogRun 任务执行日志模型
type TaskLogRun struct {
Id uint `gorm:"primaryKey;comment:记录编号" json:"id"` // 记录编号
TaskId uint `gorm:"index;comment:任务编号" json:"task_id"` // 任务编号
RunId string `gorm:"comment:执行编号" json:"run_id"` // 执行编号
OutsideIp string `gorm:"comment:外网ip" json:"outside_ip"` // 外网ip
InsideIp string `gorm:"comment:内网ip" json:"inside_ip"` // 内网ip
Os string `gorm:"comment:系统类型" json:"os"` // 系统类型
Arch string `gorm:"comment:系统架构" json:"arch"` // 系统架构
Gomaxprocs int `gorm:"comment:CPU核数" json:"gomaxprocs"` // CPU核数
GoVersion string `gorm:"comment:GO版本" json:"go_version"` // GO版本
SdkVersion string `gorm:"comment:SDK版本" json:"sdk_version"` // SDK版本
MacAddrs string `gorm:"comment:Mac地址" json:"mac_addrs"` // Mac地址
CreatedAt time.Time `gorm:"autoCreateTime;comment:创建时间" json:"created_at"` // 创建时间
}
func (TaskLogRun) TableName() string {
return "task_log_run"
}

@ -14,21 +14,6 @@ func (c *Client) autoMigrateTask(ctx context.Context) {
c.zapLog.WithTraceId(ctx).Sugar().Info(c.db.gormClient.Db.AutoMigrate(&jobs_gorm_model.Task{}))
}
// 创建模型
func (c *Client) autoMigrateTaskIp(ctx context.Context) {
c.zapLog.WithTraceId(ctx).Sugar().Info(c.db.gormClient.Db.AutoMigrate(&jobs_gorm_model.TaskIp{}))
}
// 创建模型
func (c *Client) autoMigrateTaskLog(ctx context.Context) {
c.zapLog.WithTraceId(ctx).Sugar().Info(c.db.gormClient.Db.AutoMigrate(&jobs_gorm_model.TaskLog{}))
}
// 创建模型
func (c *Client) autoMigrateTaskLogRun(ctx context.Context) {
c.zapLog.WithTraceId(ctx).Sugar().Info(c.db.gormClient.Db.AutoMigrate(&jobs_gorm_model.TaskLogRun{}))
}
// 创建时间序列集合
func (c *Client) mongoCreateCollectionTask(ctx context.Context) {
var commandResult bson.M

@ -16,18 +16,9 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int,
return
}
// 请求函数记录
err := c.db.gormClient.Db.Create(&jobs_gorm_model.TaskLog{
TaskId: info.Id,
StatusCode: status,
Desc: result,
Version: c.config.sdkVersion,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.Create]%s", err.Error())
}
if status == 0 {
err = c.EditTask(c.db.gormClient.Db, info.Id).
switch status {
case 0:
err := c.EditTask(c.db.gormClient.Db, info.Id).
Select("run_id", "result", "next_run_time").
Updates(jobs_gorm_model.Task{
RunId: runId,
@ -35,14 +26,12 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int,
NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.0.EditTask]%s", err.Error())
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.0]%s", err.Error())
}
return
}
// 任务
if status == CodeSuccess {
case CodeSuccess:
// 执行成功
err = c.EditTask(c.db.gormClient.Db, info.Id).
err := c.EditTask(c.db.gormClient.Db, info.Id).
Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time").
Updates(jobs_gorm_model.Task{
StatusDesc: "执行成功",
@ -53,12 +42,11 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int,
NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeSuccess.EditTask]%s", err.Error())
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeSuccess]%s", err.Error())
}
}
if status == CodeEnd {
case CodeEnd:
// 执行成功、提前结束
err = c.EditTask(c.db.gormClient.Db, info.Id).
err := c.EditTask(c.db.gormClient.Db, info.Id).
Select("status", "status_desc", "number", "updated_ip", "result", "next_run_time").
Updates(jobs_gorm_model.Task{
Status: TASK_SUCCESS,
@ -69,12 +57,11 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int,
NextRunTime: gotime.Current().Time,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeEnd.EditTask]%s", err.Error())
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeEnd]%s", err.Error())
}
}
if status == CodeError {
case CodeError:
// 执行失败
err = c.EditTask(c.db.gormClient.Db, info.Id).
err := c.EditTask(c.db.gormClient.Db, info.Id).
Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time").
Updates(jobs_gorm_model.Task{
StatusDesc: "执行失败",
@ -85,36 +72,22 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int,
NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeError.EditTask]%s", err.Error())
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeError]%s", err.Error())
}
}
if info.MaxNumber != 0 {
if info.Number+1 >= info.MaxNumber {
// 关闭执行
err = c.EditTask(c.db.gormClient.Db, info.Id).
err := c.EditTask(c.db.gormClient.Db, info.Id).
Select("status").
Updates(jobs_gorm_model.Task{
Status: TASK_TIMEOUT,
}).Error
if err != nil {
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.TASK_TIMEOUT.EditTask]%s", err.Error())
c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.TASK_TIMEOUT]%s", err.Error())
}
}
}
}
// RunAddLog 任务执行日志
func (c *Client) RunAddLog(ctx context.Context, id uint, runId string) error {
return c.db.gormClient.Db.Create(&jobs_gorm_model.TaskLogRun{
TaskId: id,
RunId: runId,
InsideIp: c.config.systemInsideIp,
OutsideIp: c.config.systemOutsideIp,
Os: c.config.systemOs,
Arch: c.config.systemArch,
Gomaxprocs: c.config.systemCpuQuantity,
GoVersion: c.config.goVersion,
SdkVersion: c.config.sdkVersion,
MacAddrs: c.config.systemMacAddrS,
}).Error
return
}

Loading…
Cancel
Save