diff --git a/errno.go b/errno.go index 2f469f2..9e89a7f 100644 --- a/errno.go +++ b/errno.go @@ -1,5 +1,7 @@ package contracts +import "github.com/samber/lo" + // 定义错误码 type Errno struct { Code int `json:"code"` @@ -12,13 +14,14 @@ func (err Errno) Error() string { // 定义错误 type Err struct { - Code int `json:"code"` // 错误码 - Msg string `json:"msg"` // 展示给用户看的 - Errord string `json:"errord"` // 内部错误信息 + Code int `json:"code"` // 错误码 + Msg string `json:"msg"` // 展示给用户看的 + Errord string `json:"-"` // 内部错误信息 + alert bool `json:"-"` // 是否显示内部错误信息 } -func (err *Err) Error() string { - return err.Errord +func (err Err) Error() string { + return lo.Ternary(err.alert && err.Errord != "", err.Errord, err.Msg) } // 错误码设计 @@ -97,6 +100,16 @@ var ( // 使用 错误码 和 error 创建新的 错误 func NewErr(errno *Errno, err error) *Err { return &Err{ + alert: errno.Code == InternalServerError.Code, + Code: errno.Code, + Msg: errno.Error(), + Errord: err.Error(), + } +} + +func NewMsgErr(errno *Errno, err error) *Err { + return &Err{ + alert: true, Code: errno.Code, Msg: errno.Error(), Errord: err.Error(), diff --git a/support/response.go b/support/response.go index ec23c25..faa3191 100644 --- a/support/response.go +++ b/support/response.go @@ -147,7 +147,7 @@ func NewMsgResponse(msg string, code int) contracts.HttpResponse { } func NewErrResponse(err *contracts.Err) contracts.HttpResponse { - return NewJsonResponse([]byte(fmt.Sprintf(`{"code": %d, "msg": %q, "errord": %q}`, err.Code, err.Msg, err.Errord))) + return NewJsonResponse([]byte(fmt.Sprintf(`{"code": %d, "msg": %q}`, err.Code, err.Error()))) } func HttpResponse(data any) contracts.HttpResponse {