TRX 1 år sedan
förälder
incheckning
24e88d25e9

+ 2 - 1
src/main/java/com/zswl/dataservice/controller/docker/DockerMetaController.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.controller.docker;
 
+import cn.hutool.json.JSONObject;
 import com.zswl.dataservice.model.docker.*;
 import com.zswl.dataservice.service.docker.DockerMetaService;
 import com.zswl.dataservice.utils.result.ResultContent;
@@ -76,7 +77,7 @@ public class DockerMetaController {
 
     @Operation(summary = "getList")
     @RequestMapping(value = "getList", method = {RequestMethod.GET})
-    public List<DockerListModel> getList() {
+    public List<JSONObject> getList() {
         return dockerMetaService.getList();
     }
 

+ 1 - 0
src/main/java/com/zswl/dataservice/dao/docker/DockerMetaDao.java

@@ -18,4 +18,5 @@ public interface DockerMetaDao extends MongoDao<DockerMeta>, DockerMetaDaoExtend
 
     DockerMeta findTopByGroupCodeAndName(String groupCode, String name);
 
+    List<DockerMeta> findByGroupCodeOrderByUpdateTimeDesc(String groupCode);
 }

+ 2 - 1
src/main/java/com/zswl/dataservice/domain/docker/RestartPolicy.java

@@ -15,10 +15,11 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class RestartPolicy {
 
+    @Schema(description = "启动方式,如:always")
     @JsonProperty("name")
     private String name;
 
-    @Schema(description = "MaximumRetryCount")
+    @Schema(description = "MaximumRetryCount,如: 0")
     @JsonProperty("maximumRetryCount")
     private Integer maximumRetryCount = 0;
 }

+ 86 - 5
src/main/java/com/zswl/dataservice/service/docker/DockerMetaService.java

@@ -1,10 +1,11 @@
 package com.zswl.dataservice.service.docker;
 
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
 import com.zswl.dataservice.dao.docker.DockerMetaDao;
 import com.zswl.dataservice.dao.docker.DockerMetaLastTimeDao;
 import com.zswl.dataservice.dataConfig.ResultMessage;
-import com.zswl.dataservice.domain.docker.DockerMeta;
-import com.zswl.dataservice.domain.docker.DockerMetaLastTime;
+import com.zswl.dataservice.domain.docker.*;
 import com.zswl.dataservice.domain.mqtt.DeviceInfo;
 import com.zswl.dataservice.model.docker.*;
 import com.zswl.dataservice.model.mqtt.DeviceInfoModel;
@@ -24,6 +25,7 @@ import org.springframework.util.Assert;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author TRX
@@ -132,12 +134,91 @@ public class DockerMetaService extends SuperService {
         return model;
     }
 
-    public List<DockerListModel> getList() {
-        List<DockerListModel> list = new ArrayList<>();
-
+    public List<JSONObject> getList() {
+        List<JSONObject> list = new ArrayList<>();
+        String groupCode = getHeader("groupCode");
+        if (StringUtils.isNotEmpty(groupCode)) {
+            List<DockerMeta> datas = dockerMetaDao.findByGroupCodeOrderByUpdateTimeDesc(groupCode);
+            if (ObjectUtils.isNotEmpty(datas)) {
+                list = datas.stream().map(this::toJson).collect(Collectors.toList());
+            }
+        }
         return list;
     }
 
+    private JSONObject toJson(DockerMeta entity) {
+        JSONObject object = new JSONObject();
+
+        object.set("Remark", entity.getRemark());
+        object.set("UpdateTime", entity.getUpdateTime());
+
+        JSONObject Container = new JSONObject();
+        Container.set("Name", entity.getName());
+        JSONObject Config = new JSONObject();
+        Config.put("Image", entity.getImage());
+        Config.put("WorkingDir", entity.getWorkingDir());
+
+        JSONArray Env = new JSONArray();
+        if (StringUtils.isNotEmpty(entity.getNetworkTypes())) {
+            Env.add(String.format("networkTypes=%s", entity.getNetworkTypes()));
+        }
+        if (StringUtils.isNotEmpty(entity.getMessageProtocals())) {
+            Env.add(String.format("messageProtocals=%s", entity.getMessageProtocals()));
+        }
+        if (StringUtils.isNotEmpty(entity.getExtend())) {
+            Env.add(String.format("extend=%s", entity.getExtend()));
+        }
+        List<EnvModel> env = entity.getEnv();
+        if (ObjectUtils.isNotEmpty(env)) {
+            for (EnvModel envModel : env) {
+                Env.add(String.format("%s=%s", envModel.getKey(), envModel.getValue()));
+            }
+        }
+        Config.set("Env", Env);
+        Container.set("Config", Config);
+
+        JSONObject HostConfig = new JSONObject();
+        RestartPolicy restartPolicy = entity.getRestartPolicy();
+        if (ObjectUtils.isNotEmpty(restartPolicy)) {
+            JSONObject RestartPolicy = new JSONObject();
+            RestartPolicy.set("Name", restartPolicy.getName());
+            HostConfig.set("MaximumRetryCount", restartPolicy.getMaximumRetryCount());
+            HostConfig.set("RestartPolicy", RestartPolicy);
+        }
+
+        JSONArray Mounts = new JSONArray();
+        List<Mount> mounts = entity.getMounts();
+        if (ObjectUtils.isNotEmpty(mounts)) {
+            for (Mount mount : mounts) {
+                JSONObject Mount = new JSONObject();
+                Mount.set("Type", mount.getType());
+                Mount.set("Source", mount.getSource());
+                Mount.set("Target", mount.getTarget());
+                Mounts.add(Mount);
+            }
+        }
+        HostConfig.set("Mounts", Mounts);
+
+        JSONObject PortBindings = new JSONObject();
+        List<PortBinding> portBindings = entity.getPortBindings();
+        if (ObjectUtils.isNotEmpty(portBindings)) {
+            for (PortBinding portBinding : portBindings) {
+                String key = String.format("%s/%s", portBinding.getPort(), portBinding.getProtocol());
+                JSONArray bindings = new JSONArray();
+                JSONObject Binding = new JSONObject();
+                Binding.set("HostIp", portBinding.getHostIp());
+                Binding.set("HostPort", portBinding.getHostPort());
+                bindings.add(Binding);
+                PortBindings.set(key, bindings);
+            }
+        }
+        HostConfig.set("PortBindings", PortBindings);
+
+        Container.set("HostConfig", HostConfig);
+        object.set("Container", Container);
+        return object;
+    }
+
     public DockerMetaModel toModel(DockerMeta entity) {
         DockerMetaModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {