4
4
"context"
5
5
"fmt"
6
6
"net/http"
7
+ "strconv"
7
8
"strings"
8
9
"time"
9
10
@@ -107,14 +108,33 @@ func sortMap(ctx context.Context, body []byte, res *gmap.ListMap, ret model.Map)
107
108
return reqSortMap
108
109
}
109
110
111
+ func try (ctx context.Context , try func (ctx context.Context ) error ) (err error ) {
112
+ defer func () {
113
+ if exception := recover (); exception != nil {
114
+ if v , ok := exception .(error ); ok && gerror .HasStack (v ) {
115
+ err = v
116
+ } else {
117
+ err = gerror .Newf (`%+v` , exception )
118
+ }
119
+ }
120
+ }()
121
+ err = try (ctx )
122
+ return
123
+ }
124
+
125
+ type CodeErr interface {
126
+ Code () int
127
+ Error () string
128
+ }
129
+
110
130
func CommonResponse (handler func (ctx context.Context , req model.Map ) (res model.Map , err error ), mode Mode , debug bool ) func (req * ghttp.Request ) {
111
131
return func (req * ghttp.Request ) {
112
132
metaRes := & gmap.ListMap {}
113
133
code := 200
114
134
msg := "success"
115
135
nodeRes := & gmap.ListMap {}
116
136
117
- err := g . Try (req .Context (), func (ctx context.Context ) {
137
+ err := try (req .Context (), func (ctx context.Context ) ( err error ) {
118
138
119
139
ret , err := handler (ctx , req .GetMap ())
120
140
@@ -125,28 +145,33 @@ func CommonResponse(handler func(ctx context.Context, req model.Map) (res model.
125
145
nodeRes .Set (k , v )
126
146
}
127
147
}
128
-
129
- if err != nil {
130
- panic (err )
131
- }
132
-
148
+ return
133
149
})
134
150
135
151
if err != nil {
136
152
137
- if e , ok := err .(consts. Err ); ok {
153
+ if e , ok := err .(CodeErr ); ok {
138
154
code = e .Code ()
155
+ if strconv .Itoa (e .Code ())[0 ] == '4' {
156
+ code = e .Code ()
157
+ msg = e .Error ()
158
+ } else {
159
+ code = 500
160
+ msg = "系统异常"
161
+ }
139
162
} else {
140
163
code = 500
164
+ msg = "系统异常"
141
165
}
142
166
143
- msg = err . Error ()
144
-
145
- if e , ok := err .( * gerror. Error ); ok {
146
- g . Log (). Stack ( false ). Error ( req . Context (), err , e . Stack ())
147
- } else {
148
- g . Log (). Stack ( false ). Error ( req . Context (), err )
167
+ if code >= 500 {
168
+ if e , ok := err .( * gerror. Error ); ok {
169
+ g . Log (). Stack ( false ). Error ( req . Context (), err , e . Stack ())
170
+ } else {
171
+ g . Log (). Stack ( false ). Error ( req . Context (), err )
172
+ }
149
173
}
174
+
150
175
}
151
176
152
177
metaRes .Set ("ok" , code == 200 )
0 commit comments