package domain_gateway import ( "git.sxidc.com/go-framework/baize/framework/core/api" "git.sxidc.com/go-framework/baize/framework/gateway" "git.sxidc.com/go-tools/utils/strutils" "github.com/pkg/errors" "net/http" ) func SqlExecutorGateway(baseUrlNoUrlPrefix string, builder *gateway.Builder) { builder. Url(http.MethodPost, "/sql/execute"). Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) { err := gateway.AddJsonBodyTenantIDAndUserID(c, "", "executorId") if err != nil { return nil, err } jsonBody, err := c.GetJsonBody() if err != nil { return nil, err } userInfo := c.GetUserInfo() if userInfo == nil { jsonBody.Set("executorName", "guest") } else { jsonBody.Set("executorName", userInfo.GetName) } urlPrefixValue := jsonBody.Get("urlPrefix") if urlPrefixValue == nil { return nil, errors.New("没有传递服务名") } urlPrefix, ok := urlPrefixValue.(string) if !ok { return nil, errors.New("服务名不是string类型") } jsonBody.Delete("urlPrefix") return &gateway.PostRequest{ Url: baseUrlNoUrlPrefix + "/" + urlPrefix + "/api/sql/execute", Body: jsonBody.Map(), }, nil }, nil). Build() builder. Url(http.MethodGet, "/sql/execute/log"). Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) { err := gateway.AddQueryParamsTenantIDAndUserID(c, "", "executorId") if err != nil { return nil, err } queryParams := c.GetQueryParams() urlPrefix := queryParams.Get("urlPrefix") if strutils.IsStringEmpty(urlPrefix) { return nil, errors.New("没有传递服务名") } queryParams.Delete("urlPrefix") return &gateway.GetRequest{ Url: baseUrlNoUrlPrefix + "/" + urlPrefix + "/api/sql/execute/log", QueryParams: queryParams.Map(), }, nil }, nil). Build() }