sys_auto_code.go 4.2 KB
Newer Older
1 2 3 4 5 6
package service

import (
	"gin-vue-admin/model"
	"gin-vue-admin/utils"
	"os"
7
	"text/template"
8 9 10 11
)

// @title    CreateTemp
// @description   函数的详细描述
12 13
// @auth                     (2020/04/05  20:22)
// @param     autoCode        model.AutoCodeStruct
14
// @return    err             error
Mr.奇淼('s avatar
Mr.奇淼( 已提交
15

16
func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
17 18 19 20 21 22 23 24 25 26 27 28 29
	basePath := "./resource/template"
	modelTmpl, err := template.ParseFiles(basePath + "/te/model.go.tpl")
	if err != nil {
		return err
	}
	apiTmpl, err := template.ParseFiles(basePath + "/te/api.go.tpl")
	if err != nil {
		return err
	}
	routerTmpl, err := template.ParseFiles(basePath + "/te/router.go.tpl")
	if err != nil {
		return err
	}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
30 31 32 33
	serviceTmpl, err := template.ParseFiles(basePath + "/te/service.go.tpl")
	if err != nil {
		return err
	}
34 35 36 37
	feapiTmpl, err := template.ParseFiles(basePath + "/fe/api.js.tpl")
	if err != nil {
		return err
	}
38 39 40 41
	feTableTmpl, err := template.ParseFiles(basePath + "/fe/table.vue.tpl")
	if err != nil {
		return err
	}
42 43 44 45 46 47 48 49
	readmeTmpl, err := template.ParseFiles(basePath + "/readme.txt.tpl")
	if err != nil {
		return err
	}
	//自动化总目录
	_autoCode := "./autoCode/"
	//自动化后台代码目录
	_te := "./autoCode/te/"
50 51 52 53
	_dir := _te + autoCode.PackageName
	_modeldir := _te + autoCode.PackageName + "/model"
	_apidir := _te + autoCode.PackageName + "/api"
	_routerdir := _te + autoCode.PackageName + "/router"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
54
	_servicedir := _te + autoCode.PackageName + "/service"
55 56
	//自动化前台代码目录
	_fe := "./autoCode/fe/"
57 58
	_fe_dir := _fe + autoCode.PackageName
	_fe_apidir := _fe + autoCode.PackageName + "/api"
59 60
	_fe_tabledir := _fe + autoCode.PackageName + "/table"
	err = utils.CreateDir(_autoCode, _te, _dir, _modeldir, _apidir, _routerdir, _servicedir, _fe, _fe_dir, _fe_apidir, _fe_tabledir)
61 62 63
	if err != nil {
		return err
	}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
64
	model, err := os.OpenFile(_te+autoCode.PackageName+"/model/"+autoCode.PackageName+".go", os.O_CREATE|os.O_WRONLY, 0755)
65 66 67
	if err != nil {
		return err
	}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
68
	api, err := os.OpenFile(_te+autoCode.PackageName+"/api/"+autoCode.PackageName+".go", os.O_CREATE|os.O_WRONLY, 0755)
69 70 71
	if err != nil {
		return err
	}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
72
	router, err := os.OpenFile(_te+autoCode.PackageName+"/router/"+autoCode.PackageName+".go", os.O_CREATE|os.O_WRONLY, 0755)
73 74 75
	if err != nil {
		return err
	}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
76 77 78 79 80
	service, err := os.OpenFile(_te+autoCode.PackageName+"/service/"+autoCode.PackageName+".go", os.O_CREATE|os.O_WRONLY, 0755)
	if err != nil {
		return err
	}
	feapi, err := os.OpenFile(_fe+autoCode.PackageName+"/api/"+autoCode.PackageName+".js", os.O_CREATE|os.O_WRONLY, 0755)
81 82 83
	if err != nil {
		return err
	}
84 85 86 87 88
	fetable, err := os.OpenFile(_fe+autoCode.PackageName+"/table/"+autoCode.PackageName+".vue", os.O_CREATE|os.O_WRONLY, 0755)
	if err != nil {
		return err
	}

89 90 91 92 93 94
	readme, err := os.OpenFile(_autoCode+"readme.txt", os.O_CREATE|os.O_WRONLY, 0755)
	if err != nil {
		return err
	}
	// 生成代码
	{
95
		err = modelTmpl.Execute(model, autoCode)
96 97 98
		if err != nil {
			return err
		}
99
		err = apiTmpl.Execute(api, autoCode)
100 101 102
		if err != nil {
			return err
		}
103
		err = routerTmpl.Execute(router, autoCode)
104 105 106
		if err != nil {
			return err
		}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
107 108 109 110
		err = serviceTmpl.Execute(service, autoCode)
		if err != nil {
			return err
		}
111
		err = feapiTmpl.Execute(feapi, autoCode)
112 113 114
		if err != nil {
			return err
		}
115 116 117 118
		err = feTableTmpl.Execute(fetable, autoCode)
		if err != nil {
			return err
		}
119
		err = readmeTmpl.Execute(readme, autoCode)
120 121 122 123 124 125 126
		if err != nil {
			return err
		}
	}
	_ = model.Close()
	_ = api.Close()
	_ = router.Close()
Mr.奇淼('s avatar
Mr.奇淼( 已提交
127
	_ = service.Close()
128
	_ = feapi.Close()
129
	_ = fetable.Close()
130 131
	_ = readme.Close()
	fileList := []string{
Mr.奇淼('s avatar
Mr.奇淼( 已提交
132 133 134 135 136
		_te + autoCode.PackageName + "/model/" + autoCode.PackageName + ".go",
		_te + autoCode.PackageName + "/api/" + autoCode.PackageName + ".go",
		_te + autoCode.PackageName + "/router/" + autoCode.PackageName + ".go",
		_te + autoCode.PackageName + "/service/" + autoCode.PackageName + ".go",
		_fe + autoCode.PackageName + "/api/" + autoCode.PackageName + ".js",
137 138
		_fe + autoCode.PackageName + "/table/" + autoCode.PackageName + ".vue",

139 140 141 142 143 144 145 146 147 148 149 150
		_autoCode + "readme.txt",
	}
	err = utils.ZipFiles("./ginvueadmin.zip", fileList, ".", ".")
	if err != nil {
		return err
	}
	err = os.RemoveAll(_autoCode)
	if err != nil {
		return err
	}
	return nil
}