Browse Source

添加选项

yjp 1 year ago
parent
commit
5b749e89ae
2 changed files with 58 additions and 8 deletions
  1. 32 5
      convenient/gwtools/entity_crud.go
  2. 26 3
      convenient/gwtools/value_object_crud.go

+ 32 - 5
convenient/gwtools/entity_crud.go

@@ -9,6 +9,7 @@ import (
 )
 
 func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any) {
+	globalOptions := new(EntityCRUDGlobalOptions)
 	createOptions := new(EntityCRUDCreateOptions)
 	deleteOptions := new(EntityCRUDDeleteOptions)
 	updateOptions := new(EntityCRUDUpdateOptions)
@@ -17,6 +18,8 @@ func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any)
 
 	for _, opt := range opts {
 		switch o := opt.(type) {
+		case EntityCRUDGlobalOption:
+			o(globalOptions)
 		case EntityCRUDCreateOption:
 			o(createOptions)
 		case EntityCRUDDeleteOption:
@@ -32,6 +35,7 @@ func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any)
 		}
 	}
 
+	params.globalOptions = globalOptions
 	params.createOptions = createOptions
 	params.deleteOptions = deleteOptions
 	params.updateOptions = updateOptions
@@ -49,6 +53,7 @@ type EntityCRUDParams struct {
 	DomainCamelName string
 
 	// 可选配置项,通过WithXXX配置
+	globalOptions  *EntityCRUDGlobalOptions
 	createOptions  *EntityCRUDCreateOptions
 	deleteOptions  *EntityCRUDDeleteOptions
 	updateOptions  *EntityCRUDUpdateOptions
@@ -57,6 +62,7 @@ type EntityCRUDParams struct {
 }
 
 func (params *EntityCRUDParams) crud(builder *gateway.Builder) {
+	globalOptions := params.globalOptions
 	createOptions := params.createOptions
 	deleteOptions := params.deleteOptions
 	updateOptions := params.updateOptions
@@ -67,61 +73,76 @@ func (params *EntityCRUDParams) crud(builder *gateway.Builder) {
 
 	// 创建
 	if !createOptions.disable {
+		createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
+
 		builder.
 			Url(http.MethodPost, domainPath+"/create").
 			Post(gateway.NewPostRequest(params.ServiceVersionedUrl+domainPath+"/create",
 				gateway.PostRequestWithBodyForm(
 					gateway.FormJsonBodyWithTenantIDAndUserIDFunc("tenantId", "createUserId"))),
 				createOptions.requestResponseCallback).
-			Build(createOptions.middlewares...)
+			Build(createMiddlewares...)
 	}
 
 	// 删除
 	if !deleteOptions.disable {
+		deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
+
 		builder.
 			Url(http.MethodDelete, domainPath+"/delete").
 			Delete(gateway.NewDeleteRequest(params.ServiceVersionedUrl+domainPath+"/delete"),
 				deleteOptions.requestResponseCallback).
-			Build(deleteOptions.middlewares...)
+			Build(deleteMiddlewares...)
 	}
 
 	// 修改
 	if !updateOptions.disable {
+		updateMiddlewares := append(globalOptions.middlewares, updateOptions.middlewares...)
+
 		builder.
 			Url(http.MethodPut, domainPath+"/update").
 			Put(gateway.NewPutRequest(params.ServiceVersionedUrl+domainPath+"/update",
 				gateway.PutRequestWithBodyForm(
 					gateway.FormJsonBodyWithTenantIDAndUserIDFunc("", "updateUserId"))),
 				updateOptions.requestResponseCallback).
-			Build(updateOptions.middlewares...)
+			Build(updateMiddlewares...)
 	}
 
 	// 查询
 	if !queryOptions.disable {
+		queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
+
 		builder.
 			Url(http.MethodGet, domainPath+"/query").
 			Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/query",
 				gateway.GetRequestWithQueryParamsForm(gateway.FormQueryParamsWithTenantIDAndUserIDFunc("tenantId", ""))),
 				queryOptions.requestResponseCallback).
-			Build(queryOptions.middlewares...)
+			Build(queryMiddlewares...)
 	}
 
 	// 通过ID获取
 	if !getByIDOptions.disable {
+		getByIDMiddlewares := append(globalOptions.middlewares, getByIDOptions.middlewares...)
+
 		builder.
 			Url(http.MethodGet, domainPath+"/get").
 			Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/get"),
 				getByIDOptions.requestResponseCallback).
-			Build(getByIDOptions.middlewares...)
+			Build(getByIDMiddlewares...)
 	}
 }
 
+type EntityCRUDGlobalOption func(options *EntityCRUDGlobalOptions)
 type EntityCRUDCreateOption func(options *EntityCRUDCreateOptions)
 type EntityCRUDDeleteOption func(options *EntityCRUDDeleteOptions)
 type EntityCRUDUpdateOption func(options *EntityCRUDUpdateOptions)
 type EntityCRUDQueryOption func(options *EntityCRUDQueryOptions)
 type EntityCRUDGetByIDOption func(options *EntityCRUDGetByIDOptions)
 
+type EntityCRUDGlobalOptions struct {
+	middlewares []api.Handler
+}
+
 type EntityCRUDCreateOptions struct {
 	// 关闭创建
 	disable bool
@@ -177,6 +198,12 @@ type EntityCRUDGetByIDOptions struct {
 	middlewares []api.Handler
 }
 
+func WithEntityCRUDGlobalMiddlewares(middlewares ...api.Handler) EntityCRUDGlobalOption {
+	return func(options *EntityCRUDGlobalOptions) {
+		options.middlewares = middlewares
+	}
+}
+
 func WithEntityCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDCreateOption {
 	return func(options *EntityCRUDCreateOptions) {
 		options.requestResponseCallback = callbacks

+ 26 - 3
convenient/gwtools/value_object_crud.go

@@ -9,12 +9,15 @@ import (
 )
 
 func ValueObjectCRUD(builder *gateway.Builder, params *ValueObjectCRUDParams, opts ...any) {
+	globalOptions := new(ValueObjectCRUDGlobalOptions)
 	createOptions := new(ValueObjectCRUDCreateOptions)
 	deleteOptions := new(ValueObjectCRUDDeleteOptions)
 	queryOptions := new(ValueObjectCRUDQueryOptions)
 
 	for _, opt := range opts {
 		switch o := opt.(type) {
+		case ValueObjectCRUDGlobalOption:
+			o(globalOptions)
 		case ValueObjectCRUDCreateOption:
 			o(createOptions)
 		case ValueObjectCRUDDeleteOption:
@@ -26,6 +29,7 @@ func ValueObjectCRUD(builder *gateway.Builder, params *ValueObjectCRUDParams, op
 		}
 	}
 
+	params.globalOptions = globalOptions
 	params.createOptions = createOptions
 	params.deleteOptions = deleteOptions
 	params.queryOptions = queryOptions
@@ -41,12 +45,14 @@ type ValueObjectCRUDParams struct {
 	DomainCamelName string
 
 	// 可选配置项,通过WithXXX配置
+	globalOptions *ValueObjectCRUDGlobalOptions
 	createOptions *ValueObjectCRUDCreateOptions
 	deleteOptions *ValueObjectCRUDDeleteOptions
 	queryOptions  *ValueObjectCRUDQueryOptions
 }
 
 func (params *ValueObjectCRUDParams) crud(builder *gateway.Builder) {
+	globalOptions := params.globalOptions
 	createOptions := params.createOptions
 	deleteOptions := params.deleteOptions
 	queryOptions := params.queryOptions
@@ -55,40 +61,51 @@ func (params *ValueObjectCRUDParams) crud(builder *gateway.Builder) {
 
 	// 创建
 	if !createOptions.disable {
+		createMiddlewares := append(globalOptions.middlewares, createOptions.middlewares...)
+
 		builder.
 			Url(http.MethodPost, domainPath+"/create").
 			Post(gateway.NewPostRequest(params.ServiceVersionedUrl+domainPath+"/create",
 				gateway.PostRequestWithBodyForm(
 					gateway.FormJsonBodyWithTenantIDAndUserIDFunc("tenantId", "createUserId"))),
 				createOptions.requestResponseCallback).
-			Build(createOptions.middlewares...)
+			Build(createMiddlewares...)
 	}
 
 	// 删除
 	if !deleteOptions.disable {
+		deleteMiddlewares := append(globalOptions.middlewares, deleteOptions.middlewares...)
+
 		builder.
 			Url(http.MethodPost, domainPath+"/delete").
 			Post(gateway.NewPostRequest(params.ServiceVersionedUrl+domainPath+"/delete"),
 				deleteOptions.requestResponseCallback).
-			Build(deleteOptions.middlewares...)
+			Build(deleteMiddlewares...)
 	}
 
 	// 查询
 	if !queryOptions.disable {
+		queryMiddlewares := append(globalOptions.middlewares, queryOptions.middlewares...)
+
 		builder.
 			Url(http.MethodGet, domainPath+"/query").
 			Get(gateway.NewGetRequest(params.ServiceVersionedUrl+domainPath+"/query",
 				gateway.GetRequestWithQueryParamsForm(
 					gateway.FormQueryParamsWithTenantIDAndUserIDFunc("tenantId", ""))),
 				queryOptions.requestResponseCallback).
-			Build(queryOptions.middlewares...)
+			Build(queryMiddlewares...)
 	}
 }
 
+type ValueObjectCRUDGlobalOption func(options *ValueObjectCRUDGlobalOptions)
 type ValueObjectCRUDCreateOption func(options *ValueObjectCRUDCreateOptions)
 type ValueObjectCRUDDeleteOption func(options *ValueObjectCRUDDeleteOptions)
 type ValueObjectCRUDQueryOption func(options *ValueObjectCRUDQueryOptions)
 
+type ValueObjectCRUDGlobalOptions struct {
+	middlewares []api.Handler
+}
+
 type ValueObjectCRUDCreateOptions struct {
 	// 关闭创建
 	disable bool
@@ -122,6 +139,12 @@ type ValueObjectCRUDQueryOptions struct {
 	middlewares []api.Handler
 }
 
+func WithValueObjectCRUDGlobalMiddlewares(middlewares ...api.Handler) ValueObjectCRUDGlobalOption {
+	return func(options *ValueObjectCRUDGlobalOptions) {
+		options.middlewares = middlewares
+	}
+}
+
 func WithValueObjectCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) ValueObjectCRUDCreateOption {
 	return func(options *ValueObjectCRUDCreateOptions) {
 		options.requestResponseCallback = callbacks