github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/http/errorcode/errorcode.go (about) 1 package errorcode 2 3 import "fmt" 4 5 // ToStatus Usage: Error Code. 6 type ToStatus int 7 8 // ToHttpStatus Usage: HTTP Status Code. 9 type ToHttpStatus int 10 11 // ErrorCode HTTP响应错误信息. 12 type ErrorCode struct { 13 // Code 错误码 14 Code int `json:"code"` 15 // Msg 错误信息 16 Msg string `json:"msg"` 17 // Name 错误名 18 Name string `json:"name"` 19 } 20 21 // Msg 生成HTTP响应错误信息. 22 func (i ToStatus) Msg(msg string) *ErrorCode { 23 e := ErrorCode{Code: int(i), Msg: msg} 24 for name, code := range errorCodeData { 25 if e.Code == code { 26 e.Name = name 27 break 28 } 29 } 30 return &e 31 } 32 33 // AddMsg 添加错误信息. 34 func (e *ErrorCode) AddMsg(format string, param ...interface{}) *ErrorCode { 35 return e.AddMsgWith(" ", format, param...) 36 } 37 38 // AddMsgWith 添加错误信息,并设置拆分字符. 39 func (e *ErrorCode) AddMsgWith(split string, format string, param ...interface{}) *ErrorCode { 40 if e.Msg == "" { 41 e.Msg = fmt.Sprintf(format, param...) 42 } else { 43 e.Msg = e.Msg + split + fmt.Sprintf(format, param...) 44 } 45 return e 46 } 47 48 // GetStatus 获取状态码. 49 func (e *ErrorCode) GetStatus() int { 50 return GetStatus(e.Name) 51 } 52 53 // GetStatus 获取状态码. 54 func GetStatus(name string) int { 55 if status, ok := errorCodeData[name]; ok { 56 return status 57 } 58 return -1 59 } 60 61 // SetStatus 设置状态码. 62 func SetStatus(code ToStatus, name string) ToHttpStatus { 63 errorCodeData[name] = int(code) 64 return ToHttpStatus(code) 65 } 66 67 // GetHttpStatus 获取HTTP状态码. 68 func (e *ErrorCode) GetHttpStatus() int { 69 return ToStatus(e.Code).GetHttpStatus() 70 } 71 72 // GetHttpStatus 获取HTTP状态码. 73 func (i ToStatus) GetHttpStatus() int { 74 if status, ok := errorCodeToHttpStatus[int(i)]; ok { 75 return status 76 } 77 return -1 78 } 79 80 // SetHttpStatus Map To HTTP Status Code. 81 func (i ToHttpStatus) SetHttpStatus(status int) { 82 errorCodeToHttpStatus[int(i)] = status 83 } 84 85 // 存储错误信息, 请不要修改. 86 var errorCodeData = map[string]int{} 87 88 // 存储错误信息, 请不要修改. 89 var errorCodeToHttpStatus = map[int]int{}