|
@@ -19,10 +19,56 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
const (
|
|
const (
|
|
- autoPath = "autoCode/"
|
|
|
|
|
|
+ autoPath = "autocode_template/"
|
|
basePath = "resource/template"
|
|
basePath = "resource/template"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+var injectionPaths []injectionMeta
|
|
|
|
+
|
|
|
|
+func Init() {
|
|
|
|
+ if len(injectionPaths) != 0 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ injectionPaths = []injectionMeta{
|
|
|
|
+ {
|
|
|
|
+ path: filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
+ global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SInitialize, "gorm.go"),
|
|
|
|
+ funcName: "MysqlTables",
|
|
|
|
+ structNameF: "autocode.%s{},",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ path: filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
+ global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SInitialize, "router.go"),
|
|
|
|
+ funcName: "Routers",
|
|
|
|
+ structNameF: "autocodeRouter.Init%sRouter(PrivateGroup)",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ path: filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
+ global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SApi, "enter.go"),
|
|
|
|
+ funcName: "ApiGroup",
|
|
|
|
+ structNameF: "%sApi",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ path: filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
+ global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SRouter, "enter.go"),
|
|
|
|
+ funcName: "RouterGroup",
|
|
|
|
+ structNameF: "%sRouter",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ path: filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
+ global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SService, "enter.go"),
|
|
|
|
+ funcName: "ServiceGroup",
|
|
|
|
+ structNameF: "%sService",
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type injectionMeta struct {
|
|
|
|
+ path string
|
|
|
|
+ funcName string
|
|
|
|
+ structNameF string // 带格式化的
|
|
|
|
+}
|
|
|
|
+
|
|
type tplData struct {
|
|
type tplData struct {
|
|
template *template.Template
|
|
template *template.Template
|
|
locationPath string
|
|
locationPath string
|
|
@@ -142,6 +188,7 @@ func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruc
|
|
idBf.WriteString(";")
|
|
idBf.WriteString(";")
|
|
}
|
|
}
|
|
if autoCode.AutoMoveFile { // 判断是否需要自动转移
|
|
if autoCode.AutoMoveFile { // 判断是否需要自动转移
|
|
|
|
+ Init()
|
|
for index := range dataList {
|
|
for index := range dataList {
|
|
autoCodeService.addAutoMoveFile(&dataList[index])
|
|
autoCodeService.addAutoMoveFile(&dataList[index])
|
|
}
|
|
}
|
|
@@ -150,23 +197,10 @@ func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruc
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- initializeGormFilePath := filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
- global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SInitialize, "gorm.go")
|
|
|
|
- initializeRouterFilePath := filepath.Join(global.GVA_CONFIG.AutoCode.Root,
|
|
|
|
- global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.SInitialize, "router.go")
|
|
|
|
- err = utils.AutoInjectionCode(initializeGormFilePath, "MysqlTables", "model."+autoCode.StructName+"{},")
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
- err = utils.AutoInjectionCode(initializeRouterFilePath, "Routers", "router.Init"+autoCode.StructName+"Router(PrivateGroup)")
|
|
|
|
|
|
+ err = injectionCode(autoCode.StructName, &injectionCodeMeta)
|
|
if err != nil {
|
|
if err != nil {
|
|
- return err
|
|
|
|
|
|
+ return
|
|
}
|
|
}
|
|
-
|
|
|
|
- injectionCodeMeta.WriteString(fmt.Sprintf("%s@%s@%s", initializeGormFilePath, "MysqlTables", "model."+autoCode.StructName+"{},"))
|
|
|
|
- injectionCodeMeta.WriteString(";")
|
|
|
|
- injectionCodeMeta.WriteString(fmt.Sprintf("%s@%s@%s", initializeRouterFilePath, "Routers", "router.Init"+autoCode.StructName+"Router(PrivateGroup)"))
|
|
|
|
-
|
|
|
|
// 保存生成信息
|
|
// 保存生成信息
|
|
for _, data := range dataList {
|
|
for _, data := range dataList {
|
|
if len(data.autoMoveFilePath) != 0 {
|
|
if len(data.autoMoveFilePath) != 0 {
|
|
@@ -180,7 +214,6 @@ func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruc
|
|
_ = utils.Reload()
|
|
_ = utils.Reload()
|
|
}()
|
|
}()
|
|
}
|
|
}
|
|
- //return errors.New("创建代码成功并移动文件成功")
|
|
|
|
} else { // 打包
|
|
} else { // 打包
|
|
if err = utils.ZipFiles("./ginvueadmin.zip", fileList, ".", "."); err != nil {
|
|
if err = utils.ZipFiles("./ginvueadmin.zip", fileList, ".", "."); err != nil {
|
|
return err
|
|
return err
|
|
@@ -414,7 +447,6 @@ func (autoCodeService *AutoCodeService) getNeedList(autoCode *system.AutoCodeStr
|
|
// 生成文件路径,填充 autoCodePath 字段,readme.txt.tpl不符合规则,需要特殊处理
|
|
// 生成文件路径,填充 autoCodePath 字段,readme.txt.tpl不符合规则,需要特殊处理
|
|
// resource/template/web/api.js.tpl -> autoCode/web/autoCode.PackageName/api/autoCode.PackageName.js
|
|
// resource/template/web/api.js.tpl -> autoCode/web/autoCode.PackageName/api/autoCode.PackageName.js
|
|
// resource/template/readme.txt.tpl -> autoCode/readme.txt
|
|
// resource/template/readme.txt.tpl -> autoCode/readme.txt
|
|
- autoPath := "autoCode/"
|
|
|
|
for index, value := range dataList {
|
|
for index, value := range dataList {
|
|
trimBase := strings.TrimPrefix(value.locationPath, basePath+"/")
|
|
trimBase := strings.TrimPrefix(value.locationPath, basePath+"/")
|
|
if trimBase == "readme.txt.tpl" {
|
|
if trimBase == "readme.txt.tpl" {
|
|
@@ -447,3 +479,15 @@ func (autoCodeService *AutoCodeService) getNeedList(autoCode *system.AutoCodeStr
|
|
}
|
|
}
|
|
return dataList, fileList, needMkdir, err
|
|
return dataList, fileList, needMkdir, err
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// injectionCode 封装代码注入
|
|
|
|
+func injectionCode(structName string, bf *strings.Builder) error {
|
|
|
|
+ for _, meta := range injectionPaths {
|
|
|
|
+ code := fmt.Sprintf(meta.structNameF, structName)
|
|
|
|
+ if err := utils.AutoInjectionCode(meta.path, meta.funcName, code); err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ bf.WriteString(fmt.Sprintf("%s@%s@%s;", meta.path, meta.funcName, code))
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+}
|