diff --git a/.gitignore b/.gitignore
index dd60221b7..33f19277a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,4 +32,6 @@ target/
.flattened-pom.xml
data/
-rebel.xml
\ No newline at end of file
+rebel.xml
+
+/sj-python-workspace/
\ No newline at end of file
diff --git a/doc/sql/snail_job_mysql.sql b/doc/sql/snail_job_mysql.sql
index 39507336e..73f950829 100644
--- a/doc/sql/snail_job_mysql.sql
+++ b/doc/sql/snail_job_mysql.sql
@@ -529,3 +529,18 @@ CREATE TABLE `sj_workflow_task_batch`
) ENGINE = InnoDB
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='工作流批次';
+
+CREATE TABLE `sj_publish__config`
+(
+ `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `namespace_id` VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+ `group_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '组名称',
+ `config_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '配置名称',
+ `config_value` varchar(512) NOT NULL DEFAULT '' COMMENT '配置值',
+ `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+ PRIMARY KEY (`id`),
+ KEY `idx_namespace_id_group_name_config_name` (`namespace_id`, `group_name`, config_name),
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 1
+ DEFAULT CHARSET = utf8mb4 COMMENT ='发布配置';
\ No newline at end of file
diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/dataobject/PublishConfigValueDO.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/dataobject/PublishConfigValueDO.java
new file mode 100644
index 000000000..c50b5b938
--- /dev/null
+++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/dataobject/PublishConfigValueDO.java
@@ -0,0 +1,12 @@
+package com.aizuda.snailjob.template.datasource.persistence.dataobject;
+
+/**
+ *
+ *
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+public class PublishConfigValueDO {
+}
diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/PublishConfigMapper.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/PublishConfigMapper.java
new file mode 100644
index 000000000..090bc9102
--- /dev/null
+++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/PublishConfigMapper.java
@@ -0,0 +1,13 @@
+package com.aizuda.snailjob.template.datasource.persistence.mapper;
+
+import com.aizuda.snailjob.template.datasource.persistence.po.PublishConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 发布配置
+ *
+ * @author opensnail
+ * @since 2024-12-22
+ */
+public interface PublishConfigMapper extends BaseMapper {
+}
diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/PublishConfig.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/PublishConfig.java
new file mode 100644
index 000000000..23a78c7b2
--- /dev/null
+++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/PublishConfig.java
@@ -0,0 +1,46 @@
+package com.aizuda.snailjob.template.datasource.persistence.po;
+
+import com.aizuda.snailjob.template.datasource.persistence.dataobject.PublishConfigValueDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 告警通知接收人
+ *
+ * @author opensnail
+ * @since 2024-12-22
+ */
+@Getter
+@Setter
+@TableName("sj_notify_recipient")
+public class PublishConfig extends CreateUpdateDt {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 命名空间id
+ */
+ private String namespaceId;
+
+ /**
+ * 组名称
+ */
+ private String groupName;
+
+ /**
+ * 配置名称
+ */
+ private String configName;
+
+ /**
+ * 配置值 json存储
+ */
+ @TableField(typeHandler = JacksonTypeHandler.class)
+ private PublishConfigValueDO configValue;
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/constant/WebConstants.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/constant/WebConstants.java
new file mode 100644
index 000000000..3d2b4ddc3
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/constant/WebConstants.java
@@ -0,0 +1,18 @@
+package com.aizuda.snailjob.server.web.constant;
+
+import com.aizuda.snailjob.common.core.constant.SystemConstants;
+
+import java.io.File;
+
+public interface WebConstants extends SystemConstants {
+
+ String WORKDIR = System.getProperty("user.dir") + File.separator + "sj-python-workspace" + File.separator;
+
+ String DOCKER_FILE = "Dockerfile";
+
+ String DEFAULT_DOCKER_HOST = "unix:///var/run/docker.sock";
+
+ String WINDOWS_DEFAULT_DOCKER_HOST = "npipe:////./pipe/docker_engine";
+
+
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/DockerController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/DockerController.java
index d0c2b30fb..44d3b436c 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/DockerController.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/DockerController.java
@@ -22,6 +22,11 @@ import java.util.List;
public class DockerController {
private final DockerService dockerService;
+ @GetMapping("/status")
+ public boolean dockerStatus() {
+ return dockerService.dockerStatus();
+ }
+
@GetMapping("/container/page/list")
public PageResult> getContainerList(ContainerQueryVO containerQueryVO) {
return dockerService.getContainerList(containerQueryVO);
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/FileViewerController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/FileViewerController.java
index 96f5bdc96..ad9b6f9a6 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/FileViewerController.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/FileViewerController.java
@@ -1,11 +1,10 @@
package com.aizuda.snailjob.server.web.controller;
import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.net.NetUtil;
-import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.http.HttpUtil;
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
+import com.aizuda.snailjob.server.web.constant.WebConstants;
import com.aizuda.snailjob.server.web.model.enums.FileTypeEnum;
import com.aizuda.snailjob.server.web.model.request.InitProjectVO;
import com.aizuda.snailjob.server.web.model.response.FileVO;
@@ -19,27 +18,22 @@ import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
-import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
@RestController
@RequestMapping("/file")
@RequiredArgsConstructor
@Slf4j
public class FileViewerController {
- private static final String workdir = System.getProperty("user.dir") + File.separator + "sj-python-workspace" + File.separator;
// 显示文件列表
@GetMapping("/files")
public List listFiles(@RequestParam(value = "directory") String directory) {
try {
// 读取目录下的文件列表
- return Files.list(Paths.get(workdir + directory))
+ return Files.list(Paths.get(WebConstants.WORKDIR + directory))
.map(path -> {
File file = path.toFile();
FileVO fileVO = new FileVO();
@@ -69,7 +63,7 @@ public class FileViewerController {
public ViewFileResponseVO viewFile(@RequestParam(value = "directory") String directory) {
try {
// 构建文件路径
- String filePath = Paths.get(workdir + directory).toString();
+ String filePath = Paths.get(WebConstants.WORKDIR + directory).toString();
// 读取文件内容
String s = Files.readString(Paths.get(filePath));
@@ -84,7 +78,17 @@ public class FileViewerController {
// 保存修改后的文件内容
@PutMapping
public Boolean saveFile(@RequestBody SaveFileRequestVO requestVO) {
- FileUtil.writeUtf8String(requestVO.getContent().trim(), workdir + requestVO.getFileName());
+
+ String filePath = WebConstants.WORKDIR + requestVO.getFileName();
+ if (!FileUtil.isFile(filePath)) {
+ throw new SnailJobServerException("必须是文件才能更新", requestVO.getFileName());
+ }
+
+ try {
+ FileUtil.writeUtf8String(requestVO.getContent().trim(), WebConstants.WORKDIR + requestVO.getFileName());
+ } catch (Exception e) {
+ throw new SnailJobServerException("文件更新失败, 请选择需要更新文件的后点击更新");
+ }
return true;
}
@@ -92,7 +96,7 @@ public class FileViewerController {
// https://github.com/open-snail/python-client/archive/refs/tags/v0.0.1.zip
public boolean initPythonProject(@RequestBody InitProjectVO initProjectVO) {
- String projectPath = workdir + initProjectVO.getProjectName();
+ String projectPath = WebConstants.WORKDIR + initProjectVO.getGroupName();
boolean file = FileUtil.isFile(projectPath);
File mkdir;
if (!file) {
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/PublishConfigController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/PublishConfigController.java
new file mode 100644
index 000000000..81f99c980
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/PublishConfigController.java
@@ -0,0 +1,48 @@
+package com.aizuda.snailjob.server.web.controller;
+
+import com.aizuda.snailjob.server.web.model.base.PageResult;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigQueryVO;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigRequestVO;
+import com.aizuda.snailjob.server.web.model.response.PublishConfigResponseVO;
+import com.aizuda.snailjob.server.web.service.PublishConfigService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 发布配置
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+@RestController
+@RequestMapping("/publish-config")
+@RequiredArgsConstructor
+@Slf4j
+public class PublishConfigController {
+ private final PublishConfigService publishConfigService;
+
+ @PostMapping
+ public boolean save(@RequestBody PublishConfigRequestVO requestVO) {
+ return publishConfigService.save(requestVO);
+ }
+
+ @PutMapping
+ public boolean update(@RequestBody PublishConfigRequestVO requestVO) {
+ return publishConfigService.update(requestVO);
+ }
+
+ @GetMapping("/{id}")
+ public PublishConfigResponseVO getDetail(@PathVariable("id") Long id) {
+ return publishConfigService.getById(id);
+ }
+
+ @GetMapping("/page/list")
+ public PageResult> getPageList(PublishConfigQueryVO queryVO) {
+ return publishConfigService.getPageList(queryVO);
+ }
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/InitProjectVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/InitProjectVO.java
index 90573abe1..d99f420a2 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/InitProjectVO.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/InitProjectVO.java
@@ -6,7 +6,7 @@ import lombok.Data;
@Data
public class InitProjectVO {
@NotBlank
- private String projectName;
+ private String groupName;
@NotBlank
private String projectUrl;
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigQueryVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigQueryVO.java
new file mode 100644
index 000000000..22490f99e
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigQueryVO.java
@@ -0,0 +1,12 @@
+package com.aizuda.snailjob.server.web.model.request;
+
+/**
+ *
+ *
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+public class PublishConfigQueryVO {
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigRequestVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigRequestVO.java
new file mode 100644
index 000000000..caf91f2ad
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/PublishConfigRequestVO.java
@@ -0,0 +1,12 @@
+package com.aizuda.snailjob.server.web.model.request;
+
+/**
+ *
+ *
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+public class PublishConfigRequestVO {
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/PublishConfigResponseVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/PublishConfigResponseVO.java
new file mode 100644
index 000000000..03ffc2d43
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/PublishConfigResponseVO.java
@@ -0,0 +1,12 @@
+package com.aizuda.snailjob.server.web.model.response;
+
+/**
+ *
+ *
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+public class PublishConfigResponseVO {
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/DockerService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/DockerService.java
index 03cc6ff65..10535f3c3 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/DockerService.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/DockerService.java
@@ -28,4 +28,6 @@ public interface DockerService {
boolean quickPublish(CreateContainerRequestVO requestVO);
PageResult> getImageList(ImageQueryVO imageQueryVO);
+
+ boolean dockerStatus();
}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/PublishConfigService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/PublishConfigService.java
new file mode 100644
index 000000000..06bec974d
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/PublishConfigService.java
@@ -0,0 +1,27 @@
+package com.aizuda.snailjob.server.web.service;
+
+import com.aizuda.snailjob.server.web.model.base.PageResult;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigQueryVO;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigRequestVO;
+import com.aizuda.snailjob.server.web.model.response.PublishConfigResponseVO;
+
+import java.util.List;
+
+/**
+ *
+ * 发布配置
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+public interface PublishConfigService {
+
+ boolean save(PublishConfigRequestVO requestVO);
+
+ boolean update(PublishConfigRequestVO requestVO);
+
+ PublishConfigResponseVO getById(Long id);
+
+ PageResult> getPageList(PublishConfigQueryVO queryVO);
+}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/DockerHandler.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/DockerHandler.java
index 5376aab90..f6e14ed00 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/DockerHandler.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/DockerHandler.java
@@ -1,9 +1,11 @@
package com.aizuda.snailjob.server.web.service.handler;
+import com.aizuda.snailjob.server.web.constant.WebConstants;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.okhttp.OkDockerHttpClient;
+import org.apache.commons.lang3.SystemUtils;
import org.springframework.stereotype.Component;
@Component
@@ -13,12 +15,9 @@ public class DockerHandler {
DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerTlsVerify(false)
- // 这里填最上面填的ip端口号,ip换成服务器ip
- .withDockerHost("unix:///var/run/docker.sock")
- // docker API版本号,可以用docker version查看
-// .withApiVersion("1.41")
- // 默认
-// .withRegistryUrl("https://index.docker.io/v1/")
+ // todo ip换成服务器ip
+ .withDockerHost(SystemUtils.IS_OS_WINDOWS ? WebConstants.WINDOWS_DEFAULT_DOCKER_HOST : WebConstants.DEFAULT_DOCKER_HOST)
+ .withRegistryUrl("https://index.docker.io/v2/")
.build();
OkDockerHttpClient build = new OkDockerHttpClient.Builder()
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/DockerServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/DockerServiceImpl.java
index d2ce47312..66ff65dfa 100644
--- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/DockerServiceImpl.java
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/DockerServiceImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
import com.aizuda.snailjob.common.core.util.StreamUtils;
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
import com.aizuda.snailjob.server.common.util.DateUtils;
+import com.aizuda.snailjob.server.web.constant.WebConstants;
import com.aizuda.snailjob.server.web.model.base.PageResult;
import com.aizuda.snailjob.server.web.model.base.SjBuildImageResultCallback;
import com.aizuda.snailjob.server.web.model.request.BuildImageRequestVO;
@@ -22,10 +23,12 @@ import com.github.dockerjava.api.command.*;
import com.github.dockerjava.api.model.*;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.sun.jna.LastErrorException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.io.File;
+import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -37,13 +40,13 @@ import static com.aizuda.snailjob.server.common.util.DateUtils.PURE_DATETIME_MS_
@RequiredArgsConstructor
public class DockerServiceImpl implements DockerService {
private final DockerHandler dockerHandler;
- private static final String workdir = "/Users/zhangshuguang/snail-job-python";
+ private static final String workdir = WebConstants.WORKDIR;
@Override
public String buildImage(BuildImageRequestVO requestVO) {
String imageName = String.format("sj_%s_%s", requestVO.getGroupName(), DateUtils.toNowFormat(PURE_DATETIME_MS_PATTERN));
- List dockerfileList = FileUtil.loopFiles(workdir, pathname -> pathname.getName().equals("Dockerfile"));
+ List dockerfileList = FileUtil.loopFiles(workdir + File.separator + requestVO.getGroupName(), pathname -> pathname.getName().equals(WebConstants.DOCKER_FILE));
Assert.isFalse(dockerfileList.isEmpty(), () -> new SnailJobServerException("不存在Dockerfile文件"));
Assert.isTrue(dockerfileList.size() == 1, () -> new SnailJobServerException("存在多个Dockerfile文件"));
@@ -54,10 +57,17 @@ public class DockerServiceImpl implements DockerService {
private void buildImage(File file, String imageName) {
DockerClient dockerClient = dockerHandler.getDockerClient();
- BuildImageCmd imageCmd = dockerClient
- .buildImageCmd(file)
- .withTags(Sets.newHashSet(imageName));
- imageCmd.exec(new SjBuildImageResultCallback()).awaitImageId();
+ try {
+ BuildImageCmd imageCmd = dockerClient
+ .buildImageCmd(file)
+ .withTags(Sets.newHashSet(imageName));
+ imageCmd.exec(new SjBuildImageResultCallback()).awaitImageId();
+ } catch (Exception e) {
+ if (e.getCause() instanceof IOException) {
+ throw new SnailJobServerException("docker连接失败,请确认Docker状态是否正常");
+ }
+ }
+
}
@Override
@@ -76,7 +86,7 @@ public class DockerServiceImpl implements DockerService {
.withName(containerName)
.withEnv()
.withExposedPorts()
-// .withHealthcheck()
+ .withHealthcheck(new HealthCheck())
// .withHostName(HostConfig)
.withLabels(labels)
@@ -200,4 +210,15 @@ public class DockerServiceImpl implements DockerService {
return pageResult;
}
+
+ @Override
+ public boolean dockerStatus() {
+ try {
+ DockerClient dockerClient = dockerHandler.getDockerClient();
+ dockerClient.pingCmd().exec();
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
}
diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/PublishConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/PublishConfigServiceImpl.java
new file mode 100644
index 000000000..e97ff94c6
--- /dev/null
+++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/PublishConfigServiceImpl.java
@@ -0,0 +1,47 @@
+package com.aizuda.snailjob.server.web.service.impl;
+
+import com.aizuda.snailjob.server.web.model.base.PageResult;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigQueryVO;
+import com.aizuda.snailjob.server.web.model.request.PublishConfigRequestVO;
+import com.aizuda.snailjob.server.web.model.response.PublishConfigResponseVO;
+import com.aizuda.snailjob.server.web.service.PublishConfigService;
+import com.aizuda.snailjob.template.datasource.persistence.mapper.PublishConfigMapper;
+import com.aizuda.snailjob.template.datasource.persistence.po.PublishConfig;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 发布配置
+ *
+ *
+ * @author opensnail
+ * @date 2024-12-22
+ */
+@Service
+@RequiredArgsConstructor
+public class PublishConfigServiceImpl implements PublishConfigService {
+ private final PublishConfigMapper publishConfigMapper;
+
+ @Override
+ public boolean save(PublishConfigRequestVO requestVO) {
+ return 1 == publishConfigMapper.insert(new PublishConfig());
+ }
+
+ @Override
+ public boolean update(PublishConfigRequestVO requestVO) {
+ return false;
+ }
+
+ @Override
+ public PublishConfigResponseVO getById(Long id) {
+ return null;
+ }
+
+ @Override
+ public PageResult> getPageList(PublishConfigQueryVO queryVO) {
+ return new PageResult<>();
+ }
+}