// Package infra 提供基础设施功能 // 包括统一响应处理、健康检查、日志等 package infra import ( "time" "github.com/gin-gonic/gin" "google.golang.org/grpc/status" ) var Response Reply // Reply 统一响应结构体 type Reply struct { Code int32 `json:"code"` // 响应码 Message string `json:"message"` // 响应消息 Details any `json:"details"` // 响应数据 Timeseq int64 `json:"timeseq"` // 时间戳序列 } // Success 返回成功响应 // ctx: Gin上下文 // data: 响应数据 func (reply *Reply) Success(ctx *gin.Context, data any) { reply.Code = 0 reply.Details = data reply.Message = "" reply.Timeseq = time.Now().UnixMilli() if data == nil { reply.Details = "" } ctx.JSON(200, reply) } // Error 返回错误响应 // ctx: Gin上下文 // err: 错误对象 func (reply *Reply) Error(ctx *gin.Context, err error) { reply.Code = 500 reply.Details = "" // 默认状态码为500 e, ok := status.FromError(err) if ok { reply.Code = int32(e.Code()) reply.Message = e.Message() } else { reply.Message = err.Error() } // 发送错误响应 ctx.JSON(200, reply) }