55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package controller
|
||
|
||
import (
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/errors"
|
||
r "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/response"
|
||
"git.inspur.com/sbg-jszt/cfn/cfn-schedule/pkg/log"
|
||
"github.com/gin-gonic/gin"
|
||
"go.uber.org/zap"
|
||
)
|
||
|
||
// Success 业务成功响应
|
||
func Success(c *gin.Context, data ...any) {
|
||
response := r.Resp()
|
||
if data != nil {
|
||
response.WithDataSuccess(c, data[0])
|
||
return
|
||
}
|
||
response.Success(c)
|
||
}
|
||
|
||
// FailCode 业务失败响应
|
||
func FailCode(c *gin.Context, code int, err error, data ...any) {
|
||
response := r.Resp()
|
||
if err != nil {
|
||
log.Errorf("异常: %v", err.Error())
|
||
}
|
||
if data != nil {
|
||
response.WithData(data[0]).FailCode(c, code)
|
||
return
|
||
}
|
||
response.FailCode(c, code)
|
||
}
|
||
|
||
// Fail 业务失败响应
|
||
func Fail(c *gin.Context, code int, message string, data ...any) {
|
||
response := r.Resp()
|
||
if data != nil {
|
||
response.WithData(data[0]).FailCode(c, code, message)
|
||
return
|
||
}
|
||
response.FailCode(c, code, message)
|
||
}
|
||
|
||
// Err 判断错误类型是自定义类型则自动返回错误中携带的code和message,否则返回服务器错误
|
||
func Err(c *gin.Context, e error) {
|
||
businessError, err := errors.AsBusinessError(e)
|
||
if err != nil {
|
||
log.Logger.Warn("Unknown error:", zap.Any("Error reason:", err))
|
||
FailCode(c, errors.ServerError, err)
|
||
return
|
||
}
|
||
|
||
Fail(c, businessError.GetCode(), businessError.GetMessage())
|
||
}
|