response.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package api
  2. import (
  3. "crm-api/pkg/lfshook"
  4. "fmt"
  5. "net/http"
  6. "runtime"
  7. "github.com/gin-gonic/gin"
  8. )
  9. var resp *Response
  10. func init() {
  11. resp = NewResponse()
  12. }
  13. type Response struct {
  14. Code int `json:"code"`
  15. Message string `json:"message"`
  16. Data interface{} `json:"data"`
  17. }
  18. func NewResponse() *Response {
  19. return &Response{}
  20. }
  21. func Success(ctx *gin.Context, data interface{}) { resp.Success(ctx, data) }
  22. func (r *Response) Success(ctx *gin.Context, data interface{}) {
  23. if data == nil {
  24. data = gin.H{}
  25. }
  26. ctx.JSON(http.StatusOK, Response{
  27. Code: 0,
  28. Message: "OK",
  29. Data: data,
  30. })
  31. }
  32. func Error(ctx *gin.Context, code int, message string) { resp.Error(ctx, code, message) }
  33. func (r *Response) Error(ctx *gin.Context, code int, message string) {
  34. // 调用信息
  35. msg := fmt.Sprintf("error msg: %s", message)
  36. pc, fileName, lineNumber, ok := runtime.Caller(2)
  37. if ok {
  38. msg = fmt.Sprintf("%s\n%s %s:%d", message, runtime.FuncForPC(pc).Name(), fileName, lineNumber)
  39. }
  40. lfshook.NewLogger().Error(msg)
  41. ctx.JSON(http.StatusOK, Response{
  42. Code: code,
  43. Message: message,
  44. Data: nil,
  45. })
  46. }