Browse Source

gwtools支持url pattern

yjp 1 week ago
parent
commit
e9f0e810d6

+ 54 - 7
convenient/gwtools/entity_crud/entity_crud.go

@@ -1,12 +1,13 @@
 package entity_crud
 
 import (
+	"net/http"
+
 	"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"
 	"git.sxidc.com/go-tools/utils/template"
 	"github.com/iancoleman/strcase"
-	"net/http"
 )
 
 func BindSimple(builder *gateway.Builder, params *Simple, opts ...any) {
@@ -79,7 +80,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !createOptions.disable {
 		createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
 
-		builder.PostRouteWithTenantIDAndCreateUserInfo("/"+simple.ServiceShortName+domainPath+"/create",
+		builder.PostRouteWithTenantIDAndCreateUserInfo("/"+simple.ServiceShortName+domainPath+"/create"+createOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if createOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -136,7 +137,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !deleteOptions.disable {
 		deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
 
-		builder.DeleteRouteWithDeleteUserInfo("/"+simple.ServiceShortName+domainPath+"/delete",
+		builder.DeleteRouteWithDeleteUserInfo("/"+simple.ServiceShortName+domainPath+"/delete"+deleteOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if deleteOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -193,7 +194,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !updateOptions.disable {
 		updateMiddlewares := append(globalOptions.middlewares, updateOptions.middlewares...)
 
-		builder.PutRouteWithUpdateUserInfo("/"+simple.ServiceShortName+domainPath+"/update",
+		builder.PutRouteWithUpdateUserInfo("/"+simple.ServiceShortName+domainPath+"/update"+updateOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if updateOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -249,7 +250,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !queryOptions.disable {
 		queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
 
-		builder.GetRouteWithTenantID("/"+simple.ServiceShortName+domainPath+"/query",
+		builder.GetRouteWithTenantID("/"+simple.ServiceShortName+domainPath+"/query"+queryOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if queryOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -305,7 +306,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !getByIDOptions.disable {
 		getByIDMiddlewares := append(globalOptions.middlewares, getByIDOptions.middlewares...)
 
-		builder.GetRoute("/"+simple.ServiceShortName+domainPath+"/get",
+		builder.GetRoute("/"+simple.ServiceShortName+domainPath+"/get"+getByIDOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if getByIDOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -370,7 +371,8 @@ type QueryOption func(options *QueryOptions)
 type GetByIDOption func(options *GetByIDOptions)
 
 type GlobalOptions struct {
-	middlewares []gateway.Handler
+	middlewares       []gateway.Handler
+	disableUrlPattern bool
 }
 
 type CreateOptions struct {
@@ -391,6 +393,9 @@ type CreateOptions struct {
 
 	// 创建中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type DeleteOptions struct {
@@ -411,6 +416,9 @@ type DeleteOptions struct {
 
 	// 删除中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type UpdateOptions struct {
@@ -431,6 +439,9 @@ type UpdateOptions struct {
 
 	// 更新中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type QueryOptions struct {
@@ -451,6 +462,9 @@ type QueryOptions struct {
 
 	// 查询中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type GetByIDOptions struct {
@@ -471,6 +485,9 @@ type GetByIDOptions struct {
 
 	// 根据ID查询中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 func WithGlobalMiddlewares(middlewares ...gateway.Handler) GlobalOption {
@@ -515,6 +532,12 @@ func WithCreateMiddlewares(middlewares ...gateway.Handler) CreateOption {
 	}
 }
 
+func WithCreateUrlPattern(urlPattern string) CreateOption {
+	return func(options *CreateOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableDelete() DeleteOption {
 	return func(options *DeleteOptions) {
 		options.disable = true
@@ -551,6 +574,12 @@ func WithDeleteMiddlewares(middlewares ...gateway.Handler) DeleteOption {
 	}
 }
 
+func WithDeleteUrlPattern(urlPattern string) DeleteOption {
+	return func(options *DeleteOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableUpdate() UpdateOption {
 	return func(options *UpdateOptions) {
 		options.disable = true
@@ -587,6 +616,12 @@ func WithUpdateMiddlewares(middlewares ...gateway.Handler) UpdateOption {
 	}
 }
 
+func WithUpdateUrlPattern(urlPattern string) UpdateOption {
+	return func(options *UpdateOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableQuery() QueryOption {
 	return func(options *QueryOptions) {
 		options.disable = true
@@ -623,6 +658,12 @@ func WithQueryMiddlewares(middlewares ...gateway.Handler) QueryOption {
 	}
 }
 
+func WithQueryUrlPattern(urlPattern string) QueryOption {
+	return func(options *QueryOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableGetByID() GetByIDOption {
 	return func(options *GetByIDOptions) {
 		options.disable = true
@@ -658,3 +699,9 @@ func WithGetByIDMiddlewares(middlewares ...gateway.Handler) GetByIDOption {
 		options.middlewares = middlewares
 	}
 }
+
+func WithGetByIDUrlPattern(urlPattern string) GetByIDOption {
+	return func(options *GetByIDOptions) {
+		options.urlPattern = urlPattern
+	}
+}

+ 34 - 4
convenient/gwtools/relation/many2many/many2many.go

@@ -44,7 +44,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !options.disableLeft {
 		if !options.disableLeftUpdate {
 			// 左到右更新
-			builder.PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update",
+			builder.PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update"+options.leftUpdateUrlPattern,
 				func(requestBuilder *gateway.RequestBuilder) {
 					requestBuilder.
 						Post(&gateway.PostRequest{
@@ -57,7 +57,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftQuery {
 			// 左到右查询
 			builder.
-				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query"+options.leftQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -72,7 +72,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightUpdate {
 			// 右到左更新
 			builder.
-				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update",
+				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update"+options.rightUpdateUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Post(&gateway.PostRequest{
@@ -85,7 +85,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightQuery {
 			// 右到左查询
 			builder.
-				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query"+options.rightQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -117,6 +117,12 @@ type Options struct {
 
 	// 关闭右侧查询
 	disableRightQuery bool
+
+	// url模式
+	leftUpdateUrlPattern  string
+	leftQueryUrlPattern   string
+	rightUpdateUrlPattern string
+	rightQueryUrlPattern  string
 }
 
 func WithDisableLeft() Option {
@@ -154,3 +160,27 @@ func WithDisableRightQuery() Option {
 		options.disableRightQuery = true
 	}
 }
+
+func WithLeftUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithLeftQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftQueryUrlPattern = urlPattern
+	}
+}
+
+func WithRightUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithRightQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightQueryUrlPattern = urlPattern
+	}
+}

+ 42 - 5
convenient/gwtools/relation/one2many/one2many.go

@@ -45,7 +45,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftUpdate {
 			// 左到右更新
 			builder.
-				PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update",
+				PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update"+options.leftUpdateUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Post(&gateway.PostRequest{
@@ -58,7 +58,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftQuery {
 			// 左到右查询
 			builder.
-				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query"+options.leftQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -73,7 +73,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightUpdate {
 			// 右到左更新
 			builder.
-				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update",
+				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update"+options.rightUpdateUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Post(&gateway.PostRequest{
@@ -85,7 +85,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 
 		if !options.disableRightQuery {
 			builder.
-				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query"+options.rightQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -98,7 +98,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightWithLeftQuery {
 			// 右到左查询,携带左方信息
 			builder.
-				GetRouteWithTenantID("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/queryWith",
+				GetRouteWithTenantID("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/queryWith"+options.rightWithLeftQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -133,6 +133,13 @@ type Options struct {
 
 	// 关闭右实体带左实体信息查询
 	disableRightWithLeftQuery bool
+
+	// url模式
+	leftUpdateUrlPattern         string
+	leftQueryUrlPattern          string
+	rightUpdateUrlPattern        string
+	rightQueryUrlPattern         string
+	rightWithLeftQueryUrlPattern string
 }
 
 func WithDisableLeft() Option {
@@ -176,3 +183,33 @@ func WithDisableRightWithLeftQuery() Option {
 		options.disableRightWithLeftQuery = true
 	}
 }
+
+func WithLeftUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithLeftQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftQueryUrlPattern = urlPattern
+	}
+}
+
+func WithRightUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithRightQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightQueryUrlPattern = urlPattern
+	}
+}
+
+func WithRightWithLeftQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightWithLeftQueryUrlPattern = urlPattern
+	}
+}

+ 50 - 6
convenient/gwtools/relation/one2one/one2one.go

@@ -45,7 +45,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftUpdate {
 			// 左到右更新
 			builder.
-				PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update",
+				PostRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/update"+options.leftUpdateUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Post(&gateway.PostRequest{
@@ -58,7 +58,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftQuery {
 			// 左到右查询
 			builder.
-				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/query"+options.leftQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -71,7 +71,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableLeftWithRightQuery {
 			// 左到右查询,携带右方信息
 			builder.
-				GetRouteWithTenantID("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/queryWith",
+				GetRouteWithTenantID("/"+simple.ServiceShortName+leftDomainPath+rightDomainPath+"/queryWith"+options.leftWithRightQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -86,7 +86,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightUpdate {
 			// 右到左更新
 			builder.
-				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update",
+				PostRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/update"+options.rightUpdateUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Post(&gateway.PostRequest{
@@ -99,7 +99,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightQuery {
 			// 右到左查询
 			builder.
-				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query",
+				GetRoute("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/query"+options.rightQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -112,7 +112,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 		if !options.disableRightWithLeftQuery {
 			// 右到左查询,携带左方信息
 			builder.
-				GetRouteWithTenantID("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/queryWith",
+				GetRouteWithTenantID("/"+simple.ServiceShortName+rightDomainPath+leftDomainPath+"/queryWith"+options.rightWithLeftQueryUrlPattern,
 					func(requestBuilder *gateway.RequestBuilder) {
 						requestBuilder.
 							Get(&gateway.GetRequest{
@@ -150,6 +150,14 @@ type Options struct {
 
 	// 关闭右实体带左实体信息查询
 	disableRightWithLeftQuery bool
+
+	// url模式
+	leftUpdateUrlPattern         string
+	leftQueryUrlPattern          string
+	rightUpdateUrlPattern        string
+	rightQueryUrlPattern         string
+	leftWithRightQueryUrlPattern string
+	rightWithLeftQueryUrlPattern string
 }
 
 func WithDisableLeft() Option {
@@ -199,3 +207,39 @@ func WithDisableRightWithLeftQuery() Option {
 		options.disableRightWithLeftQuery = true
 	}
 }
+
+func WithLeftUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithLeftQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftQueryUrlPattern = urlPattern
+	}
+}
+
+func WithRightUpdateUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightUpdateUrlPattern = urlPattern
+	}
+}
+
+func WithRightQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightQueryUrlPattern = urlPattern
+	}
+}
+
+func WithLeftWithRightQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.leftWithRightQueryUrlPattern = urlPattern
+	}
+}
+
+func WithRightWithLeftQueryUrlPattern(urlPattern string) Option {
+	return func(options *Options) {
+		options.rightWithLeftQueryUrlPattern = urlPattern
+	}
+}

+ 30 - 3
convenient/gwtools/value_object_crud/value_object_crud.go

@@ -65,7 +65,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !createOptions.disable {
 		createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
 
-		builder.PostRouteWithTenantIDAndCreateUserID("/"+simple.ServiceShortName+domainPath+"/create",
+		builder.PostRouteWithTenantIDAndCreateUserID("/"+simple.ServiceShortName+domainPath+"/create"+createOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if createOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -122,7 +122,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !deleteOptions.disable {
 		deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
 
-		builder.PostRoute("/"+simple.ServiceShortName+domainPath+"/delete",
+		builder.PostRoute("/"+simple.ServiceShortName+domainPath+"/delete"+deleteOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if deleteOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -179,7 +179,7 @@ func (simple *Simple) bind(builder *gateway.Builder) {
 	if !queryOptions.disable {
 		queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
 
-		builder.GetRouteWithTenantID("/"+simple.ServiceShortName+domainPath+"/query",
+		builder.GetRouteWithTenantID("/"+simple.ServiceShortName+domainPath+"/query"+queryOptions.urlPattern,
 			func(requestBuilder *gateway.RequestBuilder) {
 				if queryOptions.responseSuccessCallback != nil {
 					requestBuilder.ResponseSuccessCallback(func(c *gateway.RequestBuilderContext) {
@@ -263,6 +263,9 @@ type CreateOptions struct {
 
 	// 创建中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type DeleteOptions struct {
@@ -283,6 +286,9 @@ type DeleteOptions struct {
 
 	// 删除中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 type QueryOptions struct {
@@ -303,6 +309,9 @@ type QueryOptions struct {
 
 	// 查询中间件
 	middlewares []gateway.Handler
+
+	// url模式
+	urlPattern string
 }
 
 func WithGlobalMiddlewares(middlewares ...gateway.Handler) GlobalOption {
@@ -341,6 +350,12 @@ func WithCreateMiddlewares(middlewares ...gateway.Handler) CreateOption {
 	}
 }
 
+func WithCreateUrlPattern(urlPattern string) CreateOption {
+	return func(options *CreateOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableDelete() DeleteOption {
 	return func(options *DeleteOptions) {
 		options.disable = true
@@ -377,6 +392,12 @@ func WithDeleteMiddlewares(middlewares ...gateway.Handler) DeleteOption {
 	}
 }
 
+func WithDeleteUrlPattern(urlPattern string) DeleteOption {
+	return func(options *DeleteOptions) {
+		options.urlPattern = urlPattern
+	}
+}
+
 func WithDisableQuery() QueryOption {
 	return func(options *QueryOptions) {
 		options.disable = true
@@ -412,3 +433,9 @@ func WithQueryMiddlewares(middlewares ...gateway.Handler) QueryOption {
 		options.middlewares = middlewares
 	}
 }
+
+func WithQueryUrlPattern(urlPattern string) QueryOption {
+	return func(options *QueryOptions) {
+		options.urlPattern = urlPattern
+	}
+}