diff --git a/app/admin/middleware/logger.go b/app/admin/middleware/logger.go index 44915334..88da4530 100644 --- a/app/admin/middleware/logger.go +++ b/app/admin/middleware/logger.go @@ -1,6 +1,7 @@ package middleware import ( + "encoding/json" "fmt" "net/http" "strings" @@ -21,14 +22,17 @@ import ( // LoggerToFile 日志记录到文件 func LoggerToFile() gin.HandlerFunc { return func(c *gin.Context) { + // 开始时间 + startTime := time.Now() + // 处理请求 + c.Next() + // 结束时间 + endTime := time.Now() if c.Request.Method == http.MethodOptions { return } log := api.GetRequestLogger(c) - // 开始时间 - startTime := time.Now() - // 处理请求 bd, bl := c.Get("body") var body = "" @@ -39,7 +43,12 @@ func LoggerToFile() gin.HandlerFunc { rt, bl := c.Get("result") var result = "" if bl { - result = rt.(string) + rb, err := json.Marshal(rt) + if err != nil { + log.Warnf("json Marshal result error, %s", err.Error()) + } else { + result = string(rb) + } } st, bl := c.Get("status") @@ -56,8 +65,6 @@ func LoggerToFile() gin.HandlerFunc { statusCode := c.Writer.Status() // 请求IP clientIP := c.ClientIP() - // 结束时间 - endTime := time.Now() // 执行时间 latencyTime := endTime.Sub(startTime) // 日志格式 @@ -136,4 +143,4 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string serviceOperaLog.Orm = db serviceOperaLog.Log = log _ = serviceOperaLog.InsertSysOperaLog(&sysOperaLog) -} \ No newline at end of file +} diff --git a/common/apis/api.go b/common/apis/api.go index 2eb44986..11e73195 100644 --- a/common/apis/api.go +++ b/common/apis/api.go @@ -1,16 +1,14 @@ package apis import ( - "encoding/json" "net/http" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg/logger" + "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "gorm.io/gorm" - - "go-admin/common/models" ) type Api struct { @@ -33,56 +31,20 @@ func (e *Api) GetOrm(c *gin.Context) (*gorm.DB, error) { // Error 通常错误数据处理 func (e *Api) Error(c *gin.Context, code int, err error, msg string) { - var res models.Response - if err != nil { - res.Msg = err.Error() - } - if msg != "" { - res.Msg = msg - } - res.RequestId = pkg.GenerateMsgIDFromContext(c) - Return := res.ReturnError(code) - e.setResult(c, Return, res.RequestId, code) - c.AbortWithStatusJSON(http.StatusOK, Return) + response.Error(c, code, err, msg) } // OK 通常成功数据处理 func (e *Api) OK(c *gin.Context, data interface{}, msg string) { - var res models.Response - res.Data = data - if msg != "" { - res.Msg = msg - } - res.RequestId = pkg.GenerateMsgIDFromContext(c) - Return := res.ReturnOK() - e.setResult(c, Return, res.RequestId, 200) - c.AbortWithStatusJSON(http.StatusOK, Return) + response.OK(c, data, msg) } // PageOK 分页数据处理 func (e *Api) PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSize int, msg string) { - var res models.Page - res.List = result - res.Count = count - res.PageIndex = pageIndex - res.PageSize = pageSize - e.OK(c, res, msg) + response.PageOK(c, result, count, pageIndex, pageSize, msg) } // Custom 兼容函数 func (e *Api) Custom(c *gin.Context, data gin.H) { - msgID := pkg.GenerateMsgIDFromContext(c) - Return := data - e.setResult(c, Return, msgID, 200) - c.AbortWithStatusJSON(http.StatusOK, Return) -} - -func (e *Api) setResult(c *gin.Context, Return interface{}, msgID string, status int) { - requestLogger := e.GetLogger(c) - jsonStr, err := json.Marshal(Return) - if err != nil { - requestLogger.Debugf("setResult error: %#v", msgID, err.Error()) - } - c.Set("result", string(jsonStr)) - c.Set("status", status) + response.Custum(c, data) } diff --git a/go.mod b/go.mod index b358d27b..c1a17a8d 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5 github.com/casbin/casbin/v2 v2.25.1 github.com/gin-gonic/gin v1.6.3 - github.com/go-admin-team/go-admin-core v1.3.1-0.20210316090839-b4261653fe46 + github.com/go-admin-team/go-admin-core v1.3.0-rc.0.0.20210317043714-3dd2b8cbf8cc github.com/google/uuid v1.2.0 github.com/mojocn/base64Captcha v1.3.1 github.com/mssola/user_agent v0.5.2