mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 18:20:50 +00:00
88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
package apis
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
|
|
"gorm.io/gorm"
|
|
|
|
"go-admin/common/models"
|
|
)
|
|
|
|
type Api struct {
|
|
}
|
|
|
|
// GetLogger 获取上下文提供的日志
|
|
func (e *Api) GetLogger(c *gin.Context) *logger.Logger {
|
|
return GetRequestLogger(c)
|
|
}
|
|
|
|
// GetOrm 获取Orm DB
|
|
func (e *Api) GetOrm(c *gin.Context) (*gorm.DB, error) {
|
|
db, err := pkg.GetOrm(c)
|
|
if err != nil {
|
|
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
|
|
return nil, err
|
|
}
|
|
return db, nil
|
|
}
|
|
|
|
// 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)
|
|
}
|
|
|
|
// 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)
|
|
}
|
|
|
|
// 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)
|
|
}
|
|
|
|
// 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)
|
|
}
|