123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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()
- }
|