common.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package api
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "gadmin/config"
  6. "gadmin/internal/admin/forms"
  7. "gadmin/utility/serializer"
  8. "github.com/gin-gonic/gin"
  9. "gopkg.in/go-playground/validator.v8"
  10. "io/ioutil"
  11. "net/http"
  12. "os"
  13. )
  14. func Ping(c *gin.Context) {
  15. c.JSON(200, serializer.Response{
  16. Code: 0,
  17. Msg: "Pong",
  18. })
  19. }
  20. func JsonResource(c *gin.Context) {
  21. var (
  22. req forms.JsonResource
  23. jsonMap []map[string]interface{}
  24. URL = os.Getenv("ADMIN_JSON_RESOURCE_URL")
  25. )
  26. if err := c.ShouldBind(&req); err != nil {
  27. c.JSON(200, serializer.ParamErr(err.Error(), nil))
  28. return
  29. }
  30. URL = URL + req.Version + "/" + req.Name
  31. resp, err := http.Get(URL)
  32. if err != nil {
  33. c.JSON(200, serializer.ParamErr(err.Error(), nil))
  34. return
  35. }
  36. defer resp.Body.Close()
  37. body, err := ioutil.ReadAll(resp.Body)
  38. if err != nil {
  39. c.JSON(200, serializer.ParamErr(err.Error(), nil))
  40. return
  41. }
  42. if err = json.Unmarshal(body, &jsonMap); err != nil {
  43. c.JSON(200, serializer.ParamErr(err.Error(), nil))
  44. return
  45. }
  46. c.JSON(200, jsonMap)
  47. }
  48. func ErrorResponse(err error) serializer.Response {
  49. if ve, ok := err.(validator.ValidationErrors); ok {
  50. for _, e := range ve {
  51. field := config.T(fmt.Sprintf("Field.%s", e.Field))
  52. tag := config.T(fmt.Sprintf("Tag.Valid.%s", e.Tag))
  53. return serializer.ParamErr(
  54. fmt.Sprintf("%s%s", field, tag),
  55. err,
  56. )
  57. }
  58. }
  59. if _, ok := err.(*json.UnmarshalTypeError); ok {
  60. return serializer.ParamErr("JSON类型不匹配", err)
  61. }
  62. return serializer.ParamErr("参数错误", err)
  63. }