package middleware import ( "cms-api/internal/model" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" ) // ResponseHandler 统一响应处理中间件 func ResponseHandler(r *ghttp.Request) { r.Middleware.Next() // 如果已经有响应内容,则不处理 if r.Response.BufferLength() > 0 { return } var ( ctx = r.Context() res = r.GetHandlerResponse() err = r.GetError() msg = "操作成功" data interface{} ) var responseCode int = 200 if err != nil { errCode := gerror.Code(err) if errCode != gcode.CodeNil { responseCode = int(errCode.Code()) } else { responseCode = 500 } msg = err.Error() g.Log().Error(ctx, "请求处理错误:", err) } else if r.Response.Status >= 400 { msg = "请求失败" responseCode = r.Response.Status } else { data = res } response := &model.Response{ Code: responseCode, Message: msg, Data: data, } r.Response.WriteJsonExit(response) }