package response import ( "base-go-v2/internal/logx" "base-go-v2/internal/router" "base-go-v2/internal/routinex" "base-go-v2/internal/utils/strutil" "net/http" ) // Result 响应结构 type Result struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` 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 *router.Context result Result statusCode int // 可自定义 HTTP 状态码 } // Success 构造成功响应 func Success(c *router.Context) *Builder { return &Builder{ c: c, result: Result{Code: HttpCode.Success, Message: "请求成功"}, statusCode: http.StatusOK, } } // Fail 构造失败响应 func Fail(c *router.Context) *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() error { if b.result.Data == nil { b.result.Data = "" } if trackId := routinex.Get(logx.TrackID); trackId != nil { b.result.TrackId = strutil.ToString(trackId) } return b.c.JSON(b.statusCode, b.result) }