diff --git a/client.go b/client.go index 904fb94..1724c44 100644 --- a/client.go +++ b/client.go @@ -11,10 +11,6 @@ import ( // client *dorm.GormClient type gormClientFun func() *dorm.GormClient -// client *dorm.MongoClient -// databaseName string -type mongoClientFun func() (*dorm.MongoClient, string) - // client *dorm.RedisClient type redisClientFun func() *dorm.RedisClient @@ -28,18 +24,19 @@ type redisPrefixFun func() (lockKeyPrefix, lockKeySeparator, cornKeyPrefix, corn // ClientConfig 实例配置 type ClientConfig struct { GormClientFun gormClientFun // 数据库驱动 - MongoClientFun mongoClientFun // 数据库驱动 RedisClientFun redisClientFun // 数据库驱动 RedisPrefixFun redisPrefixFun // 前缀 Debug bool // 日志开关 ZapLog *golog.ZapLog // 日志服务 CurrentIp string // 当前ip + JsonStatus bool // json状态 } // Client 实例 type Client struct { - zapLog *golog.ZapLog // 日志服务 - config struct { + gormClient *dorm.GormClient // 数据库 + zapLog *golog.ZapLog // 日志服务 + config struct { systemHostName string // 主机名 systemInsideIp string // 内网ip systemOs string // 系统类型 @@ -50,6 +47,7 @@ type Client struct { systemMacAddrS string // Mac地址 systemOutsideIp string // 外网ip debug bool // 日志开关 + jsonStatus bool // json状态 } cache struct { redisClient *dorm.RedisClient // 数据库 @@ -59,11 +57,6 @@ type Client struct { cornKeyPrefix string // 任务Key前缀 xxx_cron cornKeyCustom string // 任务Key自定义 } - db struct { - gormClient *dorm.GormClient // 数据库 - mongoClient *dorm.MongoClient // 数据库 - mongoDatabaseName string // 数据库名 - } } // NewClient 创建实例 @@ -77,6 +70,8 @@ func NewClient(config *ClientConfig) (*Client, error) { c.config.debug = config.Debug + c.config.jsonStatus = config.JsonStatus + // 配置外网ip if config.CurrentIp == "" { config.CurrentIp = goip.GetOutsideIp(ctx) @@ -122,36 +117,14 @@ func NewClient(config *ClientConfig) (*Client, error) { // 配置关系数据库 gormClient := config.GormClientFun() if gormClient != nil && gormClient.Db != nil { - c.db.gormClient = gormClient + c.gormClient = gormClient c.autoMigrateTask(ctx) + c.autoMigrateTaskLog(ctx) } else { return nil, gormClientFunNoConfig } - if c.config.debug { - log.Printf("[gojobs]配置关系数据库成功:%+v\n", c.db) - } - - // 配置非关系数据库 - mongoClient, databaseName := config.MongoClientFun() - if mongoClient != nil && mongoClient.Db != nil { - c.db.mongoClient = mongoClient - if databaseName == "" { - return nil, mongoClientFunNoConfig - } - c.db.mongoDatabaseName = databaseName - - c.mongoCreateCollectionTask(ctx) - c.mongoCreateIndexesTask(ctx) - } else { - return nil, mongoClientFunNoConfig - } - - if c.config.debug { - log.Printf("[gojobs]配置非关系数据库成功:%+v\n", c.db) - } - if c.config.debug { log.Printf("[gojobs]创建实例成功:%+v\n", c) } diff --git a/const.go b/const.go index 2063c4e..7213fcd 100644 --- a/const.go +++ b/const.go @@ -1,6 +1,6 @@ package gojobs const ( - Version = "1.0.91" + Version = "1.0.92" SpecifyIpNull = "0.0.0.0" ) diff --git a/create_in.go b/create_in.go index 17abcc3..7c3f9da 100644 --- a/create_in.go +++ b/create_in.go @@ -4,12 +4,8 @@ import ( "context" "errors" "fmt" - "go.dtapp.net/dorm" "go.dtapp.net/gojobs/jobs_gorm_model" - "go.dtapp.net/gojobs/jobs_mongo_model" "go.dtapp.net/gostring" - "go.dtapp.net/gotime" - "go.mongodb.org/mongo-driver/bson/primitive" "gorm.io/gorm" ) @@ -48,62 +44,6 @@ func (c *Client) CreateInCustomId(ctx context.Context, config *ConfigCreateInCus if err != nil { return errors.New(fmt.Sprintf("创建[%s@%s]任务失败:%s", config.CustomId, config.Type, err.Error())) } - if c.db.mongoClient != nil && c.db.mongoClient.Db != nil { - go func() { - _, err = c.db.mongoClient.Database(c.db.mongoDatabaseName). - Collection(jobs_mongo_model.Task{}.TableName()). - InsertOne(ctx, &jobs_mongo_model.Task{ - Id: primitive.NewObjectID(), - Status: TASK_IN, - Params: config.Params, - StatusDesc: "首次添加任务", - Frequency: config.Frequency, - RunId: gostring.GetUuId(), - CustomId: config.CustomId, - CustomSequence: config.CustomSequence, - Type: config.Type, - TypeName: config.TypeName, - SpecifyIp: config.SpecifyIp, - CreateRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - CurrentRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - NextRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeFromTime(gotime.Current().AfterSeconds(config.Frequency).Time), - RunIp: config.CurrentIp, - }, - CreateTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - }) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.CreateInCustomId]:%s", err.Error()) - } - }() - } return nil } @@ -146,62 +86,6 @@ func (c *Client) CreateInCustomIdOnly(ctx context.Context, config *ConfigCreateI if err != nil { return errors.New(fmt.Sprintf("创建[%s@%s]任务失败:%s", config.CustomId, config.Type, err.Error())) } - if c.db.mongoClient != nil && c.db.mongoClient.Db != nil { - go func() { - _, err = c.db.mongoClient.Database(c.db.mongoDatabaseName). - Collection(jobs_mongo_model.Task{}.TableName()). - InsertOne(ctx, &jobs_mongo_model.Task{ - Id: primitive.NewObjectID(), - Status: TASK_IN, - Params: config.Params, - StatusDesc: "首次添加任务", - Frequency: config.Frequency, - RunId: gostring.GetUuId(), - CustomId: config.CustomId, - CustomSequence: config.CustomSequence, - Type: config.Type, - TypeName: config.TypeName, - SpecifyIp: config.SpecifyIp, - CreateRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - CurrentRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - NextRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeFromTime(gotime.Current().AfterSeconds(config.Frequency).Time), - RunIp: config.CurrentIp, - }, - CreateTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - }) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.CreateInCustomIdOnly]:%s", err.Error()) - } - }() - } return nil } @@ -242,63 +126,6 @@ func (c *Client) CreateInCustomIdMaxNumber(ctx context.Context, config *ConfigCr if err != nil { return errors.New(fmt.Sprintf("创建[%s@%s]任务失败:%s", config.CustomId, config.Type, err.Error())) } - if c.db.mongoClient != nil && c.db.mongoClient.Db != nil { - go func() { - _, err = c.db.mongoClient.Database(c.db.mongoDatabaseName). - Collection(jobs_mongo_model.Task{}.TableName()). - InsertOne(ctx, &jobs_mongo_model.Task{ - Id: primitive.NewObjectID(), - Status: TASK_IN, - Params: config.Params, - StatusDesc: "首次添加任务", - Frequency: config.Frequency, - MaxNumber: config.MaxNumber, - RunId: gostring.GetUuId(), - CustomId: config.CustomId, - CustomSequence: config.CustomSequence, - Type: config.Type, - TypeName: config.TypeName, - SpecifyIp: config.SpecifyIp, - CreateRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - CurrentRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - NextRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeFromTime(gotime.Current().AfterSeconds(config.Frequency).Time), - RunIp: config.CurrentIp, - }, - CreateTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - }) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.CreateInCustomIdMaxNumber]:%s", err.Error()) - } - }() - } return nil } @@ -343,62 +170,5 @@ func (c *Client) CreateInCustomIdMaxNumberOnly(ctx context.Context, config *Conf if err != nil { return errors.New(fmt.Sprintf("创建[%s@%s]任务失败:%s", config.CustomId, config.Type, err.Error())) } - if c.db.mongoClient != nil && c.db.mongoClient.Db != nil { - go func() { - _, err = c.db.mongoClient.Database(c.db.mongoDatabaseName). - Collection(jobs_mongo_model.Task{}.TableName()). - InsertOne(ctx, &jobs_mongo_model.Task{ - Id: primitive.NewObjectID(), - Status: TASK_IN, - Params: config.Params, - StatusDesc: "首次添加任务", - Frequency: config.Frequency, - MaxNumber: config.MaxNumber, - RunId: gostring.GetUuId(), - CustomId: config.CustomId, - CustomSequence: config.CustomSequence, - Type: config.Type, - TypeName: config.TypeName, - SpecifyIp: config.SpecifyIp, - CreateRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - CurrentRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - NextRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeFromTime(gotime.Current().AfterSeconds(config.Frequency).Time), - RunIp: config.CurrentIp, - }, - CreateTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - }) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.CreateInCustomIdMaxNumberOnly]:%s", err.Error()) - } - }() - } return nil } diff --git a/create_wait.go b/create_wait.go index b6cb7ca..dda2ffa 100644 --- a/create_wait.go +++ b/create_wait.go @@ -4,12 +4,8 @@ import ( "context" "errors" "fmt" - "go.dtapp.net/dorm" "go.dtapp.net/gojobs/jobs_gorm_model" - "go.dtapp.net/gojobs/jobs_mongo_model" "go.dtapp.net/gostring" - "go.dtapp.net/gotime" - "go.mongodb.org/mongo-driver/bson/primitive" "gorm.io/gorm" ) @@ -48,61 +44,5 @@ func (c *Client) CreateWaitCustomId(ctx context.Context, config *ConfigCreateWai if err != nil { return errors.New(fmt.Sprintf("创建[%s@%s]任务失败:%s", config.CustomId, config.Type, err.Error())) } - if c.db.mongoClient != nil && c.db.mongoClient.Db != nil { - go func() { - _, err = c.db.mongoClient.Database(c.db.mongoDatabaseName). - Collection(jobs_mongo_model.Task{}.TableName()). - InsertOne(ctx, &jobs_mongo_model.Task{ - Id: primitive.NewObjectID(), - Status: TASK_WAIT, - Params: config.Params, - StatusDesc: "首次添加等待任务", - Frequency: config.Frequency, - RunId: gostring.GetUuId(), - CustomId: config.CustomId, - CustomSequence: config.CustomSequence, - Type: config.Type, - TypeName: config.TypeName, - SpecifyIp: config.SpecifyIp, - CreateRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - CurrentRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeCurrent(), - RunIp: config.CurrentIp, - }, - NextRunInfo: jobs_mongo_model.TaskRunInfo{ - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - SystemCpuQuantity: c.config.systemCpuQuantity, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - RunTime: dorm.NewBsonTimeFromTime(gotime.Current().AfterSeconds(config.Frequency).Time), - RunIp: config.CurrentIp, - }, - CreateTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - }) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.CreateWaitCustomId]:%s", err.Error()) - } - }() - } return nil } diff --git a/error.go b/error.go index 4ec3402..15bdb98 100644 --- a/error.go +++ b/error.go @@ -4,7 +4,6 @@ import "errors" var ( currentIpNoConfig = errors.New("请配置 CurrentIp") - mongoClientFunNoConfig = errors.New("请配置 MongoClientFun") redisPrefixFunNoConfig = errors.New("请配置 RedisPrefixFun") gormClientFunNoConfig = errors.New("请配置 GormClientFun") TaskIsExist = errors.New("任务已存在") diff --git a/get.go b/get.go index 4d3d7f3..b467255 100644 --- a/get.go +++ b/get.go @@ -2,18 +2,12 @@ package gojobs import ( "github.com/go-redis/redis/v9" - "go.mongodb.org/mongo-driver/mongo" "gorm.io/gorm" ) // GetDb 获取数据库驱动 func (c *Client) GetDb() *gorm.DB { - return c.db.gormClient.Db -} - -// GetMongoDb 获取数据库驱动 -func (c *Client) GetMongoDb() *mongo.Client { - return c.db.mongoClient.Db + return c.gormClient.Db } // GetRedis 获取缓存数据库驱动 diff --git a/go.mod b/go.mod index 1870947..5c43a55 100644 --- a/go.mod +++ b/go.mod @@ -9,11 +9,10 @@ require ( go.dtapp.net/dorm v1.0.36 go.dtapp.net/goarray v1.0.1 go.dtapp.net/goip v1.0.34 - go.dtapp.net/golog v1.0.77 + go.dtapp.net/golog v1.0.78 go.dtapp.net/gostring v1.0.10 go.dtapp.net/gotime v1.0.5 go.dtapp.net/gotrace_id v1.0.6 - go.mongodb.org/mongo-driver v1.10.2 gorm.io/gorm v1.23.9 ) @@ -78,6 +77,7 @@ require ( go.dtapp.net/gorandom v1.0.1 // indirect go.dtapp.net/gorequest v1.0.31 // indirect go.dtapp.net/gourl v1.0.0 // indirect + go.mongodb.org/mongo-driver v1.10.2 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.23.0 // indirect diff --git a/go.sum b/go.sum index 960813e..d9f6db2 100644 --- a/go.sum +++ b/go.sum @@ -513,8 +513,8 @@ go.dtapp.net/goarray v1.0.1 h1:cHNHaJ2MFcuJPA1WKU2PM1EUZShS1vQqEH7n6YXsQVU= go.dtapp.net/goarray v1.0.1/go.mod h1:/MPhlFCAhQyeNV1M0v1PAOOX33Sg705fVjUgMO12IBQ= go.dtapp.net/goip v1.0.34 h1:aW2CuPpQwcDOJiyx/gHbvrha3/x+poFRpDxsLtO4EVw= go.dtapp.net/goip v1.0.34/go.mod h1:EctL6B8ue/kZKPr+kKZPU6YTTpNhihane9BHHffwo6Q= -go.dtapp.net/golog v1.0.77 h1:FexLMY3r9niMKea7zZ1FUNpoOoG4HYjcIr2JjF4+4Es= -go.dtapp.net/golog v1.0.77/go.mod h1:1/HpH2xNbzicKf4gOO6jTk3rJoxU106KGzVyvEiQFjg= +go.dtapp.net/golog v1.0.78 h1:7qWBO3iGL/UJneSJ88PpUbcQS3Uggc9ISI5HbrnMH5o= +go.dtapp.net/golog v1.0.78/go.mod h1:1/HpH2xNbzicKf4gOO6jTk3rJoxU106KGzVyvEiQFjg= go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs= go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8= go.dtapp.net/gorequest v1.0.31 h1:r/OoU5Y00TbJjkQtpvwjsb/pllqO0UQQjFRY1veZYZc= diff --git a/jobs_gorm_model/task_log.go b/jobs_gorm_model/task_log.go new file mode 100644 index 0000000..e09b81d --- /dev/null +++ b/jobs_gorm_model/task_log.go @@ -0,0 +1,24 @@ +package jobs_gorm_model + +import "time" + +// TaskLog 任务日志模型 +type TaskLog struct { + LogId uint `gorm:"primaryKey;comment:日志编号" json:"log_id"` // 日志编号 + TaskId uint `gorm:"index;comment:任务编号" json:"task_id"` // 任务编号 + TaskRunId string `gorm:"comment:执行编号" json:"task_run_id"` // 执行编号 + TaskResultCode int `gorm:"index;comment:执行状态码" json:"task_result_code"` // 执行状态码 + TaskResultDesc string `gorm:"comment:执行结果" json:"task_result_desc"` // 执行结果 + SystemHostName string `gorm:"comment:主机名" json:"system_host_name"` // 主机名 + SystemInsideIp string `gorm:"comment:内网ip" json:"system_inside_ip"` // 内网ip + SystemOs string `gorm:"comment:系统类型" json:"system_os"` // 系统类型 + SystemArch string `gorm:"comment:系统架构" json:"system_arch"` // 系统架构 + GoVersion string `gorm:"comment:go版本" json:"go_version"` // go版本 + SdkVersion string `gorm:"comment:sdk版本" json:"sdk_version"` // sdk版本 + SystemOutsideIp string `gorm:"comment:外网ip" json:"system_outside_ip"` // 外网ip + LogTime time.Time `gorm:"autoCreateTime;comment:日志时间" json:"log_time"` // 日志时间 +} + +func (m *TaskLog) TableName() string { + return "task_log" +} diff --git a/jobs_mongo_model/task.go b/jobs_mongo_model/task.go deleted file mode 100644 index 34aee3a..0000000 --- a/jobs_mongo_model/task.go +++ /dev/null @@ -1,44 +0,0 @@ -package jobs_mongo_model - -import ( - "go.dtapp.net/dorm" - "go.mongodb.org/mongo-driver/bson/primitive" -) - -type TaskRunInfo struct { - SystemHostName string `json:"system_host_name,omitempty" bson:"system_host_name,omitempty"` //【系统】主机名 - SystemInsideIp string `json:"system_inside_ip,omitempty" bson:"system_inside_ip,omitempty"` //【系统】内网ip - SystemOs string `json:"system_os,omitempty" bson:"system_os,omitempty"` //【系统】系统类型 - SystemArch string `json:"system_arch,omitempty" bson:"system_arch,omitempty"` //【系统】系统架构 - SystemCpuQuantity int `json:"system_cpu_quantity,omitempty" bson:"system_cpu_quantity,omitempty"` //【系统】CPU核数 - GoVersion string `json:"go_version,omitempty" bson:"go_version,omitempty"` //【程序】Go版本 - SdkVersion string `json:"sdk_version,omitempty" bson:"sdk_version,omitempty"` //【程序】Sdk版本 - RunTime dorm.BsonTime `json:"run_time,omitempty" bson:"run_time,omitempty"` //【系统】运行时间 - RunIp string `json:"run_ip,omitempty" bson:"run_ip,omitempty"` //【系统】外网ip - RunResult string `json:"run_result,omitempty" bson:"run_result,omitempty"` //【系统】结果 -} - -// Task 任务 -type Task struct { - Id primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"` //【系统】记录编号 - Status string `json:"status,omitempty" bson:"status,omitempty"` //【系统】状态码 - Params string `json:"params,omitempty" bson:"params,omitempty"` //【系统】参数 - StatusDesc string `json:"status_desc,omitempty" bson:"status_desc,omitempty"` //【系统】状态描述 - Frequency int64 `json:"frequency,omitempty" bson:"frequency,omitempty"` //【系统】频率(秒单位) - Number int64 `json:"number,omitempty" bson:"number,omitempty"` //【系统】当前次数 - MaxNumber int64 `json:"max_number,omitempty" bson:"max_number,omitempty"` //【系统】最大次数 - RunId string `json:"run_id,omitempty" bson:"run_id,omitempty"` //【系统】执行编号 - CustomId string `json:"custom_id,omitempty" bson:"custom_id,omitempty"` //【系统】自定义编号 - CustomSequence int64 `json:"custom_sequence,omitempty" bson:"custom_sequence,omitempty"` //【系统】自定义顺序 - Type string `json:"type,omitempty" bson:"type,omitempty"` //【系统】类型 - TypeName string `json:"type_name,omitempty" bson:"type_name,omitempty"` //【系统】类型名称 - SpecifyIp string `json:"specify_ip,omitempty" bson:"specify_ip,omitempty"` //【系统】指定外网IP - CreateRunInfo TaskRunInfo `json:"create_run_info,omitempty" bson:"create_run_info,omitempty"` //【系统】创建运行信息 - CurrentRunInfo TaskRunInfo `json:"current_run_info,omitempty" bson:"current_run_info,omitempty"` //【系统】当前运行信息 - NextRunInfo TaskRunInfo `json:"next_run_info,omitempty" bson:"next_run_info,omitempty"` //【系统】下一次运行信息 - CreateTime primitive.DateTime `json:"create_time,omitempty" bson:"create_time,omitempty"` //【系统】创建时间 -} - -func (Task) TableName() string { - return "task" -} diff --git a/jobs_xorm_model/task.go b/jobs_xorm_model/task.go deleted file mode 100644 index f685ebb..0000000 --- a/jobs_xorm_model/task.go +++ /dev/null @@ -1,31 +0,0 @@ -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"` // 结果 - 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 (Task) TableName() string { - return "task" -} diff --git a/model.go b/model.go index aad5501..1ebc755 100644 --- a/model.go +++ b/model.go @@ -3,62 +3,20 @@ package gojobs import ( "context" "go.dtapp.net/gojobs/jobs_gorm_model" - "go.dtapp.net/gojobs/jobs_mongo_model" - "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/mongo" - "go.mongodb.org/mongo-driver/mongo/options" ) // 创建模型 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) mongoCreateCollectionTask(ctx context.Context) { - var commandResult bson.M - commandErr := c.db.mongoClient.Db.Database(c.db.mongoDatabaseName).RunCommand(ctx, bson.D{{ - "listCollections", 1, - }}).Decode(&commandResult) - if commandErr != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("检查时间序列集合:%s", commandErr) - } else { - c.zapLog.WithTraceId(ctx).Sugar().Info(c.db.mongoClient.Db.Database(c.db.mongoDatabaseName).CreateCollection(ctx, jobs_mongo_model.Task{}.TableName(), options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("create_time")))) + err := c.gormClient.Db.AutoMigrate(&jobs_gorm_model.Task{}) + if err != nil { + c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建模型:%s", err) } } -// 创建索引 -func (c *Client) mongoCreateIndexesTask(ctx context.Context) { - indexes, err := c.db.mongoClient.Database(c.db.mongoDatabaseName).Collection(jobs_mongo_model.Task{}.TableName()).CreateManyIndexes(ctx, []mongo.IndexModel{ - { - Keys: bson.D{{ - Key: "status", - Value: 1, - }}, - }, { - Keys: bson.D{{ - Key: "frequency", - Value: 1, - }}, - }, { - Keys: bson.D{{ - Key: "custom_id", - Value: 1, - }}, - }, { - Keys: bson.D{{ - Key: "type", - Value: 1, - }}, - }, { - Keys: bson.D{{ - Key: "specify_ip", - Value: 1, - }}, - }, - }) +// 创建模型 +func (c *Client) autoMigrateTaskLog(ctx context.Context) { + err := c.gormClient.Db.AutoMigrate(&jobs_gorm_model.TaskLog{}) if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建索引:%s", err) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建模型:%s", err) } - c.zapLog.WithTraceId(ctx).Sugar().Infof("创建索引:%s", indexes) } diff --git a/run.go b/run.go index 87bdd03..a274699 100644 --- a/run.go +++ b/run.go @@ -8,7 +8,7 @@ import ( ) // Run 运行 -func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int, result string) { +func (c *Client) Run(ctx context.Context, task jobs_gorm_model.Task, taskResultCode int, taskResultDesc string) { runId := gotrace_id.GetTraceIdContext(ctx) if runId == "" { @@ -16,14 +16,28 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int, return } - switch status { + c.gormClient.Db.Create(&jobs_gorm_model.TaskLog{ + TaskId: task.Id, + TaskRunId: runId, + TaskResultCode: taskResultCode, + TaskResultDesc: taskResultDesc, + SystemHostName: c.config.systemHostName, + SystemInsideIp: c.config.systemInsideIp, + SystemOs: c.config.systemOs, + SystemArch: c.config.systemArch, + GoVersion: c.config.goVersion, + SdkVersion: c.config.sdkVersion, + SystemOutsideIp: c.config.systemOutsideIp, + }) + + switch taskResultCode { case 0: - err := c.EditTask(c.db.gormClient.Db, info.Id). + err := c.EditTask(c.gormClient.Db, task.Id). Select("run_id", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ RunId: runId, - Result: result, - NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, + Result: taskResultDesc, + NextRunTime: gotime.Current().AfterSeconds(task.Frequency).Time, }).Error if err != nil { c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.0]:%s", err.Error()) @@ -31,29 +45,29 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int, return case CodeSuccess: // 执行成功 - err := c.EditTask(c.db.gormClient.Db, info.Id). + err := c.EditTask(c.gormClient.Db, task.Id). Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ StatusDesc: "执行成功", - Number: info.Number + 1, + Number: task.Number + 1, RunId: runId, UpdatedIp: c.config.systemOutsideIp, - Result: result, - NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, + Result: taskResultDesc, + NextRunTime: gotime.Current().AfterSeconds(task.Frequency).Time, }).Error if err != nil { c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeSuccess]:%s", err.Error()) } case CodeEnd: // 执行成功、提前结束 - err := c.EditTask(c.db.gormClient.Db, info.Id). + err := c.EditTask(c.gormClient.Db, task.Id). Select("status", "status_desc", "number", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ Status: TASK_SUCCESS, StatusDesc: "结束执行", - Number: info.Number + 1, + Number: task.Number + 1, UpdatedIp: c.config.systemOutsideIp, - Result: result, + Result: taskResultDesc, NextRunTime: gotime.Current().Time, }).Error if err != nil { @@ -61,25 +75,25 @@ func (c *Client) Run(ctx context.Context, info jobs_gorm_model.Task, status int, } case CodeError: // 执行失败 - err := c.EditTask(c.db.gormClient.Db, info.Id). + err := c.EditTask(c.gormClient.Db, task.Id). Select("status_desc", "number", "run_id", "updated_ip", "result", "next_run_time"). Updates(jobs_gorm_model.Task{ StatusDesc: "执行失败", - Number: info.Number + 1, + Number: task.Number + 1, RunId: runId, UpdatedIp: c.config.systemOutsideIp, - Result: result, - NextRunTime: gotime.Current().AfterSeconds(info.Frequency).Time, + Result: taskResultDesc, + NextRunTime: gotime.Current().AfterSeconds(task.Frequency).Time, }).Error if err != nil { c.zapLog.WithTraceId(ctx).Sugar().Errorf("[gojobs.Run.CodeError]:%s", err.Error()) } } - if info.MaxNumber != 0 { - if info.Number+1 >= info.MaxNumber { + if task.MaxNumber != 0 { + if task.Number+1 >= task.MaxNumber { // 关闭执行 - err := c.EditTask(c.db.gormClient.Db, info.Id). + err := c.EditTask(c.gormClient.Db, task.Id). Select("status"). Updates(jobs_gorm_model.Task{ Status: TASK_TIMEOUT, diff --git a/vendor/go.dtapp.net/golog/api_mongo.go b/vendor/go.dtapp.net/golog/api_mongo.go index 25704e1..f5dacba 100644 --- a/vendor/go.dtapp.net/golog/api_mongo.go +++ b/vendor/go.dtapp.net/golog/api_mongo.go @@ -152,16 +152,6 @@ func (c *ApiClient) mongoCreateIndexes(ctx context.Context) { Key: "response_time", Value: -1, }}, - }, { - Keys: bson.D{{ - Key: "system_host_name", - Value: 1, - }}, - }, { - Keys: bson.D{{ - Key: "system_inside_ip", - Value: 1, - }}, }, { Keys: bson.D{{ Key: "system_os", @@ -172,11 +162,6 @@ func (c *ApiClient) mongoCreateIndexes(ctx context.Context) { Key: "system_arch", Value: -1, }}, - }, { - Keys: bson.D{{ - Key: "system_cpu_quantity", - Value: 1, - }}, }, { Keys: bson.D{{ Key: "go_version", diff --git a/vendor/go.dtapp.net/golog/const.go b/vendor/go.dtapp.net/golog/const.go index 3de75f4..2246d3f 100644 --- a/vendor/go.dtapp.net/golog/const.go +++ b/vendor/go.dtapp.net/golog/const.go @@ -1,5 +1,5 @@ package golog const ( - Version = "1.0.77" + Version = "1.0.78" ) diff --git a/vendor/go.dtapp.net/golog/gin_mongo.go b/vendor/go.dtapp.net/golog/gin_mongo.go index 76f33b0..a5dfb02 100644 --- a/vendor/go.dtapp.net/golog/gin_mongo.go +++ b/vendor/go.dtapp.net/golog/gin_mongo.go @@ -44,7 +44,7 @@ type ginMongoLog struct { RequestBody interface{} `json:"request_body,omitempty" bson:"request_body,omitempty"` //【请求】请求主体 RequestUrlQuery interface{} `json:"request_url_query,omitempty" bson:"request_url_query,omitempty"` //【请求】请求URL参数 RequestIp string `json:"request_ip,omitempty" bson:"request_ip,omitempty"` //【请求】请求客户端Ip - RequestIpCountry string `json:"request_ip_country,omitempty" bson:"request_ip_country,omitempty"` //【请求】请求客户端城市 + RequestIpCountry string `json:"request_ip_country,omitempty" bson:"request_ip_country,omitempty"` //【请求】请求客户端国家 RequestIpProvince string `json:"request_ip_province,omitempty" bson:"request_ip_province,omitempty"` //【请求】请求客户端省份 RequestIpCity string `json:"request_ip_city,omitempty" bson:"request_ip_city,omitempty"` //【请求】请求客户端城市 RequestIpIsp string `json:"request_ip_isp,omitempty" bson:"request_ip_isp,omitempty"` //【请求】请求客户端运营商 @@ -158,11 +158,6 @@ func (c *GinClient) mongoCreateIndexes(ctx context.Context) { Key: "request_method", Value: 1, }}, - }, { - Keys: bson.D{{ - Key: "request_proto", - Value: 1, - }}, }, { Keys: bson.D{{ Key: "request_ip", @@ -203,11 +198,6 @@ func (c *GinClient) mongoCreateIndexes(ctx context.Context) { Key: "system_host_name", Value: 1, }}, - }, { - Keys: bson.D{{ - Key: "system_inside_ip", - Value: 1, - }}, }, { Keys: bson.D{{ Key: "system_os", @@ -218,11 +208,6 @@ func (c *GinClient) mongoCreateIndexes(ctx context.Context) { Key: "system_arch", Value: -1, }}, - }, { - Keys: bson.D{{ - Key: "system_cpu_quantity", - Value: 1, - }}, }, { Keys: bson.D{{ Key: "go_version", @@ -286,7 +271,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request RequestReferer: ginCtx.Request.Referer(), //【请求】请求referer RequestUrlQuery: ginCtx.Request.URL.Query(), //【请求】请求URL参数 RequestIp: clientIp, //【请求】请求客户端Ip - RequestIpCountry: requestClientIpCountry, //【请求】请求客户端城市 + RequestIpCountry: requestClientIpCountry, //【请求】请求客户端国家 RequestIpProvince: requestClientIpProvince, //【请求】请求客户端省份 RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 @@ -347,7 +332,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT RequestReferer: ginCtx.Request.Referer(), //【请求】请求referer RequestUrlQuery: ginCtx.Request.URL.Query(), //【请求】请求URL参数 RequestIp: clientIp, //【请求】请求客户端Ip - RequestIpCountry: requestClientIpCountry, //【请求】请求客户端城市 + RequestIpCountry: requestClientIpCountry, //【请求】请求客户端国家 RequestIpProvince: requestClientIpProvince, //【请求】请求客户端省份 RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 diff --git a/vendor/modules.txt b/vendor/modules.txt index 9b22900..fd8ef90 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -268,7 +268,7 @@ go.dtapp.net/goip/ip2region go.dtapp.net/goip/ip2region_v2 go.dtapp.net/goip/ipv6wry go.dtapp.net/goip/qqwry -# go.dtapp.net/golog v1.0.77 +# go.dtapp.net/golog v1.0.78 ## explicit; go 1.19 go.dtapp.net/golog # go.dtapp.net/gorandom v1.0.1