builder_params.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package gateway
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/api"
  4. "git.sxidc.com/go-framework/baize/framework/core/infrastructure/logger"
  5. "git.sxidc.com/service-supports/fserr"
  6. "net/http"
  7. )
  8. type builderParams struct {
  9. httpMethod string
  10. relativePath string
  11. requestItems []*builderRequestItem
  12. globalRequestCallbackFunc GlobalRequestCallbackFunc
  13. responseSuccessFunc ResponseSuccessFunc
  14. responseErrorFunc ResponseErrorFunc
  15. }
  16. func newBuilderParams() *builderParams {
  17. return &builderParams{
  18. httpMethod: "",
  19. relativePath: "",
  20. requestItems: make([]*builderRequestItem, 0),
  21. globalRequestCallbackFunc: nil,
  22. responseSuccessFunc: func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) {
  23. c.Status(http.StatusOK)
  24. if historyRequests != nil && len(historyRequests) != 0 {
  25. _, err := c.Writer.Write(historyRequests[len(historyRequests)-1].Response().Body())
  26. if err != nil {
  27. logger.GetInstance().Error(fserr.New(err.Error()))
  28. c.AbortWithStatus(http.StatusInternalServerError)
  29. return
  30. }
  31. }
  32. c.Writer.Flush()
  33. },
  34. responseErrorFunc: func(c *api.Context, err error) {
  35. if err == nil {
  36. return
  37. }
  38. resp := make(map[string]any)
  39. logger.GetInstance().Error(err)
  40. serviceErr := fserr.ParseCode(err)
  41. resp["success"] = false
  42. resp["errCode"] = serviceErr.BusinessCode
  43. resp["msg"] = serviceErr.Msg
  44. c.JSON(http.StatusOK, resp)
  45. },
  46. }
  47. }
  48. func (params *builderParams) copy() *builderParams {
  49. return &builderParams{
  50. httpMethod: params.httpMethod,
  51. relativePath: params.relativePath,
  52. requestItems: params.requestItems,
  53. globalRequestCallbackFunc: params.globalRequestCallbackFunc,
  54. responseSuccessFunc: params.responseSuccessFunc,
  55. responseErrorFunc: params.responseErrorFunc,
  56. }
  57. }