Переглянути джерело

修改导出功能,路径直接兼容分支名获取版本号,去掉文件格式选择默认properties

luoshi 2 роки тому
батько
коміт
85c9f319d2

+ 7 - 15
src/main/java/com/qmth/ops/api/controller/export/ConfigExportController.java

@@ -9,6 +9,7 @@ import com.qmth.ops.api.binder.FileFormatBinder;
 import com.qmth.ops.api.constants.OpsApiConstants;
 import com.qmth.ops.biz.domain.*;
 import com.qmth.ops.biz.service.*;
+import com.qmth.ops.biz.utils.BranchName;
 import com.qmth.ops.biz.utils.PropertyFileUtil;
 import com.qmth.ops.biz.utils.VersionNumber;
 import org.springframework.web.bind.WebDataBinder;
@@ -48,21 +49,15 @@ public class ConfigExportController {
         dataBinder.addCustomFormatter(new FileFormatBinder());
     }
 
-    @RequestMapping("/{appCode}/{moduleCode}/{envCode}/{version}.{format}")
+    @RequestMapping("/{appCode}/{moduleCode}/{envCode}/{branchName}")
     public void exportVersionConfigFile(@PathVariable String appCode, @PathVariable String moduleCode,
-            @PathVariable String envCode, @PathVariable String version, @PathVariable FileFormat format,
-            @RequestParam String secret, HttpServletResponse response) throws IOException {
-        exportConfigFile(appCode, moduleCode, envCode, version, secret, format, response);
-    }
-
-    @RequestMapping("/{appCode}/{moduleCode}/{envCode}.{format}")
-    public void exportMasterVersionConfigFile(@PathVariable String appCode, @PathVariable String moduleCode,
-            @PathVariable String envCode, @PathVariable FileFormat format, @RequestParam String secret,
+            @PathVariable String envCode, @PathVariable String branchName, @RequestParam String secret,
             HttpServletResponse response) throws IOException {
-        exportConfigFile(appCode, moduleCode, envCode, null, secret, format, response);
+        exportConfigFile(appCode, moduleCode, envCode, new BranchName(branchName).getVersionNumber(), secret,
+                FileFormat.PROPERTY, response);
     }
 
-    private void exportConfigFile(String appCode, String moduleCode, String envCode, String versionNumber,
+    private void exportConfigFile(String appCode, String moduleCode, String envCode, VersionNumber versionNumber,
             String exportSecret, FileFormat format, HttpServletResponse response) throws IOException {
         User user = userService.findByExportSecret(exportSecret);
         if (user == null || !user.hasRole(Role.OPS)) {
@@ -80,10 +75,7 @@ public class ConfigExportController {
         if (env == null) {
             throw new ParameterException("env.code不存在");
         }
-        Version version = versionNumber != null ?
-                versionService.findByAppAndNumber(app.getId(),
-                        new VersionNumber(versionNumber.replaceAll("-", ".").replaceAll("_", "."))) :
-                versionService.getById(app.getMasterVersionId());
+        Version version = versionService.findByAppAndNumber(app.getId(), versionNumber);
         if (version == null) {
             throw new ParameterException("version不存在");
         }

+ 58 - 0
src/main/java/com/qmth/ops/biz/utils/BranchName.java

@@ -0,0 +1,58 @@
+package com.qmth.ops.biz.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class BranchName {
+
+    private static final Pattern PATTERN = Pattern.compile("^[^0-9.]*(\\d+)\\.(\\d+)\\.(\\d+)$");
+
+    private int main;
+
+    private int middle;
+
+    private int sub;
+
+    public BranchName(String content) {
+        Matcher m = PATTERN.matcher(content);
+        if (m.find()) {
+            setMain(Integer.parseInt(m.group(1)));
+            setMiddle(Integer.parseInt(m.group(2)));
+            setSub(Integer.parseInt(m.group(3)));
+        } else {
+            throw new IllegalArgumentException("分支名格式错误");
+        }
+    }
+
+    public int getMain() {
+        return main;
+    }
+
+    public void setMain(int main) {
+        this.main = main;
+    }
+
+    public int getMiddle() {
+        return middle;
+    }
+
+    public void setMiddle(int middle) {
+        this.middle = middle;
+    }
+
+    public int getSub() {
+        return sub;
+    }
+
+    public void setSub(int sub) {
+        this.sub = sub;
+    }
+
+    public String toString() {
+        return main + "." + middle + "." + sub;
+    }
+
+    public VersionNumber getVersionNumber() {
+        return new VersionNumber(toString());
+    }
+}