|
|
package autoCodeModel
import ( "gin-vue-admin/tools" "html/template" "os" )
// 初始版本自动化代码工具
type AutoCodeStruct struct { StructName string `json:"structName"` PackageName string `json:"packageName"` Abbreviation string `json:"abbreviation"` Fields []Field `json:"fields"` }
type Field struct { FieldName string `json:"fieldName"` FieldType string `json:"fieldType"` FieldJson string `json:"fieldJson"` ColumnName string `json:"columnName"` }
func (a *AutoCodeStruct) CreateTemp() (err error) { basePath := "./tpl" 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 } feapiTmpl, err := template.ParseFiles(basePath + "/fe/api.js.tpl") if err != nil { return err } readmeTmpl, err := template.ParseFiles(basePath + "/readme.txt.tpl") if err != nil { return err } //自动化总目录
_autoCode := "./autoCode/" //自动化后台代码目录
_te := "./autoCode/te/" _dir := _te + a.PackageName _modeldir := _te + a.PackageName + "/model" _apidir := _te + a.PackageName + "/api" _routerdir := _te + a.PackageName + "/router" //自动化前台代码目录
_fe := "./autoCode/fe/" _fe_dir := _fe + a.PackageName _fe_apidir := _fe + a.PackageName + "/api" err = createDir(_autoCode, _te, _dir, _modeldir, _apidir, _routerdir, _fe, _fe_dir, _fe_apidir) if err != nil { return err } model, err := os.OpenFile(_te+a.PackageName+"/model/model.go", os.O_CREATE|os.O_WRONLY, 0755) if err != nil { return err } api, err := os.OpenFile(_te+a.PackageName+"/api/api.go", os.O_CREATE|os.O_WRONLY, 0755) if err != nil { return err } router, err := os.OpenFile(_te+a.PackageName+"/router/router.go", os.O_CREATE|os.O_WRONLY, 0755) if err != nil { return err } feapi, err := os.OpenFile(_fe+a.PackageName+"/api/api.js", os.O_CREATE|os.O_WRONLY, 0755) if err != nil { return err } readme, err := os.OpenFile(_autoCode+"readme.txt", os.O_CREATE|os.O_WRONLY, 0755) if err != nil { return err } // 生成代码
{ err = modelTmpl.Execute(model, a) if err != nil { return err } err = apiTmpl.Execute(api, a) if err != nil { return err } err = routerTmpl.Execute(router, a) if err != nil { return err } err = feapiTmpl.Execute(feapi, a) if err != nil { return err } err = readmeTmpl.Execute(readme, a) if err != nil { return err } } _ = model.Close() _ = api.Close() _ = router.Close() _ = feapi.Close() _ = readme.Close() fileList := []string{ _te + a.PackageName + "/model/model.go", _te + a.PackageName + "/api/api.go", _te + a.PackageName + "/router/router.go", _fe + a.PackageName + "/api/api.js", _autoCode + "readme.txt", } err = tools.ZipFiles("./ginvueadmin.zip", fileList, ".", ".") if err != nil { return err } err = os.RemoveAll(_autoCode) if err != nil { return err } return nil }
//批量创建文件夹
func createDir(dirs ...string) (err error) { for _, v := range dirs { exist, err := tools.PathExists(v) if err != nil { //log.L.Info(fmt.Sprintf("get dir error![%v]\n", err))
return err } if exist { //log.L.Info(fmt.Sprintf("has dir![%v]\n"+_dir))
} else { //log.L.Info(fmt.Sprintf("no dir![%v]\n"+_dir))
// 创建文件夹
err = os.Mkdir(v, os.ModePerm) if err != nil { //log.L.Error(fmt.Sprintf("mkdir error![%v]\n",err))
} else { //log.L.Info("mkdir success!\n")
} } } return err }
|