package common import ( "net/http" "github.com/gin-gonic/gin" ) type Response struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` } // Success 成功响应 func Success(c *gin.Context, data interface{}) { c.JSON(http.StatusOK, Response{ Code: 200, Message: "success", Data: data, }) } // SuccessWithMessage 成功响应(自定义消息) func SuccessWithMessage(c *gin.Context, message string, data interface{}) { c.JSON(http.StatusOK, Response{ Code: 200, Message: message, Data: data, }) } // Error 错误响应 func Error(c *gin.Context, code int, message string) { c.JSON(http.StatusOK, Response{ Code: code, Message: message, }) } // ErrorWithData 错误响应(带数据) func ErrorWithData(c *gin.Context, code int, message string, data interface{}) { c.JSON(http.StatusOK, Response{ Code: code, Message: message, Data: data, }) } // 常见错误码 const ( CodeSuccess = 200 CodeInvalidParams = 400 CodeUnauthorized = 401 CodeForbidden = 403 CodeNotFound = 404 CodeInternalError = 500 CodeServerError = 500 // 服务器错误(别名) CodeBindXHSFailed = 1001 CodeCopyNotAvailable = 1002 CodeAlreadyClaimed = 1003 ) // ResponseData 带分页的响应数据结构 type ResponseData struct { Code int `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` Total int64 `json:"total,omitempty"` Page int `json:"page,omitempty"` PageSize int `json:"page_size,omitempty"` } // ErrorResponse 返回错误响应对象(不直接发送) func ErrorResponse(message string) Response { return Response{ Code: CodeInternalError, Message: message, } } // SuccessResponse 返回成功响应对象(不直接发送) func SuccessResponse(data interface{}, message string) Response { return Response{ Code: CodeSuccess, Message: message, Data: data, } } // SuccessResponseWithPage 返回带分页的成功响应对象(不直接发送) func SuccessResponseWithPage(data interface{}, total int64, page, pageSize int, message string) ResponseData { return ResponseData{ Code: CodeSuccess, Message: message, Data: data, Total: total, Page: page, PageSize: pageSize, } }