package response import ( "net/http" "github.com/cloudwego/hertz/pkg/app" "github.com/hertz-contrib/requestid" ) // Result 响应结构 type Result struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data"` TrackId string `json:"trackId,omitempty"` } // HttpCode 响应状态码 var HttpCode = struct { Success int Unauthorized int Fail int RefreshToken int }{ Success: 200, Unauthorized: 401, Fail: 500, RefreshToken: 402, } // Builder 响应构建器 type Builder struct { c *app.RequestContext result Result statusCode int // 可自定义 HTTP 状态码 } // Success 构造成功响应 func Success(c *app.RequestContext) *Builder { return &Builder{ c: c, result: Result{Code: HttpCode.Success, Message: "请求成功"}, statusCode: http.StatusOK, } } // Fail 构造失败响应 func Fail(c *app.RequestContext) *Builder { return &Builder{ c: c, result: Result{Code: HttpCode.Fail, Message: "请求失败"}, statusCode: http.StatusOK, } } // Status 设置自定义 HTTP 状态码 func (b *Builder) Status(code int) *Builder { b.statusCode = code return b } func (b *Builder) Code(code int) *Builder { b.result.Code = code return b } func (b *Builder) Message(msg string) *Builder { b.result.Message = msg return b } func (b *Builder) Data(data interface{}) *Builder { b.result.Data = data return b } // Send 发送响应 func (b *Builder) Send() { //if b.result.Data == nil { // b.result.Data = "" //} reqID := requestid.Get(b.c) b.result.TrackId = reqID b.c.JSON(200, b.result) }