Przeglądaj źródła

添加中间件

yjp 1 rok temu
rodzic
commit
9141459230

+ 19 - 9
convenient/entity_crud/simple.go

@@ -40,7 +40,7 @@ type Simple[I any] struct {
 	getByIDOptions *GetByIDOptions[I]
 }
 
-func (simple *Simple[I]) bind(binder *binding.Binder) {
+func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	createOptions := simple.createOptions
 	deleteOptions := simple.deleteOptions
 	updateOptions := simple.updateOptions
@@ -52,6 +52,8 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 
 	// 创建
 	if !createOptions.disable {
+		createMiddlewares := append(middlewares, createOptions.middlewares...)
+
 		if !createOptions.needTx {
 			binding.PostBind[string](binder, &binding.SimpleBindItem[string]{
 				Path:             domainPath + "/create",
@@ -59,7 +61,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.CreateJsonBody,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      Create(tableName, createOptions.callbacks),
-			}, createOptions.middlewares...)
+			}, createMiddlewares...)
 		} else {
 			binding.PostBind(binder, &binding.SimpleBindItem[string]{
 				Path:             domainPath + "/create",
@@ -67,12 +69,14 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.CreateJsonBody,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      CreateTx(tableName, createOptions.callbacks),
-			}, createOptions.middlewares...)
+			}, createMiddlewares...)
 		}
 	}
 
 	// 删除
 	if !deleteOptions.disable {
+		deleteMiddlewares := append(middlewares, deleteOptions.middlewares...)
+
 		if !deleteOptions.needTx {
 			binding.DeleteBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/delete",
@@ -80,7 +84,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.DeleteQueryParams,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      Delete(tableName, deleteOptions.callbacks),
-			}, deleteOptions.middlewares...)
+			}, deleteMiddlewares...)
 		} else {
 			binding.DeleteBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/delete",
@@ -88,12 +92,14 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.DeleteQueryParams,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      DeleteTx(tableName, deleteOptions.callbacks),
-			}, deleteOptions.middlewares...)
+			}, deleteMiddlewares...)
 		}
 	}
 
 	// 修改
 	if !updateOptions.disable {
+		updateMiddlewares := append(middlewares, updateOptions.middlewares...)
+
 		if !updateOptions.needTx {
 			binding.PutBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/update",
@@ -101,7 +107,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.UpdateJsonBody,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      Update(tableName, updateOptions.callbacks),
-			}, updateOptions.middlewares...)
+			}, updateMiddlewares...)
 		} else {
 			binding.PutBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/update",
@@ -109,30 +115,34 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.UpdateJsonBody,
 				Objects:          []domain.Object{simple.Entity},
 				ServiceFunc:      UpdateTx(tableName, updateOptions.callbacks),
-			}, updateOptions.middlewares...)
+			}, updateMiddlewares...)
 		}
 	}
 
 	// 查询
 	if !queryOptions.disable {
+		queryMiddlewares := append(middlewares, queryOptions.middlewares...)
+
 		binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[I]]{
 			Path:             domainPath + "/query",
 			SendResponseFunc: response.SendInfosResponse[I],
 			RequestParams:    simple.QueryQueryParams,
 			Objects:          []domain.Object{simple.Entity},
 			ServiceFunc:      Query[I](tableName, queryOptions.callbacks, queryOptions.conditionFieldCallback),
-		}, queryOptions.middlewares...)
+		}, queryMiddlewares...)
 	}
 
 	// 通过ID获取
 	if !getByIDOptions.disable {
+		getByIDMiddlewares := append(middlewares, getByIDOptions.middlewares...)
+
 		binding.GetBind(binder, &binding.SimpleBindItem[I]{
 			Path:             domainPath + "/get",
 			SendResponseFunc: response.SendInfoResponse[I],
 			RequestParams:    simple.GetByIDQueryParams,
 			Objects:          []domain.Object{simple.Entity},
 			ServiceFunc:      GetByID[I](tableName, getByIDOptions.callbacks),
-		}, getByIDOptions.middlewares...)
+		}, getByIDMiddlewares...)
 	}
 }
 

+ 13 - 5
convenient/relation/many2many/simple.go

@@ -38,7 +38,7 @@ type Simple[LI any, RI any] struct {
 	options *Options
 }
 
-func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
+func (simple *Simple[LI, RI]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	options := simple.options
 
 	leftDomainPath := domain.RelativeDomainPath(simple.Left)
@@ -55,6 +55,8 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 
 	if !options.disableLeft {
 		if !options.disableLeftUpdate {
+			leftUpdateMiddlewares := append(middlewares, options.leftUpdateMiddlewares...)
+
 			// 左到右更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             leftDomainPath + rightDomainPath + "/update",
@@ -64,10 +66,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					leftTableName, simple.Left.DomainCNName(), leftRelationFieldName, leftRelationColumnName,
 					rightTableName, rightRelationColumnName),
-			}, options.leftUpdateMiddlewares...)
+			}, leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
+			leftQueryMiddlewares := append(middlewares, options.leftQueryMiddlewares...)
+
 			// 左到右查询
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[RI]]{
 				Path:             leftDomainPath + rightDomainPath + "/query",
@@ -77,12 +81,14 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Query[RI](middleTableName,
 					leftTableName, leftRelationColumnName,
 					rightTableName, rightRelationColumnName),
-			}, options.leftQueryMiddlewares...)
+			}, leftQueryMiddlewares...)
 		}
 	}
 
 	if !options.disableRight {
 		if !options.disableRightUpdate {
+			rightUpdateMiddlewares := append(middlewares, options.rightUpdateMiddlewares...)
+
 			// 右到左更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             rightDomainPath + leftDomainPath + "/update",
@@ -92,10 +98,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationFieldName, rightRelationColumnName,
 					leftTableName, leftRelationColumnName),
-			}, options.rightUpdateMiddlewares...)
+			}, rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
+			rightQueryMiddlewares := append(middlewares, options.rightQueryMiddlewares...)
+
 			// 右到左查询
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[LI]]{
 				Path:             rightDomainPath + leftDomainPath + "/query",
@@ -105,7 +113,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Query[LI](middleTableName,
 					rightTableName, rightRelationColumnName,
 					leftTableName, leftRelationColumnName),
-			}, options.rightQueryMiddlewares...)
+			}, rightQueryMiddlewares...)
 		}
 	}
 }

+ 16 - 6
convenient/relation/one2many/simple.go

@@ -41,7 +41,7 @@ type Simple[LI any, RI any] struct {
 	options *Options
 }
 
-func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
+func (simple *Simple[LI, RI]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	options := simple.options
 
 	leftDomainPath := domain.RelativeDomainPath(simple.Left)
@@ -56,6 +56,8 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 
 	if !options.disableLeft {
 		if !options.disableLeftUpdate {
+			leftUpdateMiddlewares := append(middlewares, options.leftUpdateMiddlewares...)
+
 			// 左到右更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             leftDomainPath + rightDomainPath + "/update",
@@ -64,10 +66,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc: UpdateLeft(leftTableName, simple.Left.DomainCNName(), leftRelationFieldName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationColumnName),
-			}, options.leftUpdateMiddlewares...)
+			}, leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
+			leftQueryMiddlewares := append(middlewares, options.leftQueryMiddlewares...)
+
 			// 左到右查询
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[RI]]{
 				Path:             leftDomainPath + rightDomainPath + "/query",
@@ -75,12 +79,14 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      QueryLeft[RI](leftTableName, rightTableName, rightRelationColumnName),
-			}, options.leftQueryMiddlewares...)
+			}, leftQueryMiddlewares...)
 		}
 	}
 
 	if !options.disableRight {
 		if !options.disableRightUpdate {
+			rightUpdateMiddlewares := append(middlewares, options.rightUpdateMiddlewares...)
+
 			// 右到左更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             rightDomainPath + leftDomainPath + "/update",
@@ -89,10 +95,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc: UpdateRight(rightTableName, rightRelationFieldName, rightRelationColumnName,
 					leftTableName, simple.Left.DomainCNName()),
-			}, options.rightUpdateMiddlewares...)
+			}, rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
+			rightQueryMiddlewares := append(middlewares, options.rightQueryMiddlewares...)
+
 			// 右到左查询
 			binding.GetBind(binder, &binding.SimpleBindItem[LI]{
 				Path:             rightDomainPath + leftDomainPath + "/query",
@@ -100,10 +108,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryRight[LI](rightTableName, rightRelationFieldName, leftTableName),
-			}, options.rightQueryMiddlewares...)
+			}, rightQueryMiddlewares...)
 		}
 
 		if !options.disableRightWithLeftQuery {
+			rightWithLeftQueryMiddlewares := append(middlewares, options.rightWithLeftQueryMiddlewares...)
+
 			// 右到左查询,携带左方信息
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[map[string]any]]{
 				Path:             rightDomainPath + leftDomainPath + "/queryWith",
@@ -111,7 +121,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryWithLeftQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryRightWithLeftInfo[RI, LI](rightTableName, rightRelationColumnName, options.rightQueryWithConditionFieldCallback, leftTableName),
-			}, options.rightWithLeftQueryMiddlewares...)
+			}, rightWithLeftQueryMiddlewares...)
 		}
 	}
 }

+ 19 - 7
convenient/relation/one2one/simple.go

@@ -44,7 +44,7 @@ type Simple[LI any, RI any] struct {
 	options *Options
 }
 
-func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
+func (simple *Simple[LI, RI]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	options := simple.options
 
 	leftDomainPath := domain.RelativeDomainPath(simple.Left)
@@ -60,6 +60,8 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 
 	if !options.disableLeft {
 		if !options.disableLeftUpdate {
+			leftUpdateMiddlewares := append(middlewares, options.leftUpdateMiddlewares...)
+
 			// 左到右更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             leftDomainPath + rightDomainPath + "/update",
@@ -68,10 +70,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc: Update(leftTableName, leftRelationFieldName, leftRelationColumnName,
 					rightTableName, simple.Right.DomainCNName(), rightRelationColumnName),
-			}, options.leftUpdateMiddlewares...)
+			}, leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
+			leftQueryMiddlewares := append(middlewares, options.leftQueryMiddlewares...)
+
 			// 左到右查询
 			binding.GetBind(binder, &binding.SimpleBindItem[RI]{
 				Path:             leftDomainPath + rightDomainPath + "/query",
@@ -79,10 +83,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      Query[RI](leftTableName, leftRelationFieldName, rightTableName),
-			}, options.leftQueryMiddlewares...)
+			}, leftQueryMiddlewares...)
 		}
 
 		if !options.disableLeftWithRightQuery {
+			leftWithRightQueryMiddlewares := append(middlewares, options.leftWithRightQueryMiddlewares...)
+
 			// 左到右查询,携带右方信息
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[map[string]any]]{
 				Path:             leftDomainPath + rightDomainPath + "/queryWith",
@@ -90,12 +96,14 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.LeftQueryWithRightQueryParams,
 				Objects:          []domain.Object{simple.Left},
 				ServiceFunc:      QueryWithOtherInfo[LI, RI](leftTableName, leftRelationColumnName, options.leftQueryWithConditionFieldCallback, rightTableName),
-			}, options.leftWithRightQueryMiddlewares...)
+			}, leftWithRightQueryMiddlewares...)
 		}
 	}
 
 	if !options.disableRight {
 		if !options.disableRightUpdate {
+			rightUpdateMiddlewares := append(middlewares, options.rightUpdateMiddlewares...)
+
 			// 右到左更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             rightDomainPath + leftDomainPath + "/update",
@@ -104,10 +112,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc: Update(rightTableName, rightRelationFieldName, rightRelationColumnName,
 					leftTableName, simple.Left.DomainCNName(), leftRelationColumnName),
-			}, options.rightUpdateMiddlewares...)
+			}, rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
+			rightQueryMiddlewares := append(middlewares, options.rightQueryMiddlewares...)
+
 			// 右到左查询
 			binding.GetBind(binder, &binding.SimpleBindItem[LI]{
 				Path:             rightDomainPath + leftDomainPath + "/query",
@@ -115,10 +125,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      Query[LI](rightTableName, rightRelationFieldName, leftTableName),
-			}, options.rightQueryMiddlewares...)
+			}, rightQueryMiddlewares...)
 		}
 
 		if !options.disableRightWithLeftQuery {
+			rightWithLeftQueryMiddlewares := append(middlewares, options.rightWithLeftQueryMiddlewares...)
+
 			// 右到左查询,携带左方信息
 			binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[map[string]any]]{
 				Path:             rightDomainPath + leftDomainPath + "/queryWith",
@@ -126,7 +138,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				RequestParams:    simple.RightQueryWithLeftQueryParams,
 				Objects:          []domain.Object{simple.Right},
 				ServiceFunc:      QueryWithOtherInfo[RI, LI](rightTableName, rightRelationColumnName, options.rightQueryWithConditionFieldCallback, leftTableName),
-			}, options.rightWithLeftQueryMiddlewares...)
+			}, rightWithLeftQueryMiddlewares...)
 		}
 	}
 }

+ 15 - 7
convenient/relation/remote/simple.go

@@ -38,7 +38,7 @@ type Simple[LI any, RI any] struct {
 	options *Options
 }
 
-func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
+func (simple *Simple[LI, RI]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	options := simple.options
 
 	leftDomainPath := domain.RelativeDomainPath(simple.Left)
@@ -65,6 +65,8 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 
 	if !options.disableLeft {
 		if !options.disableLeftUpdate {
+			leftUpdateMiddlewares := append(middlewares, options.leftUpdateMiddlewares...)
+
 			// 左到右更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             leftDomainPath + rightDomainPath + "/update",
@@ -74,10 +76,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					leftRemote, leftTableName, simple.Left.DomainCNName(), leftRelationFieldName, leftRelationColumnName,
 					rightRemote, rightTableName, rightRelationColumnName),
-			}, options.leftUpdateMiddlewares...)
+			}, leftUpdateMiddlewares...)
 		}
 
 		if !options.disableLeftQuery {
+			leftQueryMiddlewares := append(middlewares, options.leftQueryMiddlewares...)
+
 			// 左到右查询
 			if rightRemote {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[string]]{
@@ -86,7 +90,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					RequestParams:    simple.LeftQueryQueryParams,
 					Objects:          []domain.Object{simple.Left},
 					ServiceFunc:      QueryToRemote(middleTableName, leftRemote, leftTableName, leftRelationColumnName, rightRelationColumnName),
-				}, options.leftQueryMiddlewares...)
+				}, leftQueryMiddlewares...)
 			} else {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[RI]]{
 					Path:             leftDomainPath + rightDomainPath + "/query",
@@ -96,13 +100,15 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					ServiceFunc: QueryToExist[RI](middleTableName,
 						leftRemote, leftTableName, leftRelationColumnName,
 						rightTableName, rightRelationColumnName),
-				}, options.leftQueryMiddlewares...)
+				}, leftQueryMiddlewares...)
 			}
 		}
 	}
 
 	if !options.disableRight {
 		if !options.disableRightUpdate {
+			rightUpdateMiddlewares := append(middlewares, options.rightUpdateMiddlewares...)
+
 			// 右到左更新
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             rightDomainPath + leftDomainPath + "/update",
@@ -112,10 +118,12 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 				ServiceFunc: Update(middleTableName,
 					rightRemote, rightTableName, simple.Right.DomainCNName(), rightRelationFieldName, rightRelationColumnName,
 					leftRemote, leftTableName, leftRelationColumnName),
-			}, options.rightUpdateMiddlewares...)
+			}, rightUpdateMiddlewares...)
 		}
 
 		if !options.disableRightQuery {
+			rightQueryMiddlewares := append(middlewares, options.rightQueryMiddlewares...)
+
 			// 右到左查询
 			if leftRemote {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[string]]{
@@ -124,7 +132,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					RequestParams:    simple.RightQueryQueryParams,
 					Objects:          []domain.Object{simple.Right},
 					ServiceFunc:      QueryToRemote(middleTableName, rightRemote, rightTableName, rightRelationColumnName, leftRelationColumnName),
-				}, options.rightQueryMiddlewares...)
+				}, rightQueryMiddlewares...)
 			} else {
 				binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[LI]]{
 					Path:             rightDomainPath + leftDomainPath + "/query",
@@ -134,7 +142,7 @@ func (simple *Simple[LI, RI]) bind(binder *binding.Binder) {
 					ServiceFunc: QueryToExist[LI](middleTableName,
 						rightRemote, rightTableName, rightRelationColumnName,
 						leftTableName, leftRelationColumnName),
-				}, options.rightQueryMiddlewares...)
+				}, rightQueryMiddlewares...)
 			}
 		}
 	}

+ 12 - 6
convenient/value_object_crud/simple.go

@@ -32,7 +32,7 @@ type Simple[I any] struct {
 	queryOptions  *QueryOptions[I]
 }
 
-func (simple *Simple[I]) bind(binder *binding.Binder) {
+func (simple *Simple[I]) bind(binder *binding.Binder, middlewares ...binding.Middleware) {
 	createOptions := simple.creatOptions
 	deleteOptions := simple.deleteOptions
 	queryOptions := simple.queryOptions
@@ -42,6 +42,8 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 
 	// 创建
 	if !createOptions.disable {
+		createMiddlewares := append(middlewares, createOptions.middlewares...)
+
 		if !createOptions.needTx {
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/create",
@@ -49,7 +51,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.CreateJsonBody,
 				Objects:          []domain.Object{simple.ValueObject},
 				ServiceFunc:      Create(tableName, createOptions.callbacks),
-			}, createOptions.middlewares...)
+			}, createMiddlewares...)
 		} else {
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:             domainPath + "/create",
@@ -57,12 +59,14 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				RequestParams:    simple.CreateJsonBody,
 				Objects:          []domain.Object{simple.ValueObject},
 				ServiceFunc:      CreateTx(tableName, createOptions.callbacks),
-			}, createOptions.middlewares...)
+			}, createMiddlewares...)
 		}
 	}
 
 	// 删除
 	if !deleteOptions.disable {
+		deleteMiddlewares := append(middlewares, deleteOptions.middlewares...)
+
 		if !deleteOptions.needTx {
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:                  domainPath + "/delete",
@@ -71,7 +75,7 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				BindRequestParamsFunc: request.BindJsonBody,
 				Objects:               []domain.Object{simple.ValueObject},
 				ServiceFunc:           Delete(tableName, deleteOptions.callbacks),
-			}, deleteOptions.middlewares...)
+			}, deleteMiddlewares...)
 		} else {
 			binding.PostBind(binder, &binding.SimpleBindItem[any]{
 				Path:                  domainPath + "/delete",
@@ -80,19 +84,21 @@ func (simple *Simple[I]) bind(binder *binding.Binder) {
 				BindRequestParamsFunc: request.BindJsonBody,
 				Objects:               []domain.Object{simple.ValueObject},
 				ServiceFunc:           DeleteTx(tableName, deleteOptions.callbacks),
-			}, deleteOptions.middlewares...)
+			}, deleteMiddlewares...)
 		}
 	}
 
 	// 查询
 	if !queryOptions.disable {
+		queryMiddlewares := append(middlewares, queryOptions.middlewares...)
+
 		binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[I]]{
 			Path:             domainPath + "/query",
 			SendResponseFunc: response.SendInfosResponse[I],
 			RequestParams:    simple.QueryQueryParams,
 			Objects:          []domain.Object{simple.ValueObject},
 			ServiceFunc:      Query(tableName, queryOptions.callbacks, queryOptions.conditionFieldCallback),
-		}, queryOptions.middlewares...)
+		}, queryMiddlewares...)
 	}
 }