annotation/pkg/err/err_code.go

84 lines
1.5 KiB
Go
Raw Permalink Normal View History

2023-05-12 16:53:21 +08:00
package e
import "github.com/goccy/go-json"
const (
UnKnow = 1
ValidErr = 1000
DbErr = 2020
IllegalPhone = 2001
NoAuth = 401
NoUser = 2003
ExistingUserName = 2004
UnmarshalReqErr = 3000
Ordinary = 6666
)
func init() {
m := map[int]string{
UnKnow: "未定义错误",
ValidErr: "无效的请求参数",
DbErr: "数据库错误",
IllegalPhone: "请输入正确的手机号码",
NoAuth: "未授权",
NoUser: "未找到对应用户",
ExistingUserName: "已经存在的用户",
UnmarshalReqErr: "参数类型错误",
}
errMap[UnKnow] = &ApiError{
Status: 500,
Code: UnKnow,
Message: "未定义错误",
}
for k, v := range m {
errMap[k] = &ApiError{
Status: 200,
Code: k,
Message: v,
}
}
}
var errMap = map[int]*ApiError{}
func NewCode(code int) *ApiError {
if e, ok := errMap[code]; ok {
return e
}
return errMap[UnKnow]
}
func NewString(msg string) *ApiError {
return &ApiError{
Status: 200,
Code: Ordinary,
Message: msg,
}
}
func newErr(err *ApiError) *ApiError {
return &(*err)
}
func NewValidErr(err error) error {
if _, ok := err.(*json.UnmarshalTypeError); ok {
return newErr(errMap[UnmarshalReqErr])
}
return err
}
func (e *ApiError) Set(msg string) *ApiError {
r := *e
r.Message = msg
return &r
}
type ApiError struct {
Status int `json:"-"`
Code int `json:"code"`
Message string `json:"msg"`
}
func (e *ApiError) Error() string {
return e.Message
}