yjp 1 ano atrás
pai
commit
17ca526f98

+ 5 - 1
examples/examples/project/application/application.go

@@ -34,7 +34,11 @@ type Service interface {
 }
 
 var applications = []Service{
-	&service.Version{}, &service.Configuration{}, &service.Class{},
+	&service.Version{},
+	&service.Configuration{},
+	&service.Class{},
+	&service.Student{},
+	&service.Family{},
 }
 
 func Start() error {

+ 101 - 0
examples/examples/project/application/domain/family/entity.go

@@ -0,0 +1,101 @@
+package family
+
+import (
+	"git.sxidc.com/go-framework/baize/framwork/domain"
+	"git.sxidc.com/go-tools/utils/strutils"
+	"git.sxidc.com/service-supports/fserr"
+)
+
+const (
+	TableName = "test.families"
+)
+
+const (
+	ColumnFather = "father"
+	ColumnMother = "mother"
+)
+
+const (
+	fieldFatherMaxLen = 128
+	fieldMotherMaxLen = 128
+)
+
+type Entity struct {
+	domain.BaseEntity
+	Father    string `sqlmapping:"column:father" sqlresult:"column:father"`
+	Mother    string `sqlmapping:"column:mother" sqlresult:"column:mother"`
+	StudentID string `sqlmapping:"column:student_id" sqlresult:"column:student_id"`
+	domain.TimeFields
+}
+
+func (e *Entity) DomainCNName() string {
+	return "家庭"
+}
+
+func (e *Entity) ForCreate() error {
+	err := e.CheckFieldID(e.DomainCNName())
+	if err != nil {
+		return err
+	}
+
+	err = e.checkFieldFather()
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (e *Entity) ForUpdate() error {
+	err := e.CheckFieldID(e.DomainCNName())
+	if err != nil {
+		return err
+	}
+
+	err = e.checkUpdateFields()
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (e *Entity) checkFieldFather() error {
+	if strutils.IsStringEmpty(e.Father) {
+		return fserr.New(e.DomainCNName() + "父亲姓名为空")
+	}
+
+	if len(e.Father) > fieldFatherMaxLen {
+		return fserr.New(e.DomainCNName() + "父亲姓名超出限定长度")
+	}
+
+	return nil
+}
+
+func (e *Entity) checkFieldMother() error {
+	if strutils.IsStringEmpty(e.Mother) {
+		return fserr.New(e.DomainCNName() + "母亲姓名为空")
+	}
+
+	if len(e.Mother) > fieldMotherMaxLen {
+		return fserr.New(e.DomainCNName() + "母亲姓名超出限定长度")
+	}
+
+	return nil
+}
+
+func (e *Entity) checkUpdateFields() 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.Mother) && len(e.Mother) > fieldMotherMaxLen {
+		return fserr.New(e.DomainCNName() + "母亲姓名超出限定长度")
+	}
+
+	return nil
+}

+ 12 - 0
examples/examples/project/application/domain/family/info.go

@@ -0,0 +1,12 @@
+package family
+
+import (
+	"git.sxidc.com/go-framework/baize/framwork/application"
+)
+
+type Info struct {
+	application.InfoIDField
+	Father string `json:"father" sqlresult:"column:father"`
+	Mother string `json:"mother" sqlresult:"column:mother"`
+	application.InfoTimeFields
+}

+ 32 - 0
examples/examples/project/application/domain/family/request_params.go

@@ -0,0 +1,32 @@
+package family
+
+import (
+	"git.sxidc.com/go-framework/baize/convenient/binding/request"
+)
+
+type (
+	CreateJsonBody struct {
+		Father string `json:"father" binding:"required" assign:"toField:Father"`
+		Mother string `json:"mother" binding:"required" assign:"toField:Mother"`
+	}
+
+	DeletePathParams struct {
+		request.IDPath
+	}
+
+	UpdateJsonBody struct {
+		request.IDJsonBody
+		Father string `json:"father" assign:"toField:Father"`
+		Mother string `json:"mother" assign:"toField:Mother"`
+	}
+
+	QueryQueryParams struct {
+		request.BaseQuery
+		Father string `form:"father" assign:"toField:Father"`
+		Mother string `form:"mother" assign:"toField:Mother"`
+	}
+
+	GetByIDQueryParams struct {
+		request.IDQuery
+	}
+)

+ 82 - 0
examples/examples/project/application/domain/student/entity.go

@@ -0,0 +1,82 @@
+package student
+
+import (
+	"git.sxidc.com/go-framework/baize/framwork/domain"
+	"git.sxidc.com/go-tools/utils/strutils"
+	"git.sxidc.com/service-supports/fserr"
+)
+
+const (
+	TableName = "test.students"
+)
+
+const (
+	ColumnName = "name"
+)
+
+const (
+	fieldNameMaxLen = 128
+)
+
+type Entity struct {
+	domain.BaseEntity
+	Name     string `sqlmapping:"column:name" sqlresult:"column:name"`
+	FamilyID string `sqlmapping:"column:family_id" sqlresult:"column:family_id"`
+	domain.TimeFields
+}
+
+func (e *Entity) DomainCNName() string {
+	return "学生"
+}
+
+func (e *Entity) ForCreate() error {
+	err := e.CheckFieldID(e.DomainCNName())
+	if err != nil {
+		return err
+	}
+
+	err = e.checkFieldName()
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (e *Entity) ForUpdate() error {
+	err := e.CheckFieldID(e.DomainCNName())
+	if err != nil {
+		return err
+	}
+
+	err = e.checkUpdateFields()
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (e *Entity) checkFieldName() error {
+	if strutils.IsStringEmpty(e.Name) {
+		return fserr.New(e.DomainCNName() + "名称为空")
+	}
+
+	if len(e.Name) > fieldNameMaxLen {
+		return fserr.New(e.DomainCNName() + "名称超出限定长度")
+	}
+
+	return nil
+}
+
+func (e *Entity) checkUpdateFields() 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() + "名称超出限定长度")
+	}
+
+	return nil
+}

+ 11 - 0
examples/examples/project/application/domain/student/info.go

@@ -0,0 +1,11 @@
+package student
+
+import (
+	"git.sxidc.com/go-framework/baize/framwork/application"
+)
+
+type Info struct {
+	application.InfoIDField
+	Name string `json:"name" sqlresult:"column:name"`
+	application.InfoTimeFields
+}

+ 29 - 0
examples/examples/project/application/domain/student/request_params.go

@@ -0,0 +1,29 @@
+package student
+
+import (
+	"git.sxidc.com/go-framework/baize/convenient/binding/request"
+)
+
+type (
+	CreateJsonBody struct {
+		Name string `json:"name" binding:"required" assign:"toField:Name"`
+	}
+
+	DeletePathParams struct {
+		request.IDPath
+	}
+
+	UpdateJsonBody struct {
+		request.IDJsonBody
+		Name string `json:"name" assign:"toField:Name"`
+	}
+
+	QueryQueryParams struct {
+		request.BaseQuery
+		Name string `form:"name" assign:"toField:Name"`
+	}
+
+	GetByIDQueryParams struct {
+		request.IDQuery
+	}
+)

+ 33 - 0
examples/examples/project/application/service/family.go

@@ -0,0 +1,33 @@
+package service
+
+import (
+	"git.sxidc.com/go-framework/baize/convenient/entity"
+	"git.sxidc.com/go-framework/baize/examples/examples/project/application/domain/family"
+	"git.sxidc.com/go-framework/baize/framwork/application"
+)
+
+type Family struct{}
+
+func (app *Family) Init(appInstance *application.App) error {
+	app.v1(appInstance)
+	return nil
+}
+
+func (app *Family) Destroy() error {
+	return nil
+}
+
+func (app *Family) v1(appInstance *application.App) {
+	v1Binder := appInstance.Binder(application.RouterPrefix, "v1")
+
+	entity.BindSimple[family.Info](v1Binder, &entity.Simple[family.Info]{
+		Entity:             &family.Entity{},
+		TableName:          family.TableName,
+		DomainPath:         "/family",
+		CreateJsonBody:     &family.CreateJsonBody{},
+		DeleteQueryParams:  &family.DeletePathParams{},
+		UpdateJsonBody:     &family.UpdateJsonBody{},
+		QueryQueryParams:   &family.QueryQueryParams{},
+		GetByIDQueryParams: &family.GetByIDQueryParams{},
+	})
+}

+ 33 - 0
examples/examples/project/application/service/student.go

@@ -0,0 +1,33 @@
+package service
+
+import (
+	"git.sxidc.com/go-framework/baize/convenient/entity"
+	"git.sxidc.com/go-framework/baize/examples/examples/project/application/domain/student"
+	"git.sxidc.com/go-framework/baize/framwork/application"
+)
+
+type Student struct{}
+
+func (app *Student) Init(appInstance *application.App) error {
+	app.v1(appInstance)
+	return nil
+}
+
+func (app *Student) Destroy() error {
+	return nil
+}
+
+func (app *Student) v1(appInstance *application.App) {
+	v1Binder := appInstance.Binder(application.RouterPrefix, "v1")
+
+	entity.BindSimple[student.Info](v1Binder, &entity.Simple[student.Info]{
+		Entity:             &student.Entity{},
+		TableName:          student.TableName,
+		DomainPath:         "/student",
+		CreateJsonBody:     &student.CreateJsonBody{},
+		DeleteQueryParams:  &student.DeletePathParams{},
+		UpdateJsonBody:     &student.UpdateJsonBody{},
+		QueryQueryParams:   &student.QueryQueryParams{},
+		GetByIDQueryParams: &student.GetByIDQueryParams{},
+	})
+}

+ 14 - 0
examples/examples/project/main.go

@@ -21,6 +21,20 @@ import (
 // curl -X GET "http://localhost:31000/example/v1/class/get?id=3ca731da91cc42c9b9f413c1b493133d"
 // curl -X DELETE "http://localhost:31000/example/v1/class/3ca731da91cc42c9b9f413c1b493133d/delete"
 
+// Student
+// curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' "http://localhost:31000/example/v1/student/create"
+// curl -X PUT -H "Content-Type: application/json" -d '{"id":"6e12ee71397746b8920fa94e5f229366", "name":"test-new"}' "http://localhost:31000/example/v1/student/update"
+// curl -X GET "http://localhost:31000/example/v1/student/query?name=test-new&pageNo=1&pageSize=1"
+// curl -X GET "http://localhost:31000/example/v1/student/get?id=6e12ee71397746b8920fa94e5f229366"
+// curl -X DELETE "http://localhost:31000/example/v1/student/6e12ee71397746b8920fa94e5f229366/delete"
+
+// Family
+// curl -X POST -H "Content-Type: application/json" -d '{"father":"father", "mother": "mother"}' "http://localhost:31000/example/v1/family/create"
+// curl -X PUT -H "Content-Type: application/json" -d '{"id":"8a3af91da12c4a3eb040ffb535693f1a", "father":"new-father", "mother": "new-mother"}' "http://localhost:31000/example/v1/family/update"
+// curl -X GET "http://localhost:31000/example/v1/family/query?father=new-father&pageNo=0&pageSize=0"
+// curl -X GET "http://localhost:31000/example/v1/family/get?id=8a3af91da12c4a3eb040ffb535693f1a"
+// curl -X DELETE "http://localhost:31000/example/v1/family/8a3af91da12c4a3eb040ffb535693f1a/delete"
+
 func main() {
 	application.NewApp()
 	defer application.DestroyApp()