package response import ( "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gmutex" ) const ( SuccessCode int = 1000 ErrorCode int = -1 ) type Response struct { // 代码 Code int `json:"code" example:"200"` // 数据集 Data interface{} `json:"data"` // 消息 Message string `json:"message"` } var ( response = new(Response) mu = gmutex.New() ) func RJson(r *ghttp.Request, code int, message string, data ...interface{}) { response.RJson(r, code, message, data...) } func SusJson(isExit bool, r *ghttp.Request, message string, data ...interface{}) { // message = lang.ToKey(r.GetCtx(), message) response.SusJson(isExit, r, message, data...) } func FailJson(isExit bool, r *ghttp.Request, message string, data ...interface{}) { // message = lang.ToKey(r.GetCtx(), message) response.FailJson(isExit, r, message, data...) } // 返回JSON数据并退出当前HTTP执行函数。 func (res *Response) JsonExit(r *ghttp.Request, code int, message string, data ...interface{}) { res.RJson(r, code, message, data...) r.Exit() } // 标准返回结果数据结构封装。 // 返回固定数据结构的JSON: // code: 状态码(200:成功,302跳转,和http请求状态码一至); // message: 请求结果信息; // data: 请求结果,根据不同接口返回结果的数据结构不同; func (res *Response) RJson(r *ghttp.Request, code int, message string, data ...interface{}) { responseData := interface{}(nil) if len(data) > 0 { responseData = data[0] } response = &Response{ Code: code, Message: message, Data: responseData, } r.SetParam("apiReturnRes", response) r.Response.WriteJson(response) } // 成功返回JSON func (res *Response) SusJson(isExit bool, r *ghttp.Request, message string, data ...interface{}) { if isExit { res.JsonExit(r, SuccessCode, message, data...) } res.RJson(r, SuccessCode, message, data...) } // 失败返回JSON func (res *Response) FailJson(isExit bool, r *ghttp.Request, message string, data ...interface{}) { if isExit { res.JsonExit(r, ErrorCode, message, data...) } res.RJson(r, ErrorCode, message, data...) }