Explorar el Código

修复代码生成器的controller无参数Name的问题

fei.li hace 4 años
padre
commit
118ddbea56
Se han modificado 2 ficheros con 27 adiciones y 13 borrados
  1. 15 10
      code_gen/apigen/controller_gen.go
  2. 12 3
      code_gen/utils/utils.go

+ 15 - 10
code_gen/apigen/controller_gen.go

@@ -102,8 +102,8 @@ import (
 // _{{CamelizeStr .Name true}}
 // @Title _{{CamelizeStr .Name true}}
 // @Description {{.Desc}}         
-{{range .ParamList -}}
-// @Param	{{.Name}}    {{if ne .Type ""}}{{.Type}}{{else}}{{if Contains .Ref "$"}}models.{{CamelizeStr (TrimPrefix .Ref "$") true}}{{end}}{{end}}  {{.Must}}  "{{.Desc}}"
+{{range $i, $v := .ParamList -}}
+// @Param	{{ParamName $i $v}}    {{if ne $v.Type ""}}{{$v.Type}}{{else}}{{if Contains $v.Ref "$"}}models.{{CamelizeStr (TrimPrefix (TrimSuffix $v.Ref " array") "$") true}}{{end}}{{end}}  {{$v.Must}}  "{{$v.Desc}}"
 {{end -}}
 // @Success 200 {object} Account
 // @Failure 403 :id is empty
@@ -191,15 +191,20 @@ func {{$dataName}}_{{CamelizeStr .Name true}}(c *entitys.CtrlContext) {
 		c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
 	}
 {{else}}
-{{- range .ParamList}}
-{{- if Contains .Type "[]"}}
-	var {{.Name}} {{.Type}} 
-	c.Ctx.BindJSON(&{{.Name}})
-{{- else if Contains .Ref "$"}}
-	var {{.Name}} models.{{CamelizeStr (TrimPrefix .Ref "$") true}} 
-	c.Ctx.BindJSON(&{{.Name}})
+{{- range $i, $v := .ParamList}}
+{{- if Contains $v.Type "[]"}}
+	var {{ParamName $i $v}} {{$v.Type}} 
+	c.Ctx.BindJSON(&{{ParamName $i $v}})
+{{- else if Contains $v.Ref "$"}}
+	{{$refName := TrimPrefix $v.Ref "$" -}}
+	{{if Contains $v.Ref " array" -}}
+	var {{ParamName $i $v}} []models.{{CamelizeStr (TrimSuffix $refName " array") true}} 
+	{{- else -}}
+	var {{ParamName $i $v}} models.{{CamelizeStr $refName true}} 
+	{{- end}}
+	c.Ctx.BindJSON(&{{ParamName $i $v}})
 {{else}}
-	{{.Name}} := c.Ctx.Query("{{.Name}}")
+	{{$v.Name}} := c.Ctx.Query("{{$v.Name}}")
 {{- end}}
 {{- end}}
 

+ 12 - 3
code_gen/utils/utils.go

@@ -10,6 +10,7 @@ import (
 	"net/url"
 	"os"
 	"path/filepath"
+	"strconv"
 	"strings"
 	"time"
 	"unicode"
@@ -241,6 +242,13 @@ func NewResult(rType string, rName string, apigen func(templateData interface{},
 	}
 	return &gr
 }
+func ParamName(index int, param XmlApiParam) string {
+	str := param.Name
+	if str == "" {
+		str = "paramObj" + strconv.Itoa(index)
+	}
+	return str
+}
 
 func GenTemplate(templateText string, templateData interface{}, params map[string]interface{}) ([]byte, error) {
 	t, err := template.New("template").Funcs(template.FuncMap{
@@ -277,11 +285,12 @@ func GenTemplate(templateText string, templateData interface{}, params map[strin
 		},
 		"TrimPrefix": strings.TrimPrefix,
 		"TrimSuffix": strings.TrimSuffix,
-		"Contains": strings.Contains,
+		"Contains":   strings.Contains,
+		"ParamName":  ParamName,
 		"ParamsContainDT": func(params []XmlColumn) bool {
 			isContain := false
 			for _, v := range params {
-				if strings.ToLower(v.DbType) =="datetime" {
+				if strings.ToLower(v.DbType) == "datetime" {
 					isContain = true
 					break
 				}
@@ -294,7 +303,7 @@ func GenTemplate(templateText string, templateData interface{}, params map[strin
 				if i > 0 {
 					str += ", "
 				}
-				str += v.Name
+				str += ParamName(i, v)
 			}
 			return str
 		},