v1.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package v1
  2. import (
  3. "errors"
  4. "github.com/gin-gonic/gin"
  5. "net/http"
  6. )
  7. type Response struct {
  8. Code int `json:"code"`
  9. Message string `json:"message"`
  10. Data interface{} `json:"data"`
  11. }
  12. func HandleSuccess(ctx *gin.Context, data interface{}) {
  13. if data == nil {
  14. data = map[string]interface{}{}
  15. }
  16. resp := Response{Code: errorCodeMap[ErrSuccess], Message: ErrSuccess.Error(), Data: data}
  17. if _, ok := errorCodeMap[ErrSuccess]; !ok {
  18. resp = Response{Code: 0, Message: "", Data: data}
  19. }
  20. ctx.JSON(http.StatusOK, resp)
  21. }
  22. func HandleError(ctx *gin.Context, httpCode int, err error, data interface{}) {
  23. if data == nil {
  24. data = map[string]string{}
  25. }
  26. resp := Response{Code: errorCodeMap[err], Message: err.Error(), Data: data}
  27. if _, ok := errorCodeMap[err]; !ok {
  28. resp = Response{Code: 500, Message: err.Error(), Data: data}
  29. }
  30. ctx.JSON(httpCode, resp)
  31. }
  32. type Error struct {
  33. Code int
  34. Message string
  35. }
  36. var errorCodeMap = map[error]int{}
  37. func newError(code int, msg string) error {
  38. err := errors.New(msg)
  39. errorCodeMap[err] = code
  40. return err
  41. }
  42. func (e Error) Error() string {
  43. return e.Message
  44. }