package common import ( "encoding/json" "github.com/gin-gonic/gin" "runtime" "strconv" "strings" ) type Response struct { ErrCode int `json:"errcode"` ErrMsg string `json:"errmsg"` Data interface{} `json:"data"` } type BomResponse struct { ErrCode int `json:"error_code"` ErrMsg string `json:"error_msg"` Flag int `json:"flag"` Total int `json:"total"` Data interface{} `json:"data"` } func SuccessResponse(errCode int, errMsg string, data interface{}) Response { return Response{ ErrCode: errCode, ErrMsg: errMsg, Data: data, } } func ErrorResponse(errCode int, errMsg string) Response { return Response{ ErrCode: errCode, ErrMsg: errMsg, Data: []string{}, } } //统一输出,里面还要去处理jsonp func Output(ctx *gin.Context,errCode int, errMsg string, data interface{}) { if data == nil { data = []string{} } response := Response{ ErrCode: errCode, ErrMsg: errMsg, Data: data, } //if errCode >= 100 { // //SearchApiLogger(ctx,errCode, errMsg) //} if ctx.DefaultQuery("callback", "") != "" { ctx.JSONP(200, response) } else { referer := ctx.Request.Referer() referer = strings.TrimRight(referer, "/") ctx.Header("Access-Control-Allow-Origin", referer) ctx.Header("Access-Control-Allow-Credentials", "true") //允许跨站访问的站点域名 //跨域请求头设置 ctx.JSON(200, response) } } //简单的返回数据方法 func ReturnData(ctx *gin.Context,errCode int, errMsg string, data interface{}) { if data == nil { data = []string{} if errCode == 0 { errCode = 1 } } response := Response{ ErrCode: errCode, ErrMsg: errMsg, Data: data, } ctx.JSON(200, response) } //错误的搜索日志记录 func SearchApiLogger(ctx *gin.Context,code int, msg string) { pc, file, line, _ := runtime.Caller(2) f := runtime.FuncForPC(pc) errMsg := "提示信息:" + msg + ",请求url:" + ctx.Request.URL.String() lineNo := strconv.Itoa(line) searchLog := AnalyzeSearchError(ctx,code, ctx.ClientIP(), errMsg, file, lineNo, f.Name()) searchLogByte, _ := json.Marshal(searchLog) WriteSearchErrorLog(string(searchLogByte)) }