Преглед на файлове

修改网关回调接口

yjp преди 8 месеца
родител
ревизия
94b063934b

+ 12 - 11
convenient/gwtools/entity_crud/entity_crud.go

@@ -1,6 +1,7 @@
 package entity_crud
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
 	"git.sxidc.com/go-framework/baize/framework/core/api/response"
 	"git.sxidc.com/go-framework/baize/framework/gateway"
 	"git.sxidc.com/go-tools/utils/http_client"
@@ -91,7 +92,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/create",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if createOptions.beforeBuilderCallback != nil {
 									return createOptions.beforeBuilderCallback(requestBuilder)
 								}
@@ -99,7 +100,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if createOptions.afterBuilderCallback != nil {
 									err := createOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -109,7 +110,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 
 								return nil
 							})).
-					ResponseErrorCallback(func(requestBuilder *gateway.RequestBuilder, err error) {
+					ResponseErrorCallback(func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, err error) {
 						response.SendIDResponse(requestBuilder.Context(), http.StatusOK, "", err)
 					}).
 					Request()
@@ -132,7 +133,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/delete",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if deleteOptions.beforeBuilderCallback != nil {
 									err := deleteOptions.beforeBuilderCallback(requestBuilder)
 									if err != nil {
@@ -143,7 +144,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if deleteOptions.afterBuilderCallback != nil {
 									err := deleteOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -172,7 +173,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 						&gateway.PutRequest{
 							Url: simple.ServiceVersionedUrl + domainPath + "/update",
 						},
-						gateway.WithBeforeRequestCallback(func(requestBuilder *gateway.RequestBuilder) error {
+						gateway.WithBeforeRequestCallback(func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 							if updateOptions.beforeBuilderCallback != nil {
 								err := updateOptions.beforeBuilderCallback(requestBuilder)
 								if err != nil {
@@ -183,7 +184,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							return nil
 						}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if updateOptions.afterBuilderCallback != nil {
 									err := updateOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -212,7 +213,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 						&gateway.GetRequest{
 							Url: simple.ServiceVersionedUrl + domainPath + "/query",
 						},
-						gateway.WithBeforeRequestCallback(func(requestBuilder *gateway.RequestBuilder) error {
+						gateway.WithBeforeRequestCallback(func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 							if queryOptions.beforeBuilderCallback != nil {
 								err := queryOptions.beforeBuilderCallback(requestBuilder)
 								if err != nil {
@@ -223,7 +224,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							return nil
 						}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if queryOptions.afterBuilderCallback != nil {
 									err := queryOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -253,7 +254,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/get",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if getByIDOptions.beforeBuilderCallback != nil {
 									err := getByIDOptions.beforeBuilderCallback(requestBuilder)
 									if err != nil {
@@ -264,7 +265,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if getByIDOptions.afterBuilderCallback != nil {
 									err := getByIDOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {

+ 2 - 1
convenient/gwtools/pass_through/pass_through.go

@@ -1,6 +1,7 @@
 package pass_through
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
 	"git.sxidc.com/go-framework/baize/framework/gateway"
 	"git.sxidc.com/go-tools/utils/http_client"
 	"git.sxidc.com/go-tools/utils/strutils"
@@ -526,7 +527,7 @@ func (params *Simple) passThrough(builder *gateway.Builder, httpMethod string, o
 			requestOptions := make([]gateway.RequestOption, 0)
 			if options.afterRequestCallback != nil {
 				requestOptions = append(requestOptions, gateway.WithRequestResponseCallback(
-					func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+					func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 						err := options.afterRequestCallback(requestBuilder)
 						if err != nil {
 							return err

+ 7 - 6
convenient/gwtools/value_object_crud/value_object_crud.go

@@ -1,6 +1,7 @@
 package value_object_crud
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
 	"git.sxidc.com/go-framework/baize/framework/gateway"
 	"git.sxidc.com/go-tools/utils/http_client"
 	"git.sxidc.com/go-tools/utils/template"
@@ -77,7 +78,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/create",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if createOptions.beforeBuilderCallback != nil {
 									err := createOptions.beforeBuilderCallback(requestBuilder)
 									if err != nil {
@@ -88,7 +89,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if createOptions.afterBuilderCallback != nil {
 									err := createOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -118,7 +119,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/delete",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if deleteOptions.beforeBuilderCallback != nil {
 									err := deleteOptions.beforeBuilderCallback(requestBuilder)
 									if err != nil {
@@ -129,7 +130,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if deleteOptions.afterBuilderCallback != nil {
 									err := deleteOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {
@@ -159,7 +160,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 							Url: simple.ServiceVersionedUrl + domainPath + "/query",
 						},
 						gateway.WithBeforeRequestCallback(
-							func(requestBuilder *gateway.RequestBuilder) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any) error {
 								if queryOptions.beforeBuilderCallback != nil {
 									err := queryOptions.beforeBuilderCallback(requestBuilder)
 									if err != nil {
@@ -170,7 +171,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 								return nil
 							}),
 						gateway.WithRequestResponseCallback(
-							func(requestBuilder *gateway.RequestBuilder, response *http_client.Response) error {
+							func(c *api.Context, historyRequests []gateway.Request, resultMap map[string]any, response *http_client.Response) error {
 								if queryOptions.afterBuilderCallback != nil {
 									err := queryOptions.afterBuilderCallback(requestBuilder)
 									if err != nil {

+ 12 - 30
framework/gateway/request_builder.go

@@ -7,16 +7,16 @@ import (
 )
 
 // ResponseSuccessCallback 网关API成功响应回调
-type ResponseSuccessCallback func(requestBuilder *RequestBuilder)
+type ResponseSuccessCallback func(c *api.Context, historyRequests []Request, resultMap map[string]any)
 
 // ResponseErrorCallback 网关API错误响应回调
-type ResponseErrorCallback func(requestBuilder *RequestBuilder, err error)
+type ResponseErrorCallback func(c *api.Context, historyRequests []Request, resultMap map[string]any, err error)
 
 // BeforeRequestCallback 请求发送前的回调
-type BeforeRequestCallback func(requestBuilder *RequestBuilder) error
+type BeforeRequestCallback func(c *api.Context, historyRequests []Request, resultMap map[string]any) error
 
 // RequestResponseCallback 请求响应回调
-type RequestResponseCallback func(requestBuilder *RequestBuilder, response *http_client.Response) error
+type RequestResponseCallback func(c *api.Context, historyRequests []Request, resultMap map[string]any, response *http_client.Response) error
 
 type RequestOption func(options *RequestOptions)
 
@@ -75,24 +75,6 @@ func (builder *RequestBuilder) HistoryRequests() []Request {
 	return builder.historyRequests
 }
 
-// GetResultMapValue 获取结果Map的值
-// 参数:
-// - key: 键
-// 返回值:
-// - 值
-func (builder *RequestBuilder) GetResultMapValue(key string) any {
-	return builder.resultMap[key]
-}
-
-// SetResultMapValue 设置结果Map的值
-// 参数:
-// - key: 键
-// - 值
-// 返回值: 无
-func (builder *RequestBuilder) SetResultMapValue(key string, value any) {
-	builder.resultMap[key] = value
-}
-
 // Post 定义POST请求
 // 参数:
 // - request: PostRequest
@@ -161,31 +143,31 @@ func (builder *RequestBuilder) Request() {
 
 	for _, requestItem := range builder.params.requestItems {
 		if requestItem.options.beforeRequestCallback != nil {
-			err := requestItem.options.beforeRequestCallback(builder)
+			err := requestItem.options.beforeRequestCallback(builder.c, builder.historyRequests, builder.resultMap)
 			if err != nil {
-				builder.params.responseErrorCallback(builder, errors.New(err.Error()))
+				builder.params.responseErrorCallback(builder.c, builder.historyRequests, builder.resultMap, errors.New(err.Error()))
 				return
 			}
 		}
 
 		requestWithResponse, err := requestItem.builderRequest.Request(builder.c, httpRequest)
 		if err != nil {
-			builder.params.responseErrorCallback(builder, errors.New(err.Error()))
+			builder.params.responseErrorCallback(builder.c, builder.historyRequests, builder.resultMap, errors.New(err.Error()))
 			return
 		}
 
 		builder.historyRequests = append(builder.historyRequests, requestWithResponse)
 
 		if requestItem.options.requestResponseCallback != nil {
-			err := requestItem.options.requestResponseCallback(builder, requestWithResponse.Response())
+			err := requestItem.options.requestResponseCallback(builder.c, builder.historyRequests, builder.resultMap, requestWithResponse.Response())
 			if err != nil {
-				builder.params.responseErrorCallback(builder, errors.New(err.Error()))
+				builder.params.responseErrorCallback(builder.c, builder.historyRequests, builder.resultMap, errors.New(err.Error()))
 				return
 			}
 		}
 	}
 
-	builder.params.responseSuccessCallback(builder)
+	builder.params.responseSuccessCallback(builder.c, builder.historyRequests, builder.resultMap)
 }
 
 // ResponseError 利用网关API错误响应回调发送网关API响应
@@ -193,14 +175,14 @@ func (builder *RequestBuilder) Request() {
 // - 错误
 // 返回值: 无
 func (builder *RequestBuilder) ResponseError(err error) {
-	builder.params.responseErrorCallback(builder, err)
+	builder.params.responseErrorCallback(builder.c, builder.historyRequests, builder.resultMap, err)
 }
 
 // ResponseSuccess 利用网关API成功响应回调发送网关API响应
 // 参数: 无
 // 返回值: 无
 func (builder *RequestBuilder) ResponseSuccess() {
-	builder.params.responseSuccessCallback(builder)
+	builder.params.responseSuccessCallback(builder.c, builder.historyRequests, builder.resultMap)
 }
 
 func (builder *RequestBuilder) request(builderRequest Request, opts ...RequestOption) *RequestBuilder {

+ 9 - 12
framework/gateway/request_builder_params.go

@@ -1,14 +1,13 @@
 package gateway
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
 	"git.sxidc.com/go-framework/baize/framework/core/infrastructure/logger"
 	"github.com/pkg/errors"
 	"net/http"
 )
 
 type requestBuilderParams struct {
-	httpMethod              string
-	relativePath            string
 	requestItems            []*builderRequestItem
 	responseSuccessCallback ResponseSuccessCallback
 	responseErrorCallback   ResponseErrorCallback
@@ -16,24 +15,22 @@ type requestBuilderParams struct {
 
 func newRequestBuilderParams() *requestBuilderParams {
 	return &requestBuilderParams{
-		httpMethod:   "",
-		relativePath: "",
 		requestItems: make([]*builderRequestItem, 0),
-		responseSuccessCallback: func(requestBuilder *RequestBuilder) {
-			requestBuilder.c.Status(http.StatusOK)
+		responseSuccessCallback: func(c *api.Context, historyRequests []Request, resultMap map[string]any) {
+			c.Status(http.StatusOK)
 
-			if requestBuilder.historyRequests != nil && len(requestBuilder.historyRequests) != 0 {
-				_, err := requestBuilder.c.Writer.Write(requestBuilder.historyRequests[len(requestBuilder.historyRequests)-1].Response().Body())
+			if historyRequests != nil && len(historyRequests) != 0 {
+				_, err := c.Writer.Write(historyRequests[len(historyRequests)-1].Response().Body())
 				if err != nil {
 					logger.GetInstance().Error(errors.New(err.Error()))
-					requestBuilder.c.AbortWithStatus(http.StatusInternalServerError)
+					c.AbortWithStatus(http.StatusInternalServerError)
 					return
 				}
 			}
 
-			requestBuilder.c.Writer.Flush()
+			c.Writer.Flush()
 		},
-		responseErrorCallback: func(requestBuilder *RequestBuilder, err error) {
+		responseErrorCallback: func(c *api.Context, historyRequests []Request, resultMap map[string]any, err error) {
 			if err == nil {
 				return
 			}
@@ -45,7 +42,7 @@ func newRequestBuilderParams() *requestBuilderParams {
 			resp["errCode"] = http.StatusOK
 			resp["msg"] = err.Error()
 
-			requestBuilder.c.JSON(http.StatusOK, resp)
+			c.JSON(http.StatusOK, resp)
 		},
 	}
 }