TRX 1 рік тому
батько
коміт
0c19b7c258

+ 84 - 0
src/main/java/com/zswl/dataservice/controller/docker/DockerMetaController.java

@@ -0,0 +1,84 @@
+package com.zswl.dataservice.controller.docker;
+
+import com.zswl.dataservice.model.docker.*;
+import com.zswl.dataservice.service.docker.DockerMetaService;
+import com.zswl.dataservice.utils.result.ResultContent;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * Docker元数据管理
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+@RequestMapping("/v1/task")
+@RestController
+@Validated
+@Tag(name = "Docker元数据管理")
+public class DockerMetaController {
+
+    @Autowired
+    DockerMetaService dockerMetaService;
+
+    //-------------------------- Docker start------------------------------
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "添加-编辑Docker元数据")
+    @RequestMapping(value = "addOrUpdate", method = {RequestMethod.POST})
+    public ResultContent addOrUpdate(@RequestBody DockerMetaParam param) {
+        return dockerMetaService.addOrUpdate(param);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "docker元数据列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<DockerMetaModel>> page(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) DockerMetaSearch param) {
+        return dockerMetaService.page(pageable, param);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "删除元数据")
+    @RequestMapping(value = "deleteMeta", method = {RequestMethod.GET})
+    public ResultContent deleteMeta(@Parameter(name = "id", description = "数据id") String id) {
+        return dockerMetaService.deleteMeta(id);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "查询Docker元数据详情")
+    @RequestMapping(value = "getDockerMeta", method = {RequestMethod.GET})
+    public ResultContent<DockerMetaModel> getDockerMeta(@Parameter(name = "id", description = "数据id") String id) {
+        return dockerMetaService.getDockerMeta(id);
+    }
+
+    //-------------------------- docker end--------------------------------
+
+    //-------------------------- 镜像数据 start-------------------------------
+
+    @Operation(summary = "查询分组最新的版本")
+    @RequestMapping(value = "getVersion", method = {RequestMethod.GET})
+    public DockerMetaLastTimeModel getVersion() {
+        return dockerMetaService.getVersion();
+    }
+
+    @Operation(summary = "得到分组的镜像列表")
+    @RequestMapping(value = "getList", method = {RequestMethod.GET})
+    public List<DockerListModel> getList() {
+        return dockerMetaService.getList();
+    }
+
+
+}

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

@@ -16,4 +16,6 @@ public interface DockerMetaDao extends MongoDao<DockerMeta>, DockerMetaDaoExtend
 
     DockerMeta findTopById(String id);
 
+    DockerMeta findTopByGroupCodeAndName(String groupCode, String name);
+
 }

+ 16 - 0
src/main/java/com/zswl/dataservice/dao/docker/DockerMetaLastTimeDao.java

@@ -0,0 +1,16 @@
+package com.zswl.dataservice.dao.docker;
+
+import com.zswl.dataservice.dao.MongoDao;
+import com.zswl.dataservice.dao.docker.extend.DockerMetaDaoExtend;
+import com.zswl.dataservice.domain.docker.DockerMeta;
+import com.zswl.dataservice.domain.docker.DockerMetaLastTime;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface DockerMetaLastTimeDao extends MongoDao<DockerMetaLastTime> {
+
+    DockerMetaLastTime findTopByGroupCode(String groupCode);
+
+}

+ 5 - 30
src/main/java/com/zswl/dataservice/dao/docker/impl/DockerMetaDaoImpl.java

@@ -40,8 +40,8 @@ public class DockerMetaDaoImpl extends BaseImpl implements DockerMetaDaoExtend {
     public Page<DockerMeta> page(Pageable pageable, DockerMetaSearch param) {
         Criteria criteria = new Criteria();
 
-        if (CommonUtil.bigDecimalIsEmpty(param.getVersion())) {
-            criteria.and("version").is(param.getVersion());
+        if (StringUtils.isNotEmpty(param.getGroupCode())) {
+            criteria.and("groupCode").is(param.getGroupCode());
         }
 
         // 模糊搜索
@@ -51,34 +51,9 @@ public class DockerMetaDaoImpl extends BaseImpl implements DockerMetaDaoExtend {
             criterias.add(Criteria.where("name").is(pattern));
         }
 
-        if (StringUtils.isNotEmpty(param.getRegistry())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getRegistry() + ".*$");
-            criterias.add(Criteria.where("registry").is(pattern));
-        }
-
-        if (StringUtils.isNotEmpty(param.getRepository())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getRepository() + ".*$");
-            criterias.add(Criteria.where("repository").is(pattern));
-        }
-
-        if (StringUtils.isNotEmpty(param.getTag())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getTag() + ".*$");
-            criterias.add(Criteria.where("tag").is(pattern));
-        }
-
-        if (StringUtils.isNotEmpty(param.getNetworkTypes())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getNetworkTypes() + ".*$");
-            criterias.add(Criteria.where("networkTypes").is(pattern));
-        }
-
-        if (StringUtils.isNotEmpty(param.getMessageProtocals())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getMessageProtocals() + ".*$");
-            criterias.add(Criteria.where("messageProtocals").is(pattern));
-        }
-
-        if (StringUtils.isNotEmpty(param.getExtend())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getExtend() + ".*$");
-            criterias.add(Criteria.where("extend").is(pattern));
+        if (StringUtils.isNotEmpty(param.getImage())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getImage() + ".*$");
+            criterias.add(Criteria.where("image").is(pattern));
         }
 
         if (!CollectionUtils.isEmpty(criterias)) {

+ 28 - 14
src/main/java/com/zswl/dataservice/domain/docker/DockerMeta.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.domain.docker;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.zswl.dataservice.domain.base.SuperEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -8,6 +9,8 @@ import lombok.NoArgsConstructor;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * docker 更新元数据
@@ -21,27 +24,38 @@ import java.math.BigDecimal;
 @AllArgsConstructor
 public class DockerMeta extends SuperEntity {
 
-    @Schema(description = "")
-    private String name;
-
-    @Schema(description = "")
-    private String registry;
+    @Schema(description = "分组名称")
+    private String groupCode;
 
-    @Schema(description = "")
-    private String repository;
+    @Schema(description = "容器名称", required = true)
+    private String name;
 
-    @Schema(description = "")
-    private String tag;
+    @Schema(description = "镜像名称", required = true)
+    private String image;
 
-    @Schema(description = "")
-    private BigDecimal version;
+    @Schema(description = "环境变量,格式如:name=lishi")
+    private List<String> env = new ArrayList<>();
 
-    @Schema(description = "")
+    @Schema(description = "networkTypes")
     private String networkTypes;
 
-    @Schema(description = "")
+    @Schema(description = "messageProtocals")
     private String messageProtocals;
 
-    @Schema(description = "")
+    @Schema(description = "extend")
     private String extend;
+
+    @Schema(description = "工作目录")
+    private String workingDir;
+
+    @Schema(description = "启动配置")
+    @JsonProperty("RestartPolicy")
+    private RestartPolicy restartPolicy;
+
+    @Schema(description = "目录映射,mounts")
+    private List<Mount> mounts = new ArrayList<>();
+
+    @Schema(description = "端口配置,PortBindings")
+    private List<PortBinding> portBindings = new ArrayList<>();
+
 }

+ 25 - 0
src/main/java/com/zswl/dataservice/domain/docker/DockerMetaLastTime.java

@@ -0,0 +1,25 @@
+package com.zswl.dataservice.domain.docker;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class DockerMetaLastTime extends SuperEntity {
+
+    @Schema(description = "分组名称")
+    private String groupCode;
+
+    @Schema(description = "整个分组最新修改时间")
+    private Long lastTime;
+}

+ 28 - 0
src/main/java/com/zswl/dataservice/domain/docker/Mount.java

@@ -0,0 +1,28 @@
+package com.zswl.dataservice.domain.docker;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Mount {
+    @Schema(description = "Type")
+    @JsonProperty("Type")
+    private String Type = "bind";
+
+    @Schema(description = "Source")
+    @JsonProperty("Source")
+    private String Source;
+
+    @Schema(description = "Target")
+    @JsonProperty("Target")
+    private String Target;
+}

+ 25 - 0
src/main/java/com/zswl/dataservice/domain/docker/PortBinding.java

@@ -0,0 +1,25 @@
+package com.zswl.dataservice.domain.docker;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PortBinding {
+
+    @Schema(description = "")
+    private String port;
+
+    @Schema(description = "HostIp,如:0.0.0.0")
+    private String HostIp;
+
+    @Schema(description = "端口,如:8088")
+    private String HostPort;
+}

+ 24 - 0
src/main/java/com/zswl/dataservice/domain/docker/RestartPolicy.java

@@ -0,0 +1,24 @@
+package com.zswl.dataservice.domain.docker;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RestartPolicy {
+
+    @JsonProperty("Name")
+    private String name;
+
+    @Schema(description = "MaximumRetryCount")
+    @JsonProperty("MaximumRetryCount")
+    private Integer maximumRetryCount = 0;
+}

+ 17 - 0
src/main/java/com/zswl/dataservice/model/docker/DockerListModel.java

@@ -0,0 +1,17 @@
+package com.zswl.dataservice.model.docker;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DockerListModel {
+    private String Remark;
+    private String Name;
+}

+ 16 - 0
src/main/java/com/zswl/dataservice/model/docker/DockerMetaLastTimeModel.java

@@ -0,0 +1,16 @@
+package com.zswl.dataservice.model.docker;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DockerMetaLastTimeModel {
+    private Long updateTime = 0L;
+}

+ 30 - 14
src/main/java/com/zswl/dataservice/model/docker/DockerMetaModel.java

@@ -1,5 +1,9 @@
 package com.zswl.dataservice.model.docker;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.zswl.dataservice.domain.docker.Mount;
+import com.zswl.dataservice.domain.docker.PortBinding;
+import com.zswl.dataservice.domain.docker.RestartPolicy;
 import com.zswl.dataservice.model.baseParam.SuperModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -7,6 +11,8 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author TRX
@@ -16,27 +22,37 @@ import java.math.BigDecimal;
 @AllArgsConstructor
 @NoArgsConstructor
 public class DockerMetaModel extends SuperModel {
-    @Schema(description = "")
-    private String name;
-
-    @Schema(description = "")
-    private String registry;
+    @Schema(description = "分组名称")
+    private String groupCode;
 
-    @Schema(description = "")
-    private String repository;
+    @Schema(description = "容器名称", required = true)
+    private String name;
 
-    @Schema(description = "")
-    private String tag;
+    @Schema(description = "镜像名称", required = true)
+    private String image;
 
-    @Schema(description = "")
-    private BigDecimal version;
+    @Schema(description = "环境变量")
+    private List<String> env = new ArrayList<>();
 
-    @Schema(description = "")
+    @Schema(description = "networkTypes")
     private String networkTypes;
 
-    @Schema(description = "")
+    @Schema(description = "messageProtocals")
     private String messageProtocals;
 
-    @Schema(description = "")
+    @Schema(description = "extend")
     private String extend;
+
+    @Schema(description = "工作目录")
+    private String workingDir;
+
+    @Schema(description = "启动配置")
+    @JsonProperty("RestartPolicy")
+    private RestartPolicy restartPolicy;
+
+    @Schema(description = "目录映射,mounts")
+    private List<Mount> mounts = new ArrayList<>();
+
+    @Schema(description = "端口配置,PortBindings")
+    private List<PortBinding> portBindings = new ArrayList<>();
 }

+ 30 - 14
src/main/java/com/zswl/dataservice/model/docker/DockerMetaParam.java

@@ -1,5 +1,9 @@
 package com.zswl.dataservice.model.docker;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.zswl.dataservice.domain.docker.Mount;
+import com.zswl.dataservice.domain.docker.PortBinding;
+import com.zswl.dataservice.domain.docker.RestartPolicy;
 import com.zswl.dataservice.model.baseParam.SuperParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -7,6 +11,8 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author TRX
@@ -16,27 +22,37 @@ import java.math.BigDecimal;
 @AllArgsConstructor
 @NoArgsConstructor
 public class DockerMetaParam extends SuperParam {
-    @Schema(description = "")
-    private String name;
-
-    @Schema(description = "")
-    private String registry;
+    @Schema(description = "分组名称", required = true)
+    private String groupCode;
 
-    @Schema(description = "")
-    private String repository;
+    @Schema(description = "容器名称", required = true)
+    private String name;
 
-    @Schema(description = "")
-    private String tag;
+    @Schema(description = "镜像名称", required = true)
+    private String image;
 
-    @Schema(description = "")
-    private BigDecimal version;
+    @Schema(description = "环境变量")
+    private List<String> env = new ArrayList<>();
 
-    @Schema(description = "")
+    @Schema(description = "networkTypes")
     private String networkTypes;
 
-    @Schema(description = "")
+    @Schema(description = "messageProtocals")
     private String messageProtocals;
 
-    @Schema(description = "")
+    @Schema(description = "extend")
     private String extend;
+
+    @Schema(description = "工作目录")
+    private String workingDir;
+
+    @Schema(description = "启动配置")
+    @JsonProperty("RestartPolicy")
+    private RestartPolicy restartPolicy;
+
+    @Schema(description = "目录映射,mounts")
+    private List<Mount> mounts = new ArrayList<>();
+
+    @Schema(description = "端口配置,PortBindings")
+    private List<PortBinding> portBindings = new ArrayList<>();
 }

+ 30 - 14
src/main/java/com/zswl/dataservice/model/docker/DockerMetaSearch.java

@@ -1,5 +1,9 @@
 package com.zswl.dataservice.model.docker;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.zswl.dataservice.domain.docker.Mount;
+import com.zswl.dataservice.domain.docker.PortBinding;
+import com.zswl.dataservice.domain.docker.RestartPolicy;
 import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -7,6 +11,8 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author TRX
@@ -16,27 +22,37 @@ import java.math.BigDecimal;
 @AllArgsConstructor
 @NoArgsConstructor
 public class DockerMetaSearch extends SuperSearchParam {
-    @Schema(description = "")
-    private String name;
-
-    @Schema(description = "")
-    private String registry;
+    @Schema(description = "分组名称")
+    private String groupCode;
 
-    @Schema(description = "")
-    private String repository;
+    @Schema(description = "容器名称", required = true)
+    private String name;
 
-    @Schema(description = "")
-    private String tag;
+    @Schema(description = "镜像名称", required = true)
+    private String image;
 
-    @Schema(description = "")
-    private BigDecimal version;
+    @Schema(description = "环境变量")
+    private List<String> env = new ArrayList<>();
 
-    @Schema(description = "")
+    @Schema(description = "networkTypes")
     private String networkTypes;
 
-    @Schema(description = "")
+    @Schema(description = "messageProtocals")
     private String messageProtocals;
 
-    @Schema(description = "")
+    @Schema(description = "extend")
     private String extend;
+
+    @Schema(description = "工作目录")
+    private String workingDir;
+
+    @Schema(description = "启动配置")
+    @JsonProperty("RestartPolicy")
+    private RestartPolicy restartPolicy;
+
+    @Schema(description = "目录映射,mounts")
+    private List<Mount> mounts = new ArrayList<>();
+
+    @Schema(description = "端口配置,PortBindings")
+    private List<PortBinding> portBindings = new ArrayList<>();
 }

+ 4 - 0
src/main/java/com/zswl/dataservice/service/base/SuperService.java

@@ -59,6 +59,10 @@ public abstract class SuperService {
         return oid;
     }
 
+    public String getHeader(String key) {
+        return request.getHeader(key);
+    }
+
     public void initDefaultUser(SuperParam param) {
         if (param.getId() != null && param.getId().trim().equals("")) {
             param.setId(null);

+ 105 - 3
src/main/java/com/zswl/dataservice/service/docker/DockerMetaService.java

@@ -1,10 +1,12 @@
 package com.zswl.dataservice.service.docker;
 
 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.mqtt.DeviceInfo;
-import com.zswl.dataservice.model.docker.DockerMetaModel;
-import com.zswl.dataservice.model.docker.DockerMetaSearch;
+import com.zswl.dataservice.model.docker.*;
 import com.zswl.dataservice.model.mqtt.DeviceInfoModel;
 import com.zswl.dataservice.model.mqtt.DeviceInfoSearchParam;
 import com.zswl.dataservice.service.base.SuperService;
@@ -13,10 +15,15 @@ import com.zswl.dataservice.utils.page.PageEntityUtil;
 import com.zswl.dataservice.utils.result.ResultContent;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author TRX
@@ -29,13 +36,108 @@ public class DockerMetaService extends SuperService {
     @Autowired
     private DockerMetaDao dockerMetaDao;
 
-    
+    @Autowired
+    private DockerMetaLastTimeDao dockerMetaLastTimeDao;
+
+    /**
+     * 添加docker元数据
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent addOrUpdate(DockerMetaParam param) {
+        String groupCode = param.getGroupCode();
+        Assert.hasText(param.getGroupCode(), "groupCode不能为空");
+        Assert.hasText(param.getName(), "name不能为空");
+        Assert.hasText(param.getImage(), "image不能为空");
+
+        DockerMeta dockerMeta = new DockerMeta();
+        DockerMeta temp = dockerMetaDao.findTopByGroupCodeAndName(groupCode, param.getName());
+        if (StringUtils.isNotEmpty(param.getId())) {
+            dockerMeta = dockerMetaDao.findTopById(param.getId());
+            if (ObjectUtils.isEmpty(dockerMeta)) {
+                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+            }
+            if (ObjectUtils.isNotEmpty(temp) && !temp.getId().equals(dockerMeta.getId())) {
+                return ResultContent.buildFail(String.format(
+                        "分组【%s】下已存在名称【%s】", groupCode, param.getName()));
+            }
+        } else {
+            if (ObjectUtils.isNotEmpty(temp)) {
+                return ResultContent.buildFail(String.format(
+                        "分组【%s】下已存在名称【%s】", groupCode, param.getName()));
+            }
+            dockerMeta = new DockerMeta();
+            param.setId(null);
+        }
+        BeanUtils.copyProperties(param, dockerMeta);
+        dockerMetaDao.save(dockerMeta);
+        updateLastTime(groupCode);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 删除docker元数据
+     *
+     * @param id
+     * @return
+     */
+    public ResultContent deleteMeta(String id) {
+        DockerMeta dockerMeta = dockerMetaDao.findTopById(id);
+        if (ObjectUtils.isEmpty(dockerMeta)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        updateLastTime(dockerMeta.getGroupCode());
+        dockerMetaDao.delete(dockerMeta);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到详情
+     *
+     * @param id
+     * @return
+     */
+    public ResultContent<DockerMetaModel> getDockerMeta(String id) {
+        DockerMeta dockerMeta = dockerMetaDao.findTopById(id);
+        if (ObjectUtils.isEmpty(dockerMeta)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        DockerMetaModel model = toModel(dockerMeta);
+        return ResultContent.buildSuccess(model);
+    }
 
     public ResultContent<Page<DockerMetaModel>> page(Pageable pageable, DockerMetaSearch param) {
         Page<DockerMeta> page = dockerMetaDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
     }
 
+    public ResultContent updateLastTime(String groupCode) {
+        DockerMetaLastTime lastTime = dockerMetaLastTimeDao.findTopByGroupCode(groupCode);
+        if (ObjectUtils.isEmpty(lastTime)) {
+            lastTime = new DockerMetaLastTime();
+        }
+        lastTime.setLastTime(System.currentTimeMillis());
+        dockerMetaLastTimeDao.save(lastTime);
+        return ResultContent.buildSuccess();
+    }
+
+    public DockerMetaLastTimeModel getVersion() {
+        DockerMetaLastTimeModel model = new DockerMetaLastTimeModel();
+        String groupCode = getHeader("groupCode");
+        DockerMetaLastTime lastTime = dockerMetaLastTimeDao.findTopByGroupCode(groupCode);
+        if (ObjectUtils.isNotEmpty(lastTime)) {
+            model.setUpdateTime(lastTime.getLastTime());
+        }
+        return model;
+    }
+
+    public List<DockerListModel> getList() {
+        List<DockerListModel> list = new ArrayList<>();
+
+        return list;
+    }
+
     public DockerMetaModel toModel(DockerMeta entity) {
         DockerMetaModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {

+ 4 - 0
src/main/resources/application.yml

@@ -56,6 +56,10 @@ authsettings:
       method: POST,GET,OPTIONS
     - path: /hxz/**
       method: GET,POST,OPTIONS
+    - path: /v1/task/getVersion
+      method: POST,GET,OPTIONS
+    - path: /v1/task/getList
+      method: POST,GET,OPTIONS
   validateSsoSessionURL: http://114.55.105.47:8888/ylxs-pms/SsoLogin.action
   tokenExpirePeriod: 86400000 #单位 ms
   privateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrt4Ygv761NfAG\