升级exception, 简化逻辑

This commit is contained in:
2025-05-10 18:19:11 +08:00
parent e8561a060c
commit be3556e23e
4 changed files with 58 additions and 115 deletions

63
code.go
View File

@@ -9,7 +9,6 @@ package exception
import (
"fmt"
"net/http"
)
var (
@@ -18,13 +17,13 @@ var (
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:53 2022/6/25
codeTable map[interface{}]Code
codeTable map[any]Code
codeList []Code
)
func init() {
// 规避没调用 InitCodeTable 导致空指针
codeTable = make(map[interface{}]Code)
codeTable = make(map[any]Code)
codeList = make([]Code, 0)
}
@@ -33,12 +32,13 @@ func init() {
// Author : go_developer@163.com<白茶清欢>
//
// Date : 20:55 2022/6/25
func InitCodeTableWithMessage(table map[interface{}]map[string]string, convertDefaultSuccessCode interface{}, convertDefaultLanguage string) {
func InitCodeTableWithMessage(table map[any]map[string]string, convertDefaultSuccessCode any, convertDefaultLanguage string) {
for code, message := range table {
c := Code{
Value: code,
Message: message,
Reason: make([]*CodeReason, 0),
Reason: make(map[string]string),
Resolve: make(map[string]string),
}
codeTable[code] = c
@@ -59,23 +59,11 @@ func InitCodeTableWithMessage(table map[interface{}]map[string]string, convertDe
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:19 2023/6/9
func InitCodeTableWithCodeList(list []Code, convertDefaultSuccessCode interface{}, convertDefaultLanguage string) {
func InitCodeTableWithCodeList(list []Code, convertDefaultSuccessCode any, convertDefaultLanguage string) {
codeList = list
for _, itemCode := range list {
if nil == itemCode.Reason {
itemCode.Reason = make([]*CodeReason, 0)
}
for lang, _ := range itemCode.Message {
for _, itemReason := range itemCode.Reason {
if _, exist := itemReason.Reason[lang]; !exist {
continue
}
if _, exist := itemReason.Solution[lang]; !exist {
itemReason.Solution[lang] = make([]string, 0)
}
}
itemCode.Reason = make(map[string]string)
}
codeTable[itemCode.Value] = itemCode
@@ -93,10 +81,8 @@ func InitCodeTableWithCodeList(list []Code, convertDefaultSuccessCode interface{
var (
// messageWithCode 自动在message文案后追加状态码
messageWithCode = true
// defaultHttpCode 默认的http状态码
defaultHttpCode = http.StatusOK
// defaultSuccessCode 默认代表成功的状态码
defaultSuccessCode interface{}
defaultSuccessCode any
// defaultLanguage 默认的语言
defaultLanguage = "zh"
)
@@ -110,39 +96,34 @@ func MessageWithoutCode() {
messageWithCode = false
}
// getMessage 根据code获取文案
// GetMessage 根据code获取文案
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:16 2022/6/25
func getMessage(code interface{}, defaultMessage ...string) string {
inputCodeInfo, exist := codeTable[code]
if !exist {
func GetMessage(code any, defaultMessage ...string) string {
var (
inputCodeInfo Code
exist bool
)
if inputCodeInfo, exist = codeTable[code]; !exist {
// 错误码不存在
if len(defaultMessage) > 0 && len(defaultMessage[0]) > 0 {
return defaultMessage[0]
}
// 无论是否开启 messageWithCode , 未知错误强行带 code
return fmt.Sprintf("未知错误【%v】", code)
return fmt.Sprintf("unknown error【%v】", code)
}
if code == defaultSuccessCode {
// 请求成功, 一直不带状态码后缀
return inputCodeInfo.Message[defaultLanguage]
}
if messageWithCode {
if code == defaultSuccessCode {
// 请求成功, 一直不带状态码后缀
return inputCodeInfo.Message[defaultLanguage]
}
return fmt.Sprintf(inputCodeInfo.Message[defaultLanguage]+"【%v】", code)
}
return inputCodeInfo.Message[defaultLanguage]
}
// GetMessage 获取消息信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:58 2022/6/26
func GetMessage(code interface{}, defaultMessage ...string) string {
return getMessage(code, defaultMessage...)
}
// GetCodeList ...
//
// Author : go_developer@163.com<白茶清欢>
@@ -157,6 +138,6 @@ func GetCodeList() []Code {
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:05 2023/6/9
func GetCodeTable() map[interface{}]Code {
func GetCodeTable() map[any]Code {
return codeTable
}