Files

45 lines
1.0 KiB
Go
Raw Permalink Normal View History

2026-09-17 14:42:44 +08:00
package logic
import (
"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"
)
// CORS 允许跨域(管理后台与 H5 联调)
func CORS(r *ghttp.Request) {
r.Response.CORSDefault()
if r.Method == "OPTIONS" {
r.Exit()
}
r.Middleware.Next()
}
// Response 统一响应封装:{code, message, result}
// 前端约定:code=0 成功;401 未登录;4001 模块未授权。
func Response(r *ghttp.Request) {
r.Middleware.Next()
// 鉴权中间件等已直接写响应(如 401),不再二次包装
if r.Response.BufferLength() > 0 {
return
}
var (
err = r.GetError()
res = r.GetHandlerResponse()
)
if err != nil {
code := gerror.Code(err)
codeInt := code.Code()
if code == gcode.CodeNil {
codeInt = 500
} else if code == gcode.CodeValidationFailed {
codeInt = 422
}
r.Response.WriteJson(g.Map{"code": codeInt, "message": err.Error(), "result": nil})
return
}
r.Response.WriteJson(g.Map{"code": 0, "message": "ok", "result": res})
}