浏览代码

修改bug

yjp 1 年之前
父节点
当前提交
7df9e1908a

+ 10 - 2
convenient/domain_gateway/configuration.go

@@ -3,11 +3,19 @@ package domain_gateway
 import (
 	"git.sxidc.com/go-framework/baize/convenient/gwtools"
 	"git.sxidc.com/go-framework/baize/framework/gateway"
+	"net/http"
 )
 
 func ConfigurationGateway(serviceVersionedUrl string, builder *gateway.Builder) {
-	gwtools.CRUD(builder, &gwtools.CRUDParams{
+	gwtools.ValueObjectCRUD(builder, &gwtools.ValueObjectCRUDParams{
 		ServiceVersionedUrl: serviceVersionedUrl,
 		DomainCamelName:     "Configuration",
-	}, gwtools.WithCRUDDisableUpdate())
+	}, gwtools.WithValueObjectCRUDDisableQuery())
+
+	builder.
+		Url(http.MethodGet, "/configuration/values").
+		Get(&gateway.GetRequest{
+			Url: serviceVersionedUrl + "/configuration/values",
+		}, nil).
+		Build()
 }

+ 57 - 57
convenient/gwtools/crud.go → convenient/gwtools/entity_crud.go

@@ -8,24 +8,24 @@ import (
 	"net/http"
 )
 
-func CRUD(builder *gateway.Builder, params *CRUDParams, opts ...any) {
-	createOptions := new(CRUDCreateOptions)
-	deleteOptions := new(CRUDDeleteOptions)
-	updateOptions := new(CRUDUpdateOptions)
-	queryOptions := new(CRUDQueryOptions)
-	getByIDOptions := new(CRUDGetByIDOptions)
+func EntityCRUD(builder *gateway.Builder, params *EntityCRUDParams, opts ...any) {
+	createOptions := new(EntityCRUDCreateOptions)
+	deleteOptions := new(EntityCRUDDeleteOptions)
+	updateOptions := new(EntityCRUDUpdateOptions)
+	queryOptions := new(EntityCRUDQueryOptions)
+	getByIDOptions := new(EntityCRUDGetByIDOptions)
 
 	for _, opt := range opts {
 		switch o := opt.(type) {
-		case CRUDCreateOption:
+		case EntityCRUDCreateOption:
 			o(createOptions)
-		case CRUDDeleteOption:
+		case EntityCRUDDeleteOption:
 			o(deleteOptions)
-		case CRUDUpdateOption:
+		case EntityCRUDUpdateOption:
 			o(updateOptions)
-		case CRUDQueryOption:
+		case EntityCRUDQueryOption:
 			o(queryOptions)
-		case CRUDGetByIDOption:
+		case EntityCRUDGetByIDOption:
 			o(getByIDOptions)
 		default:
 			continue
@@ -41,7 +41,7 @@ func CRUD(builder *gateway.Builder, params *CRUDParams, opts ...any) {
 	params.crud(builder)
 }
 
-type CRUDParams struct {
+type EntityCRUDParams struct {
 	// 除去后缀的服务URL,如http://localhost:8080/example/api/v1
 	ServiceVersionedUrl string
 
@@ -49,14 +49,14 @@ type CRUDParams struct {
 	DomainCamelName string
 
 	// 可选配置项,通过WithXXX配置
-	createOptions  *CRUDCreateOptions
-	deleteOptions  *CRUDDeleteOptions
-	updateOptions  *CRUDUpdateOptions
-	queryOptions   *CRUDQueryOptions
-	getByIDOptions *CRUDGetByIDOptions
+	createOptions  *EntityCRUDCreateOptions
+	deleteOptions  *EntityCRUDDeleteOptions
+	updateOptions  *EntityCRUDUpdateOptions
+	queryOptions   *EntityCRUDQueryOptions
+	getByIDOptions *EntityCRUDGetByIDOptions
 }
 
-func (params *CRUDParams) crud(builder *gateway.Builder) {
+func (params *EntityCRUDParams) crud(builder *gateway.Builder) {
 	createOptions := params.createOptions
 	deleteOptions := params.deleteOptions
 	updateOptions := params.updateOptions
@@ -125,7 +125,7 @@ func (params *CRUDParams) crud(builder *gateway.Builder) {
 					Url:         params.ServiceVersionedUrl + domainPath + "/query",
 					QueryParams: newQueryParams,
 				}, nil
-			}, updateOptions.requestResponseCallback).
+			}, queryOptions.requestResponseCallback).
 			Build(queryOptions.middlewares...)
 	}
 
@@ -140,13 +140,13 @@ func (params *CRUDParams) crud(builder *gateway.Builder) {
 	}
 }
 
-type CRUDCreateOption func(options *CRUDCreateOptions)
-type CRUDDeleteOption func(options *CRUDDeleteOptions)
-type CRUDUpdateOption func(options *CRUDUpdateOptions)
-type CRUDQueryOption func(options *CRUDQueryOptions)
-type CRUDGetByIDOption func(options *CRUDGetByIDOptions)
+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 CRUDCreateOptions struct {
+type EntityCRUDCreateOptions struct {
 	// 关闭创建
 	disable bool
 
@@ -157,7 +157,7 @@ type CRUDCreateOptions struct {
 	middlewares []api.Handler
 }
 
-type CRUDDeleteOptions struct {
+type EntityCRUDDeleteOptions struct {
 	// 关闭删除
 	disable bool
 
@@ -168,7 +168,7 @@ type CRUDDeleteOptions struct {
 	middlewares []api.Handler
 }
 
-type CRUDUpdateOptions struct {
+type EntityCRUDUpdateOptions struct {
 	// 关闭更新
 	disable bool
 
@@ -179,7 +179,7 @@ type CRUDUpdateOptions struct {
 	middlewares []api.Handler
 }
 
-type CRUDQueryOptions struct {
+type EntityCRUDQueryOptions struct {
 	// 关闭查询
 	disable bool
 
@@ -190,7 +190,7 @@ type CRUDQueryOptions struct {
 	middlewares []api.Handler
 }
 
-type CRUDGetByIDOptions struct {
+type EntityCRUDGetByIDOptions struct {
 	// 关闭根据ID查询
 	disable bool
 
@@ -201,86 +201,86 @@ type CRUDGetByIDOptions struct {
 	middlewares []api.Handler
 }
 
-func WithCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) CRUDCreateOption {
-	return func(options *CRUDCreateOptions) {
+func WithEntityCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDCreateOption {
+	return func(options *EntityCRUDCreateOptions) {
 		options.requestResponseCallback = callbacks
 	}
 }
 
-func WithCRUDCreateMiddlewares(middlewares []api.Handler) CRUDCreateOption {
-	return func(options *CRUDCreateOptions) {
+func WithEntityCRUDCreateMiddlewares(middlewares []api.Handler) EntityCRUDCreateOption {
+	return func(options *EntityCRUDCreateOptions) {
 		options.middlewares = middlewares
 	}
 }
 
-func WithCRUDDisableDelete() CRUDDeleteOption {
-	return func(options *CRUDDeleteOptions) {
+func WithEntityCRUDDisableDelete() EntityCRUDDeleteOption {
+	return func(options *EntityCRUDDeleteOptions) {
 		options.disable = true
 	}
 }
 
-func WithCRUDDeleteCallbacks(callbacks gateway.RequestResponseCallback) CRUDDeleteOption {
-	return func(options *CRUDDeleteOptions) {
+func WithEntityCRUDDeleteCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDDeleteOption {
+	return func(options *EntityCRUDDeleteOptions) {
 		options.requestResponseCallback = callbacks
 	}
 }
 
-func WithCRUDDeleteMiddlewares(middlewares []api.Handler) CRUDDeleteOption {
-	return func(options *CRUDDeleteOptions) {
+func WithEntityCRUDDeleteMiddlewares(middlewares []api.Handler) EntityCRUDDeleteOption {
+	return func(options *EntityCRUDDeleteOptions) {
 		options.middlewares = middlewares
 	}
 }
 
-func WithCRUDDisableUpdate() CRUDUpdateOption {
-	return func(options *CRUDUpdateOptions) {
+func WithEntityCRUDDisableUpdate() EntityCRUDUpdateOption {
+	return func(options *EntityCRUDUpdateOptions) {
 		options.disable = true
 	}
 }
 
-func WithCRUDUpdateCallbacks(callbacks gateway.RequestResponseCallback) CRUDUpdateOption {
-	return func(options *CRUDUpdateOptions) {
+func WithEntityCRUDUpdateCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDUpdateOption {
+	return func(options *EntityCRUDUpdateOptions) {
 		options.requestResponseCallback = callbacks
 	}
 }
 
-func WithCRUDUpdateMiddlewares(middlewares []api.Handler) CRUDUpdateOption {
-	return func(options *CRUDUpdateOptions) {
+func WithEntityCRUDUpdateMiddlewares(middlewares []api.Handler) EntityCRUDUpdateOption {
+	return func(options *EntityCRUDUpdateOptions) {
 		options.middlewares = middlewares
 	}
 }
 
-func WithCRUDDisableQuery() CRUDQueryOption {
-	return func(options *CRUDQueryOptions) {
+func WithEntityCRUDDisableQuery() EntityCRUDQueryOption {
+	return func(options *EntityCRUDQueryOptions) {
 		options.disable = true
 	}
 }
 
-func WithCRUDQueryCallbacks(callbacks gateway.RequestResponseCallback) CRUDQueryOption {
-	return func(options *CRUDQueryOptions) {
+func WithEntityCRUDQueryCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDQueryOption {
+	return func(options *EntityCRUDQueryOptions) {
 		options.requestResponseCallback = callbacks
 	}
 }
 
-func WithCRUDQueryMiddlewares(middlewares []api.Handler) CRUDQueryOption {
-	return func(options *CRUDQueryOptions) {
+func WithEntityCRUDQueryMiddlewares(middlewares []api.Handler) EntityCRUDQueryOption {
+	return func(options *EntityCRUDQueryOptions) {
 		options.middlewares = middlewares
 	}
 }
 
-func WithCRUDDisableGetByID() CRUDGetByIDOption {
-	return func(options *CRUDGetByIDOptions) {
+func WithEntityCRUDDisableGetByID() EntityCRUDGetByIDOption {
+	return func(options *EntityCRUDGetByIDOptions) {
 		options.disable = true
 	}
 }
 
-func WithCRUDGetByIDCallbacks(callbacks gateway.RequestResponseCallback) CRUDGetByIDOption {
-	return func(options *CRUDGetByIDOptions) {
+func WithEntityCRUDGetByIDCallbacks(callbacks gateway.RequestResponseCallback) EntityCRUDGetByIDOption {
+	return func(options *EntityCRUDGetByIDOptions) {
 		options.requestResponseCallback = callbacks
 	}
 }
 
-func WithCRUDGetByIDMiddlewares(middlewares []api.Handler) CRUDGetByIDOption {
-	return func(options *CRUDGetByIDOptions) {
+func WithEntityCRUDGetByIDMiddlewares(middlewares []api.Handler) EntityCRUDGetByIDOption {
+	return func(options *EntityCRUDGetByIDOptions) {
 		options.middlewares = middlewares
 	}
 }

+ 186 - 0
convenient/gwtools/value_object_crud.go

@@ -0,0 +1,186 @@
+package gwtools
+
+import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
+	"git.sxidc.com/go-framework/baize/framework/gateway"
+	"git.sxidc.com/go-tools/utils/template"
+	"github.com/iancoleman/strcase"
+	"net/http"
+)
+
+func ValueObjectCRUD(builder *gateway.Builder, params *ValueObjectCRUDParams, opts ...any) {
+	createOptions := new(ValueObjectCRUDCreateOptions)
+	deleteOptions := new(ValueObjectCRUDDeleteOptions)
+	queryOptions := new(ValueObjectCRUDQueryOptions)
+
+	for _, opt := range opts {
+		switch o := opt.(type) {
+		case ValueObjectCRUDCreateOption:
+			o(createOptions)
+		case ValueObjectCRUDDeleteOption:
+			o(deleteOptions)
+		case ValueObjectCRUDQueryOption:
+			o(queryOptions)
+		default:
+			continue
+		}
+	}
+
+	params.createOptions = createOptions
+	params.deleteOptions = deleteOptions
+	params.queryOptions = queryOptions
+
+	params.crud(builder)
+}
+
+type ValueObjectCRUDParams struct {
+	// 除去后缀的服务URL,如http://localhost:8080/example/api/v1
+	ServiceVersionedUrl string
+
+	// 领域名称
+	DomainCamelName string
+
+	// 可选配置项,通过WithXXX配置
+	createOptions *ValueObjectCRUDCreateOptions
+	deleteOptions *ValueObjectCRUDDeleteOptions
+	queryOptions  *ValueObjectCRUDQueryOptions
+}
+
+func (params *ValueObjectCRUDParams) crud(builder *gateway.Builder) {
+	createOptions := params.createOptions
+	deleteOptions := params.deleteOptions
+	queryOptions := params.queryOptions
+
+	domainPath := "/" + strcase.ToLowerCamel(template.Id(params.DomainCamelName))
+
+	// 创建
+	if !createOptions.disable {
+		builder.
+			Url(http.MethodPost, domainPath+"/create").
+			Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) {
+				newBody, err := gateway.AddJsonBodyTenantIDAndUserID(c, "tenantId", "createUserId")
+				if err != nil {
+					return nil, err
+				}
+
+				return &gateway.PostRequest{
+					Url:  params.ServiceVersionedUrl + domainPath + "/create",
+					Body: newBody,
+				}, nil
+			}, createOptions.requestResponseCallback).
+			Build(createOptions.middlewares...)
+	}
+
+	// 删除
+	if !deleteOptions.disable {
+		builder.
+			Url(http.MethodPost, domainPath+"/delete").
+			Post(&gateway.PostRequest{
+				Url: params.ServiceVersionedUrl + domainPath + "/delete",
+			}, deleteOptions.requestResponseCallback).
+			Build(deleteOptions.middlewares...)
+	}
+
+	// 查询
+	if !queryOptions.disable {
+		builder.
+			Url(http.MethodGet, domainPath+"/query").
+			Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) {
+				newQueryParams, err := gateway.AddQueryParamsTenantIDAndUserID(c, "tenantId", "")
+				if err != nil {
+					return nil, err
+				}
+
+				return &gateway.GetRequest{
+					Url:         params.ServiceVersionedUrl + domainPath + "/query",
+					QueryParams: newQueryParams,
+				}, nil
+			}, queryOptions.requestResponseCallback).
+			Build(queryOptions.middlewares...)
+	}
+}
+
+type ValueObjectCRUDCreateOption func(options *ValueObjectCRUDCreateOptions)
+type ValueObjectCRUDDeleteOption func(options *ValueObjectCRUDDeleteOptions)
+type ValueObjectCRUDQueryOption func(options *ValueObjectCRUDQueryOptions)
+
+type ValueObjectCRUDCreateOptions struct {
+	// 关闭创建
+	disable bool
+
+	// 创建请求响应回调
+	requestResponseCallback gateway.RequestResponseCallback
+
+	// 创建中间件
+	middlewares []api.Handler
+}
+
+type ValueObjectCRUDDeleteOptions struct {
+	// 关闭删除
+	disable bool
+
+	// 删除请求响应回调
+	requestResponseCallback gateway.RequestResponseCallback
+
+	// 删除中间件
+	middlewares []api.Handler
+}
+
+type ValueObjectCRUDQueryOptions struct {
+	// 关闭查询
+	disable bool
+
+	// 查询请求响应回调
+	requestResponseCallback gateway.RequestResponseCallback
+
+	// 查询中间件
+	middlewares []api.Handler
+}
+
+func WithValueObjectCRUDCreateCallbacks(callbacks gateway.RequestResponseCallback) ValueObjectCRUDCreateOption {
+	return func(options *ValueObjectCRUDCreateOptions) {
+		options.requestResponseCallback = callbacks
+	}
+}
+
+func WithValueObjectCRUDCreateMiddlewares(middlewares []api.Handler) ValueObjectCRUDCreateOption {
+	return func(options *ValueObjectCRUDCreateOptions) {
+		options.middlewares = middlewares
+	}
+}
+
+func WithValueObjectCRUDDisableDelete() ValueObjectCRUDDeleteOption {
+	return func(options *ValueObjectCRUDDeleteOptions) {
+		options.disable = true
+	}
+}
+
+func WithValueObjectCRUDDeleteCallbacks(callbacks gateway.RequestResponseCallback) ValueObjectCRUDDeleteOption {
+	return func(options *ValueObjectCRUDDeleteOptions) {
+		options.requestResponseCallback = callbacks
+	}
+}
+
+func WithValueObjectCRUDDeleteMiddlewares(middlewares []api.Handler) ValueObjectCRUDDeleteOption {
+	return func(options *ValueObjectCRUDDeleteOptions) {
+		options.middlewares = middlewares
+	}
+}
+
+func WithValueObjectCRUDDisableQuery() ValueObjectCRUDQueryOption {
+	return func(options *ValueObjectCRUDQueryOptions) {
+		options.disable = true
+	}
+}
+
+func WithValueObjectCRUDQueryCallbacks(callbacks gateway.RequestResponseCallback) ValueObjectCRUDQueryOption {
+	return func(options *ValueObjectCRUDQueryOptions) {
+		options.requestResponseCallback = callbacks
+	}
+}
+
+func WithValueObjectCRUDQueryMiddlewares(middlewares []api.Handler) ValueObjectCRUDQueryOption {
+	return func(options *ValueObjectCRUDQueryOptions) {
+		options.middlewares = middlewares
+	}
+}

+ 1 - 1
framework/core/domain/entity/base.go

@@ -5,7 +5,7 @@ import (
 )
 
 type Base struct {
-	ID string `sqlmapping:"column:id;key;" sqlresult:"column:id;" check:"required,len32"`
+	ID string `sqlmapping:"column:id;key;" sqlresult:"column:id;" check:"required,len=32"`
 }
 
 func (e *Base) DBSchema() string {

+ 3 - 3
framework/core/domain/entity/field.go

@@ -26,12 +26,12 @@ const (
 )
 
 type TenantIDField struct {
-	TenantID string `sqlmapping:"column:tenant_id;" sqlresult:"column:tenant_id;" check:"required,len32"`
+	TenantID string `sqlmapping:"column:tenant_id;" sqlresult:"column:tenant_id;" check:"required,len=32"`
 }
 
 type UserIDFields struct {
-	CreateUserID     string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len32"`
-	LastUpdateUserID string `sqlmapping:"column:last_update_user_id;" sqlresult:"column:last_update_user_id;" check:"required,len32"`
+	CreateUserID     string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len=32"`
+	LastUpdateUserID string `sqlmapping:"column:last_update_user_id;" sqlresult:"column:last_update_user_id;" check:"required,len=32"`
 }
 
 type TimeFields struct {

+ 10 - 2
framework/core/tag/check/validate.go

@@ -90,7 +90,11 @@ func (result Result) checkFields(fieldNames ...string) error {
 		}
 	}
 
-	return errors.New(errMsg.String())
+	if errMsg.Len() > 0 {
+		return errors.New(errMsg.String())
+	}
+
+	return nil
 }
 
 func (result Result) checkStruct() error {
@@ -118,7 +122,11 @@ func (result Result) checkStruct() error {
 		errMsg.WriteString(translatedErr + "\n")
 	}
 
-	return errors.New(errMsg.String())
+	if errMsg.Len() > 0 {
+		return errors.New(errMsg.String())
+	}
+
+	return nil
 }
 
 func (result Result) translation() Result {