package base import ( "github.com/gin-gonic/gin" "github.com/pkg/errors" "gopkg.in/go-playground/validator.v8" "net/http" ) // TRenderJson for API type TRenderJson struct { ReturnCode int `json:"returnCode"` ReturnMsg string `json:"returnMsg"` ReturnUserMsg string `json:"returnUserMsg"` Data map[string]interface{} `json:"data"` } // TRenderJsonShell for API type TRenderJsonShell struct { ReturnCode int `json:"returnCode" example:"0"` ReturnMsg string `json:"returnMsg" example:"succ"` ReturnUserMsg string `json:"returnUserMsg" example:"成功"` Data interface{} `json:"data"` } // GetReturnCode for API func (t TRenderJsonShell) GetReturnCode() int { return t.ReturnCode } // TRenderJsonBase !!! HACK ME 兼容 ware service type TRenderJsonBase interface { GetReturnCode() int } // GetReturnCode for API func (t TRenderJson) GetReturnCode() int { return t.ReturnCode } // RenderJsonSucc for API func RenderJsonSucc(ctx *gin.Context, data map[string]interface{}) { renderjson := TRenderJson{0, "succ", "成功", data} ctx.JSON(http.StatusOK, renderjson) ctx.Set("render", renderjson) return } func RenderJsonShellSucc(ctx *gin.Context, data interface{}) { renderjson := TRenderJsonShell{0, "succ", "成功", data} ctx.JSON(http.StatusOK, renderjson) ctx.Set("render", renderjson) return } func RenderJsonFail(ctx *gin.Context, err error) { var renderjson TRenderJson switch errors.Cause(err).(type) { case Error: renderjson.ReturnMsg = errors.Cause(err).(Error).ErrorMsg renderjson.ReturnUserMsg = errors.Cause(err).(Error).ErrorUserMsg renderjson.ReturnCode = errors.Cause(err).(Error).ErrorCode case validator.ValidationErrors: renderjson.ReturnMsg = "ParamError" renderjson.ReturnUserMsg = "参数错误" renderjson.ReturnCode = 4000000 var validateData []interface{} for _, err := range errors.Cause(err).(validator.ValidationErrors) { validateData = append(validateData, map[string]interface{}{"message": "params check error", "tag": err.Tag, "field": err.Field}) } renderjson.Data = map[string]interface{}{"validateData": validateData} default: renderjson.ReturnMsg = errors.Cause(err).Error() renderjson.ReturnUserMsg = "" renderjson.ReturnCode = -1 } ctx.JSON(http.StatusOK, renderjson) ctx.Set("render", renderjson) //打印错误栈 StackLogger(ctx, err) return } // TRenderError for API type TRenderError struct { TRenderJson Err Error } func (err TRenderError) Error() string { return err.Err.Error() }