Files
workspace/code/base-project/base-go-v2/internal/reponse/response.go
T
2025-11-06 17:32:51 +08:00

79 lines
1.4 KiB
Go

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"
)
type Result struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
TrackId string `json:"trackId,omitempty"`
}
var HttpCode = struct {
Success int
Unauthorized int
Fail int
RefreshToken int
}{
Success: 200,
Unauthorized: 401,
Fail: 500,
RefreshToken: 402,
}
type Builder struct {
c *router.Context
result Result
}
func Success(c *router.Context) *Builder {
return &Builder{
c: c,
result: Result{
Code: HttpCode.Success,
Message: "请求成功",
},
}
}
func Fail(c *router.Context) *Builder {
return &Builder{
c: c,
result: Result{
Code: HttpCode.Fail,
Message: "请求失败",
},
}
}
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
}
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(http.StatusOK, b.result)
}