github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/generator/tmpl/service_transfer.tmpl (about) 1 {{- /*gotype: github.com/yoogoc/kratos-scaffold/generator.Service*/ -}} 2 package service 3 4 import ( 5 "fmt" 6 "{{.CurrentPkgPath}}/biz" 7 {{- range $i, $s := .MaybeGoPackages }} 8 "{{ $s }}" 9 {{- end }} 10 v1 "{{.ApiPath}}" 11 ) 12 13 func create{{.Name}}Req2Biz(req *v1.Create{{.Name}}Request) *biz.{{.Name}} { 14 {{- range $i, $f := .CreateFields }} 15 {{- $reqf := printf "req.%s" ($f.Name | ToCamel) }} 16 {{- if $f.FieldType.IsTime }} 17 {{ $f.Name }}, _ := time.Parse(time.DateTime, {{ $reqf }}) 18 {{- end }} 19 {{- end }} 20 return &biz.{{.Name}}{ 21 {{- range $i, $f := .CreateFields }} 22 {{- $reqf := printf "req.%s" ($f.Name | ToCamel) }} 23 {{- if $f.FieldType.IsTime }} 24 {{- $reqf = $f.Name }} 25 {{- end }} 26 {{ $f.Name | ToCamel }}: {{$reqf}}, 27 {{- end }} 28 } 29 } 30 31 func update{{.Name}}Req2Biz(req *v1.Update{{.Name}}Request) *biz.{{.Name}} { 32 {{- range $i, $f := .CreateFields }} 33 {{- $reqf := printf "req.%s" ($f.Name | ToCamel) }} 34 {{- if $f.FieldType.IsTime }} 35 {{ $f.Name }}, _ := time.Parse(time.DateTime, {{ $reqf }}) 36 {{- end }} 37 {{- end }} 38 return &biz.{{.Name}}{ 39 {{- $reqf := printf "req.%s" (.PrimaryField.Name | ToCamel) }} 40 {{ .PrimaryField.Name | ToCamel }}: {{$reqf}}, 41 {{- range $i, $f := .UpdateFields }} 42 {{- $reqf := printf "req.%s" ($f.Name | ToCamel) }} 43 {{- if $f.FieldType.IsTime }} 44 {{- $reqf = $f.Name }} 45 {{- end }} 46 {{ $f.Name | ToCamel }}: {{$reqf}}, 47 {{- end }} 48 } 49 } 50 51 func {{.Name | ToLowCamel}}Biz2Proto(item *biz.{{.Name}}) *v1.{{.Name}} { 52 return &v1.{{.Name}}{ 53 {{- range $i, $f := .Fields }} 54 {{- $reqf := printf "item.%s" ($f.Name | ToCamel) }} 55 {{- if $f.FieldType.IsTime }} 56 {{- $reqf = printf $f.FieldType.Biz2Proto $reqf }} 57 {{- end }} 58 {{ $f.Name | ToCamel }}: {{$reqf}}, 59 {{- end }} 60 } 61 } 62 63 func bulk{{.Name}}Biz2Proto(list []*biz.{{.Name}}) []*v1.{{.Name}} { 64 var target []*v1.{{.Name}} 65 for _, item := range list { 66 target = append(target, {{.Name | ToLowCamel}}Biz2Proto(item)) 67 } 68 return target 69 } 70 71 func param{{.Name}}Proto2Biz(req *v1.{{.Name}}Param) *biz.{{.Name}}Param { 72 if req == nil { 73 return &biz.{{.Name}}Param{} 74 } 75 {{- range $i, $f := .Fields.ParamFields }} 76 {{- if and $f.FieldType.IsTime (not $f.Type.IsIn) }} 77 {{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }} 78 var {{ $f.Name }} *time.Time 79 if {{ $reqf }} != nil { 80 item, err := time.Parse(time.DateTime, *{{$reqf}}) 81 if err == nil { 82 {{ $f.Name }} = &item 83 } else { 84 // TODO return error 85 } 86 } 87 {{- end }} 88 {{- end }} 89 90 {{- range $i, $f := .Fields.ParamFields }} 91 {{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }} 92 {{- if and $f.FieldType.IsTime $f.Type.IsIn }} 93 {{ $f.Name }} := make([]time.Time, 0, len({{$reqf}})) 94 for _, timestamp := range {{$reqf}} { 95 item, _ := time.Parse(time.DateTime, timestamp) 96 // TODO return error 97 {{ $f.Name }} = append({{ $f.Name }}, item) 98 } 99 {{- end }} 100 {{- end }} 101 102 return &biz.{{.Name}}Param{ 103 {{- range $i, $f := .Fields.ParamFields }} 104 {{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }} 105 {{- if $f.FieldType.IsTime }} 106 {{ $f.Name | ToCamel }}: {{$f.Name}}, 107 {{- else }} 108 {{ $f.Name | ToCamel }}: {{$reqf}}, 109 {{- end }} 110 {{- end }} 111 } 112 }