Files
public/message/message.go
2021-02-08 17:46:26 +08:00

101 lines
1.9 KiB
Go

/*
消息定义接口
*/
package message
import (
"fmt"
"sync"
"github.com/xxjwxc/public/mylog"
)
// MessageBody 消息头
type MessageBody struct {
State bool `json:"state"`
Code int `json:"code,omitempty"`
Error string `json:"error,omitempty"`
Data interface{} `json:"data,omitempty"`
}
func init() {
_tryRegisteryCode(NormalMessageID)
_tryRegisteryCode(NotFindError)
}
//GetErrorMsg 获取错误消息 参数(int,string)
func GetErrorMsg(errorCode ...interface{}) (msg MessageBody) {
if len(errorCode) == 0 {
mylog.ErrorString("unknow")
msg.State = false
msg.Code = -1
return
}
msg.State = false
for _, e := range errorCode {
switch v := e.(type) {
case int:
msg.Code = int(v)
msg.Error = ErrCode(v).String()
case ErrCode:
_tryRegisteryCode(v)
msg.Code = int(v)
msg.Error = v.String()
case string:
msg.Error = string(v)
case error:
msg.Error = v.Error()
default:
msg.Error = fmt.Sprintf("Unknow type:(%v)", e)
}
}
return
}
// GetSuccessMsg 成功消息
func GetSuccessMsg(codes ...ErrCode) (msg MessageBody) {
code := NormalMessageID
if len(codes) > 0 {
code = codes[0]
}
_tryRegisteryCode(code)
msg.State = true
msg.Code = int(code)
msg.Error = code.String()
return
}
// GetError 获取错误信息
func GetError(code ErrCode) error {
go _tryRegisteryCode(code)
return fmt.Errorf(code.String())
}
//GetErrorStrMsg 获取错误消息 参数(int,string)
func GetErrorStrMsg(errorCode string) (msg MessageBody) {
// if k, ok := _MessageMap[errorCode]; ok {
// return GetErrorMsg(k)
// }
msg.State = false
msg.Code = _tryGetCodeID(errorCode)
msg.Error = errorCode
return
}
var _mp sync.Map
func _tryRegisteryCode(code ErrCode) {
_mp.LoadOrStore(code.String(), int(code))
}
func _tryGetCodeID(codeStr string) int {
v, ok := _mp.Load(codeStr)
if ok {
return v.(int)
}
return -1
}