reghao 5 gadi atpakaļ
vecāks
revīzija
b238c112b7
42 mainītis faili ar 195 papildinājumiem un 296 dzēšanām
  1. 16 17
      common/src/main/java/cn/reghao/autodop/common/dockerc/DockerClient.java
  2. 3 3
      common/src/main/java/cn/reghao/autodop/common/mq/MessageSender.java
  3. 2 2
      common/src/main/java/cn/reghao/autodop/common/notification/DingNotify.java
  4. 3 3
      common/src/main/java/cn/reghao/autodop/common/result/RpcResult.java
  5. 8 10
      common/src/main/java/cn/reghao/autodop/common/result/WebResult.java
  6. 2 2
      common/src/main/java/cn/reghao/autodop/common/stat/jvm/JVM.java
  7. 2 2
      common/src/main/java/cn/reghao/autodop/common/stat/linux/OS.java
  8. 2 2
      common/src/main/java/cn/reghao/autodop/common/utils/DatetimeConverter.java
  9. 1 1
      common/src/main/java/cn/reghao/autodop/common/utils/FileOps.java
  10. 0 57
      common/src/main/java/cn/reghao/autodop/common/utils/JsonUtil.java
  11. 0 2
      common/src/main/java/cn/reghao/autodop/common/utils/NetworkUtil.java
  12. 0 36
      common/src/main/java/cn/reghao/autodop/common/utils/StringUtil.java
  13. 1 1
      common/src/main/java/cn/reghao/autodop/common/utils/compression/TarFiles.java
  14. 6 16
      common/src/main/java/cn/reghao/autodop/common/utils/compression/ZipFiles.java
  15. 0 29
      common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/DefaultJsonSerializer.java
  16. 34 0
      common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/JsonArrayDeserializer.java
  17. 20 20
      common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/JsonConverter.java
  18. 2 2
      dagent/src/main/java/cn/reghao/autodop/dagent/app/status/DockerAppStatusServiceImpl.java
  19. 2 2
      dagent/src/main/java/cn/reghao/autodop/dagent/mq/RemoteCallDispatcher.java
  20. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/WebhookController.java
  21. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java
  22. 6 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/ConfigService.java
  23. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java
  24. 5 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuilderUtil.java
  25. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployTask.java
  26. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/compiler/ShellCompiler.java
  27. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/packer/ZipPack.java
  28. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java
  29. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildLogVO.java
  30. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/CommitLogVO.java
  31. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/DeployLogVO.java
  32. 22 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java
  33. 5 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3OpsController.java
  34. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java
  35. 8 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/IndexController.java
  36. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/JwtToken.java
  37. 2 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/LogoutSuccessHandlerImpl.java
  38. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/UsernamePasswordAuthFilter.java
  39. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserService.java
  40. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mq/MessageDispatcher.java
  41. 4 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/AfterAppStart.java
  42. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/SpringBootUtil.java

+ 16 - 17
common/src/main/java/cn/reghao/autodop/common/dockerc/DockerClient.java

@@ -13,11 +13,13 @@ import cn.reghao.autodop.common.dockerc.pojo.Container;
 import cn.reghao.autodop.common.dockerc.pojo.Config;
 import cn.reghao.autodop.common.dockerc.pojo.ContainerInspect;
 import cn.reghao.autodop.common.dockerc.pojo.HostConfig;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonArrayDeserializer;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.common.utils.security.Base64Util;
-import cn.reghao.autodop.common.utils.compression.TarUtil;
+import cn.reghao.autodop.common.utils.compression.TarFiles;
 import cn.reghao.autodop.common.utils.security.Md5Util;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import io.netty.handler.codec.http.FullHttpResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -85,7 +87,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
     @Override
     public void build(String repoTag, String appdir) throws Exception {
         String dstPath = "/tmp/" + Md5Util.md5(appdir) + ".tar";
-        TarUtil.tar(appdir, dstPath);
+        TarFiles.tar(appdir, dstPath);
 
         String uri = DockerApi.buildPost + "?t=" + repoTag;
         File file = new File(dstPath);
@@ -101,7 +103,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
     @Override
     public void build(String repoTag, String appdir, String dockerfile) throws Exception {
         String dstPath = "/tmp/" + Md5Util.md5(appdir) + ".tar";
-        TarUtil.tar(appdir, dstPath);
+        TarFiles.tar(appdir, dstPath);
 
         //String uri = DockerApi.buildPost + "?t=" + repoTag + "&dockerfile=" + dockerfile;
         String uri = DockerApi.buildPost + "?t=" + repoTag;
@@ -128,7 +130,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
         auth.setPassword("12345678");
         auth.setEmail("reghaodev@gmail.com");
         auth.setServeraddress("localhost");
-        String encodeAuth = Base64Util.encode(JsonUtil.objectToJson(auth));
+        String encodeAuth = Base64Util.encode(JsonConverter.objectToJson(auth));
         List<DockerHeader> headers = new ArrayList<>();
         headers.add(new DockerHeader("X-Registry-Auth", encodeAuth));
 
@@ -177,7 +179,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
         // TODO 挂载日志目录到宿主机
         Config config = Config.builder()
                 .image(image).hostConfig(hostConfig).build();
-        String tmp = JsonUtil.objectToJson(config);
+        String tmp = JsonConverter.objectToJson(config);
         String json = tmp.replace("image", "Image")
                 .replace("hostConfig", "HostConfig")
                 .replace("networkMode", "NetworkMode");
@@ -188,7 +190,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
             int statusCode = response.status().code();
             String result = response.content().toString(StandardCharsets.UTF_8);
             if (statusCode == 201) {
-                JsonObject jsonObject = JsonUtil.jsonObject(result);
+                JsonObject jsonObject = new JsonParser().parse(result).getAsJsonObject();
                 return jsonObject.get("Id").getAsString();
             } else {
                 throw new DockerException(result);
@@ -241,13 +243,9 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
         String uri = DockerApi.psGet + "?all=" + isAll;
         FullHttpResponse response = client.get(uri, null);
         String result = checkResponse(response);
-        List<Object> objs = JsonUtil.jsonToObjectArray(result, Container.class);
-        List<Container> containers = new ArrayList<>();
-        objs.forEach(obj -> {
-            containers.add((Container) obj);
-        });
 
-        return containers;
+        JsonArrayDeserializer<Container> jsonArrayDeserializer = new JsonArrayDeserializer<>();
+        return jsonArrayDeserializer.fromJsonArray(result, Container.class);
     }
 
     /**
@@ -347,7 +345,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
         FullHttpResponse response = client.get(uri, null);
         if (response != null) {
             String result =  response.content().toString(StandardCharsets.UTF_8);
-            return (ContainerInspect) JsonUtil.jsonToObject(result, ContainerInspect.class);
+            return (ContainerInspect) JsonConverter.jsonToObject(result, ContainerInspect.class);
         }
         return null;
     }
@@ -362,13 +360,14 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
     public static void main(String[] args) throws Exception {
         String appEntryDir = "/home/reghao/opt/data/autodop/compile-dir/dnkt-mgr/IQuizoo.BMS";
         try (DockerClient docker = new DockerClient()) {
-            String image = "hahahaha1";
+            List<Container> containers = docker.ps(true);
 
+            String image = "hahahaha1";
             // Dockerfile 默认在 appEntryDir 中
             // TODO Dockerfile 错误导致不能成功构建时,不会抛出异常
-            docker.build(image, appEntryDir);
+            //docker.build(image, appEntryDir);
             // TODO 有时不能成功 push,特别是 push 到远程主机上时
-            docker.push(image);
+            //docker.push(image);
             // TODO try-with-resource 中不需要显式调用 close
         }
     }

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/mq/MessageSender.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.common.mq;
 
 import cn.reghao.autodop.common.result.RpcResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.stereotype.Component;
 
@@ -20,7 +20,7 @@ public class MessageSender {
     }
 
     public void send(String routeKey, Object obj) {
-        String msg = JsonUtil.objectToJson(obj);
+        String msg = JsonConverter.objectToJson(obj);
         rabbitTemplate.convertAndSend(routeKey, msg);
     }
 
@@ -30,6 +30,6 @@ public class MessageSender {
         // TODO 处理未成功发送到 mq 时的情况
         // TODO 处理 RPC 服务端未启动时的情况
         String result = (String) rabbitTemplate.convertSendAndReceive(routeKey, msg);
-        return (RpcResult) JsonUtil.jsonToObject(result, RpcResult.class);
+        return (RpcResult) JsonConverter.jsonToObject(result, RpcResult.class);
     }
 }

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/notification/DingNotify.java

@@ -4,7 +4,7 @@ import cn.reghao.autodop.common.httpc.DefaultWebRequest;
 import cn.reghao.autodop.common.httpc.WebRequest;
 import cn.reghao.autodop.common.httpc.WebResponse;
 import cn.reghao.autodop.common.notification.ding.DingText;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 
 /**
  * @author reghao
@@ -16,7 +16,7 @@ public class DingNotify implements Notify {
     @Override
     public void send(String destination, Object content) throws Exception {
         DingText dingText = new DingText(content);
-        WebResponse webResponse = webRequest.postJson(destination, JsonUtil.objectToJson(dingText));
+        WebResponse webResponse = webRequest.postJson(destination, JsonConverter.objectToJson(dingText));
         if (webResponse.getStatusCode() == 200) {
             throw new Exception("通知发送失败...");
         }

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/result/RpcResult.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.common.result;
 
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 
@@ -19,11 +19,11 @@ public class RpcResult {
 
     public static String success() {
         RpcResult rpcResult = new RpcResult(SUCCESS.getCode(), "success");
-        return JsonUtil.objectToJson(rpcResult);
+        return JsonConverter.objectToJson(rpcResult);
     }
 
     public static String fail(String msg) {
         RpcResult rpcResult = new RpcResult(FAIL.getCode(), msg);
-        return JsonUtil.objectToJson(rpcResult);
+        return JsonConverter.objectToJson(rpcResult);
     }
 }

+ 8 - 10
common/src/main/java/cn/reghao/autodop/common/result/WebResult.java

@@ -1,8 +1,7 @@
 package cn.reghao.autodop.common.result;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
-import cn.reghao.autodop.common.utils.data.serializer.DefaultJsonSerializer;
-import cn.reghao.autodop.common.utils.data.serializer.JsonSerializer;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -21,7 +20,6 @@ public class WebResult {
     private String status;
     private String timestamp;
     private Object data;
-    private static JsonSerializer<Object> jsonSerializer = new DefaultJsonSerializer<>();
 
     private WebResult(Integer code, String status) {
         this.code = code;
@@ -30,22 +28,22 @@ public class WebResult {
 
     public static String success(Object data) {
         WebResult webResult = new WebResult(SUCCESS.getCode(), SUCCESS.getStatus());
-        webResult.setTimestamp(DateTimeUtil.now());
+        webResult.setTimestamp(DatetimeConverter.now());
         webResult.setData(data);
-        return jsonSerializer.toJson(webResult);
+        return JsonConverter.objectToJson(webResult);
     }
 
     public static String fail(Object data) {
         WebResult webResult = new WebResult(FAIL.getCode(), FAIL.getStatus());
-        webResult.setTimestamp(DateTimeUtil.now());
+        webResult.setTimestamp(DatetimeConverter.now());
         webResult.setData(data);
-        return jsonSerializer.toJson(webResult);
+        return JsonConverter.objectToJson(webResult);
     }
 
     public static String error(Object data) {
         WebResult webResult = new WebResult(ERROR.getCode(), ERROR.getStatus());
-        webResult.setTimestamp(DateTimeUtil.now());
+        webResult.setTimestamp(DatetimeConverter.now());
         webResult.setData(data);
-        return jsonSerializer.toJson(webResult);
+        return JsonConverter.objectToJson(webResult);
     }
 }

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/stat/jvm/JVM.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.common.stat.jvm;
 
 import cn.reghao.autodop.common.stat.jvm.pojo.*;
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 
 import java.lang.management.*;
 import java.util.*;
@@ -47,7 +47,7 @@ public class JVM {
 
         // TODO pid 不一定准确
         jvmInfo.setJvmPid(Integer.parseInt(rtBean.getName().split("@")[0]));
-        jvmInfo.setJvmStartTime(DateTimeUtil.msTimestampFormat(rtBean.getStartTime()));
+        jvmInfo.setJvmStartTime(DatetimeConverter.msTimestampFormat(rtBean.getStartTime()));
 
         return jvmInfo;
     }

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/stat/linux/OS.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.common.stat.linux;
 import cn.reghao.autodop.common.stat.linux.contant.ProcFile;
 import cn.reghao.autodop.common.stat.linux.pojo.OSInfo;
 import cn.reghao.autodop.common.stat.linux.pojo.OSStat;
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.common.utils.text.TextFile;
 
 /**
@@ -27,7 +27,7 @@ public class OS {
         for (String line : cpuStat.split(System.lineSeparator())) {
             if (line.startsWith("btime")) {
                 long btime = Long.parseLong(line.split("\\s+")[1]);
-                return DateTimeUtil.msTimestampFormat(btime*1000);
+                return DatetimeConverter.msTimestampFormat(btime*1000);
             }
         }
 

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/utils/DateTimeUtil.java → common/src/main/java/cn/reghao/autodop/common/utils/DatetimeConverter.java

@@ -5,12 +5,12 @@ import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
 /**
- * 时间日期工具类
+ * 时间日期转换器
  *
  * @author reghao
  * @date 2020-03-20 10:20:01
  */
-public class DateTimeUtil {
+public class DatetimeConverter {
     public static String now() {
         LocalDateTime now = LocalDateTime.now();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/utils/FileUtil.java → common/src/main/java/cn/reghao/autodop/common/utils/FileOps.java

@@ -18,7 +18,7 @@ import java.util.Map;
  * @date 2019-08-27 21:45:08
  */
 @Slf4j
-public class FileUtil {
+public class FileOps {
     /**
      * TODO: 复制文件或目录
      *

+ 0 - 57
common/src/main/java/cn/reghao/autodop/common/utils/JsonUtil.java

@@ -1,57 +0,0 @@
-package cn.reghao.autodop.common.utils;
-
-import com.google.gson.*;
-import org.apache.commons.io.FileUtils;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * JSON 转换工具类
- * TODO 使用参数化类型
- *
- * @author reghao
- * @date 2020-01-15 17:52:23
- */
-public class JsonUtil<T> {
-    // TODO 采用 Jackson
-    private static Gson gson = new Gson();
-
-    /**
-     * JSON 字符串转换为对象
-     *
-     * @param
-     * @return
-     * @date 2020-01-15 下午5:54
-     */
-    public static Object jsonToObject(String json, Class clazz) {
-        return gson.fromJson(json, clazz);
-    }
-
-    @Deprecated
-    public static List<Object> jsonToObjectArray(String json, Class clazz) {
-        JsonParser parser = new JsonParser();
-        List<Object> objects = new ArrayList<>();
-        parser.parse(json).getAsJsonArray().forEach(ele -> {
-            objects.add(gson.fromJson(ele, clazz));
-        });
-
-        return objects;
-    }
-
-    public static String objectToJson(Object object) {
-        return gson.toJson(object);
-    }
-
-    public static JsonObject jsonFileObject(String filePath) throws IOException {
-        String json = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8);
-        return new JsonParser().parse(json).getAsJsonObject();
-    }
-
-    public static JsonObject jsonObject(String json) {
-        return new JsonParser().parse(json).getAsJsonObject();
-    }
-}

+ 0 - 2
common/src/main/java/cn/reghao/autodop/common/utils/NetworkUtil.java

@@ -1,7 +1,5 @@
 package cn.reghao.autodop.common.utils;
 
-import lombok.Data;
-
 import java.net.*;
 import java.util.ArrayList;
 import java.util.Enumeration;

+ 0 - 36
common/src/main/java/cn/reghao/autodop/common/utils/StringUtil.java

@@ -1,36 +0,0 @@
-package cn.reghao.autodop.common.utils;
-
-/**
- * @author reghao
- * @date 2020-03-20 11:32:17
- */
-public class StringUtil {
-    /**
-     * 格式化以空白符分隔的字段,行首和行尾不包含空白符
-     *
-     * @param
-     * @return
-     * @date 2020-03-20 上午11:13
-     */
-    public static String format(String str) {
-        StringBuilder sb = new StringBuilder();
-        char[] chars = str.toCharArray();
-        for (int i = firstNonWhiteSpaceIndex(chars); i < chars.length; i++) {
-            if (chars[i] != 32 || chars[i-1] != 32) {
-                sb.append(chars[i]);
-            }
-        }
-
-        return sb.toString();
-    }
-
-    private static int firstNonWhiteSpaceIndex(char[] chars) {
-        for (int i = 0; i < chars.length; i++) {
-            if (chars[i] != 32) {
-                return i;
-            }
-        }
-
-        return chars.length;
-    }
-}

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/utils/compression/TarUtil.java → common/src/main/java/cn/reghao/autodop/common/utils/compression/TarFiles.java

@@ -11,7 +11,7 @@ import java.io.*;
  * @author reghao
  * @date 2020-01-14 10:51:48
  */
-public class TarUtil {
+public class TarFiles {
     private static final int BUFSIZE = 1024;
     private static String basePath = "";
 

+ 6 - 16
common/src/main/java/cn/reghao/autodop/common/utils/compression/ZipUtil.java → common/src/main/java/cn/reghao/autodop/common/utils/compression/ZipFiles.java

@@ -1,13 +1,12 @@
 package cn.reghao.autodop.common.utils.compression;
 
-import cn.reghao.autodop.common.utils.FileUtil;
+import cn.reghao.autodop.common.utils.FileOps;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
 import java.util.zip.ZipInputStream;
 import java.util.zip.ZipOutputStream;
 
@@ -18,7 +17,7 @@ import java.util.zip.ZipOutputStream;
  * @date 2019-08-27 17:47:36
  */
 @Slf4j
-public class ZipUtil {
+public class ZipFiles {
     /**
      * 将目录压缩为一个文件
      *
@@ -146,17 +145,17 @@ public class ZipUtil {
 
         File dstFile = new File(dst);
         if (!dstFile.exists()) {
-            FileUtil.mkdir(dst);
+            FileOps.mkdir(dst);
         }
 
-        ZipFile zipFile = new ZipFile(file);
+        java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(file);
         ZipInputStream zipIn = new ZipInputStream(new FileInputStream(file));
         ZipEntry entry;
         while ((entry = zipIn.getNextEntry()) != null) {
             String filePath = dst + File.separator + entry.getName();
-            String dir = FileUtil.dirPath(filePath);
+            String dir = FileOps.dirPath(filePath);
             if (!new File(dir).exists()) {
-                FileUtil.mkdir(dir);
+                FileOps.mkdir(dir);
             }
 
             File unzipFile = new File(filePath);
@@ -173,13 +172,4 @@ public class ZipUtil {
             }
         }
     }
-
-    public static void main(String[] args) throws IOException {
-        String src = "/home/reghao/tmp/autodop/opt/data/compile-dir/dnkt/IQuizoo_Teaching_FE_New/dist-test";
-        String zip = "/home/reghao/tmp/autodop/opt/webroot/dnkt/dnkt_536.zip";
-        //ZipUtil.zip(new File(src), zip);
-
-        String dir = "/home/reghao/tmp/autodop/opt/webroot/dnkt/app";
-        ZipUtil.unzip(zip, dir);
-    }
 }

+ 0 - 29
common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/DefaultJsonSerializer.java

@@ -1,29 +0,0 @@
-package cn.reghao.autodop.common.utils.data.serializer;
-
-import com.google.gson.Gson;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2019-11-29 00:05:57
- */
-public class DefaultJsonSerializer<T> implements JsonSerializer<T> {
-    // TODO 采用 Jackson
-    private Gson gson = new Gson();
-
-    @Override
-    public String toJson(T t) {
-        return gson.toJson(t);
-    }
-
-    @Override
-    public String listToJson(List<T> t) {
-        return gson.toJson(t);
-    }
-
-    @Override
-    public T fromJson(String json, Class<T> clazz) {
-        return gson.fromJson(json, clazz);
-    }
-}

+ 34 - 0
common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/JsonArrayDeserializer.java

@@ -0,0 +1,34 @@
+package cn.reghao.autodop.common.utils.data.serializer;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonParser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * JSON 数组反序列化
+ *
+ * @author reghao
+ * @date 2020-11-11 16:57:04
+ */
+public class JsonArrayDeserializer<T> {
+    private Gson gson = new Gson();
+
+    /**
+     * JSON 数组转换为对象集合
+     *
+     * @param
+     * @return
+     * @date 2020-11-11 下午5:14
+     */
+    public List<T> fromJsonArray(String json, Class<T> clazz) {
+        JsonParser parser = new JsonParser();
+        List<T> list = new ArrayList<>();
+        parser.parse(json).getAsJsonArray().forEach(ele -> {
+            list.add(gson.fromJson(ele, clazz));
+        });
+
+        return list;
+    }
+}

+ 20 - 20
common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/JsonSerializer.java → common/src/main/java/cn/reghao/autodop/common/utils/data/serializer/JsonConverter.java

@@ -1,32 +1,30 @@
 package cn.reghao.autodop.common.utils.data.serializer;
 
+import com.google.gson.Gson;
+
 import java.io.File;
 import java.util.List;
 
 /**
- * JSON 序列化和反序列化
+ * JSON 转换器
  *
  * @author reghao
  * @date 2020-11-11 16:57:04
  */
-public interface JsonSerializer<T> {
-    /**
-     * 对象转换为 JSON
-     *
-     * @param
-     * @return
-     * @date 2020-11-11 下午5:10
-     */
-    String toJson(T t);
+public class JsonConverter {
+    // TODO 采用 Jackson
+    private static Gson gson = new Gson();
 
     /**
-     * 对象集合转换为 JSON
+     * 对象转换为 JSON
      *
      * @param
      * @return
      * @date 2020-11-11 下午5:10
      */
-    String listToJson(List<T> t);
+    public static String objectToJson(Object object) {
+        return gson.toJson(object);
+    }
 
     /**
      * JSON 转换为对象
@@ -35,27 +33,29 @@ public interface JsonSerializer<T> {
      * @return
      * @date 2020-11-11 下午5:11
      */
-    T fromJson(String json, Class<T> clazz);
+    public static Object jsonToObject(String json, Class<?> clazz) {
+        return gson.fromJson(json, clazz);
+    }
 
     /**
-     * JSON 数组转换为对象集合
+     * JSON 文件转换为对象
      *
      * @param
      * @return
-     * @date 2020-11-11 下午5:14
+     * @date 2020-11-11 下午5:11
      */
-    default T fromJsonArry(String json, Class<T> clazz) {
+    public static Object jsonToObject(File jsonFile, Class<?> clazz) {
         return null;
     }
 
     /**
-     * JSON 文件转换为对象
+     * 对象集合转换为 JSON
      *
      * @param
      * @return
-     * @date 2020-11-11 下午5:11
+     * @date 2020-11-11 下午5:10
      */
-    default T fromJson(File jsonFile, Class<T> clazz) {
-        return null;
+    public static String listToJson(List<Object> objects) {
+        return gson.toJson(objects);
     }
 }

+ 2 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/app/status/DockerAppStatusServiceImpl.java

@@ -5,7 +5,7 @@ import cn.reghao.autodop.common.dockerc.DockerClient;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
 import cn.reghao.autodop.common.dockerc.pojo.ContainerInspect;
 import cn.reghao.autodop.common.dockerc.pojo.State;
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -62,7 +62,7 @@ public class DockerAppStatusServiceImpl implements AppStatusService {
             appStatus.setCommitId(commitId);
             appStatus.setStatus(status);
             if ("running".equals(status)) {
-                appStatus.setStartedTime(DateTimeUtil.convert(startedAt));
+                appStatus.setStartedTime(DatetimeConverter.convert(startedAt));
             }
 
             return appStatus;

+ 2 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/mq/RemoteCallDispatcher.java

@@ -3,10 +3,10 @@ package cn.reghao.autodop.dagent.mq;
 import cn.reghao.autodop.common.deploy.DeployConfig;
 import cn.reghao.autodop.common.mq.*;
 import cn.reghao.autodop.common.result.RpcResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
 import cn.reghao.autodop.dagent.app.deploy.AppDeployService;
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
@@ -35,7 +35,7 @@ public class RemoteCallDispatcher implements ChannelAwareMessageListener {
     public void onMessage(Message msg, Channel channel) {
         MessageProperties messageProperties = msg.getMessageProperties();
         String body = new String(msg.getBody());
-        JsonObject jsonObject = JsonUtil.jsonObject(body);
+        JsonObject jsonObject = new JsonParser().parse(body).getAsJsonObject();
         long sendTime = jsonObject.get("sendTime").getAsLong();
         long startTime = ManagementFactory.getRuntimeMXBean().getStartTime();
         // 忽略 dagent 启动前发送到 mq 中的所有消息

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

@@ -1,10 +1,10 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
 import cn.reghao.autodop.dmaster.app.service.build.BuildDispatcher;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -26,7 +26,7 @@ public class WebhookController {
 
     @PostMapping("/pipeline")
     public String build(@RequestBody String body) throws Exception {
-        JsonObject jsonObject = JsonUtil.jsonObject(body);
+        JsonObject jsonObject = new JsonParser().parse(body).getAsJsonObject();
         String repo = jsonObject.get("repository").getAsJsonObject().get("url").getAsString();
         String ref = jsonObject.get("ref").getAsString();
         String branch = ref.substring(ref.lastIndexOf("/")+1);

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
@@ -84,7 +84,7 @@ public class BuildService {
                     String commitId = buildLog.getCommitLog().getCommitId();
                     String commitMsg = buildLog.getCommitLog().getCommitMsg();
                     String appPath = buildLog.getAppPath();
-                    String buildTime = DateTimeUtil.format(buildLog.getBuildTime());
+                    String buildTime = DatetimeConverter.format(buildLog.getBuildTime());
                     return new SuccessfullyBuildVO(commitId, commitMsg, appPath, buildTime);
                 })
                 .collect(Collectors.toList()));

+ 6 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/ConfigService.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.common.deploy.PackerType;
 import cn.reghao.autodop.common.shell.ShellExecutor;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.constant.ConfigType;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
@@ -60,7 +60,7 @@ public class ConfigService {
         switch (ConfigType.valueOf(configType)) {
             // 本地文件系统目录
             case localDir:
-                LocalDir localDir = (LocalDir) JsonUtil.jsonToObject(json, LocalDir.class);
+                LocalDir localDir = (LocalDir) JsonConverter.jsonToObject(json, LocalDir.class);
                 // 检查并创建目录
                 File localRepo = new File(localDir.getLocalRepo());
                 if (!localRepo.exists() && !localRepo.mkdirs()) {
@@ -89,7 +89,7 @@ public class ConfigService {
                 break;
             // 通知配置
             case notifier:
-                Notification notification = (Notification) JsonUtil.jsonToObject(json, Notification.class);
+                Notification notification = (Notification) JsonConverter.jsonToObject(json, Notification.class);
                 Notification notifyEntity =
                         notifyRepository.findByIsDeleteFalseAndNotifierName(notification.getNotifierName());
                 if (notifyEntity != null) {
@@ -102,7 +102,7 @@ public class ConfigService {
                 break;
             // 仓库配置
             case repo:
-                AppUpdate appUpdate = (AppUpdate) JsonUtil.jsonToObject(json, AppUpdate.class);
+                AppUpdate appUpdate = (AppUpdate) JsonConverter.jsonToObject(json, AppUpdate.class);
                 AppUpdate updateEntity = updateRepository.findByIsDeleteFalseAndRepoName(appUpdate.getRepoName());
                 if (updateEntity != null) {
                     appUpdate.setId(updateEntity.getId());
@@ -114,7 +114,7 @@ public class ConfigService {
                 break;
             // 编译器配置
             case compiler:
-                AppCompile appCompile = (AppCompile) JsonUtil.jsonToObject(json, AppCompile.class);
+                AppCompile appCompile = (AppCompile) JsonConverter.jsonToObject(json, AppCompile.class);
                 // 检测本机上是否存在编译器
                 String script = appCompile.getCompilerHome() + appCompile.getVersionCmd();
                 checkScript(script);
@@ -131,7 +131,7 @@ public class ConfigService {
                 break;
             // 打包工具配置
             case packer:
-                AppPack appPack = (AppPack) JsonUtil.jsonToObject(json, AppPack.class);
+                AppPack appPack = (AppPack) JsonConverter.jsonToObject(json, AppPack.class);
                 // 检测本机上是否存在 docker
                 if (PackerType.valueOf(appPack.getPackerType()) == PackerType.docker) {
                     checkScript("docker -v");

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
@@ -54,7 +54,7 @@ public class OrchestrateService {
         switch (type) {
             case 1:
                 // 项目编排
-                ProjVO projVO = (ProjVO) JsonUtil.jsonToObject(json, ProjVO.class);
+                ProjVO projVO = (ProjVO) JsonConverter.jsonToObject(json, ProjVO.class);
                 AppBuild appBuild = checkSharedBuildConfig(projVO.getAppBuild());
                 ProjOrchestration proj = ProjVO.to(projVO);
                 proj.setAppBuild(appBuild);
@@ -70,7 +70,7 @@ public class OrchestrateService {
                 break;
             case 2:
                 // 应用编排
-                AppVO appVO = (AppVO) JsonUtil.jsonToObject(json, AppVO.class);
+                AppVO appVO = (AppVO) JsonConverter.jsonToObject(json, AppVO.class);
                 AppOrchestration app = AppVO.to(appVO);
                 if (appVO.getProjId() == null) {
                     AppBuild appBuild1 = checkSharedBuildConfig(appVO.getAppBuild());

+ 5 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuilderUtil.java

@@ -1,9 +1,8 @@
 package cn.reghao.autodop.dmaster.app.service.build;
 
-import cn.reghao.autodop.common.utils.FileUtil;
+import cn.reghao.autodop.common.utils.FileOps;
 import cn.reghao.autodop.common.utils.text.ReplaceCharacter;
 import cn.reghao.autodop.dmaster.app.constant.AppType;
-import cn.reghao.autodop.dmaster.app.constant.CompilerType;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.common.config.SysConfig;
@@ -11,7 +10,6 @@ import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Set;
 
 /**
  * @author reghao
@@ -28,10 +26,10 @@ public class BuilderUtil {
     public static void copyToCompileDir(String appLocalRepo, AppOrchestration app) throws IOException {
         String appCompileDir = SysConfig.compileDir + "/" + app.getAppId();
         File compileDir = new File(appCompileDir);
-        if (!compileDir.exists() && !FileUtil.mkdir(compileDir)) {
+        if (!compileDir.exists() && !FileOps.mkdir(compileDir)) {
             throw new IOException(compileDir + "不存在");
         } else {
-            FileUtil.eraseDir(compileDir);
+            FileOps.eraseDir(compileDir);
         }
 
         ProjOrchestration proj = app.getProj();
@@ -50,7 +48,7 @@ public class BuilderUtil {
     }
 
     private static void copy(String from, String to, AppOrchestration app) throws IOException {
-        FileUtil.copyDirToDir(from + "/" + app.getDirname(), to);
+        FileOps.copyDirToDir(from + "/" + app.getDirname(), to);
         /*Set<String> dep = app.getDependencyRepos();
         if (dep != null && !dep.isEmpty()) {
             for (String repo : dep) {
@@ -90,6 +88,6 @@ public class BuilderUtil {
      * @date 2020-08-18 上午11:00
      */
     public static void replaceCharacter(String appCompileDir) {
-        FileUtil.traversal(appCompileDir, new ReplaceCharacter());
+        FileOps.traversal(appCompileDir, new ReplaceCharacter());
     }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployTask.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.service.deploy;
 import cn.reghao.autodop.common.deploy.DeployConfig;
 import cn.reghao.autodop.common.mq.*;
 import cn.reghao.autodop.common.result.RpcResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 
 import java.util.concurrent.Callable;
 
@@ -31,6 +31,6 @@ public class AppDeployTask implements Callable<RpcResult> {
         mqMessage.setMsgType(MsgType.deploy.name());
         mqMessage.setMsg(deployConfig);
         mqMessage.setSendTime(System.currentTimeMillis());
-        return sender.callRemote(routeKey, JsonUtil.objectToJson(mqMessage));
+        return sender.callRemote(routeKey, JsonConverter.objectToJson(mqMessage));
     }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/compiler/ShellCompiler.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.tools.compiler;
 
 import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.common.shell.ShellResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 
 /**
@@ -24,7 +24,7 @@ public class ShellCompiler implements CodeCompiler {
     public void compile(String appName, String appHome, String env) throws Exception {
         ShellResult result = shell.execCommand(appHome, cmd, true);
         if (result.hasError()) {
-            throw new Exception(JsonUtil.objectToJson(result.getStderr()));
+            throw new Exception(JsonConverter.objectToJson(result.getStderr()));
         }
     }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/packer/ZipPack.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.tools.packer;
 
-import cn.reghao.autodop.common.utils.compression.ZipUtil;
+import cn.reghao.autodop.common.utils.compression.ZipFiles;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;
@@ -25,7 +25,7 @@ public class ZipPack implements CodePacker {
         if (new File(dst).exists()) {
             return null;
         }
-        ZipUtil.zip(new File(appEntryDir), dst);
+        ZipFiles.zip(new File(appEntryDir), dst);
 
         return null;
     }

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import lombok.Data;
@@ -37,7 +37,7 @@ public class BuildDeployResult {
     public static BuildDeployResult fromBuildLog(BuildLog buildLog) {
         BuildDeployResult buildDeployResult = new BuildDeployResult();
         buildDeployResult.setAppId(buildLog.getAppId());
-        buildDeployResult.setBuildTime(DateTimeUtil.format(buildLog.getBuildTime()));
+        buildDeployResult.setBuildTime(DatetimeConverter.format(buildLog.getBuildTime()));
         buildDeployResult.setDeploy(false);
         buildDeployResult.setStatusCode(buildLog.getStatusCode());
         buildDeployResult.setMsg(buildLog.getMsg());
@@ -58,7 +58,7 @@ public class BuildDeployResult {
         BuildLog buildLog = deployLogs.get(0).getBuildLog();
         BuildDeployResult buildDeployResult = new BuildDeployResult();
         buildDeployResult.setAppId(buildLog.getAppId());
-        buildDeployResult.setBuildTime(DateTimeUtil.format(buildLog.getBuildTime()));
+        buildDeployResult.setBuildTime(DatetimeConverter.format(buildLog.getBuildTime()));
         buildDeployResult.setDeploy(true);
         buildDeployResult.setCommitId(buildLog.getCommitLog().getCommitId());
         buildDeployResult.setCommitMsg(buildLog.getCommitLog().getCommitMsg());

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildLogVO.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 
 /**
@@ -33,7 +33,7 @@ public class BuildLogVO {
         buildLogVO.branch = buildLog.getCommitLog().getBranch();
         buildLogVO.commitId = buildLog.getCommitLog().getCommitId();
         buildLogVO.appPath = buildLog.getAppPath();
-        buildLogVO.buildTime = DateTimeUtil.format(buildLog.getBuildTime());
+        buildLogVO.buildTime = DatetimeConverter.format(buildLog.getBuildTime());
         buildLogVO.compilerName = buildLog.getAppCompile().getCompilerName();
         buildLogVO.packerName = buildLog.getAppPack().getPackerName();
         buildLogVO.msg = buildLog.getMsg();

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/CommitLogVO.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.service.tools.updater.ChangedFile;
 import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import lombok.Data;
@@ -31,7 +31,7 @@ public class CommitLogVO {
         commitLogVO.commitId = commitLog.getCommitId();
         commitLogVO.commitAuthor = commitLog.getCommitAuthor();
         commitLogVO.commitMsg = commitLog.getCommitMsg();
-        commitLogVO.commitTime = DateTimeUtil.msTimestampFormat(commitLog.getCommitTime());
+        commitLogVO.commitTime = DatetimeConverter.msTimestampFormat(commitLog.getCommitTime());
         commitLogVO.changedFiles = commitLog.getChangedFiles();
         return commitLogVO;
     }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/DeployLogVO.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 
@@ -22,7 +22,7 @@ public class DeployLogVO {
         deployLogVO.appId = buildLog.getAppId();
         deployLogVO.commitId = buildLog.getCommitLog().getCommitId();
         deployLogVO.host = deployLog.getHost();
-        deployLogVO.deployTime = DateTimeUtil.format(deployLog.getDeployTime());
+        deployLogVO.deployTime = DatetimeConverter.format(deployLog.getDeployTime());
         deployLogVO.deployTotalTime = deployLog.getDeployTotalTime();
         deployLogVO.msg = deployLog.getMsg();
         return deployLogVO;

+ 22 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java

@@ -2,9 +2,9 @@ package cn.reghao.autodop.dmaster.app3.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
 import cn.reghao.autodop.dmaster.app3.entity.App3;
+import cn.reghao.autodop.dmaster.app3.entity.App3Bak;
 import cn.reghao.autodop.dmaster.app3.service.App3CrudService;
-import cn.reghao.autodop.common.utils.data.serializer.DefaultJsonSerializer;
-import cn.reghao.autodop.common.utils.data.serializer.JsonSerializer;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.*;
@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/app3")
 public class App3CrudController {
     private App3CrudService app3CrudService;
-    private JsonSerializer<App3> jsonSerializer = new DefaultJsonSerializer<>();
 
     public App3CrudController(App3CrudService app3CrudService) {
         this.app3CrudService = app3CrudService;
@@ -26,8 +25,8 @@ public class App3CrudController {
 
     @PostMapping
     public String addApp3(@RequestBody String jsonData) {
-        App3 app3 = jsonSerializer.fromJson(jsonData, App3.class);
-        if (isArgsValid(app3)) {
+        App3 app3 = (App3) JsonConverter.jsonToObject(jsonData, App3.class);
+        if (isApp3Valid(app3)) {
             app3CrudService.addOrModify(app3);
             return WebResult.success("add done...");
         }
@@ -35,6 +34,17 @@ public class App3CrudController {
         return WebResult.fail("add failed...");
     }
 
+    @PostMapping("/bak")
+    public String addApp3Bak(@RequestBody String jsonData) {
+        App3Bak app3Bak = (App3Bak) JsonConverter.jsonToObject(jsonData, App3Bak.class);
+        if (isApp3BakValid(app3Bak)) {
+            //app3CrudService.addOrModify(app3);
+            return WebResult.success("add done...");
+        }
+
+        return WebResult.fail("add failed...");
+    }
+
     @GetMapping
     public String getApp3ByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
         if (page < 0 || size <0) {
@@ -47,8 +57,8 @@ public class App3CrudController {
 
     @PutMapping
     public String modifyApp3(@RequestBody String jsonData) {
-        App3 app3 = jsonSerializer.fromJson(jsonData, App3.class);
-        if (isArgsValid(app3)) {
+        App3 app3 = (App3) JsonConverter.jsonToObject(jsonData, App3.class);
+        if (isApp3Valid(app3)) {
             app3CrudService.addOrModify(app3);
             return WebResult.success("put done...");
         }
@@ -62,7 +72,11 @@ public class App3CrudController {
         return WebResult.success("delete done...");
     }
 
-    private boolean isArgsValid(App3 app3) {
+    private boolean isApp3Valid(App3 app3) {
         return app3.getApp3Name() != null && app3.getExecPath() != null;
     }
+
+    private boolean isApp3BakValid(App3Bak app3Bak) {
+        return app3Bak.getApp3Name() != null && app3Bak.getBakScript() != null && app3Bak.getCronExp() != null;
+    }
 }

+ 5 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3OpsController.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.dmaster.app3.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
-import cn.reghao.autodop.common.utils.JsonUtil;
 import cn.reghao.autodop.dmaster.app3.backup.BackupService;
 import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
 import cn.reghao.autodop.dmaster.common.mongo.MongoManager;
@@ -26,15 +25,14 @@ public class App3OpsController {
         this.mongoManager = mongoManager;
     }
 
-    @PostMapping("/bak")
+    /*@PostMapping("/bak")
     public String backup(String jsonData) throws Exception {
-        /*String scriptPath = "/tmp/test.sh";
+        String scriptPath = "/tmp/test.sh";
         TextFile.write(new File(scriptPath), app3Bak.getBakScript());
         app3Bak.setBakScriptPath(scriptPath);
-        backupService.backup(app3Bak);*/
-
+        backupService.backup(app3Bak);
         return WebResult.success("ok");
-    }
+    }*/
 
     @PostMapping("/restore/{serviceName}")
     public String restore(@PathVariable("serviceName") String serviceName) throws Exception {
@@ -44,6 +42,6 @@ public class App3OpsController {
     @GetMapping("/log/{serviceName}")
     public String bakLog(@PathVariable("serviceName") String serviceName) {
         List<App3BakLog> list = mongoManager.query(serviceName);
-        return WebResult.success(JsonUtil.objectToJson(list));
+        return WebResult.success(list);
     }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app3.scheduler;
 
 import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.common.shell.ShellResult;
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app3.entity.App3BakLog;
 import cn.reghao.autodop.dmaster.common.mongo.MongoManager;
 import lombok.extern.slf4j.Slf4j;
@@ -37,7 +37,7 @@ public class ScriptBakJob implements Job {
 
         App3BakLog app3BakLog = new App3BakLog();
         app3BakLog.setApp3name(jobKey.getName());
-        app3BakLog.setBakTime(DateTimeUtil.now());
+        app3BakLog.setBakTime(DatetimeConverter.now());
         log.info("执行 {} 定时任务...", jobKey.getName());
         try {
             ShellResult shellResult = executor.execScript(script);

+ 8 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/IndexController.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.auth.entity.Permission;
 import cn.reghao.autodop.dmaster.auth.entity.Role;
 import cn.reghao.autodop.dmaster.auth.entity.UserAuth;
@@ -52,7 +52,7 @@ public class IndexController {
         userResult.setCode(20000);
         userResult.setData(userResultData);
 
-        return ResponseEntity.ok().body(JsonUtil.objectToJson(userResult));
+        return ResponseEntity.ok().body(JsonConverter.objectToJson(userResult));
     }
 
     @GetMapping("/user/info")
@@ -69,7 +69,7 @@ public class IndexController {
         userResult.setCode(20000);
         userResult.setData(userResultData);
 
-        return ResponseEntity.ok().body(JsonUtil.objectToJson(userResult));
+        return ResponseEntity.ok().body(JsonConverter.objectToJson(userResult));
     }
 
     @PostMapping("/logout")
@@ -77,7 +77,7 @@ public class IndexController {
         LogoutData logoutData = new LogoutData();
         logoutData.setCode(20000);
         logoutData.setData("success");
-        return ResponseEntity.ok().body(JsonUtil.objectToJson(logoutData));
+        return ResponseEntity.ok().body(JsonConverter.objectToJson(logoutData));
     }
 
     @Data
@@ -127,7 +127,7 @@ public class IndexController {
         userInfo.setRoles(roles);
         result.setData(userInfo);
 
-        return ResponseEntity.ok().body(JsonUtil.objectToJson(result));
+        return ResponseEntity.ok().body(JsonConverter.objectToJson(result));
     }
 
     @GetMapping("/api/getRoles")
@@ -149,7 +149,7 @@ public class IndexController {
         roleData.setAllRoles(allRoles);
         resultData.setData(roleData);
 
-        return ResponseEntity.ok().body(JsonUtil.objectToJson(resultData));
+        return ResponseEntity.ok().body(JsonConverter.objectToJson(resultData));
     }
 
     @PostMapping("/login")
@@ -179,7 +179,7 @@ public class IndexController {
 
     @GetMapping("/datetime")
     public ResponseEntity<String> test() {
-        return ResponseEntity.ok().body(DateTimeUtil.format(LocalDateTime.now()));
+        return ResponseEntity.ok().body(DatetimeConverter.format(LocalDateTime.now()));
     }
 
     @Data

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/JwtToken.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.jwt;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.DatetimeConverter;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.Jwts;
@@ -49,7 +49,7 @@ public class JwtToken {
         String jwt = Jwts.builder()
                 .claim("authorities", authorities)
                 .setSubject(username)
-                .setExpiration(new Date(System.currentTimeMillis() + DateTimeUtil.duration(future)))
+                .setExpiration(new Date(System.currentTimeMillis() + DatetimeConverter.duration(future)))
                 .signWith(SignatureAlgorithm.HS256, KEY)
                 .compact();
 
@@ -68,7 +68,7 @@ public class JwtToken {
         LocalDateTime future = LocalDate.now().plusDays(REFRESH_EXPIRATION_DAY).atTime(3, 0);
         String refreshToken = Jwts.builder()
                 .setSubject(username)
-                .setExpiration(new Date(System.currentTimeMillis() + DateTimeUtil.duration(future)))
+                .setExpiration(new Date(System.currentTimeMillis() + DatetimeConverter.duration(future)))
                 .signWith(SignatureAlgorithm.HS256, KEY)
                 .compact();
 

+ 2 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/LogoutSuccessHandlerImpl.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.jwt;
 
-import cn.reghao.autodop.common.utils.JsonUtil;
-import cn.reghao.autodop.dmaster.auth.controller.IndexController;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import lombok.Data;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
@@ -29,7 +28,7 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler {
         map.put("code", "20000");
         map.put("data", "success");
         PrintWriter pt = response.getWriter();
-        pt.println(JsonUtil.objectToJson(map));
+        pt.println(JsonConverter.objectToJson(map));
     }
 
     @Data

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/jwt/UsernamePasswordAuthFilter.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.jwt;
 
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import lombok.Data;
@@ -88,7 +88,7 @@ public class UsernamePasswordAuthFilter extends AbstractAuthenticationProcessing
 
         PrintWriter pt = response.getWriter();
         log.info("认证成功并返回");
-        pt.println(JsonUtil.objectToJson(result));
+        pt.println(JsonConverter.objectToJson(result));
     }
 
     // TODO 从 devops.reghao.cn 调用 api.reghao.cn 的接口登录,密码错误时返回跨域问题

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserService.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.service;
 
-import cn.reghao.autodop.common.utils.JsonUtil;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.common.utils.security.Cryptor;
 import cn.reghao.autodop.common.utils.security.Md5Cryptor;
 import cn.reghao.autodop.common.utils.security.Salt;
@@ -46,7 +46,7 @@ public class UserService {
     public void addOrUpdate(int type, String json) throws Exception {
         switch (type) {
             case 1:
-                Role role = (Role) JsonUtil.jsonToObject(json, Role.class);
+                Role role = (Role) JsonConverter.jsonToObject(json, Role.class);
                 String name = rolePrefix + role.getName().toUpperCase();
                 role.setName(name);
                 Role roleEntity = roleRepository.findRoleByName(role.getName());
@@ -59,7 +59,7 @@ public class UserService {
                 }
                 break;
             case 2:
-                Permission permission = (Permission) JsonUtil.jsonToObject(json, Permission.class);
+                Permission permission = (Permission) JsonConverter.jsonToObject(json, Permission.class);
                 Role role1 = permission.getRole();
                 Role roleEntity1 = roleRepository.findRoleByName(rolePrefix + role1.getName());
                 if (roleEntity1 != null) {
@@ -78,7 +78,7 @@ public class UserService {
                 }
                 break;
             case 3:
-                UserAuthVO vo = (UserAuthVO) JsonUtil.jsonToObject(json, UserAuthVO.class);
+                UserAuthVO vo = (UserAuthVO) JsonConverter.jsonToObject(json, UserAuthVO.class);
                 UserAuth userAuth = UserAuthVO.to(vo);
                 Set<GrantedAuthorityImpl> authorities = userAuth.authorities();
                 Set<GrantedAuthorityImpl> authoritiesEntity = new HashSet<>();

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mq/MessageDispatcher.java

@@ -1,8 +1,8 @@
 package cn.reghao.autodop.dmaster.common.mq;
 
 import cn.reghao.autodop.common.mq.MsgType;
-import cn.reghao.autodop.common.utils.JsonUtil;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.core.MessageListener;
@@ -18,7 +18,7 @@ public class MessageDispatcher implements MessageListener {
     @Override
     public void onMessage(Message msg) {
         String body = new String(msg.getBody());
-        JsonObject jsonObject = JsonUtil.jsonObject(body);
+        JsonObject jsonObject = new JsonParser().parse(body).getAsJsonObject();
         String msgType = jsonObject.get("msgType").getAsString();
         try {
             switch (MsgType.valueOf(msgType)) {

+ 4 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/AfterAppStart.java

@@ -1,11 +1,8 @@
 package cn.reghao.autodop.dmaster.common.utils;
 
-import cn.reghao.autodop.common.shell.ShellExecutor;
-import cn.reghao.autodop.common.shell.ShellResult;
-import cn.reghao.autodop.common.utils.FileUtil;
+import cn.reghao.autodop.common.utils.FileOps;
 import cn.reghao.autodop.common.utils.NetworkUtil;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
-import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.repository.build.AppCompileRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.LocalDirRepository;
 import cn.reghao.autodop.dmaster.auth.service.UserService;
@@ -17,10 +14,6 @@ import org.springframework.stereotype.Component;
 
 import java.io.File;
 import java.net.SocketException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 应用启动完成后进行系统预检查:
@@ -86,19 +79,19 @@ public class AfterAppStart implements ApplicationRunner {
      */
     private void checkAndSetLocalDir() {
         File localRepo = new File(SysConfig.localRepo);
-        if (!localRepo.exists() && !FileUtil.mkdir(localRepo)) {
+        if (!localRepo.exists() && !FileOps.mkdir(localRepo)) {
             log.error("{} 不存在且创建失败...", localRepo.getAbsolutePath());
             throw new IllegalArgumentException(localRepo.getAbsolutePath() + " 不存在且创建失败...");
         }
 
         File compileDir = new File(SysConfig.compileDir);
-        if (!compileDir.exists() && !FileUtil.mkdir(compileDir)) {
+        if (!compileDir.exists() && !FileOps.mkdir(compileDir)) {
             log.error("{} 不存在且创建失败...", compileDir.getAbsolutePath());
             throw new IllegalArgumentException(compileDir.getAbsolutePath() + " 不存在且创建失败...");
         }
 
         File packDir = new File(SysConfig.packDir);
-        if (!packDir.exists() && !FileUtil.mkdir(packDir)) {
+        if (!packDir.exists() && !FileOps.mkdir(packDir)) {
             log.error("{} 不存在且创建失败...", packDir.getAbsolutePath());
             throw new IllegalArgumentException(packDir.getAbsolutePath() + " 不存在且创建失败...");
         }

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/SpringBootUtil.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.common.utils;
 
-import cn.reghao.autodop.common.utils.FileUtil;
+import cn.reghao.autodop.common.utils.FileOps;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
@@ -28,7 +28,7 @@ public class SpringBootUtil implements ApplicationContextAware {
      * @date 2019-08-30 下午2:04
      */
     public static String runningDir() {
-        return FileUtil.dirPath(System.getProperty("java.class.path"));
+        return FileOps.dirPath(System.getProperty("java.class.path"));
     }
 
     /**
@@ -107,9 +107,9 @@ public class SpringBootUtil implements ApplicationContextAware {
     public static String getRunningDir() {
         String env = getEnv();
         if (env.equals("dev")) {
-            return FileUtil.dirPath(System.getProperty("java.class.path").split(":")[0]);
+            return FileOps.dirPath(System.getProperty("java.class.path").split(":")[0]);
         } else {
-            return FileUtil.dirPath(System.getProperty("java.class.path"));
+            return FileOps.dirPath(System.getProperty("java.class.path"));
         }
     }
 }