Files
workspace/code/allapp/allapp-go/utils/response/response.go
T
2026-01-13 22:18:01 +08:00

87 lines
1.6 KiB
Go

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)
}