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{}