Răsfoiți Sursa

改用模板引擎生成代码

gujiheimao 2 ani în urmă
părinte
comite
08ca3c2f62
3 a modificat fișierele cu 99 adăugiri și 2 ștergeri
  1. 22 2
      main.go
  2. 77 0
      tmpl/dao.go.template
  3. 0 0
      tmpl/struct.go.template

+ 22 - 2
main.go

@@ -20,7 +20,9 @@ func main() {
 	//util.MysqlToBaseCRUDRouter()
 	//执行生成,vue
 	//util.MysqlToVueApi()
-	LoadStructTemplate("E:\\project\\kkc\\go-xorm-create\\domain\\DoMain.go")
+
+	//TODO 结构体 MTables 中的字段不允许外界访问:aaBbName
+	LoadDaoTemplate("E:\\project\\kkc\\go-xorm-create\\domain\\Dao.go")
 }
 
 // LoadStructTemplate 加载结构体生成模板
@@ -31,7 +33,25 @@ func LoadStructTemplate(url string) {
 
 	writer := bufio.NewWriter(file)
 
-	tmpl, err := template.ParseFiles("./tmpl/sturct.go.template")
+	tmpl, err := template.ParseFiles("./tmpl/struct.go.template")
+	if err != nil {
+		panic(err)
+	}
+	err = tmpl.Execute(writer, util.MTables)
+	if err != nil {
+		panic(err)
+	}
+}
+
+// LoadDaoTemplate 加载Dao生成模板
+func LoadDaoTemplate(url string) {
+	os.Truncate(url, 0)
+	file, _ := os.OpenFile(url, os.O_CREATE|os.O_RDWR, 0666)
+	defer file.Close()
+
+	writer := bufio.NewWriter(file)
+
+	tmpl, err := template.ParseFiles("./tmpl/dao.go.template")
 	if err != nil {
 		panic(err)
 	}

+ 77 - 0
tmpl/dao.go.template

@@ -0,0 +1,77 @@
+package manage
+
+import (
+	"demo/configs"
+	"demo/data/domain"
+	"demo/data/domain/vo"
+)
+{{range .}}
+func Get{{.AaBbName}}ById(id int64) (domain.{{.AaBbName}}, error) {
+	var {{.aaBbName}} domain.{{.AaBbName}}
+	_, err := configs.Engine.Where("id = ?", id).Get(&{{.aaBbName}})
+	if err != nil {
+		return {{.aaBbName}}, err
+	}
+	return {{.aaBbName}}, nil
+}
+
+func Get{{.AaBbName}}ListInId(ids []int64) ([]domain.{{.AaBbName}}, error) {
+	rows, err := configs.Engine.In("id", ids).Rows(&domain.{{.AaBbName}}{})
+	if err != nil {
+		return make([]domain.{{.AaBbName}}, 0), err
+	}
+	defer rows.Close()
+	var list []domain.{{.AaBbName}}
+	for rows.Next() {
+		var u domain.{{.AaBbName}}
+		list = append(list, u)
+	}
+	return list, nil
+}
+
+func Get{{.AaBbName}}List({{.aaBbName}} domain.{{.AaBbName}}, pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.{{.AaBbName}}
+	Count, err := configs.Engine.Limit(pageSize, (pageNum-1)*pageSize).Desc("id").FindAndCount(&arr, &{{.aaBbName}})
+	var vo vo.BaseListVo
+	if err != nil {
+		return vo, err
+	}
+	if err != nil {
+		return vo, err
+	}
+	vo.PageNum = pageNum
+	vo.PageSize = pageSize
+	vo.List = make([]any, len(arr))
+	for i, v := range arr {
+		vo.List[i] = v
+	}
+	vo.Total = int(Count)
+	return vo, nil
+}
+
+func Save{{.AaBbName}}({{.aaBbName}} *domain.{{.AaBbName}}) (domain.{{.AaBbName}}, error) {
+	_, err := configs.Engine.Insert(&{{.aaBbName}})
+	if err != nil {
+		return *{{.aaBbName}}, err
+	}
+	return *{{.aaBbName}}, nil
+}
+
+func Set{{.AaBbName}}({{.aaBbName}}Map map[string]interface{}, id int64) (domain.{{.AaBbName}}, bool, error) {
+	var {{.aaBbName}} domain.{{.AaBbName}}
+	_, err := configs.Engine.Table("{{.aaBbName}}").Where("id = ?", id).Update({{.aaBbName}}Map)
+	if err != nil {
+		return {{.aaBbName}}, false, err
+	}
+	return {{.aaBbName}}, true, nil
+}
+
+func Delete{{.AaBbName}}(id int64) bool {
+	var {{.aaBbName}} domain.{{.AaBbName}}
+	i, err := configs.Engine.Where("id = ?", id).Delete(&{{.aaBbName}})
+	if err != nil {
+		return false
+	}
+	return i > 0
+}
+{{end}}

+ 0 - 0
tmpl/sturct.go.template → tmpl/struct.go.template