refactor🎨 链式调用改造

This commit is contained in:
zhangwenjian
2021-05-16 16:17:37 +08:00
parent 9fdde1a13b
commit 33275573f9
5 changed files with 158 additions and 111 deletions
+45 -4
View File
@@ -1,12 +1,13 @@
package apis
import (
"errors"
"fmt"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/gin-gonic/gin/binding"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"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"
@@ -16,13 +17,26 @@ import (
type Api struct {
Context *gin.Context
Logger *logger.Logger
Orm *gorm.DB
Errors error
}
func (e *Api) AddError(err error) error {
if e.Errors == nil {
e.Errors = err
} else if err != nil {
e.Logger.Error(err)
e.Errors = fmt.Errorf("%v; %w", e.Error, err)
}
return e.Errors
}
// MakeContext 设置http上下文
func (e *Api) MakeContext(c *gin.Context) {
func (e *Api) MakeContext(c *gin.Context) *Api {
fmt.Println(&c)
e.Context = c
fmt.Println(&e.Context)
return e
}
// GetLogger 获取上下文提供的日志
@@ -32,6 +46,9 @@ func (e Api) GetLogger() *logger.Logger {
func (e Api) Bind(d interface{}, bindings ...binding.Binding) error {
var err error
if len(bindings) == 0 {
bindings = append(bindings, binding.JSON, nil)
}
for i := range bindings {
switch bindings[i] {
case binding.JSON:
@@ -74,6 +91,30 @@ func (e Api) GetOrm() (*gorm.DB, error) {
return db, nil
}
// MakeLogger 设置上下文提供的日志
func (e *Api) MakeLogger() *Api {
e.Logger = api.GetRequestLogger(e.Context)
return e
}
// MakeOrm 设置Orm DB
func (e *Api) MakeOrm() *Api {
var err error
if e.Logger == nil {
err = errors.New("at MakeOrm logger is nil")
//e.Logger.Error(http.StatusInternalServerError, err, "at MakeOrm logger is nil")
_ = e.AddError(err)
return e
}
db, err := pkg.GetOrm(e.Context)
if err != nil {
e.Logger.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
_ = e.AddError(err)
}
e.Orm = db
return e
}
// Error 通常错误数据处理
func (e Api) Error(code int, err error, msg string) {
response.Error(e.Context, code, err, msg)
@@ -92,4 +133,4 @@ func (e Api) PageOK(result interface{}, count int, pageIndex int, pageSize int,
// Custom 兼容函数
func (e Api) Custom(data gin.H) {
response.Custum(e.Context, data)
}
}