64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
/*
|
||
* @Date: 2021-06-10 16:30:10
|
||
* @LastEditors: viletyy
|
||
* @LastEditTime: 2021-06-18 22:22:55
|
||
* @FilePath: /potato/pkg/errcode/errcode.go
|
||
*/
|
||
package errcode
|
||
|
||
import (
|
||
"fmt"
|
||
"net/http"
|
||
)
|
||
|
||
type Error struct {
|
||
Code int `json:"code"`
|
||
Msg string `json:"msg"`
|
||
Data interface{} `json:"data,omitempty"`
|
||
}
|
||
|
||
var codes = map[int]string{}
|
||
|
||
func NewError(code int, msg string) *Error {
|
||
if _, ok := codes[code]; ok {
|
||
panic(fmt.Sprintf("错误码 %d 已存在,请更换一个", code))
|
||
}
|
||
codes[code] = msg
|
||
return &Error{Code: code, Msg: msg}
|
||
}
|
||
|
||
func (e *Error) Error() string {
|
||
return fmt.Sprintf("错误码:%d,错误信息:%s", e.Code, e.Msg)
|
||
}
|
||
|
||
func (e *Error) Msgf(args []interface{}) string {
|
||
return fmt.Sprintf(e.Msg, args...)
|
||
}
|
||
|
||
func (e *Error) WithData(data interface{}) {
|
||
e.Data = data
|
||
}
|
||
|
||
func (e *Error) StatusCode() int {
|
||
switch e.Code {
|
||
case Success.Code:
|
||
return http.StatusOK
|
||
case ServerError.Code:
|
||
return http.StatusInternalServerError
|
||
case InvalidParams.Code:
|
||
return http.StatusBadRequest
|
||
case UnauthorizedAuthNotExist.Code:
|
||
fallthrough
|
||
case UnauthorizedTokenError.Code:
|
||
fallthrough
|
||
case UnauthorizedTokenGenerate.Code:
|
||
fallthrough
|
||
case UnauthorizedTokenTimeout.Code:
|
||
return http.StatusUnauthorized
|
||
case TooManyRequests.Code:
|
||
return http.StatusTooManyRequests
|
||
}
|
||
|
||
return http.StatusBadRequest
|
||
}
|