github.com/SupenBysz/gf-admin-community@v0.7.4/utility/response/response.go (about) 1 package response 2 3 import ( 4 "github.com/SupenBysz/gf-admin-community/api_v1" 5 "reflect" 6 "strings" 7 "unsafe" 8 9 "github.com/gogf/gf/v2/frame/g" 10 "github.com/gogf/gf/v2/net/ghttp" 11 "github.com/gogf/gf/v2/os/gtime" 12 "github.com/gogf/gf/v2/util/gconv" 13 ) 14 15 // Json 返回标准JSON数据。 16 func Json(r *ghttp.Request, code int, message string, data ...interface{}) { 17 var responseData interface{} 18 if len(data) > 0 { 19 responseData = data[0] 20 } else { 21 responseData = g.Map{} 22 } 23 24 if reflect.ValueOf(data) == reflect.ValueOf(api_v1.JsonRes{}) { 25 r.Response.WriteJson(data) 26 } else { 27 if len(data) > 0 && strings.Contains(reflect.ValueOf(data[0]).String(), "JsonRes") && len(data) > 0 && reflect.TypeOf(data[0]).Name() == reflect.TypeOf([]api_v1.JsonRes{}).Name() { 28 jsonRes := (*api_v1.JsonRes)(unsafe.Pointer(&data[0])) 29 30 r.Response.WriteJson(api_v1.JsonRes{ 31 Code: code, 32 Message: message, 33 Data: gconv.Map(jsonRes.Data)["Data"], 34 Time: gtime.Now().Format("Y-m-d H:i:s"), 35 }) 36 return 37 } 38 39 r.Response.WriteJson(api_v1.JsonRes{ 40 Code: code, 41 Message: message, 42 Data: responseData, 43 Time: gtime.Now().Format("Y-m-d H:i:s"), 44 }) 45 } 46 } 47 48 // JsonExit 返回标准JSON数据并退出当前HTTP执行函数。 49 func JsonExit(r *ghttp.Request, code int, message string, data ...interface{}) { 50 Json(r, code, message, data...) 51 r.ExitAll() 52 } 53 54 // JsonRedirect 返回标准JSON数据引导客户端跳转。 55 func JsonRedirect(r *ghttp.Request, code int, message, redirect string, data ...interface{}) { 56 responseData := interface{}(nil) 57 if len(data) > 0 { 58 responseData = data[0] 59 } 60 if reflect.ValueOf(data) == reflect.ValueOf(api_v1.JsonRes{}) { 61 r.Response.WriteJson(data) 62 } else { 63 r.Response.WriteJson(api_v1.JsonRes{ 64 Code: code, 65 Message: message, 66 Data: responseData, 67 Time: gtime.Now().Format("Y-m-d H:i:s"), 68 }) 69 } 70 } 71 72 // JsonRedirectExit 返回标准JSON数据引导客户端跳转,并退出当前HTTP执行函数。 73 func JsonRedirectExit(r *ghttp.Request, code int, message, redirect string, data ...interface{}) { 74 JsonRedirect(r, code, message, redirect, data...) 75 r.Exit() 76 }