-
Notifications
You must be signed in to change notification settings - Fork 0
/
businessCode.go
143 lines (114 loc) · 2.6 KB
/
businessCode.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package businessCodex
// Response 统一返回结构. 错误时返回code和msg, 正确时返回data.
type Response struct {
Code int `json:"code"` // 业务码
Msg string `json:"msg"` // 描述信息
Data interface{} `json:"data"` // 返回值
}
// Failure 错误时返回结构 (保留type, 增加兼容性).
type Failure Response
const (
// ZhCN 简体中文 - 中国
ZhCN = "zh-cn"
// EnUS 英文 - 美国
EnUS = "en-us"
)
var (
succeedCode = 1000000000
)
func SetSucceedCode(code int) {
succeedCode = code
}
func GetSucceedCode() (code int) {
code = succeedCode
return
}
var (
// ServerError 110001 程序发生未知 panic 被框架捕捉到的时候.
serverErrorCode = succeedCode + 1
// TooManyRequests 110002 开启了框架的限速器被限速了
tooManyRequestsCode = serverErrorCode + 1
// ParamBindError 110003 使用框架序列化参数时报错, 一般是前端参数传错了.
paramBindErrorCode = tooManyRequestsCode + 1
// MySQLExecError 110004 数据库执行时报错, 一般用作未知的SQL执行异常.
mySQLExecErrorCode = paramBindErrorCode + 1
)
func SetServerErrorCode(code int) {
serverErrorCode = code
}
func GetServerErrorCode() (code int) {
code = serverErrorCode
return
}
func SetTooManyRequestsCode(code int) {
tooManyRequestsCode = code
}
func GetTooManyRequestsCode() (code int) {
code = tooManyRequestsCode
return
}
func SetParamBindErrorCode(code int) {
paramBindErrorCode = code
}
func GetParamBindErrorCode() (code int) {
code = paramBindErrorCode
return
}
func SetMySQLExecErrorCode(code int) {
mySQLExecErrorCode = code
}
func GetMySQLExecErrorCode() (code int) {
code = mySQLExecErrorCode
return
}
var lang string
func SetLang(l string) {
lang = l
}
var (
zhCnTextMap = make(map[int]string)
enUsTextMap = make(map[int]string)
return401Map = make(map[int]struct{})
)
func Init(enUS bool) {
if enUS {
SetLang(EnUS)
} else {
SetLang(ZhCN)
}
SetZhCNText(zhCNText())
SetEnUSText(enUSText())
}
func SetZhCNText(textMap map[int]string) {
for k, v := range textMap {
zhCnTextMap[k] = v
}
}
func GetZhCNText() map[int]string {
return zhCnTextMap
}
func SetEnUSText(textMap map[int]string) {
for k, v := range textMap {
enUsTextMap[k] = v
}
}
func GetEnUSText() map[int]string {
return enUsTextMap
}
func SetReturn401Map(intMap map[int]struct{}) {
for k, v := range intMap {
return401Map[k] = v
}
}
func GetReturn401Map() map[int]struct{} {
return return401Map
}
func Text(code int) string {
if lang == ZhCN {
return GetZhCNText()[code]
}
if lang == EnUS {
return GetEnUSText()[code]
}
return GetZhCNText()[code]
}