mirror of https://github.com/1Panel-dev/1Panel
appstorecrontabdatabasedockerdocker-composedocker-containerdocker-imagedocker-uifilemanagerlamplnmppanel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.4 KiB
78 lines
1.4 KiB
package buserr |
|
|
|
import ( |
|
"github.com/1Panel-dev/1Panel/backend/i18n" |
|
"github.com/pkg/errors" |
|
) |
|
|
|
type BusinessError struct { |
|
Msg string |
|
Detail interface{} |
|
Map map[string]interface{} |
|
Err error |
|
} |
|
|
|
func (e BusinessError) Error() string { |
|
content := "" |
|
if e.Detail != nil { |
|
content = i18n.GetErrMsg(e.Msg, map[string]interface{}{"detail": e.Detail}) |
|
} else if e.Map != nil { |
|
content = i18n.GetErrMsg(e.Msg, e.Map) |
|
} else { |
|
content = i18n.GetErrMsg(e.Msg, nil) |
|
} |
|
if content == "" { |
|
if e.Err != nil { |
|
return e.Err.Error() |
|
} |
|
return errors.New(e.Msg).Error() |
|
} |
|
return content |
|
} |
|
|
|
func New(Key string) BusinessError { |
|
return BusinessError{ |
|
Msg: Key, |
|
Detail: nil, |
|
Err: nil, |
|
} |
|
} |
|
|
|
func WithDetail(Key string, detail interface{}, err error) BusinessError { |
|
return BusinessError{ |
|
Msg: Key, |
|
Detail: detail, |
|
Err: err, |
|
} |
|
} |
|
|
|
func WithErr(Key string, err error) BusinessError { |
|
return BusinessError{ |
|
Msg: Key, |
|
Detail: "", |
|
Err: err, |
|
} |
|
} |
|
|
|
func WithMap(Key string, maps map[string]interface{}, err error) BusinessError { |
|
return BusinessError{ |
|
Msg: Key, |
|
Map: maps, |
|
Err: err, |
|
} |
|
} |
|
|
|
func WithNameAndErr(Key string, name string, err error) BusinessError { |
|
paramMap := map[string]interface{}{} |
|
if name != "" { |
|
paramMap["name"] = name |
|
} |
|
if err != nil { |
|
paramMap["err"] = err.Error() |
|
} |
|
return BusinessError{ |
|
Msg: Key, |
|
Map: paramMap, |
|
Err: err, |
|
} |
|
}
|
|
|