feat: 模板配置可以读取系统原生携带的文件模板

This commit is contained in:
pixelmaxQM
2024-10-30 20:32:04 +08:00
parent 08496c2c61
commit 255f138bdb
9 changed files with 81 additions and 8 deletions

View File

@@ -117,10 +117,83 @@ func (s *autoCodePackage) Delete(ctx context.Context, info common.GetById) error
// @author: [piexlmax](https://github.com/piexlmax)
// @author: [SliverHorn](https://github.com/SliverHorn)
func (s *autoCodePackage) All(ctx context.Context) (entities []model.SysAutoCodePackage, err error) {
var step uint = 10000
server := make([]model.SysAutoCodePackage, 0)
plugin := make([]model.SysAutoCodePackage, 0)
serverPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service")
pluginPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin")
serverDir, err := os.ReadDir(serverPath)
if err != nil {
return nil, errors.Wrap(err, "读取service文件夹失败!")
}
pluginDir, err := os.ReadDir(pluginPath)
if err != nil {
return nil, errors.Wrap(err, "读取plugin文件夹失败!")
}
for i := 0; i < len(serverDir); i++ {
if serverDir[i].IsDir() {
serverPackage := model.SysAutoCodePackage{PackageName: serverDir[i].Name(), Template: "package", Label: serverDir[i].Name() + "包", Desc: "系统自动读取" + serverDir[i].Name() + "包"}
serverPackage.ID = step
server = append(server, serverPackage)
step++
}
}
for i := 0; i < len(pluginDir); i++ {
if pluginDir[i].IsDir() {
dirNameMap := map[string]bool{
"api": true,
"config": true,
"initialize": true,
"model": true,
"plugin": true,
"router": true,
"service": true,
}
dir, e := os.ReadDir(filepath.Join(pluginPath, pluginDir[i].Name()))
if e != nil {
return nil, errors.Wrap(err, "读取plugin文件夹失败!")
}
//dir目录需要包含所有的dirNameMap
for k := 0; k < len(dir); k++ {
if dir[k].IsDir() {
if _, ok := dirNameMap[dir[k].Name()]; ok {
delete(dirNameMap, dir[k].Name())
}
}
}
if len(dirNameMap) != 0 {
continue
}
pluginPackage := model.SysAutoCodePackage{PackageName: pluginDir[i].Name(), Template: "plugin", Label: pluginDir[i].Name() + "插件", Desc: "系统自动读取" + pluginDir[i].Name() + "插件使用前请确认是否为v2版本插件"}
pluginPackage.ID = step
plugin = append(plugin, pluginPackage)
step++
}
}
err = global.GVA_DB.WithContext(ctx).Find(&entities).Error
if err != nil {
return nil, errors.Wrap(err, "获取所有包失败!")
}
entitiesMap := make(map[string]model.SysAutoCodePackage)
for i := 0; i < len(entities); i++ {
entitiesMap[entities[i].PackageName] = entities[i]
}
for i := 0; i < len(server); i++ {
if _, ok := entitiesMap[server[i].PackageName]; !ok {
if server[i].Template == "package" {
entities = append(entities, server[i])
}
}
}
for i := 0; i < len(plugin); i++ {
if _, ok := entitiesMap[plugin[i].PackageName]; !ok {
if plugin[i].Template == "plugin" {
entities = append(entities, plugin[i])
}
}
}
return entities, nil
}