From fdbb76086ed5f4b3aabdd6cd1aea2f4e812372d2 Mon Sep 17 00:00:00 2001 From: linwenxiang <991154416@qq.com> Date: Mon, 21 Sep 2020 13:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0go-admin=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E7=94=A8=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/sysjob/sysjob.go | 50 ++++++++++---------------- app/admin/service/sysjob.go | 17 +++++++++ common/apis/api.go | 21 +++++++++-- common/log/log.go | 63 +++++++++++++++++++++++++++++++++ common/service/service.go | 5 +-- 5 files changed, 120 insertions(+), 36 deletions(-) create mode 100644 common/log/log.go diff --git a/app/admin/apis/sysjob/sysjob.go b/app/admin/apis/sysjob/sysjob.go index 5dc0bac0..76c5076a 100644 --- a/app/admin/apis/sysjob/sysjob.go +++ b/app/admin/apis/sysjob/sysjob.go @@ -1,16 +1,16 @@ package sysjob import ( - "go-admin/app/admin/service" - "go-admin/common/apis" - "go-admin/common/dto" - "gorm.io/gorm" "time" "github.com/gin-gonic/gin" "go-admin/app/admin/models" + "go-admin/app/admin/service" "go-admin/app/jobs" + "go-admin/common/apis" + "go-admin/common/dto" + "go-admin/common/log" "go-admin/tools" "go-admin/tools/app" "go-admin/tools/app/msg" @@ -22,40 +22,54 @@ type SysJob struct { // RemoveJobForService 调用service实现 func (e *SysJob) RemoveJobForService(c *gin.Context) { + msgID := e.GenerateMsgIDFromContext(c) db, err := e.GetOrm(c) if err != nil { + log.Errorf("msgID[%s] error:%#v", msgID, err) app.Error(c, 500, err, "") + return } var v dto.GeneralDelDto err = c.BindUri(&v) if err != nil { + log.Errorf("msgID[%s] 参数验证错误, error:%#v", msgID, err) app.Error(c, 422, err, "参数验证失败") + return } s := service.SysJob{} + s.MsgID = msgID s.Orm = db err = s.RemoveJob(&v) if err != nil { app.Error(c, 500, err, "") + return } app.OK(c, nil, s.Msg) } // StartJobForService 启动job service实现 func (e *SysJob) StartJobForService(c *gin.Context) { + msgID := e.GenerateMsgIDFromContext(c) db, err := e.GetOrm(c) if err != nil { + log.Errorf("msgID[%s] error:%#v", msgID, err) app.Error(c, 500, err, "") + return } var v dto.GeneralGetDto err = c.BindUri(&v) if err != nil { + log.Errorf("msgID[%s] 参数验证错误, error:%#v", msgID, err) app.Error(c, 422, err, "参数验证失败") + return } s := service.SysJob{} s.Orm = db + s.MsgID = msgID err = s.StartJob(&v) if err != nil { app.Error(c, 500, err, "") + return } app.OK(c, nil, s.Msg) } @@ -82,34 +96,6 @@ func RemoveJob(c *gin.Context) { } -// StartJobForService 启动job service实现 -func StartJobForService(c *gin.Context) { - var err error - idb, exist := c.Get("db") - if !exist { - app.Error(c, 500, nil, "db connect not exist") - } - switch idb.(type) { - case *gorm.DB: - //新增操作 - db := idb.(*gorm.DB) - var v dto.GeneralGetDto - err = c.BindUri(&v) - if err != nil { - app.Error(c, 422, err, "参数验证失败") - } - s := service.SysJob{} - s.Orm = db - err = s.StartJob(&v) - if err != nil { - app.Error(c, 500, err, "") - } - app.OK(c, nil, s.Msg) - default: - app.Error(c, 500, nil, "db connect not exist") - } -} - func StartJob(c *gin.Context) { var data models.SysJob var v dto.GeneralGetDto diff --git a/app/admin/service/sysjob.go b/app/admin/service/sysjob.go index ad8427a0..8a79517e 100644 --- a/app/admin/service/sysjob.go +++ b/app/admin/service/sysjob.go @@ -4,6 +4,7 @@ import ( "go-admin/app/admin/models" "go-admin/app/jobs" "go-admin/common/dto" + "go-admin/common/log" "go-admin/common/service" "go-admin/tools/app/msg" "time" @@ -17,9 +18,11 @@ type SysJob struct { func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error { var err error var data models.SysJob + msgID := e.MsgID data.JobId = c.Id err = e.Orm.Table(data.TableName()).First(&data).Error if err != nil { + log.Errorf("msgID[%s] db error:%#v", msgID, err) return err } cn := jobs.Remove(data.EntryId) @@ -28,6 +31,9 @@ func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error { case res := <-cn: if res { err = e.Orm.Table(data.TableName()).Where("entry_id = ?", data.EntryId).Update("entry_id", 0).Error + if err != nil { + log.Errorf("msgID[%s] db error:%#v", msgID, err) + } return err } case <-time.After(time.Second * 1): @@ -41,8 +47,10 @@ func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error { func (e *SysJob) StartJob(c *dto.GeneralGetDto) error { var data models.SysJob var err error + msgID := e.MsgID err = e.Orm.Table(data.TableName()).First(&data, c.Id).Error if err != nil { + log.Errorf("msgID[%s] db error:%#v", msgID, err) return err } if data.JobType == 1 { @@ -52,6 +60,9 @@ func (e *SysJob) StartJob(c *dto.GeneralGetDto) error { j.JobId = data.JobId j.Name = data.JobName data.EntryId, err = jobs.AddJob(j) + if err != nil { + log.Errorf("msgID[%s] jobs AddJob[HttpJob] error:%#v", msgID, err) + } } else { var j = &jobs.ExecJob{} j.InvokeTarget = data.InvokeTarget @@ -60,11 +71,17 @@ func (e *SysJob) StartJob(c *dto.GeneralGetDto) error { j.Name = data.JobName j.Args = data.Args data.EntryId, err = jobs.AddJob(j) + if err != nil { + log.Errorf("msgID[%s] jobs AddJob[ExecJob] error:%#v", msgID, err) + } } if err != nil { return err } err = e.Orm.Table(data.TableName()).Where(c.Id).Updates(&data).Error + if err != nil { + log.Errorf("msgID[%s] db error:%#v", msgID, err) + } return err } diff --git a/common/apis/api.go b/common/apis/api.go index ed6e104b..e5932bc6 100644 --- a/common/apis/api.go +++ b/common/apis/api.go @@ -2,7 +2,10 @@ package apis import ( "errors" + "fmt" "github.com/gin-gonic/gin" + "github.com/google/uuid" + "github.com/spf13/cast" "gorm.io/gorm" ) @@ -11,15 +14,29 @@ type Api struct { // GetOrm 获取orm连接 func (e *Api) GetOrm(c *gin.Context) (*gorm.DB, error) { + msgID := e.GenerateMsgIDFromContext(c) idb, exist := c.Get("db") if !exist { - return nil, errors.New("db connect not exist") + return nil, errors.New(fmt.Sprintf("msgID[%s], db connect not exist", msgID)) } switch idb.(type) { case *gorm.DB: //新增操作 return idb.(*gorm.DB), nil default: - return nil, errors.New("db connect not exist") + return nil, errors.New(fmt.Sprintf("msgID[%s], db connect not exist", msgID)) } } + +// GenerateMsgIDFromContext 生成msgID +func (e *Api) GenerateMsgIDFromContext(c *gin.Context) string { + var msgID string + data, ok := c.Get("msgID") + if !ok { + msgID = uuid.New().String() + c.Set("msgID", msgID) + return msgID + } + msgID = cast.ToString(data) + return msgID +} diff --git a/common/log/log.go b/common/log/log.go new file mode 100644 index 00000000..131d6948 --- /dev/null +++ b/common/log/log.go @@ -0,0 +1,63 @@ +package log + +import "go-admin/logger" + +// Trace trace级日志输出 +func Trace(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Trace trace级日志输出 +func Tracef(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} + +// Debug debug级日志输出 +func Debug(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Debugf debug级日志输出 +func Debugf(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} + +// Info info级日志输出 +func Info(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Infof info级日志输出 +func Infof(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} + +// Warn warn级日志输出 +func Warn(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Warnf warn级日志输出 +func Warnf(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} + +// Error error级日志输出 +func Error(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Errorf error级日志输出 +func Errorf(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} + +// Fatal fatal级日志输出 +func Fatal(args ...interface{}) { + logger.DefaultLogger.Log(logger.TraceLevel, args...) +} + +// Fatalf fatal级日志输出 +func Fatalf(format string, args ...interface{}) { + logger.DefaultLogger.Logf(logger.TraceLevel, format, args...) +} diff --git a/common/service/service.go b/common/service/service.go index 036097c7..05dbf273 100644 --- a/common/service/service.go +++ b/common/service/service.go @@ -3,6 +3,7 @@ package service import "gorm.io/gorm" type Service struct { - Orm *gorm.DB - Msg string + Orm *gorm.DB + Msg string + MsgID string }