- 移除mongo

master
李光春 2 years ago
parent 882cb83ec8
commit 19adea0395

@ -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)
}

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

@ -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
}

@ -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
}

@ -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("任务已存在")

@ -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 获取缓存数据库驱动

@ -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

@ -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=

@ -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"
}

@ -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"
}

@ -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"
}

@ -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)
}

@ -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,

@ -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",

@ -1,5 +1,5 @@
package golog
const (
Version = "1.0.77"
Version = "1.0.78"
)

@ -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, //【请求】请求客户端运营商

@ -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

Loading…
Cancel
Save