代码拉取完成,页面将自动刷新
package result
import (
"fmt"
"gitee.com/h79/goutils/common/logger"
"go.uber.org/zap"
)
var DefaultOk = ErrOk
type Result struct {
Errno int32 `json:"code"` //业务错误码=0,表示正确,其它失败
SubCode int32 `json:"subCode"` //业务子码
Desc string `json:"desc"` //错误信息
Msg string `json:"msg"` //提供给界面提示之类
}
func New(code int32, err string) error {
res := Error(code, err)
return res
}
func Format(code int32, f string, arg ...interface{}) error {
res := Errorf(code, f, arg...)
return res
}
func Succeed() Result {
return Result{Errno: DefaultOk, Desc: ""}
}
func Error(code int32, err string) Result {
return Result{Errno: code, Desc: err}
}
func Errorf(code int32, f string, arg ...interface{}) Result {
desc := fmt.Sprintf(f, arg...)
return Result{Errno: code, Desc: desc}
}
func WithErr(err error) Result {
if err != nil {
res := Result{}
return res.WithError(err)
}
return Succeed()
}
func IsOK(code int32) bool {
return code == ErrOk || code == Success
}
// error interface
func (r Result) Error() string {
return r.Desc
}
func (r Result) Ok() bool {
return IsOK(r.Errno)
}
func (r Result) NotFound() bool {
return r.Equal(ErrNotFound)
}
// NonFound
// 不是NOT FOUND的错误
func (r Result) NonFound() bool {
return !r.Equal(ErrOk) && !r.Equal(ErrNotFound) && !r.Equal(Success)
}
func (r Result) Equal(code int32) bool {
return code == r.Errno
}
func (r Result) WithSubCode(code int32) Result {
r.SubCode = code
return r
}
func (r Result) WithMsg(msg string) Result {
r.Msg = msg
return r
}
func (r Result) WithError(err error) Result {
if err != nil {
if res, ok := err.(*Result); ok {
return *res
}
if res, ok := err.(Result); ok {
return res
}
if i18n, ok := err.(I18n); ok {
r.Msg = i18n.Content
return r
}
if i18n, ok := err.(*I18n); ok {
r.Msg = i18n.Content
return r
}
r.Desc = err.Error()
if r.Ok() {
r.Errno = ErrException
}
}
return r
}
func (r Result) Print() Result {
if r.Ok() {
return r
}
logger.Context().Error("Result",
zap.Int32("errno", r.Errno),
zap.Int32("subCode", r.SubCode),
zap.String("msg", r.Msg),
zap.String("desc", r.Desc))
return r
}
func (r Result) Sprintf(model string, o interface{}) Result {
if r.Ok() {
return r
}
logger.Context().Error("Result",
zap.Any("data", o),
zap.String("model", model),
zap.Int32("errno", r.Errno),
zap.Int32("subCode", r.SubCode),
zap.String("error", r.Msg),
zap.String("desc", r.Desc))
return r
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。