123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package response
- import (
- "github.com/gogf/gf/encoding/gjson"
- "github.com/gogf/gf/errors/gerror"
- "github.com/gogf/gf/net/ghttp"
- "github.com/gogf/gf/util/gconv"
- )
- // JsonResponse 数据返回通用JSON数据结构
- type JsonResponse struct {
- //ID string `json:"id"` //
- Code int `json:"code"` // 错误码((1:成功, 0:失败, >1:错误码))
- Message string `json:"message"` // 提示信息
- Data interface{} `json:"data,omitempty"` // 返回数据(业务接口定义具体数据结构)
- Redirect string `json:"redirect,omitempty"` // 引导客户端跳转到指定路由
- }
- // JsonExit 返回JSON数据并退出当前HTTP执行函数。
- func JsonExit(r *ghttp.Request, code int, msg string, data ...interface{}) {
- responseData := interface{}(nil)
- if len(data) > 0 {
- responseData = data[0]
- }
- codeMsgs := GetCodeMsg(code, msg)
- response := &JsonResponse{
- //ID: r.GetCtxVar("RequestId").String(),
- Code: code,
- Message: codeMsgs,
- Data: responseData,
- }
- r.SetParam("apiReturnRes", response)
- _ = r.Response.WriteJsonExit(response)
- }
- func ApiResponse(r *ghttp.Request, res interface{}) {
- Map := gjson.New(res).Map()
- Map["id"] = r.GetCtxVar("request_id")
- r.Response.WriteJson(Map)
- r.Exit()
- }
- func Success(r *ghttp.Request) {
- res := dataReturn(r, 1)
- _ = r.Response.WriteJsonExit(res)
- }
- func Failure(r *ghttp.Request, code int, err error) {
- res := dataReturn(r, code, err.Error())
- _ = r.Response.WriteJsonExit(res)
- }
- func FailureCode(r *ghttp.Request, code int) {
- res := dataReturn(r, code)
- _ = r.Response.WriteJsonExit(res)
- }
- func dataReturn(r *ghttp.Request, code int, req ...interface{}) *JsonResponse {
- var msg string
- var data interface{}
- if len(req) > 0 {
- msg = gconv.String(req[0])
- }
- if len(req) > 1 {
- data = req[1]
- }
- //msg = GetCodeMsg(code, msg)
- if code != 1 && !gconv.Bool(r.GetCtxVar("api_code")) {
- code = 0
- }
- response := &JsonResponse{
- //ID: r.GetCtxVar("RequestId").String(),
- Code: code,
- Message: msg,
- Data: data,
- }
- r.SetParam("apiReturnRes", response)
- return response
- }
- func SuccessWithData(r *ghttp.Request, data interface{}) {
- res := dataReturn(r, 1, "ok", data)
- _ = r.Response.WriteJsonExit(res)
- }
- func FailureWithData(r *ghttp.Request, code int, err error, data interface{}) {
- res := dataReturn(r, code, err.Error(), data)
- _ = r.Response.WriteJsonExit(res)
- }
- //ParamErr 参数错误
- func ParamErr(r *ghttp.Request, err error) {
- res := dataReturn(r, 3000, gerror.Current(err))
- _ = r.Response.WriteJsonExit(res)
- }
- //NotOnline 应用未上线
- func NotOnline(r *ghttp.Request) {
- res := dataReturn(r, 3002)
- _ = r.Response.WriteJsonExit(res)
- }
- func BackErr(r *ghttp.Request, err error) {
- res := dataReturn(r, 10002, err.Error())
- _ = r.Response.WriteJsonExit(res)
- }
- func Number(r *ghttp.Request) {
- res := dataReturn(r, 10004)
- _ = r.Response.WriteJsonExit(res)
- }
- func Code(r *ghttp.Request, err error) {
- //res := dataReturn(r, gerror.Code(err).Code(), gerror.Code(err).Message(), gerror.Code(err).Detail())
- res := dataReturn(r, gerror.Code(err).Code(), err.Error(), gerror.Code(err).Detail())
- _ = r.Response.WriteJsonExit(res)
- }
- //Fatal 致命错误
- func Fatal(r *ghttp.Request) {
- res := dataReturn(r, 500)
- _ = r.Response.WriteJsonExit(res)
- }
- //Repeat 重复请求
- func Repeat(r *ghttp.Request) {
- res := dataReturn(r, 3001)
- _ = r.Response.WriteJsonExit(res)
- }
- //NotFound 接口不存在
- func NotFound(r *ghttp.Request) {
- res := dataReturn(r, 404)
- _ = r.Response.WriteJsonExit(res)
- }
- //Sign 签名错误
- func Sign(r *ghttp.Request, err error) {
- res := dataReturn(r, 99999, err.Error())
- _ = r.Response.WriteJsonExit(res)
- }
- //Auth 认证失败
- func Auth(r *ghttp.Request) {
- res := dataReturn(r, 999, "请登录")
- _ = r.Response.WriteJsonExit(res)
- }
- //Auth 认证失败 被冻结拉黑
- func AuthBlack(r *ghttp.Request) {
- res := dataReturn(r, 888, "您的账号被冻结拉黑,请联系管理员")
- _ = r.Response.WriteJsonExit(res)
- }
- //Auth 认证失败
- func NoPower(r *ghttp.Request) {
- response := &JsonResponse{
- //ID: r.GetCtxVar("RequestId").String(),
- Code: 5002,
- Message: "没有权限",
- }
- r.SetParam("apiReturnRes", response)
- _ = r.Response.WriteJsonExit(response)
- }
- //子账号登陆open
- func SubAccountLoginOpenStatus(r *ghttp.Request) {
- response := &JsonResponse{
- //ID: r.GetCtxVar("RequestId").String(),
- Code: 5002,
- Message: "账户未审核",
- }
- r.SetParam("apiReturnRes", response)
- _ = r.Response.WriteJsonExit(response)
- }
|