| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package codes
- import (
- "encoding/json"
- "fmt"
- "strconv"
- "github.com/go-kratos/kratos/v2/errors"
- )
- func Error(code int, msg string) error {
- e := errors.New(400, "", msg)
- e = e.WithMetadata(map[string]string{
- "code": fmt.Sprint(code),
- })
- return e
- }
- func ErrorData(code int, msg string, data interface{}) error {
- j, _ := json.Marshal(data)
- e := errors.New(400, string(j), msg)
- e = e.WithMetadata(map[string]string{
- "code": fmt.Sprint(code),
- })
- return e
- }
- func CommonError(err error) error {
- se := errors.FromError(err)
- if se == nil {
- return Error(10400, err.Error())
- }
- return se
- }
- func SystemErr(msg string) error {
- return Error(10500, msg)
- }
- // Customize 自定义返回值. 如自己重定向
- func Customize() error {
- return Error(1000, "")
- }
- func ParseErrorWithData(err error, data interface{}) (int, string) {
- st := errors.FromError(err)
- if st == nil {
- return 0, err.Error()
- }
- message := st.Message
- metadata := st.GetMetadata()
- code := st.Code
- if _, ok := metadata["code"]; ok {
- _code, _ := strconv.Atoi(metadata["code"])
- code = int32(_code)
- }
- if data != nil {
- if st.Reason != "" {
- json.Unmarshal([]byte(st.Reason), data)
- }
- }
- return int(code), message
- }
- func ParseError(err error) (int, string) {
- return ParseErrorWithData(err, nil)
- }
- func ErrorEqual(err1 error, err2 error) bool {
- code1, msg1 := ParseError(err1)
- code2, msg2 := ParseError(err2)
- if code1 == 0 && code2 == 0 {
- if msg1 == msg2 {
- return true
- }
- return false
- }
- if code1 == code2 {
- return true
- }
- return false
- }
|