Просмотр исходного кода

完成构建配置代码结构的优化

reghao 4 лет назад
Родитель
Сommit
8cbde2df98
15 измененных файлов с 164 добавлено и 139 удалено
  1. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/WebhookController.java
  2. 0 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/BuildDirController.java
  3. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/CompilerConfigController.java
  4. 9 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/PackerConfigController.java
  5. 11 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/RepoAuthConfigController.java
  6. 0 88
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/BuildDirLocal.java
  7. 16 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/LocalBuildDir.java
  8. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppIntegrate.java
  9. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/BuilderUtil.java
  10. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/BuildDirService.java
  11. 100 21
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/BuildDirServiceImpl.java
  12. 5 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/RepoAuthConfigServiceImpl.java
  13. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/rbac/controller/page/HomePageController.java
  14. 2 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/DmasterLifecycle.java
  15. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/exception/FilterExceptionHandler.java

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/WebhookController.java

@@ -4,6 +4,7 @@ import cn.reghao.jdkutil.result.WebBody;
 import cn.reghao.jdkutil.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.service.BuildDeployDispatcher;
 import com.google.gson.JsonObject;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @Slf4j
 @RestController
+@Api(tags = "Webhook 接口")
 @RequestMapping("/api/hook")
 public class WebhookController {
     private BuildDeployDispatcher buildDeployDispatcher;

+ 0 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/BuildDirController.java

@@ -8,7 +8,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/CompilerConfigController.java

@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/app/config/build/compiler")
 public class CompilerConfigController {
-    private CompilerConfigService compilerConfigService;
+    private final CompilerConfigService compilerConfigService;
 
     public CompilerConfigController(CompilerConfigService compilerConfigService) {
         this.compilerConfigService = compilerConfigService;
@@ -29,7 +29,13 @@ public class CompilerConfigController {
     @ApiOperation(value = "添加/修改应用编译配置")
     @PostMapping(value = "/compiler", produces = MediaType.APPLICATION_JSON_VALUE)
     public String addCompileConfig(@Validated CompilerConfig compilerConfig) {
-        Result result = compilerConfigService.add(compilerConfig);
+        Integer id = compilerConfig.getId();
+        Result result;
+        if (id == null) {
+            result = compilerConfigService.add(compilerConfig);
+        } else {
+            result = compilerConfigService.modify(compilerConfig);
+        }
         return WebBody.result(result);
     }
 

+ 9 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/PackerConfigController.java

@@ -22,16 +22,22 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/app/config/build/packer")
 public class PackerConfigController {
-    private PackerConfigService packerConfigService;
+    private final PackerConfigService packerConfigService;
 
     public PackerConfigController(PackerConfigService packerConfigService) {
         this.packerConfigService = packerConfigService;
     }
 
-    @ApiOperation(value = "添加应用打包配置")
+    @ApiOperation(value = "添加/修改应用打包配置")
     @PostMapping(value = "/packer", produces = MediaType.APPLICATION_JSON_VALUE)
     public String addPackConfig(@Validated PackerConfig packerConfig) {
-        Result result = packerConfigService.add(packerConfig);
+        Integer id = packerConfig.getId();
+        Result result;
+        if (id == null) {
+            result = packerConfigService.add(packerConfig);
+        } else {
+            result = packerConfigService.modify(packerConfig);
+        }
         return WebBody.result(result);
     }
 

+ 11 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/config/RepoAuthConfigController.java

@@ -2,6 +2,7 @@ package cn.reghao.autodop.dmaster.app.controller.config;
 
 import cn.reghao.autodop.dmaster.app.model.po.config.build.RepoAuthConfig;
 import cn.reghao.autodop.dmaster.app.service.config.RepoAuthConfigService;
+import cn.reghao.jdkutil.result.Result;
 import cn.reghao.jdkutil.result.WebBody;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -19,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/app/config/build/repoauth")
 public class RepoAuthConfigController {
-    private RepoAuthConfigService repoAuthConfigService;
+    private final RepoAuthConfigService repoAuthConfigService;
 
     public RepoAuthConfigController(RepoAuthConfigService repoAuthConfigService) {
         this.repoAuthConfigService = repoAuthConfigService;
@@ -28,8 +29,15 @@ public class RepoAuthConfigController {
     @ApiOperation(value = "添加/修改仓库认证配置")
     @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
     public String addRepoConfig(@Validated RepoAuthConfig repoAuth) {
-        repoAuthConfigService.add(repoAuth);
-        return WebBody.success();
+        Integer id = repoAuth.getId();
+        Result result;
+        if (id == null) {
+            result = repoAuthConfigService.add(repoAuth);
+        } else {
+            result = repoAuthConfigService.modify(repoAuth);
+        }
+
+        return WebBody.result(result);
     }
 
     @ApiOperation(value = "删除仓库认证配置")

+ 0 - 88
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/BuildDirLocal.java

@@ -1,88 +0,0 @@
-package cn.reghao.autodop.dmaster.app.model.po.config.build;
-
-import cn.reghao.autodop.common.machine.disk.Disk;
-import cn.reghao.autodop.common.machine.disk.DiskInfo;
-import cn.reghao.autodop.common.util.ByteConverter;
-import cn.reghao.autodop.common.util.ByteType;
-import cn.reghao.autodop.common.util.FileOps;
-import cn.reghao.autodop.dmaster.spring.DmasterLifecycle;
-import cn.reghao.jdkutil.MachineId;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
-
-/**
- * 本地构建目录
- *
- * @author reghao
- * @date 2020-03-09 14:36:41
- */
-@Slf4j
-public class BuildDirLocal {
-    // 本地仓库
-    public static String localRepo;
-    // 编译目录
-    public static String compileDir;
-    // 应用打包后存放的目录
-    public static String packDir;
-    private static ByteConverter converter = new ByteConverter();
-    private static Disk disk = new Disk();
-
-    public static BuildDir setDefaultBuildDir() {
-        String home = System.getProperty("user.home");
-        return setBuildDir(home + "/autodop");
-    }
-
-    public static BuildDir setBuildDir(String dirPath) {
-        DiskInfo diskInfo = disk.diskInfo(dirPath);
-        BuildDir buildDir = new BuildDir();
-        buildDir.setMachineId(MachineId.id());
-        buildDir.setMachineIpv4(MachineId.ipv4());
-        buildDir.setDirPath(dirPath);
-        buildDir.setMountedOn(diskInfo.getMountedOn());
-        buildDir.setTotal(converter.convert(ByteType.Bytes, diskInfo.getSize()));
-        buildDir.setUsed(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getUsed()));
-        buildDir.setAvail(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getAvail()));
-        buildDir.setIsDelete(false);
-
-        createLocalBuildDir(buildDir);
-        return buildDir;
-    }
-
-    private static void createLocalBuildDir(BuildDir buildDir) {
-        setLocalBuildDir(buildDir);
-        File localRepo = new File(BuildDirLocal.localRepo);
-        if (!localRepo.exists() && !FileOps.mkdirs(localRepo)) {
-            throw new IllegalArgumentException(localRepo.getAbsolutePath() + " 不存在且创建失败");
-        }
-
-        File compileDir = new File(BuildDirLocal.compileDir);
-        if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
-            throw new IllegalArgumentException(compileDir.getAbsolutePath() + " 不存在且创建失败");
-        }
-
-        File packDir = new File(BuildDirLocal.packDir);
-        if (!packDir.exists() && !FileOps.mkdirs(packDir)) {
-            throw new IllegalArgumentException(packDir.getAbsolutePath() + " 不存在且创建失败");
-        }
-    }
-
-    private static void setLocalBuildDir(BuildDir buildDir) {
-        BuildDirLocal.localRepo = buildDir.getDirPath() + "/local-repo";
-        BuildDirLocal.compileDir = buildDir.getDirPath() + "/compile-dir";
-        BuildDirLocal.packDir = buildDir.getDirPath() + "/pack-dir";
-    }
-
-    public static void refreshBuildDir(BuildDir buildDir) {
-        setLocalBuildDir(buildDir);
-        String dirPath = buildDir.getDirPath();
-        DiskInfo diskInfo = disk.diskInfo(dirPath);
-        if (diskInfo != null) {
-            buildDir.setUsed(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getUsed()));
-            buildDir.setAvail(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getAvail()));
-        } else {
-            log.error("{} 不合法,autodop-master 启动失败", dirPath);
-            System.exit(1);
-        }
-    }
-}

+ 16 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/LocalBuildDir.java

@@ -0,0 +1,16 @@
+package cn.reghao.autodop.dmaster.app.model.po.config.build;
+
+/**
+ * 本地构建目录
+ *
+ * @author reghao
+ * @date 2020-03-09 14:36:41
+ */
+public class LocalBuildDir {
+    // 本地仓库
+    public static String localRepo;
+    // 编译目录
+    public static String compileDir;
+    // 应用打包后存放的目录
+    public static String packDir;
+}

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppIntegrate.java

@@ -19,7 +19,7 @@ import cn.reghao.autodop.dmaster.app.service.bd.tools.repo.CodeUpdater;
 import cn.reghao.autodop.dmaster.app.service.bd.tools.repo.CommitInfo;
 import cn.reghao.autodop.dmaster.app.service.bd.tools.repo.GitImpl;
 import cn.reghao.autodop.dmaster.app.service.bd.tools.repo.SvnImpl;
-import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDirLocal;
+import cn.reghao.autodop.dmaster.app.model.po.config.build.LocalBuildDir;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -72,9 +72,9 @@ public class AppIntegrate {
     }
 
     private void initLocalDir() {
-        appLocalRepo = BuildDirLocal.localRepo + "/" + app.getAppId();
-        appCompileDir = BuildDirLocal.compileDir + "/" + app.getAppId();
-        appPackDir = BuildDirLocal.packDir + "/" + app.getAppId();
+        appLocalRepo = LocalBuildDir.localRepo + "/" + app.getAppId();
+        appCompileDir = LocalBuildDir.compileDir + "/" + app.getAppId();
+        appPackDir = LocalBuildDir.packDir + "/" + app.getAppId();
     }
 
     /**

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/BuilderUtil.java

@@ -5,7 +5,7 @@ import cn.reghao.autodop.common.util.text.ReplaceCharacter;
 import cn.reghao.autodop.dmaster.app.model.constant.AppType;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.dmaster.app.model.po.config.ProjConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDirLocal;
+import cn.reghao.autodop.dmaster.app.model.po.config.build.LocalBuildDir;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
@@ -24,7 +24,7 @@ public class BuilderUtil {
      * @date 2019-12-03 上午9:55
      */
     public static void copyToCompileDir(String appLocalRepo, AppConfig app) throws IOException {
-        String appCompileDir = BuildDirLocal.compileDir + "/" + app.getAppId();
+        String appCompileDir = LocalBuildDir.compileDir + "/" + app.getAppId();
         File compileDir = new File(appCompileDir);
         if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
             throw new IOException(compileDir + "不存在");

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/BuildDirService.java

@@ -8,7 +8,8 @@ import cn.reghao.jdkutil.result.Result;
  * @date 2021-09-17 15:56:49
  */
 public interface BuildDirService {
-    void add(BuildDir buildDir);
+    void createAndSave();
+    void refresh(BuildDir buildDir);
     Result modify(BuildDir buildDir);
     BuildDir get(String machineId);
 }

+ 100 - 21
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/BuildDirServiceImpl.java

@@ -1,14 +1,19 @@
 package cn.reghao.autodop.dmaster.app.service.config.impl;
 
 import cn.reghao.autodop.common.machine.disk.Disk;
+import cn.reghao.autodop.common.machine.disk.DiskInfo;
+import cn.reghao.autodop.common.util.ByteConverter;
+import cn.reghao.autodop.common.util.ByteType;
 import cn.reghao.autodop.common.util.FileOps;
 import cn.reghao.autodop.dmaster.app.db.crud.config.BuildDirCrud;
 import cn.reghao.autodop.dmaster.app.db.query.config.BuildDirQuery;
 import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDir;
-import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDirLocal;
+import cn.reghao.autodop.dmaster.app.model.po.config.build.LocalBuildDir;
 import cn.reghao.autodop.dmaster.app.service.config.BuildDirService;
+import cn.reghao.jdkutil.MachineId;
 import cn.reghao.jdkutil.result.Result;
 import cn.reghao.jdkutil.result.ResultStatus;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
@@ -19,25 +24,95 @@ import java.util.Objects;
  * @author reghao
  * @date 2021-09-17 15:56:49
  */
+@Slf4j
 @Service
 public class BuildDirServiceImpl implements BuildDirService {
-    private BuildDirQuery buildDirQuery;
-    private BuildDirCrud buildDirCrud;
-    private Disk disk;
+    private final BuildDirQuery buildDirQuery;
+    private final BuildDirCrud buildDirCrud;
+    private final Disk disk;
+    private final ByteConverter converter;
 
     public BuildDirServiceImpl(BuildDirQuery buildDirQuery, BuildDirCrud buildDirCrud, Disk disk) {
         this.buildDirQuery = buildDirQuery;
         this.buildDirCrud = buildDirCrud;
         this.disk = disk;
+        this.converter = new ByteConverter();
     }
 
     @Override
-    public void add(BuildDir buildDir) {
-        buildDirCrud.save(buildDir);
+    public void createAndSave() {
+        try {
+            BuildDir buildDir = defaultLocalBuildDir();
+            buildDirCrud.save(buildDir);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("创建本地构建目录失败: {},autodop-dmaster 结束运行", e.getMessage());
+            System.exit(1);
+        }
+    }
+
+    private BuildDir defaultLocalBuildDir() throws Exception {
+        String home = System.getProperty("user.home");
+        String localBuildDir = String.format("%s/autodop", home);
+        return createLocalBuildDir(localBuildDir);
+    }
+
+    private BuildDir createLocalBuildDir(String localBuildDir) throws Exception {
+        DiskInfo diskInfo = disk.diskInfo(localBuildDir);
+        BuildDir buildDir = new BuildDir();
+        buildDir.setMachineId(MachineId.id());
+        buildDir.setMachineIpv4(MachineId.ipv4());
+        buildDir.setDirPath(localBuildDir);
+        buildDir.setMountedOn(diskInfo.getMountedOn());
+        buildDir.setTotal(converter.convert(ByteType.Bytes, diskInfo.getSize()));
+        buildDir.setUsed(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getUsed()));
+        buildDir.setAvail(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getAvail()));
+        buildDir.setIsDelete(false);
+
+        createLocalBuildDir(buildDir);
+        return buildDir;
+    }
+
+    private void createLocalBuildDir(BuildDir buildDir) throws Exception {
+        setLocalBuildDir(buildDir);
+        File localRepo = new File(LocalBuildDir.localRepo);
+        if (!localRepo.exists() && !FileOps.mkdirs(localRepo)) {
+            throw new Exception(localRepo.getAbsolutePath() + " 不存在且创建失败");
+        }
+
+        File compileDir = new File(LocalBuildDir.compileDir);
+        if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
+            throw new Exception(compileDir.getAbsolutePath() + " 不存在且创建失败");
+        }
+
+        File packDir = new File(LocalBuildDir.packDir);
+        if (!packDir.exists() && !FileOps.mkdirs(packDir)) {
+            throw new Exception(packDir.getAbsolutePath() + " 不存在且创建失败");
+        }
+    }
+
+    private void setLocalBuildDir(BuildDir buildDir) {
+        LocalBuildDir.localRepo = buildDir.getDirPath() + "/local-repo";
+        LocalBuildDir.compileDir = buildDir.getDirPath() + "/compile-dir";
+        LocalBuildDir.packDir = buildDir.getDirPath() + "/pack-dir";
+    }
+
+    @Override
+    public void refresh(BuildDir buildDir) {
+        setLocalBuildDir(buildDir);
+        String dirPath = buildDir.getDirPath();
+        DiskInfo diskInfo = disk.diskInfo(dirPath);
+        if (diskInfo != null) {
+            buildDir.setUsed(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getUsed()));
+            buildDir.setAvail(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskInfo.getAvail()));
+        } else {
+            log.error("本地目录 {} 不合法,autodop-dmaster 结束运行", dirPath);
+            System.exit(1);
+        }
     }
 
     @Override
-    public Result modify(BuildDir buildDir) {
+    public synchronized Result modify(BuildDir buildDir) {
         if (buildDir.getId() == null) {
             return Result.result(ResultStatus.FAIL, "构建目录不存在");
         }
@@ -50,27 +125,31 @@ public class BuildDirServiceImpl implements BuildDirService {
 
         if (newDirPath.equals(oldDirPath)) {
             return Result.result(ResultStatus.FAIL, "目录没有改变");
-        } else if (newMountedOn.equals(oldMountedOn)) {
-            return Result.result(ResultStatus.FAIL, "新目录和当前目录同属一个分区");
         } else if (new File(newDirPath).exists()) {
             return Result.result(ResultStatus.FAIL, "新目录已存在,请另外指定一个不存在的目录");
+        } else if (newMountedOn.equals(oldMountedOn)) {
+            return Result.result(ResultStatus.FAIL, "新目录和当前目录同属一个分区");
         }
 
-        String oldPackDir = BuildDirLocal.packDir;
+        String oldPackDir = LocalBuildDir.packDir;
         // TODO 目录迁移时不能有应用处于构建过程中
-        BuildDir newBuildDir = BuildDirLocal.setBuildDir(newDirPath);
-        File file = new File(oldPackDir);
-        if (Objects.requireNonNull(file.list()).length != 0) {
-            try {
-                FileOps.copyDirContentToDir(oldPackDir, BuildDirLocal.packDir);
-            } catch (IOException e) {
-                FileOps.delete(new File(newDirPath));
-                return Result.result(ResultStatus.ERROR, e.getMessage());
+        try {
+            BuildDir newBuildDir = createLocalBuildDir(newDirPath);
+            File file = new File(oldPackDir);
+            if (Objects.requireNonNull(file.list()).length != 0) {
+                try {
+                    FileOps.copyDirContentToDir(oldPackDir, LocalBuildDir.packDir);
+                } catch (IOException e) {
+                    FileOps.delete(new File(newDirPath));
+                    return Result.result(ResultStatus.ERROR, e.getMessage());
+                }
             }
-        }
 
-        buildDirCrud.save(newBuildDir);
-        return Result.result(ResultStatus.SUCCESS);
+            buildDirCrud.save(newBuildDir);
+            return Result.result(ResultStatus.SUCCESS);
+        } catch (Exception e) {
+            return Result.result(ResultStatus.FAIL, e.getMessage());
+        }
     }
 
     @Override

+ 5 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/RepoAuthConfigServiceImpl.java

@@ -4,7 +4,6 @@ import cn.reghao.autodop.dmaster.app.db.crud.config.RepoAuthConfigCrud;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
 import cn.reghao.autodop.dmaster.app.db.query.config.ProjConfigQuery;
 import cn.reghao.autodop.dmaster.app.db.query.config.RepoAuthConfigQuery;
-import cn.reghao.autodop.dmaster.app.db.repository.config.build.RepoAuthConfigRepository;
 import cn.reghao.autodop.dmaster.app.model.constant.build.RepoAuthType;
 import cn.reghao.autodop.dmaster.app.model.constant.build.RepoType;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
@@ -24,10 +23,10 @@ import java.util.stream.Collectors;
  */
 @Service
 public class RepoAuthConfigServiceImpl implements RepoAuthConfigService {
-    private RepoAuthConfigQuery repoAuthConfigQuery;
-    private RepoAuthConfigCrud repoAuthConfigCrud;
-    private AppConfigQuery appConfigQuery;
-    private ProjConfigQuery projConfigQuery;
+    private final RepoAuthConfigQuery repoAuthConfigQuery;
+    private final RepoAuthConfigCrud repoAuthConfigCrud;
+    private final AppConfigQuery appConfigQuery;
+    private final ProjConfigQuery projConfigQuery;
 
     public RepoAuthConfigServiceImpl(RepoAuthConfigQuery repoAuthConfigQuery, RepoAuthConfigCrud repoAuthConfigCrud,
                                      AppConfigQuery appConfigQuery, ProjConfigQuery projConfigQuery) {
@@ -97,7 +96,7 @@ public class RepoAuthConfigServiceImpl implements RepoAuthConfigService {
         } else {
             List<String> ids = apps.stream().map(AppConfig::getAppId).collect(Collectors.toList());
             ids.addAll(projs.stream().map(ProjConfig::getProjId).collect(Collectors.toList()));
-            String msg = repoAuthConfig.getName() + " 删除失败, " + ids.toString() + " 等应用正在使用";
+            String msg = repoAuthConfig.getName() + " 删除失败, " + ids + " 等应用正在使用";
             return Result.result(ResultStatus.FAIL, msg);
         }
     }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/rbac/controller/page/HomePageController.java

@@ -21,7 +21,7 @@ import java.util.*;
  * @date 2021-04-04 21:24:18
  */
 @Slf4j
-@Api("登录页和首页")
+@Api(tags = "登录页和首页")
 @Controller
 public class HomePageController implements ErrorController {
     private final HomeService homeService;

+ 2 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/DmasterLifecycle.java

@@ -5,9 +5,7 @@ import ch.qos.logback.core.Appender;
 import cn.reghao.autodop.common.log.LoggerConfig;
 import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
 import cn.reghao.autodop.common.msg.MsgQueue;
-import cn.reghao.autodop.dmaster.app.db.crud.config.BuildDirCrud;
 import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDir;
-import cn.reghao.autodop.dmaster.app.model.po.config.build.BuildDirLocal;
 import cn.reghao.autodop.dmaster.app.service.config.BuildDirService;
 import cn.reghao.autodop.dmaster.mqttsub.MessageListener;
 import cn.reghao.autodop.dmaster.sys.db.crud.NodeLogCrud;
@@ -70,12 +68,9 @@ public class DmasterLifecycle implements ApplicationRunner, DisposableBean {
         log.info("初始化构建目录");
         BuildDir buildDir = buildDirService.get(MachineId.id());
         if (buildDir == null) {
-            buildDir = BuildDirLocal.setDefaultBuildDir();
+            buildDirService.createAndSave();
         } else {
-            BuildDirLocal.refreshBuildDir(buildDir);
+            buildDirService.refresh(buildDir);
         }
-
-        log.info("将 {} 写入数据库", buildDir);
-        buildDirService.add(buildDir);
     }
 }

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/spring/exception/FilterExceptionHandler.java

@@ -1,5 +1,6 @@
 package cn.reghao.autodop.dmaster.spring.exception;
 
+import io.swagger.annotations.Api;
 import org.springframework.boot.autoconfigure.web.ErrorProperties;
 import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
 import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
@@ -19,6 +20,7 @@ import java.util.Map;
  * @author reghao
  * @date 2020-06-19 13:34:19
  */
+@Api(tags = "异常处理接口")
 @RestController
 public class FilterExceptionHandler extends BasicErrorController {
     public FilterExceptionHandler() {