yjp 1 yıl önce
ebeveyn
işleme
37fc224182
3 değiştirilmiş dosya ile 18 ekleme ve 11 silme
  1. 6 3
      binding/dto.go
  2. 6 3
      domain/object.go
  3. 6 5
      examples/binding/main.go

+ 6 - 3
binding/dto.go

@@ -3,6 +3,7 @@ package binding
 import (
 	"git.sxidc.com/go-framework/baize/infrastructure/logger"
 	"git.sxidc.com/service-supports/fserr"
+	"git.sxidc.com/service-supports/fslog"
 	"reflect"
 )
 
@@ -33,14 +34,16 @@ func Field[T any](dto DTO, fieldName string) T {
 	return retValue
 }
 
-func ToConcreteDTO[T DTO](object DTO) (T, error) {
+func ToConcreteDTO[T DTO](object DTO) T {
 	concrete, ok := object.(T)
 	if !ok {
+		fslog.Error(fserr.New("DTO转化失败"))
+
 		var zero T
-		return zero, fserr.New("DTO转化失败")
+		return zero
 	}
 
-	return concrete, nil
+	return concrete
 }
 
 func getDTOFieldValue(dto DTO, fieldName string) (*reflect.Value, error) {

+ 6 - 3
domain/object.go

@@ -3,6 +3,7 @@ package domain
 import (
 	"git.sxidc.com/go-framework/baize/infrastructure/logger"
 	"git.sxidc.com/service-supports/fserr"
+	"git.sxidc.com/service-supports/fslog"
 	"reflect"
 )
 
@@ -49,14 +50,16 @@ func Field[T any](object Object, fieldName string) T {
 	return retValue
 }
 
-func ToConcreteObject[T Object](object Object) (T, error) {
+func ToConcreteObject[T Object](object Object) T {
 	concrete, ok := object.(T)
 	if !ok {
+		fslog.Error(fserr.New("领域对象转化失败"))
+
 		var zero T
-		return zero, fserr.New("领域对象转化失败")
+		return zero
 	}
 
-	return concrete, nil
+	return concrete
 }
 
 func getObjectFieldValue(object Object, fieldName string) (*reflect.Value, error) {

+ 6 - 5
examples/binding/main.go

@@ -69,17 +69,18 @@ func main() {
 		ResponseFunc: binding.SendIDResponse[string],
 		DTO:          &CreateClassJsonBody{},
 		FormDomainObjectsFunc: func(c *api.Context, dto binding.DTO) ([]domain.Object, error) {
+			jsonBody := binding.ToConcreteDTO[*CreateClassJsonBody](dto)
 			return []domain.Object{
 				&Class{
-					Name: binding.Field[string](dto, "Name"),
+					Name: jsonBody.Name,
 				},
 			}, nil
 		},
 		ServiceFunc: func(c *api.Context, dto binding.DTO, objects []domain.Object) (string, error) {
-			id := strutils.SimpleUUID()
-			domain.SetField(objects[0], "ID", id)
-			classMap[id] = objects[0]
-			return id, nil
+			e := domain.ToConcreteObject[*Class](objects[0])
+			e.ID = strutils.SimpleUUID()
+			classMap[e.ID] = e
+			return e.ID, nil
 		},
 	})