Ver código fonte

完善类型生成逻辑

paddy 4 anos atrás
pai
commit
ffde855c54
3 arquivos alterados com 19 adições e 11 exclusões
  1. 4 4
      code_gen/apigen/bean_gen.go
  2. 2 1
      code_gen/apigen/model_gen.go
  3. 13 6
      code_gen/utils/utils.go

+ 4 - 4
code_gen/apigen/bean_gen.go

@@ -5,16 +5,16 @@ import "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/utils"
 const beanTemplate = `
 package models
 import (
-//__import_packages__
-) 
+	//__import_packages__
+)
 
 {{$structName := CamelizeStr .data.Name true}}
 //{{.data.Desc}}
 type {{$structName}} struct {
-	
+	{{if ne .data.Inher ""}}{{FixType .data.Inher}}{{end}}
 	{{range .data.PropList -}}
 	//{{.Caption}}
-	{{CamelizeStr .Name true}}   {{.Type}} {{Backquote}}json:"{{.Name}}"{{Backquote}}
+	{{CamelizeStr .Name true}}   {{FixType .Type}} {{Backquote}}json:"{{.Name}}"{{Backquote}}
 	{{end}}
 }
 

+ 2 - 1
code_gen/apigen/model_gen.go

@@ -5,7 +5,8 @@ import "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/utils"
 const modelTemplate = `
 package models
 import (
-	{{if ParamsContainDT .data.ColumnList}}sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"{{- end}}
+	{{range $i, $v := ToImports .data.ColumnList}}{{$v}}
+    {{end}}
 	//__import_packages__
 )
 {{$structName := CamelizeStr .data.Name true}}

+ 13 - 6
code_gen/utils/utils.go

@@ -305,15 +305,22 @@ func GenTemplate(templateText string, templateData interface{}, params map[strin
 		"TrimSuffix": strings.TrimSuffix,
 		"Contains":   strings.Contains,
 		"ParamName":  ParamName,
-		"ParamsContainDT": func(params []XmlColumn) bool {
-			isContain := false
+		"ToImports": func(params []XmlColumn) []template.HTML {
+			importToExist := make(map[template.HTML]bool)
+			ret := make([]template.HTML, 0)
 			for _, v := range params {
-				if strings.ToLower(v.Type) == "local_time" || strings.ToLower(v.DbType) == "datetime" {
-					isContain = true
-					break
+				var importName template.HTML
+				if strings.ToLower(v.Type) == "local_time" {
+					importName = template.HTML(`sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"`)
+				} else if strings.ToLower(v.Type) == "datetime" {
+					importName = template.HTML(`"time"`)
+				}
+				if importName != "" && !importToExist[importName] {
+					ret = append(ret, importName)
+					importToExist[importName] = true
 				}
 			}
-			return isContain
+			return ret
 		},
 		"AllParams": func(params []XmlApiParam) string {
 			str := ""