response.go 668 B

12345678910111213141516171819202122232425262728293031323334
  1. package response
  2. import (
  3. "net/http"
  4. "slow_wild_api/apps/internal/types"
  5. "github.com/zeromicro/go-zero/rest/httpx"
  6. "google.golang.org/grpc/status"
  7. )
  8. type Body struct {
  9. Code int `json:"code"`
  10. Msg string `json:"msg"`
  11. Data interface{} `json:"data,omitempty"`
  12. }
  13. func Response(w http.ResponseWriter, resp *types.BaseReturnData, err error) {
  14. var body Body
  15. if err != nil {
  16. // 处理 RPC 错误
  17. if e, ok := status.FromError(err); ok {
  18. body.Code = int(e.Code())
  19. body.Msg = e.Message()
  20. } else {
  21. body.Code = -1
  22. body.Msg = err.Error()
  23. }
  24. } else {
  25. body.Code = 0
  26. body.Msg = "OK"
  27. body.Data = resp.Data
  28. }
  29. httpx.OkJson(w, body)
  30. }