yjp преди 1 година
родител
ревизия
265685f325

+ 4 - 3
go.mod

@@ -3,7 +3,7 @@ module baize-demo
 go 1.22.3
 
 require (
-	git.sxidc.com/go-framework/baize v0.4.0
+	git.sxidc.com/go-framework/baize v0.5.1
 	git.sxidc.com/go-tools/utils v1.5.15
 	git.sxidc.com/service-supports/fserr v0.3.5
 	git.sxidc.com/service-supports/fslog v0.5.9
@@ -20,6 +20,7 @@ require (
 	github.com/Masterminds/sprig/v3 v3.2.3 // indirect
 	github.com/bytedance/sonic v1.11.6 // indirect
 	github.com/bytedance/sonic/loader v0.1.1 // indirect
+	github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect
 	github.com/cloudwego/base64x v0.1.4 // indirect
 	github.com/cloudwego/iasm v0.2.0 // indirect
 	github.com/davecgh/go-spew v1.1.1 // indirect
@@ -34,7 +35,6 @@ require (
 	github.com/gogo/protobuf v1.3.0 // indirect
 	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/google/uuid v1.6.0 // indirect
-	github.com/gopherjs/gopherjs v1.17.2 // indirect
 	github.com/gorilla/websocket v1.5.0 // indirect
 	github.com/huandu/xstrings v1.3.3 // indirect
 	github.com/iancoleman/strcase v0.3.0 // indirect
@@ -45,7 +45,6 @@ require (
 	github.com/jinzhu/inflection v1.0.0 // indirect
 	github.com/jinzhu/now v1.1.5 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
-	github.com/jtolds/gls v4.20.0+incompatible // indirect
 	github.com/klauspost/cpuid/v2 v2.2.7 // indirect
 	github.com/leodido/go-urn v1.4.0 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
@@ -56,11 +55,13 @@ require (
 	github.com/mwitkow/go-proto-validators v0.3.2 // indirect
 	github.com/olahol/melody v1.2.1 // indirect
 	github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
 	github.com/pmezard/go-difflib v1.0.0 // indirect
 	github.com/puzpuzpuz/xsync v1.5.2 // indirect
 	github.com/satori/go.uuid v1.2.0 // indirect
 	github.com/shopspring/decimal v1.2.0 // indirect
 	github.com/smarty/assertions v1.16.0 // indirect
+	github.com/smartystreets/goconvey v1.8.1 // indirect
 	github.com/spf13/cast v1.3.1 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 	github.com/ugorji/go/codec v1.2.12 // indirect

+ 4 - 2
go.sum

@@ -1,5 +1,5 @@
-git.sxidc.com/go-framework/baize v0.2.3 h1:GQ32gwWMQnfB+wkdfhhlPcBYuOdIIckuSXO23bVdNKs=
-git.sxidc.com/go-framework/baize v0.2.3/go.mod h1:GJNNrdlwli5qpOU9eUbRRlxUbtkok9Zj0vvqlFEsujA=
+git.sxidc.com/go-framework/baize v0.5.1 h1:FNxNFvJb9EKrn1wy/AiH5RZmkEkwwd5h2N/SJf6g0VU=
+git.sxidc.com/go-framework/baize v0.5.1/go.mod h1:l4L9/s9V+HplttyhTjfaqAGxqv44fglq4wSxacpUQpk=
 git.sxidc.com/go-tools/utils v1.5.15 h1:7xs/EM8XZyKycrSSHcPZ6wvyYs+v8uWQ7ZmPP/fHyFI=
 git.sxidc.com/go-tools/utils v1.5.15/go.mod h1:fkobAXFpOMTvkZ82TQXWcpsayePcyk/MS5TN6GTlRDg=
 git.sxidc.com/service-supports/fserr v0.3.5 h1:1SDC60r3FIDd2iRq/oHRLK4OMa1gf67h9B7kierKTUE=
@@ -111,6 +111,8 @@ github.com/olahol/melody v1.2.1 h1:xdwRkzHxf+B0w4TKbGpUSSkV516ZucQZJIWLztOWICQ=
 github.com/olahol/melody v1.2.1/go.mod h1:GgkTl6Y7yWj/HtfD48Q5vLKPVoZOH+Qqgfa7CvJgJM4=
 github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
 github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/puzpuzpuz/xsync v1.5.2 h1:yRAP4wqSOZG+/4pxJ08fPTwrfL0IzE/LKQ/cw509qGY=

+ 1 - 1
project/gateway/api/v1/example/class.go

@@ -6,7 +6,7 @@ import (
 )
 
 func classGateway(builder *gateway.Builder) {
-	gwtools.CRUD(builder, &gwtools.CRUDParams{
+	gwtools.EntityCRUD(builder, &gwtools.EntityCRUDParams{
 		ServiceVersionedUrl: serviceVersionedUrl,
 		DomainCamelName:     "Class",
 	})

+ 1 - 1
project/gateway/api/v1/example/family.go

@@ -6,7 +6,7 @@ import (
 )
 
 func familyGateway(builder *gateway.Builder) {
-	gwtools.CRUD(builder, &gwtools.CRUDParams{
+	gwtools.EntityCRUD(builder, &gwtools.EntityCRUDParams{
 		ServiceVersionedUrl: serviceVersionedUrl,
 		DomainCamelName:     "Family",
 	})

+ 1 - 1
project/gateway/api/v1/example/identity.go

@@ -6,7 +6,7 @@ import (
 )
 
 func identityGateway(builder *gateway.Builder) {
-	gwtools.CRUD(builder, &gwtools.CRUDParams{
+	gwtools.EntityCRUD(builder, &gwtools.EntityCRUDParams{
 		ServiceVersionedUrl: serviceVersionedUrl,
 		DomainCamelName:     "Identity",
 	})

+ 1 - 1
project/gateway/api/v1/example/student.go

@@ -6,7 +6,7 @@ import (
 )
 
 func studentGateway(builder *gateway.Builder) {
-	gwtools.CRUD(builder, &gwtools.CRUDParams{
+	gwtools.EntityCRUD(builder, &gwtools.EntityCRUDParams{
 		ServiceVersionedUrl: serviceVersionedUrl,
 		DomainCamelName:     "Student",
 	})

+ 3 - 3
project/gateway/main.go

@@ -16,10 +16,10 @@ import (
 
 // Class
 // curl -X POST -H "Content-Type: application/json" -d '{"name":"test", "studentNum": 10}' "http://localhost:32000/gateway/api/v1/class/create"
-// curl -X PUT -H "Content-Type: application/json" -d '{"id":"a58aec380ac243aea4e9a47bca4964e5", "name":"test-new"}' "http://localhost:32000/gateway/api/v1/class/update"
+// curl -X PUT -H "Content-Type: application/json" -d '{"id":"3d94607a0df14cebae4f4aa70ef4d0c1", "name":"test-new"}' "http://localhost:32000/gateway/api/v1/class/update"
 // curl -X GET "http://localhost:32000/gateway/api/v1/class/query?name=test-new&pageNo=1&pageSize=1"
-// curl -X GET "http://localhost:32000/gateway/api/v1/class/get?id=a58aec380ac243aea4e9a47bca4964e5"
-// curl -X DELETE "http://localhost:32000/gateway/api/v1/class/delete?id=a58aec380ac243aea4e9a47bca4964e5"
+// curl -X GET "http://localhost:32000/gateway/api/v1/class/get?id=3d94607a0df14cebae4f4aa70ef4d0c1"
+// curl -X DELETE "http://localhost:32000/gateway/api/v1/class/delete?id=3d94607a0df14cebae4f4aa70ef4d0c1"
 
 // Student
 // curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' "http://localhost:32000/gateway/api/v1/student/create"

+ 34 - 28
project/server/application/domain/class/entity.go

@@ -1,23 +1,31 @@
 package class
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/domain"
 	"git.sxidc.com/go-framework/baize/framework/core/domain/entity"
+	"git.sxidc.com/go-framework/baize/framework/core/tag/check"
 	"git.sxidc.com/go-tools/utils/strutils"
 	"git.sxidc.com/service-supports/fserr"
 )
 
 const (
-	ColumnName       = "name"
-	ColumnStudentNum = "student_num"
+	FieldName       = "Name"
+	FieldStudentNum = "StudentNum"
 )
 
-const (
-	fieldNameMaxLen = 128
+var (
+	ColumnName       = domain.ColumnName(FieldName)
+	ColumnStudentNum = domain.ColumnName(FieldStudentNum)
 )
 
+var fieldMap = map[string]string{
+	FieldName:       "班名",
+	FieldStudentNum: "学生数量",
+}
+
 type Entity struct {
 	entity.Base
-	Name       string   `sqlmapping:"column:name" sqlresult:"column:name"`
+	Name       string   `sqlmapping:"column:name" sqlresult:"column:name" check:"required,lte=128"`
 	StudentNum int      `sqlmapping:"column:student_num;updateClear;" sqlresult:"column:student_num"`
 	StudentIDs []string `sqlmapping:"-" sqlresult:"-"`
 	entity.TimeFields
@@ -31,17 +39,15 @@ func (e *Entity) DomainCamelName() string {
 	return "Class"
 }
 
-func (e *Entity) CheckFieldID() error {
-	return e.Base.CheckFieldID(e.DomainCNName())
-}
-
 func (e *Entity) ForCreate() error {
-	err := e.CheckFieldID()
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
 
-	err = e.checkFieldName()
+	err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
 	if err != nil {
 		return err
 	}
@@ -50,16 +56,9 @@ func (e *Entity) ForCreate() error {
 }
 
 func (e *Entity) ForDelete() error {
-	return e.CheckFieldID()
-}
-
-func (e *Entity) ForUpdate() error {
-	err := e.CheckFieldID()
-	if err != nil {
-		return err
-	}
+	checkResult := check.Struct(e, fieldMap)
 
-	err = e.checkUpdateFields()
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
@@ -67,25 +66,32 @@ func (e *Entity) ForUpdate() error {
 	return nil
 }
 
-func (e *Entity) checkFieldName() error {
-	if strutils.IsStringEmpty(e.Name) {
-		return fserr.New(e.DomainCNName() + "名称为空")
+func (e *Entity) ForUpdate() error {
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
 	}
 
-	if len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "名称超出限定长度")
+	err = e.checkUpdateFields(checkResult)
+	if err != nil {
+		return err
 	}
 
 	return nil
 }
 
-func (e *Entity) checkUpdateFields() error {
+func (e *Entity) checkUpdateFields(checkResult check.Result) error {
 	if strutils.AllBlank(e.Name) {
 		return fserr.New(e.DomainCNName() + "没有传递需要更新的字段")
 	}
 
-	if strutils.IsStringNotEmpty(e.Name) && len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "名称超出限定长度")
+	if strutils.IsStringNotEmpty(e.Name) {
+		err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil

+ 43 - 42
project/server/application/domain/family/entity.go

@@ -1,25 +1,32 @@
 package family
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/domain"
 	"git.sxidc.com/go-framework/baize/framework/core/domain/entity"
+	"git.sxidc.com/go-framework/baize/framework/core/tag/check"
 	"git.sxidc.com/go-tools/utils/strutils"
 	"git.sxidc.com/service-supports/fserr"
 )
 
 const (
-	ColumnFather = "father"
-	ColumnMother = "mother"
+	FieldFather = "Father"
+	FieldMother = "Mother"
 )
 
-const (
-	fieldFatherMaxLen = 128
-	fieldMotherMaxLen = 128
+var (
+	ColumnFather = domain.ColumnName(FieldFather)
+	ColumnMother = domain.ColumnName(FieldMother)
 )
 
+var fieldMap = map[string]string{
+	FieldFather: "父亲姓名",
+	FieldMother: "母亲姓名",
+}
+
 type Entity struct {
 	entity.Base
-	Father    string `sqlmapping:"column:father" sqlresult:"column:father"`
-	Mother    string `sqlmapping:"column:mother" sqlresult:"column:mother"`
+	Father    string `sqlmapping:"column:father" sqlresult:"column:father" check:"required,lte=128"`
+	Mother    string `sqlmapping:"column:mother" sqlresult:"column:mother" check:"required,lte=128"`
 	StudentID string `sqlmapping:"column:student_id" sqlresult:"column:student_id"`
 	entity.TimeFields
 }
@@ -32,35 +39,20 @@ func (e *Entity) DomainCamelName() string {
 	return "Family"
 }
 
-func (e *Entity) CheckFieldID() error {
-	return e.Base.CheckFieldID(e.DomainCNName())
-}
-
 func (e *Entity) ForCreate() error {
-	err := e.CheckFieldID()
-	if err != nil {
-		return err
-	}
+	checkResult := check.Struct(e, fieldMap)
 
-	err = e.checkFieldFather()
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
 
-	return nil
-}
-
-func (e *Entity) ForDelete() error {
-	return e.CheckFieldID()
-}
-
-func (e *Entity) ForUpdate() error {
-	err := e.CheckFieldID()
+	err = domain.CheckField(checkResult, e.DomainCNName(), FieldFather)
 	if err != nil {
 		return err
 	}
 
-	err = e.checkUpdateFields()
+	err = domain.CheckField(checkResult, e.DomainCNName(), FieldMother)
 	if err != nil {
 		return err
 	}
@@ -68,41 +60,50 @@ func (e *Entity) ForUpdate() error {
 	return nil
 }
 
-func (e *Entity) checkFieldFather() error {
-	if strutils.IsStringEmpty(e.Father) {
-		return fserr.New(e.DomainCNName() + "父亲姓名为空")
-	}
+func (e *Entity) ForDelete() error {
+	checkResult := check.Struct(e, fieldMap)
 
-	if len(e.Father) > fieldFatherMaxLen {
-		return fserr.New(e.DomainCNName() + "父亲姓名超出限定长度")
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
 	}
 
 	return nil
 }
 
-func (e *Entity) checkFieldMother() error {
-	if strutils.IsStringEmpty(e.Mother) {
-		return fserr.New(e.DomainCNName() + "母亲姓名为空")
+func (e *Entity) ForUpdate() error {
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
 	}
 
-	if len(e.Mother) > fieldMotherMaxLen {
-		return fserr.New(e.DomainCNName() + "母亲姓名超出限定长度")
+	err = e.checkUpdateFields(checkResult)
+	if err != nil {
+		return err
 	}
 
 	return nil
 }
 
-func (e *Entity) checkUpdateFields() error {
+func (e *Entity) checkUpdateFields(checkResult check.Result) error {
 	if strutils.AllBlank(e.Father, e.Mother) {
 		return fserr.New(e.DomainCNName() + "没有传递需要更新的字段")
 	}
 
-	if strutils.IsStringNotEmpty(e.Father) && len(e.Father) > fieldFatherMaxLen {
-		return fserr.New(e.DomainCNName() + "父亲姓名超出限定长度")
+	if strutils.IsStringNotEmpty(e.Father) {
+		err := domain.CheckField(checkResult, e.DomainCNName(), FieldFather)
+		if err != nil {
+			return err
+		}
 	}
 
-	if strutils.IsStringNotEmpty(e.Mother) && len(e.Mother) > fieldMotherMaxLen {
-		return fserr.New(e.DomainCNName() + "母亲姓名超出限定长度")
+	if strutils.IsStringNotEmpty(e.Mother) {
+		err := domain.CheckField(checkResult, e.DomainCNName(), FieldMother)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil

+ 13 - 5
project/server/application/domain/hobby/entity.go

@@ -2,11 +2,12 @@ package hobby
 
 import (
 	"git.sxidc.com/go-framework/baize/framework/core/domain/entity"
+	"git.sxidc.com/go-framework/baize/framework/core/tag/check"
 	"git.sxidc.com/go-tools/utils/strutils"
 )
 
 type Entity struct {
-	ID         string   `sqlmapping:"-" sqlresult:"-"`
+	ID         string   `sqlmapping:"-" sqlresult:"-" check:"required,len=32"`
 	StudentIDs []string `sqlmapping:"-" sqlresult:"-"`
 }
 
@@ -23,10 +24,6 @@ func (e *Entity) GetID() string {
 	return e.ID
 }
 
-func (e *Entity) CheckFieldID() error {
-	return entity.CheckID(e.DomainCNName(), "ID", e.ID)
-}
-
 func (e *Entity) DomainCNName() string {
 	return "爱好"
 }
@@ -56,3 +53,14 @@ func (e *Entity) ForUpdate() error {
 
 	return nil
 }
+
+func (e *Entity) CheckFieldID() error {
+	checkResult := check.Struct(e, map[string]string{entity.FieldID: e.DomainCNName() + "ID"})
+
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}

+ 31 - 27
project/server/application/domain/identity/entity.go

@@ -1,22 +1,28 @@
 package identity
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/domain"
 	"git.sxidc.com/go-framework/baize/framework/core/domain/entity"
+	"git.sxidc.com/go-framework/baize/framework/core/tag/check"
 	"git.sxidc.com/go-tools/utils/strutils"
 	"git.sxidc.com/service-supports/fserr"
 )
 
 const (
-	ColumnName = "name"
+	FieldName = "Name"
 )
 
-const (
-	fieldNameMaxLen = 128
+var (
+	ColumnName = domain.ColumnName(FieldName)
 )
 
+var fieldMap = map[string]string{
+	FieldName: "身份名称",
+}
+
 type Entity struct {
 	entity.Base
-	Name       string   `sqlmapping:"column:name" sqlresult:"column:name"`
+	Name       string   `sqlmapping:"column:name" sqlresult:"column:name" check:"required,lte=128"`
 	StudentIDs []string `sqlmapping:"-" sqlresult:"-"`
 	entity.TimeFields
 }
@@ -29,17 +35,15 @@ func (e *Entity) DomainCamelName() string {
 	return "Identity"
 }
 
-func (e *Entity) CheckFieldID() error {
-	return e.Base.CheckFieldID(e.DomainCNName())
-}
-
 func (e *Entity) ForCreate() error {
-	err := e.CheckFieldID()
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
 
-	err = e.checkFieldName()
+	err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
 	if err != nil {
 		return err
 	}
@@ -48,16 +52,9 @@ func (e *Entity) ForCreate() error {
 }
 
 func (e *Entity) ForDelete() error {
-	return e.CheckFieldID()
-}
-
-func (e *Entity) ForUpdate() error {
-	err := e.CheckFieldID()
-	if err != nil {
-		return err
-	}
+	checkResult := check.Struct(e, fieldMap)
 
-	err = e.checkUpdateFields()
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
@@ -65,25 +62,32 @@ func (e *Entity) ForUpdate() error {
 	return nil
 }
 
-func (e *Entity) checkFieldName() error {
-	if strutils.IsStringEmpty(e.Name) {
-		return fserr.New(e.DomainCNName() + "名称为空")
+func (e *Entity) ForUpdate() error {
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
 	}
 
-	if len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "名称超出限定长度")
+	err = e.checkUpdateFields(checkResult)
+	if err != nil {
+		return err
 	}
 
 	return nil
 }
 
-func (e *Entity) checkUpdateFields() error {
+func (e *Entity) checkUpdateFields(checkResult check.Result) error {
 	if strutils.AllBlank(e.Name) {
 		return fserr.New(e.DomainCNName() + "没有传递需要更新的字段")
 	}
 
-	if strutils.IsStringNotEmpty(e.Name) && len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "名称超出限定长度")
+	if strutils.IsStringNotEmpty(e.Name) {
+		err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil

+ 33 - 29
project/server/application/domain/student/entity.go

@@ -1,24 +1,30 @@
 package student
 
 import (
+	"git.sxidc.com/go-framework/baize/framework/core/domain"
 	"git.sxidc.com/go-framework/baize/framework/core/domain/entity"
+	"git.sxidc.com/go-framework/baize/framework/core/tag/check"
 	"git.sxidc.com/go-tools/utils/strutils"
 	"git.sxidc.com/service-supports/fserr"
 )
 
 const (
-	ColumnName = "name"
+	FieldName = "Name"
 )
 
-const (
-	fieldNameMaxLen = 128
+var (
+	ColumnName = domain.ColumnName(FieldName)
 )
 
+var fieldMap = map[string]string{
+	FieldName: "学生姓名",
+}
+
 type Entity struct {
 	entity.Base
-	Name        string   `sqlmapping:"column:name" sqlresult:"column:name"`
-	FamilyID    string   `sqlmapping:"column:family_id" sqlresult:"column:family_id"`
-	ClassID     string   `sqlmapping:"column:class_id" sqlresult:"column:class_id"`
+	Name        string   `sqlmapping:"column:name" sqlresult:"column:name" check:"required,lte=128"`
+	FamilyID    string   `sqlmapping:"column:family_id" sqlresult:"column:family_id" check:"required,len=32"`
+	ClassID     string   `sqlmapping:"column:class_id" sqlresult:"column:class_id" check:"required,len=32"`
 	IdentityIDs []string `sqlmapping:"-" sqlresult:"-"`
 	HobbyIDs    []string `sqlmapping:"-" sqlresult:"-"`
 	entity.TimeFields
@@ -32,17 +38,15 @@ func (e *Entity) DomainCamelName() string {
 	return "Student"
 }
 
-func (e *Entity) CheckFieldID() error {
-	return e.Base.CheckFieldID(e.DomainCNName())
-}
-
 func (e *Entity) ForCreate() error {
-	err := e.CheckFieldID()
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
 
-	err = e.checkFieldName()
+	err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
 	if err != nil {
 		return err
 	}
@@ -51,16 +55,9 @@ func (e *Entity) ForCreate() error {
 }
 
 func (e *Entity) ForDelete() error {
-	return e.CheckFieldID()
-}
-
-func (e *Entity) ForUpdate() error {
-	err := e.CheckFieldID()
-	if err != nil {
-		return err
-	}
+	checkResult := check.Struct(e, fieldMap)
 
-	err = e.checkUpdateFields()
+	err := entity.CheckFieldIDResult(checkResult)
 	if err != nil {
 		return err
 	}
@@ -68,25 +65,32 @@ func (e *Entity) ForUpdate() error {
 	return nil
 }
 
-func (e *Entity) checkFieldName() error {
-	if strutils.IsStringEmpty(e.Name) {
-		return fserr.New(e.DomainCNName() + "姓名为空")
+func (e *Entity) ForUpdate() error {
+	checkResult := check.Struct(e, fieldMap)
+
+	err := entity.CheckFieldIDResult(checkResult)
+	if err != nil {
+		return err
 	}
 
-	if len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "姓名超出限定长度")
+	err = e.checkUpdateFields(checkResult)
+	if err != nil {
+		return err
 	}
 
 	return nil
 }
 
-func (e *Entity) checkUpdateFields() error {
+func (e *Entity) checkUpdateFields(checkResult check.Result) error {
 	if strutils.AllBlank(e.Name) {
 		return fserr.New(e.DomainCNName() + "没有传递需要更新的字段")
 	}
 
-	if strutils.IsStringNotEmpty(e.Name) && len(e.Name) > fieldNameMaxLen {
-		return fserr.New(e.DomainCNName() + "姓名超出限定长度")
+	if strutils.IsStringNotEmpty(e.Name) {
+		err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil