1 Star 0 Fork 0

h79/goutils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
result.go 2.50 KB
一键复制 编辑 原始数据 按行查看 历史
huqiuyun 提交于 2022-09-19 20:31 . bug: err
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/h79/goutils.git
git@gitee.com:h79/goutils.git
h79
goutils
goutils
v1.1.24

搜索帮助