提交 b8332d53 authored 作者: 赵雪如's avatar 赵雪如

修改errors msg为 可变msg

上级 cc78ef25
......@@ -4,6 +4,7 @@ import (
"fmt"
"github.com/gogf/gf/errors/gcode"
"github.com/gogf/gf/errors/gerror"
"strings"
"sync"
)
......@@ -22,7 +23,7 @@ type BizCode struct {
M string
// Ref specify the reference document.
Ref string
Ref interface{}
}
func init() {
......@@ -37,6 +38,7 @@ func (c BizCode) Message() string {
return c.M
}
func (c BizCode) Detail() interface{} {
return c.Ref
}
......@@ -44,18 +46,21 @@ func (c BizCode) Detail() interface{} {
var codes = map[int]gcode.Code{}
var codeMux = &sync.Mutex{}
func MustRegister(coder gcode.Code) {
if coder.Code() < 1000 {
func MustRegister(code int, message string) {
if code < 1000 {
panic("Codes less than 1000 are reserved as internal codes")
}
codeMux.Lock()
defer codeMux.Unlock()
if _, ok := codes[coder.Code()]; ok {
panic(fmt.Sprintf("code: %d already exist", coder.Code()))
if _, ok := codes[code]; ok {
panic(fmt.Sprintf("code: %d already exist", code))
}
codes[coder.Code()] = coder
codes[code] = BizCode{
C: code,
M: message,
}
}
func ParseCoder(err error) gcode.Code {
......@@ -65,9 +70,12 @@ func ParseCoder(err error) gcode.Code {
}
if v, ok := code.(BizCode); ok {
fmt.Println(333)
if coder, ok := codes[v.C]; ok {
return coder
return BizCode{
C: coder.Code(),
M: strings.Replace(coder.Message(),"%%0", v.M, -1),
Ref : coder.Detail(),
}
}
}
......
......@@ -7,17 +7,12 @@ import (
)
func init() {
MustRegister(BizCode{
C: 100001,
M: "success",
})
MustRegister(BizCode{
C: 100002,
M: "参数错误",
})
MustRegister(100001, "我是%%0")
MustRegister(100002, "%%0不是我")
MustRegister(100003, "不是我")
}
func Test(t *testing.T) {
err := gerror.NewCode(New(1000, "", ""), "My Error")
err := gerror.NewCode(New(100002, "zxr", ""), "")
c := ParseCoder(err)
fmt.Println(c.Message())
}
......@@ -9,14 +9,10 @@ import (
"testing"
)
func init() {
errors.MustRegister(errors.BizCode{
C: 100001,
M: "success",
})
errors.MustRegister(errors.BizCode{
C: 100002,
M: "参数错误",
})
errors.MustRegister(100001,
"success")
errors.MustRegister(100002,
"参数错误")
}
func TestJsonExit(t *testing.T) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论