This is an automated email from the ASF dual-hosted git repository.

benjobs pushed a commit to branch dev-2.1.3
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev-2.1.3 by this push:
     new 855061d8c [Improve] docker|email settings improvements (#3586)
855061d8c is described below

commit 855061d8c213cad8fe2223a881386eb4e9f17bbd
Author: benjobs <[email protected]>
AuthorDate: Wed Feb 28 13:16:19 2024 +0800

    [Improve] docker|email settings improvements (#3586)
    
    * [Improve] docker|email settings improvements
    
    * [Improve] update docker|email info improvement
    
    * [Improve] testcase improvement
    
    ---------
    
    Co-authored-by: benjobs <[email protected]>
---
 .../streampark/console/core/bean/DockerConfig.java |  44 +++++--
 .../streampark/console/core/bean/MavenConfig.java  |  58 ++++++---
 .../streampark/console/core/bean/SenderEmail.java  |  38 +++++-
 .../core/bean/SettingAlertEmailConfigParams.java   |   6 +-
 .../core/bean/SettingDockerConfigParams.java       |   8 +-
 .../console/core/controller/SettingController.java |  72 ++++++-----
 .../console/core/runner/EnvInitializer.java        |  23 +---
 .../console/core/service/SettingService.java       |  29 +----
 .../alert/impl/EmailAlertNotifyServiceImpl.java    |   6 +-
 .../core/service/impl/AppBuildPipeServiceImpl.java |  10 +-
 .../core/service/impl/SettingServiceImpl.java      | 112 ++++++----------
 .../bean/SettingAlertEmailConfigParamsTest.java    | 140 --------------------
 .../core/bean/SettingDockerConfigParamsTest.java   | 142 ---------------------
 .../console/core/service/SettingServiceTest.java   | 107 +++++-----------
 .../core/service/alert/AlertServiceTest.java       |  10 +-
 .../src/api/flink/setting/index.ts                 |   9 +-
 .../src/views/setting/System/SettingForm.vue       |  18 ++-
 .../src/views/setting/System/SettingList.vue       |   2 +-
 18 files changed, 267 insertions(+), 567 deletions(-)

diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/DockerConfig.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/DockerConfig.java
index 9be549fe2..870ad3056 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/DockerConfig.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/DockerConfig.java
@@ -17,11 +17,16 @@
 
 package org.apache.streampark.console.core.bean;
 
+import org.apache.streampark.console.core.entity.Setting;
 import org.apache.streampark.console.core.service.SettingService;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * The DockerConfig class represents the configuration for an email system. It 
holds the SMTP host,
  * port, from address, username, password, and whether SSL is enabled.
@@ -29,35 +34,39 @@ import lombok.extern.slf4j.Slf4j;
  * <p>This class also provides a static factory method to create an 
DockerConfig object from a map
  * of settings.
  */
-@Data
+@Getter
+@Setter
 @Slf4j
 public class DockerConfig {
 
   private String address;
-  private String user;
+  private String userName;
   private String password;
   private String namespace;
 
   public static DockerConfig fromSetting() {
     try {
       DockerConfig dockerConfig = new DockerConfig();
+      Setting emptySetting = new Setting();
 
       dockerConfig.setAddress(
           SettingService.SETTINGS
-              .get(SettingService.KEY_DOCKER_REGISTER_ADDRESS)
+              .getOrDefault(SettingService.KEY_DOCKER_REGISTER_ADDRESS, 
emptySetting)
               .getSettingValue());
 
-      dockerConfig.setUser(
-          
SettingService.SETTINGS.get(SettingService.KEY_DOCKER_REGISTER_USER).getSettingValue());
+      dockerConfig.setUserName(
+          SettingService.SETTINGS
+              .getOrDefault(SettingService.KEY_DOCKER_REGISTER_USER, 
emptySetting)
+              .getSettingValue());
 
       dockerConfig.setPassword(
           SettingService.SETTINGS
-              .get(SettingService.KEY_DOCKER_REGISTER_PASSWORD)
+              .getOrDefault(SettingService.KEY_DOCKER_REGISTER_PASSWORD, 
emptySetting)
               .getSettingValue());
 
       dockerConfig.setNamespace(
           SettingService.SETTINGS
-              .get(SettingService.KEY_DOCKER_REGISTER_NAMESPACE)
+              .getOrDefault(SettingService.KEY_DOCKER_REGISTER_NAMESPACE, 
emptySetting)
               .getSettingValue());
 
       return dockerConfig;
@@ -66,4 +75,23 @@ public class DockerConfig {
     }
     return null;
   }
+
+  public static List<Setting> toSettings(DockerConfig dockerConfig) {
+    Setting address = new Setting();
+    address.setSettingKey(SettingService.KEY_DOCKER_REGISTER_ADDRESS);
+    address.setSettingValue(dockerConfig.getAddress());
+
+    Setting user = new Setting();
+    user.setSettingKey(SettingService.KEY_DOCKER_REGISTER_USER);
+    user.setSettingValue(dockerConfig.getUserName());
+
+    Setting password = new Setting();
+    password.setSettingKey(SettingService.KEY_DOCKER_REGISTER_PASSWORD);
+    password.setSettingValue(dockerConfig.getPassword());
+
+    Setting namespace = new Setting();
+    namespace.setSettingKey(SettingService.KEY_DOCKER_REGISTER_NAMESPACE);
+    namespace.setSettingValue(dockerConfig.getNamespace());
+    return Arrays.asList(address, user, password, namespace);
+  }
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/MavenConfig.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/MavenConfig.java
index d073ea7e9..7ac0ae702 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/MavenConfig.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/MavenConfig.java
@@ -24,7 +24,8 @@ import 
org.apache.streampark.console.core.service.SettingService;
 
 import org.apache.commons.lang3.StringUtils;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.Map;
 
@@ -32,7 +33,8 @@ import java.util.Map;
  * This class represents the Maven configuration for the application. It 
provides methods to
  * retrieve the various Maven configuration options.
  */
-@Data
+@Getter
+@Setter
 public class MavenConfig {
 
   /** File path for Maven settings. */
@@ -48,28 +50,47 @@ public class MavenConfig {
   private String mvnAuthPassword;
 
   /** */
+  public static MavenConfig fromSetting(Setting settings) {
+    MavenConfig mavenConfig = new MavenConfig();
+    String value = settings.getSettingValue();
+    switch (settings.getSettingKey()) {
+      case SettingService.KEY_MAVEN_SETTINGS:
+        mavenConfig.setMvnSettings(value);
+        break;
+      case SettingService.KEY_MAVEN_REPOSITORY:
+        mavenConfig.setMvnRepository(value);
+        break;
+      case SettingService.KEY_MAVEN_AUTH_USER:
+        mavenConfig.setMvnAuthUser(value);
+        break;
+      case SettingService.KEY_MAVEN_AUTH_PASSWORD:
+        mavenConfig.setMvnAuthPassword(value);
+        break;
+      default:
+        break;
+    }
+    return mavenConfig;
+  }
+
   public static MavenConfig fromSetting() {
     MavenConfig mavenConfig = new MavenConfig();
+
     Map<String, Setting> settings = SettingService.SETTINGS;
-    if (settings.containsKey(CommonConfig.MAVEN_SETTINGS_PATH().key())) {
-      mavenConfig.setMvnSettings(
-          
settings.get(CommonConfig.MAVEN_SETTINGS_PATH().key()).getSettingValue());
-    }
+    Setting emptySetting = new Setting();
 
-    if (settings.containsKey(CommonConfig.MAVEN_REMOTE_URL().key())) {
-      mavenConfig.setMvnRepository(
-          
settings.get(CommonConfig.MAVEN_REMOTE_URL().key()).getSettingValue());
-    }
+    mavenConfig.setMvnSettings(
+        settings.getOrDefault(SettingService.KEY_MAVEN_SETTINGS, 
emptySetting).getSettingValue());
 
-    if (settings.containsKey(CommonConfig.MAVEN_AUTH_USER().key())) {
-      mavenConfig.setMvnAuthUser(
-          
settings.get(CommonConfig.MAVEN_AUTH_USER().key()).getSettingValue());
-    }
+    mavenConfig.setMvnRepository(
+        settings.getOrDefault(SettingService.KEY_MAVEN_REPOSITORY, 
emptySetting).getSettingValue());
 
-    if (settings.containsKey(CommonConfig.MAVEN_AUTH_PASSWORD().key())) {
-      mavenConfig.setMvnAuthPassword(
-          
settings.get(CommonConfig.MAVEN_AUTH_PASSWORD().key()).getSettingValue());
-    }
+    mavenConfig.setMvnAuthUser(
+        settings.getOrDefault(SettingService.KEY_MAVEN_AUTH_USER, 
emptySetting).getSettingValue());
+
+    mavenConfig.setMvnAuthPassword(
+        settings
+            .getOrDefault(SettingService.KEY_MAVEN_AUTH_PASSWORD, emptySetting)
+            .getSettingValue());
 
     return mavenConfig;
   }
@@ -80,7 +101,6 @@ public class MavenConfig {
    * values, they will be updated in the internal configuration.
    */
   public void updateConfig() {
-
     if (StringUtils.isNotBlank(mvnSettings)) {
       InternalConfigHolder.set(CommonConfig.MAVEN_SETTINGS_PATH(), 
mvnSettings);
     }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SenderEmail.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SenderEmail.java
index d248cb77f..30ee35fb1 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SenderEmail.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SenderEmail.java
@@ -17,17 +17,51 @@
 
 package org.apache.streampark.console.core.bean;
 
+import org.apache.streampark.console.core.entity.Setting;
+import org.apache.streampark.console.core.service.SettingService;
+
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Arrays;
+import java.util.List;
+
 @Getter
 @Setter
 public class SenderEmail {
 
-  private String smtpHost;
-  private Integer smtpPort;
+  private String host;
+  private Integer port;
   private String from;
   private String userName;
   private String password;
   private boolean ssl;
+
+  public static List<Setting> toSettings(SenderEmail senderEmail) {
+    Setting smtpHost = new Setting();
+    smtpHost.setSettingKey(SettingService.KEY_ALERT_EMAIL_HOST);
+    smtpHost.setSettingValue(senderEmail.getHost());
+
+    Setting smtpPort = new Setting();
+    smtpPort.setSettingKey(SettingService.KEY_ALERT_EMAIL_PORT);
+    smtpPort.setSettingValue(senderEmail.getPort().toString());
+
+    Setting smtpFrom = new Setting();
+    smtpFrom.setSettingKey(SettingService.KEY_ALERT_EMAIL_FROM);
+    smtpFrom.setSettingValue(senderEmail.getFrom());
+
+    Setting smtpUserName = new Setting();
+    smtpUserName.setSettingKey(SettingService.KEY_ALERT_EMAIL_USERNAME);
+    smtpUserName.setSettingValue(senderEmail.getUserName());
+
+    Setting smtpPassword = new Setting();
+    smtpPassword.setSettingKey(SettingService.KEY_ALERT_EMAIL_PASSWORD);
+    smtpPassword.setSettingValue(senderEmail.getPassword());
+
+    Setting smtpSsl = new Setting();
+    smtpSsl.setSettingKey(SettingService.KEY_ALERT_EMAIL_SSL);
+    smtpSsl.setSettingValue(senderEmail.isSsl() + "");
+
+    return Arrays.asList(smtpHost, smtpPort, smtpFrom, smtpUserName, 
smtpPassword, smtpSsl);
+  }
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParams.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParams.java
index f6120d9e3..b30e36b4f 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParams.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParams.java
@@ -19,12 +19,14 @@ package org.apache.streampark.console.core.bean;
 
 import org.apache.streampark.console.core.entity.Setting;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.Objects;
 import java.util.regex.Pattern;
 
-@Data
+@Getter
+@Setter
 public class SettingAlertEmailConfigParams {
   private Setting host;
   private Setting port;
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingDockerConfigParams.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingDockerConfigParams.java
index af81ef115..ba1250e8a 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingDockerConfigParams.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/bean/SettingDockerConfigParams.java
@@ -19,12 +19,14 @@ package org.apache.streampark.console.core.bean;
 
 import org.apache.streampark.console.core.entity.Setting;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.Objects;
 import java.util.regex.Pattern;
 
-@Data
+@Getter
+@Setter
 public class SettingDockerConfigParams {
   private Setting username;
   private Setting password;
@@ -42,7 +44,7 @@ public class SettingDockerConfigParams {
   private static final String IPV6_ADDRESS_REGEX = 
"^([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)$";
   /* domain match rule */
   private static final String DOMAIN_NAME_REGEX =
-      
"^((http:\\/\\/)|(https:\\/\\/))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(\\/)";
+      
"^((http://)|(https://))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(\\/)";
   /* Docker namespace rules based on the format of the domain name */
   private static final String NAMESPACE_REGEX = 
"^(?!-)[a-zA-Z0-9-]{1,253}(?<!-)$";
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/SettingController.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/SettingController.java
index 50f39d33a..6517e7e1e 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/SettingController.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/SettingController.java
@@ -18,10 +18,10 @@
 package org.apache.streampark.console.core.controller;
 
 import org.apache.streampark.common.util.HadoopUtils;
-import org.apache.streampark.console.base.domain.ResponseCode;
 import org.apache.streampark.console.base.domain.RestResponse;
-import org.apache.streampark.console.core.bean.SettingAlertEmailConfigParams;
-import org.apache.streampark.console.core.bean.SettingDockerConfigParams;
+import org.apache.streampark.console.core.bean.DockerConfig;
+import org.apache.streampark.console.core.bean.ResponseResult;
+import org.apache.streampark.console.core.bean.SenderEmail;
 import org.apache.streampark.console.core.entity.Setting;
 import org.apache.streampark.console.core.service.SettingService;
 
@@ -34,11 +34,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Arrays;
 import java.util.List;
 
 @Tag(name = "SETTING_TAG")
@@ -75,39 +73,51 @@ public class SettingController {
     return RestResponse.success(updated);
   }
 
+  @Operation(summary = "get Docker config")
+  @PostMapping("docker")
+  @RequiresPermissions("setting:view")
+  public RestResponse docker() {
+    DockerConfig dockerConfig = DockerConfig.fromSetting();
+    return RestResponse.success(dockerConfig);
+  }
+
+  @Operation(summary = "check docker setting")
+  @PostMapping("check/docker")
+  @RequiresPermissions("setting:view")
+  public RestResponse checkDocker(DockerConfig dockerConfig) {
+    ResponseResult result = settingService.checkDocker(dockerConfig);
+    return RestResponse.success(result);
+  }
+
   @Operation(summary = "Update docker setting")
   @PostMapping("update/docker")
   @RequiresPermissions("setting:update")
-  public RestResponse updateDocker(@RequestBody SettingDockerConfigParams 
params) {
-    if (!SettingDockerConfigParams.verifyParams(params)) {
-      return RestResponse.fail("The parameter is incorrect, please check!", 
ResponseCode.CODE_FAIL);
-    }
-
-    List<Setting> settings =
-        Arrays.asList(
-            params.getAddress(), params.getNamespace(),
-            params.getUsername(), params.getPassword());
-    boolean updated = settingService.updateSettings(settings);
+  public RestResponse updateDocker(DockerConfig dockerConfig) {
+    boolean updated = settingService.updateDocker(dockerConfig);
     return RestResponse.success(updated);
   }
 
-  @Operation(summary = "Update alert email")
-  @PostMapping("update/alert/email")
-  @RequiresPermissions("setting:update")
-  public RestResponse updateAlertEmail(@RequestBody 
SettingAlertEmailConfigParams params) {
-    if (!SettingAlertEmailConfigParams.verifyParams(params)) {
-      return RestResponse.fail("The parameter is incorrect, please check!", 
ResponseCode.CODE_FAIL);
-    }
+  @Operation(summary = "get sender email")
+  @PostMapping("email")
+  @RequiresPermissions("setting:view")
+  public RestResponse email() {
+    SenderEmail senderEmail = settingService.getSenderEmail();
+    return RestResponse.success(senderEmail);
+  }
 
-    List<Setting> settings =
-        Arrays.asList(
-            params.getHost(),
-            params.getPort(),
-            params.getFrom(),
-            params.getUsername(),
-            params.getPassword(),
-            params.getSsl());
-    boolean updated = settingService.updateSettings(settings);
+  @Operation(summary = "check email")
+  @PostMapping("check/email")
+  @RequiresPermissions("setting:view")
+  public RestResponse checkEmail(SenderEmail senderEmail) {
+    ResponseResult result = settingService.checkEmail(senderEmail);
+    return RestResponse.success(result);
+  }
+
+  @Operation(summary = "Update sender email")
+  @PostMapping("update/email")
+  @RequiresPermissions("setting:update")
+  public RestResponse updateEmail(SenderEmail senderEmail) {
+    boolean updated = settingService.updateEmail(senderEmail);
     return RestResponse.success(updated);
   }
 
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/runner/EnvInitializer.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/runner/EnvInitializer.java
index 5707e8e64..e702018b4 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/runner/EnvInitializer.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/runner/EnvInitializer.java
@@ -27,11 +27,10 @@ import org.apache.streampark.common.fs.FsOperator;
 import org.apache.streampark.common.util.SystemPropertyUtils;
 import org.apache.streampark.common.util.Utils;
 import org.apache.streampark.console.base.util.WebUtils;
+import org.apache.streampark.console.core.bean.MavenConfig;
 import org.apache.streampark.console.core.entity.FlinkEnv;
 import org.apache.streampark.console.core.service.SettingService;
 
-import org.apache.commons.lang3.StringUtils;
-
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
@@ -111,25 +110,7 @@ public class EnvInitializer implements ApplicationRunner {
               InternalConfigHolder.set(config, springEnv.getProperty(key, 
config.classType()));
             });
 
-    String mvnSettings = settingService.getMavenSettings();
-    if (StringUtils.isNotEmpty(mvnSettings)) {
-      InternalConfigHolder.set(CommonConfig.MAVEN_SETTINGS_PATH(), 
mvnSettings);
-    }
-
-    String mvnRepository = settingService.getMavenRepository();
-    if (StringUtils.isNotEmpty(mvnRepository)) {
-      InternalConfigHolder.set(CommonConfig.MAVEN_REMOTE_URL(), mvnRepository);
-    }
-
-    String mvnAuthUser = settingService.getMavenAuthUser();
-    if (StringUtils.isNotEmpty(mvnAuthUser)) {
-      InternalConfigHolder.set(CommonConfig.MAVEN_AUTH_USER(), mvnAuthUser);
-    }
-
-    String mvnAuthPassword = settingService.getMavenAuthPassword();
-    if (StringUtils.isNotEmpty(mvnAuthPassword)) {
-      InternalConfigHolder.set(CommonConfig.MAVEN_AUTH_PASSWORD(), 
mvnAuthPassword);
-    }
+    MavenConfig.fromSetting().updateConfig();
 
     InternalConfigHolder.log();
   }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/SettingService.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/SettingService.java
index bab221278..927bb287a 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/SettingService.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/SettingService.java
@@ -17,12 +17,13 @@
 
 package org.apache.streampark.console.core.service;
 
+import org.apache.streampark.console.core.bean.DockerConfig;
+import org.apache.streampark.console.core.bean.ResponseResult;
 import org.apache.streampark.console.core.bean.SenderEmail;
 import org.apache.streampark.console.core.entity.Setting;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 
-import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -54,31 +55,15 @@ public interface SettingService extends IService<Setting> {
 
   boolean update(Setting setting);
 
-  /**
-   * * Updates the specified Settings.
-   *
-   * @param settings list of setting object to update
-   * @return true if the update is successful, false otherwise
-   */
-  boolean updateSettings(List<Setting> settings);
+  boolean updateDocker(DockerConfig dockerConfig);
 
-  String getMavenSettings();
-
-  String getMavenRepository();
-
-  String getMavenAuthUser();
-
-  String getMavenAuthPassword();
+  boolean updateEmail(SenderEmail senderEmail);
 
   SenderEmail getSenderEmail();
 
-  String getDockerRegisterAddress();
-
-  String getDockerRegisterUser();
-
-  String getDockerRegisterPassword();
+  String getIngressModeDefault();
 
-  String getDockerRegisterNamespace();
+  ResponseResult checkDocker(DockerConfig dockerConfig);
 
-  String getIngressModeDefault();
+  ResponseResult checkEmail(SenderEmail senderEmail);
 }
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/EmailAlertNotifyServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/EmailAlertNotifyServiceImpl.java
index 38ff6d71a..df0ed2800 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/EmailAlertNotifyServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/alert/impl/EmailAlertNotifyServiceImpl.java
@@ -80,15 +80,15 @@ public class EmailAlertNotifyServiceImpl implements 
AlertNotifyService {
 
       HtmlEmail htmlEmail = new HtmlEmail();
       htmlEmail.setCharset("UTF-8");
-      htmlEmail.setHostName(senderEmail.getSmtpHost());
+      htmlEmail.setHostName(senderEmail.getHost());
       htmlEmail.setAuthentication(senderEmail.getUserName(), 
senderEmail.getPassword());
       htmlEmail.setFrom(senderEmail.getFrom());
       if (senderEmail.isSsl()) {
         htmlEmail.setSSLCheckServerIdentity(true);
         htmlEmail.setSSLOnConnect(true);
-        htmlEmail.setSslSmtpPort(senderEmail.getSmtpPort().toString());
+        htmlEmail.setSslSmtpPort(senderEmail.getPort().toString());
       } else {
-        htmlEmail.setSmtpPort(senderEmail.getSmtpPort());
+        htmlEmail.setSmtpPort(senderEmail.getPort());
       }
       htmlEmail.setSubject(mail.getSubject());
       htmlEmail.setHtmlMsg(html);
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
index b735797c0..d54aff194 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
@@ -26,6 +26,7 @@ import org.apache.streampark.common.util.ThreadUtils;
 import org.apache.streampark.common.util.Utils;
 import org.apache.streampark.console.base.exception.ApiAlertException;
 import org.apache.streampark.console.base.util.WebUtils;
+import org.apache.streampark.console.core.bean.DockerConfig;
 import org.apache.streampark.console.core.entity.AppBuildPipeline;
 import org.apache.streampark.console.core.entity.Application;
 import org.apache.streampark.console.core.entity.ApplicationConfig;
@@ -359,6 +360,7 @@ public class AppBuildPipeServiceImpl
         log.info("Submit params to building pipeline : {}", 
k8sSessionBuildRequest);
         return FlinkK8sSessionBuildPipeline.of(k8sSessionBuildRequest);
       case KUBERNETES_NATIVE_APPLICATION:
+        DockerConfig dockerConfig = DockerConfig.fromSetting();
         FlinkK8sApplicationBuildRequest k8sApplicationBuildRequest =
             new FlinkK8sApplicationBuildRequest(
                 app.getJobName(),
@@ -375,10 +377,10 @@ public class AppBuildPipeServiceImpl
                 app.getK8sPodTemplates(),
                 app.getK8sHadoopIntegration() != null ? 
app.getK8sHadoopIntegration() : false,
                 DockerConf.of(
-                    settingService.getDockerRegisterAddress(),
-                    settingService.getDockerRegisterNamespace(),
-                    settingService.getDockerRegisterUser(),
-                    settingService.getDockerRegisterPassword()),
+                    dockerConfig.getAddress(),
+                    dockerConfig.getNamespace(),
+                    dockerConfig.getUserName(),
+                    dockerConfig.getPassword()),
                 app.getIngressTemplate());
         log.info("Submit params to building pipeline : {}", 
k8sApplicationBuildRequest);
         return FlinkK8sApplicationBuildPipeline.of(k8sApplicationBuildRequest);
diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java
index 6494059b8..332f353b9 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/SettingServiceImpl.java
@@ -17,8 +17,9 @@
 
 package org.apache.streampark.console.core.service.impl;
 
-import org.apache.streampark.common.conf.CommonConfig;
-import org.apache.streampark.common.conf.InternalConfigHolder;
+import org.apache.streampark.console.core.bean.DockerConfig;
+import org.apache.streampark.console.core.bean.MavenConfig;
+import org.apache.streampark.console.core.bean.ResponseResult;
 import org.apache.streampark.console.core.bean.SenderEmail;
 import org.apache.streampark.console.core.entity.Setting;
 import org.apache.streampark.console.core.mapper.SettingMapper;
@@ -71,21 +72,7 @@ public class SettingServiceImpl extends 
ServiceImpl<SettingMapper, Setting>
           new LambdaQueryWrapper<Setting>().eq(Setting::getSettingKey, 
setting.getSettingKey());
       this.update(entity, queryWrapper);
 
-      String settingKey = setting.getSettingKey();
-      if (CommonConfig.MAVEN_SETTINGS_PATH().key().equals(settingKey)) {
-        InternalConfigHolder.set(CommonConfig.MAVEN_SETTINGS_PATH(), value);
-      }
-
-      if (CommonConfig.MAVEN_REMOTE_URL().key().equals(settingKey)) {
-        InternalConfigHolder.set(CommonConfig.MAVEN_REMOTE_URL(), value);
-      }
-
-      if (CommonConfig.MAVEN_AUTH_USER().key().equals(settingKey)) {
-        InternalConfigHolder.set(CommonConfig.MAVEN_AUTH_USER(), value);
-      }
-      if (CommonConfig.MAVEN_AUTH_PASSWORD().key().equals(settingKey)) {
-        InternalConfigHolder.set(CommonConfig.MAVEN_AUTH_PASSWORD(), value);
-      }
+      MavenConfig.fromSetting(setting).updateConfig();
 
       Optional<Setting> optional = 
Optional.ofNullable(SETTINGS.get(setting.getSettingKey()));
       optional.ifPresent(x -> x.setSettingValue(value));
@@ -95,10 +82,21 @@ public class SettingServiceImpl extends 
ServiceImpl<SettingMapper, Setting>
     }
   }
 
-  public boolean updateSettings(List<Setting> settings) {
+  public boolean updateDocker(DockerConfig dockerConfig) {
+    List<Setting> settings = DockerConfig.toSettings(dockerConfig);
+    for (Setting each : settings) {
+      if (!update(each)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  @Override
+  public boolean updateEmail(SenderEmail senderEmail) {
+    List<Setting> settings = SenderEmail.toSettings(senderEmail);
     for (Setting each : settings) {
-      boolean result = update(each);
-      if (!result) {
+      if (!update(each)) {
         return false;
       }
     }
@@ -116,12 +114,16 @@ public class SettingServiceImpl extends 
ServiceImpl<SettingMapper, Setting>
       String ssl = 
SETTINGS.get(SettingService.KEY_ALERT_EMAIL_SSL).getSettingValue();
 
       SenderEmail senderEmail = new SenderEmail();
-      senderEmail.setSmtpHost(host);
-      senderEmail.setSmtpPort(Integer.parseInt(port));
+      senderEmail.setHost(host);
+      if (StringUtils.isNotBlank(port)) {
+        senderEmail.setPort(Integer.parseInt(port));
+      }
       senderEmail.setFrom(from);
       senderEmail.setUserName(userName);
       senderEmail.setPassword(password);
-      senderEmail.setSsl(Boolean.parseBoolean(ssl));
+      if (StringUtils.isNotBlank(ssl)) {
+        senderEmail.setSsl(Boolean.parseBoolean(ssl));
+      }
       return senderEmail;
     } catch (Exception e) {
       log.warn("Fault Alert Email is not set.");
@@ -130,63 +132,27 @@ public class SettingServiceImpl extends 
ServiceImpl<SettingMapper, Setting>
   }
 
   @Override
-  public String getDockerRegisterAddress() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_DOCKER_REGISTER_ADDRESS, emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getDockerRegisterUser() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_DOCKER_REGISTER_USER, emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getDockerRegisterPassword() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_DOCKER_REGISTER_PASSWORD, 
emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getDockerRegisterNamespace() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_DOCKER_REGISTER_NAMESPACE, 
emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getMavenSettings() {
-    return SETTINGS.getOrDefault(SettingService.KEY_MAVEN_SETTINGS, 
emptySetting).getSettingValue();
-  }
-
-  @Override
-  public String getMavenRepository() {
+  public String getIngressModeDefault() {
     return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_REPOSITORY, emptySetting)
+        .getOrDefault(SettingService.KEY_INGRESS_MODE_DEFAULT, emptySetting)
         .getSettingValue();
   }
 
   @Override
-  public String getMavenAuthUser() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_AUTH_USER, emptySetting)
-        .getSettingValue();
+  public ResponseResult checkDocker(DockerConfig dockerConfig) {
+    // TODO check
+    ResponseResult result = new ResponseResult();
+    result.setStatus(200);
+    result.setMsg("success");
+    return result;
   }
 
   @Override
-  public String getMavenAuthPassword() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_AUTH_PASSWORD, emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getIngressModeDefault() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_INGRESS_MODE_DEFAULT, emptySetting)
-        .getSettingValue();
+  public ResponseResult checkEmail(SenderEmail senderEmail) {
+    // TODO check
+    ResponseResult result = new ResponseResult();
+    result.setStatus(200);
+    result.setMsg("success");
+    return result;
   }
 }
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParamsTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParamsTest.java
deleted file mode 100644
index 6ae7feeb2..000000000
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingAlertEmailConfigParamsTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.streampark.console.core.bean;
-
-import org.apache.streampark.console.core.entity.Setting;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class SettingAlertEmailConfigParamsTest {
-  private SettingAlertEmailConfigParams alertEmailConfigParams;
-  private Setting setting;
-  private Method method;
-
-  @BeforeEach
-  void setUp() {
-    alertEmailConfigParams = new SettingAlertEmailConfigParams();
-    setting = new Setting();
-  }
-
-  @Test
-  void verifyEmailHostTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    alertEmailConfigParams.setHost(setting);
-    initVerifyMethod("verifyHost");
-
-    setting.setSettingValue("test");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("[email protected]");
-    Assertions.assertTrue((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("testEmail/test.com");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-  }
-
-  @Test
-  void verifyEmailPortTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    alertEmailConfigParams.setPort(setting);
-    initVerifyMethod("verifyPort");
-
-    setting.setSettingValue("3306");
-    Assertions.assertTrue((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("65535");
-    Assertions.assertTrue((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("-1");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("0");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("65536");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-  }
-
-  /* TODO .. */
-  @Test
-  void verifyFromTest() throws NoSuchMethodException {
-    alertEmailConfigParams.setHost(setting);
-    initVerifyMethod("verifyFrom");
-  }
-
-  @Test
-  void verifyUserNameTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    alertEmailConfigParams.setUsername(setting);
-    initVerifyMethod("verifyUserName");
-
-    setting.setSettingValue("Aa111111");
-    Assertions.assertTrue((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("Aa@aa_");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("test");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-  }
-
-  @Test
-  void verifyPassWordTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    alertEmailConfigParams.setPassword(setting);
-    initVerifyMethod("verifyPassWord");
-
-    setting.setSettingValue("AaaAaa");
-    Assertions.assertTrue((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("AaAa");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue("123456789");
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(alertEmailConfigParams));
-  }
-
-  void initVerifyMethod(final String methodName) throws NoSuchMethodException {
-    Class<SettingAlertEmailConfigParams> clazz = 
SettingAlertEmailConfigParams.class;
-    method = clazz.getDeclaredMethod(methodName);
-    method.setAccessible(true);
-  }
-}
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingDockerConfigParamsTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingDockerConfigParamsTest.java
deleted file mode 100644
index abb2b0570..000000000
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/bean/SettingDockerConfigParamsTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.streampark.console.core.bean;
-
-import org.apache.streampark.console.core.entity.Setting;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class SettingDockerConfigParamsTest {
-  private SettingDockerConfigParams dockerConfigParams;
-  private Setting setting;
-  private Method method;
-
-  @BeforeEach
-  void setUp() {
-    dockerConfigParams = new SettingDockerConfigParams();
-    setting = new Setting();
-  }
-
-  @Test
-  void verifyUserNameTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    dockerConfigParams.setUsername(setting);
-    initVerifyMethod("verifyUserName");
-
-    setting.setSettingValue("Aa111111");
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("Aa111111@");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("Aa@aa_");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("test");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-  }
-
-  @Test
-  void verifyPassWordTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    dockerConfigParams.setPassword(setting);
-    initVerifyMethod("verifyPassWord");
-
-    setting.setSettingValue("AaaAaa");
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("AaAa");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("123456789");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-  }
-
-  @Test
-  void verifyAddressTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    dockerConfigParams.setAddress(setting);
-    initVerifyMethod("verifyAddress");
-
-    setting.setSettingValue("https://www.google.com/";);
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("http://www.google.com/";);
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("www.google.com");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("2001:0db8:85a3:0000:0000:8a2e:0370:7334");
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("127.0.0.1");
-    Assertions.assertTrue((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("htp://www.google.com");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("ww.google.com");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("localhost");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue("0.0.0");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-  }
-
-  @Test
-  void verifyNameSpaceTest()
-      throws NoSuchMethodException, InvocationTargetException, 
IllegalAccessException {
-    dockerConfigParams.setAddress(setting);
-    initVerifyMethod("verifyNameSpace");
-
-    setting.setSettingValue("dom.mod");
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-
-    setting.setSettingValue(null);
-    Assertions.assertFalse((boolean) method.invoke(dockerConfigParams));
-  }
-
-  void initVerifyMethod(final String methodName) throws NoSuchMethodException {
-    Class<SettingDockerConfigParams> clazz = SettingDockerConfigParams.class;
-    method = clazz.getDeclaredMethod(methodName);
-    method.setAccessible(true);
-  }
-}
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SettingServiceTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SettingServiceTest.java
index 17f839ff6..b8232e9b5 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SettingServiceTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/SettingServiceTest.java
@@ -18,113 +18,68 @@
 package org.apache.streampark.console.core.service;
 
 import org.apache.streampark.console.SpringTestBase;
-import org.apache.streampark.console.core.bean.SettingAlertEmailConfigParams;
-import org.apache.streampark.console.core.bean.SettingDockerConfigParams;
-import org.apache.streampark.console.core.entity.Setting;
+import org.apache.streampark.console.core.bean.DockerConfig;
+import org.apache.streampark.console.core.bean.SenderEmail;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.Arrays;
-import java.util.List;
-
 class SettingServiceTest extends SpringTestBase {
-  private final SettingDockerConfigParams dockerConfigParams = new 
SettingDockerConfigParams();
-  private final SettingAlertEmailConfigParams alertEmailConfigParams =
-      new SettingAlertEmailConfigParams();
 
   @Autowired SettingService settingService;
 
-  /*docker config*/
-  void initDockerConfigParams(SettingDockerConfigParams params) {
-    Setting address = settingService.get("docker.register.address");
-    address.setSettingValue("test-address-setting-value");
-    Setting username = settingService.get("docker.register.user");
-    username.setSettingValue("test-username-setting-value");
-    Setting password = settingService.get("docker.register.password");
-    password.setSettingValue("test-password-setting-value");
-    Setting namespace = settingService.get("docker.register.namespace");
-    namespace.setSettingValue("test-namespace-setting-value");
-    params.setAddress(address);
-    params.setUsername(username);
-    params.setPassword(password);
-    params.setNamespace(namespace);
-  }
-
   @Test
   void testUpdateDockerConfigTest() {
-    initDockerConfigParams(dockerConfigParams);
-    List<Setting> settings =
-        Arrays.asList(
-            dockerConfigParams.getAddress(),
-            dockerConfigParams.getNamespace(),
-            dockerConfigParams.getUsername(),
-            dockerConfigParams.getPassword());
-    settingService.updateSettings(settings);
+    DockerConfig dockerConfig = new DockerConfig();
+    dockerConfig.setUserName("test-username-setting-value");
+    dockerConfig.setPassword("test-password-setting-value");
+    dockerConfig.setNamespace("test-namespace-setting-value");
+    dockerConfig.setAddress("test-address-setting-value");
+
+    settingService.updateDocker(dockerConfig);
 
     Assertions.assertEquals(
         "test-address-setting-value",
-        settingService.get("docker.register.address").getSettingValue());
+        
settingService.get(SettingService.KEY_DOCKER_REGISTER_ADDRESS).getSettingValue());
     Assertions.assertEquals(
         "test-username-setting-value",
-        settingService.get("docker.register.user").getSettingValue());
+        
settingService.get(SettingService.KEY_DOCKER_REGISTER_USER).getSettingValue());
     Assertions.assertEquals(
         "test-password-setting-value",
-        settingService.get("docker.register.password").getSettingValue());
+        
settingService.get(SettingService.KEY_DOCKER_REGISTER_PASSWORD).getSettingValue());
     Assertions.assertEquals(
         "test-namespace-setting-value",
-        settingService.get("docker.register.namespace").getSettingValue());
-  }
-
-  /*alert email config*/
-  void initAlertEmailConfigParams(SettingAlertEmailConfigParams params) {
-    Setting host = settingService.get("alert.email.host");
-    host.setSettingValue("test-host-setting-value");
-    Setting port = settingService.get("alert.email.port");
-    port.setSettingValue("test-port-setting-value");
-    Setting from = settingService.get("alert.email.from");
-    from.setSettingValue("test-from-setting-value");
-    Setting username = settingService.get("alert.email.userName");
-    username.setSettingValue("test-username-setting-value");
-    Setting password = settingService.get("alert.email.password");
-    password.setSettingValue("test-password-setting-value");
-    Setting ssl = settingService.get("alert.email.ssl");
-    ssl.setSettingValue("test-ssl-setting-value");
-    params.setHost(host);
-    params.setPort(port);
-    params.setFrom(from);
-    params.setUsername(username);
-    params.setPassword(password);
-    params.setSsl(ssl);
+        
settingService.get(SettingService.KEY_DOCKER_REGISTER_NAMESPACE).getSettingValue());
   }
 
   @Test
   void testUpdateAlertEmailConfigTest() {
-    initAlertEmailConfigParams(alertEmailConfigParams);
-    List<Setting> settings =
-        Arrays.asList(
-            alertEmailConfigParams.getHost(),
-            alertEmailConfigParams.getPort(),
-            alertEmailConfigParams.getFrom(),
-            alertEmailConfigParams.getUsername(),
-            alertEmailConfigParams.getPassword(),
-            alertEmailConfigParams.getSsl());
-    settingService.updateSettings(settings);
+    SenderEmail senderEmail = new SenderEmail();
+    senderEmail.setHost("test-host-setting-value");
+    senderEmail.setUserName("test-username-setting-value");
+    senderEmail.setPassword("test-password-setting-value");
+    senderEmail.setFrom("test-from-setting-value");
+    senderEmail.setSsl(true);
+    senderEmail.setPort(456);
+
+    settingService.updateEmail(senderEmail);
 
     Assertions.assertEquals(
-        "test-host-setting-value", 
settingService.get("alert.email.host").getSettingValue());
-    Assertions.assertEquals(
-        "test-port-setting-value", 
settingService.get("alert.email.port").getSettingValue());
+        "test-host-setting-value",
+        
settingService.get(SettingService.KEY_ALERT_EMAIL_HOST).getSettingValue());
     Assertions.assertEquals(
-        "test-from-setting-value", 
settingService.get("alert.email.from").getSettingValue());
+        "test-from-setting-value",
+        
settingService.get(SettingService.KEY_ALERT_EMAIL_FROM).getSettingValue());
     Assertions.assertEquals(
         "test-username-setting-value",
-        settingService.get("alert.email.userName").getSettingValue());
+        
settingService.get(SettingService.KEY_ALERT_EMAIL_USERNAME).getSettingValue());
     Assertions.assertEquals(
         "test-password-setting-value",
-        settingService.get("alert.email.password").getSettingValue());
+        
settingService.get(SettingService.KEY_ALERT_EMAIL_PASSWORD).getSettingValue());
+    Assertions.assertEquals(
+        "456", 
settingService.get(SettingService.KEY_ALERT_EMAIL_PORT).getSettingValue());
     Assertions.assertEquals(
-        "test-ssl-setting-value", 
settingService.get("alert.email.ssl").getSettingValue());
+        "true", 
settingService.get(SettingService.KEY_ALERT_EMAIL_SSL).getSettingValue());
   }
 }
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/alert/AlertServiceTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/alert/AlertServiceTest.java
index 4bc4762cd..348a2f604 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/alert/AlertServiceTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/alert/AlertServiceTest.java
@@ -91,9 +91,9 @@ class AlertServiceTest {
     senderEmail.setFrom("****@domain.com");
     senderEmail.setUserName("******");
     senderEmail.setPassword("******");
-    senderEmail.setSmtpPort(465);
+    senderEmail.setPort(465);
     senderEmail.setSsl(true);
-    senderEmail.setSmtpHost("smtp.exmail.qq.com");
+    senderEmail.setHost("smtp.exmail.qq.com");
   }
 
   void before2() {
@@ -232,15 +232,15 @@ class AlertServiceTest {
   private void sendEmail(String subject, String html, String... mails) throws 
EmailException {
     HtmlEmail htmlEmail = new HtmlEmail();
     htmlEmail.setCharset("UTF-8");
-    htmlEmail.setHostName(this.senderEmail.getSmtpHost());
+    htmlEmail.setHostName(this.senderEmail.getHost());
     htmlEmail.setAuthentication(this.senderEmail.getUserName(), 
this.senderEmail.getPassword());
     htmlEmail.setFrom(this.senderEmail.getFrom());
 
     if (this.senderEmail.isSsl()) {
       htmlEmail.setSSLOnConnect(true);
-      htmlEmail.setSslSmtpPort(this.senderEmail.getSmtpPort().toString());
+      htmlEmail.setSslSmtpPort(this.senderEmail.getPort().toString());
     } else {
-      htmlEmail.setSmtpPort(this.senderEmail.getSmtpPort());
+      htmlEmail.setSmtpPort(this.senderEmail.getPort());
     }
     htmlEmail.setSubject(subject);
     htmlEmail.setHtmlMsg(html);
diff --git 
a/streampark-console/streampark-console-webapp/src/api/flink/setting/index.ts 
b/streampark-console/streampark-console-webapp/src/api/flink/setting/index.ts
index a463e738f..f12e09378 100644
--- 
a/streampark-console/streampark-console-webapp/src/api/flink/setting/index.ts
+++ 
b/streampark-console/streampark-console-webapp/src/api/flink/setting/index.ts
@@ -60,19 +60,18 @@ export function fetchCheckHadoop(): Promise<boolean> {
   });
 }
 
-//TODO: Getting docker configuration through the backend interface
 /**
  * get docker setting info
  */
 export function fetchDockerConfig() {
-  return defHttp.post({ url: '/flink/setting/all' });
+  return defHttp.post({ url: '/flink/setting/docker' });
 }
 
 /**
  * get alert setting info
  */
-export function fetchAlertConfig() {
-  return defHttp.post({ url: '/flink/setting/all' });
+export function fetchEmailConfig() {
+  return defHttp.post({ url: '/flink/setting/email' });
 }
 
 /**
@@ -90,7 +89,7 @@ export function fetchDockerUpdate(data: Recordable): 
Promise<boolean> {
  * Update alert setting
  * @returns {Promise<Boolean>}
  */
-export function fetchAlertUpdate(data: Recordable): Promise<boolean> {
+export function fetchEmailUpdate(data: Recordable): Promise<boolean> {
   return defHttp.post({
     url: SETTING_APi.UPDATE_ALERT,
     data,
diff --git 
a/streampark-console/streampark-console-webapp/src/views/setting/System/SettingForm.vue
 
b/streampark-console/streampark-console-webapp/src/views/setting/System/SettingForm.vue
index ff2af114c..03f0c1527 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/setting/System/SettingForm.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/setting/System/SettingForm.vue
@@ -21,8 +21,8 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { SystemSetting } from '/@/api/flink/setting/types/setting.type';
   import {
-    fetchAlertConfig,
-    fetchAlertUpdate,
+    fetchEmailConfig,
+    fetchEmailUpdate,
     fetchDockerConfig,
     fetchDockerUpdate,
   } from '/@/api/flink/setting';
@@ -39,7 +39,7 @@
   const type = ref('docker');
   const title = computed(() => {
     if (type.value == 'docker') return 
t('setting.system.systemSettingItems.dockerSetting.name');
-    if (type.value == 'alert') return 
t('setting.system.systemSettingItems.emailSetting.name');
+    if (type.value == 'email') return 
t('setting.system.systemSettingItems.emailSetting.name');
     return '';
   });
   const [registerModal, { closeModal, changeLoading }] = useModalInner(async 
(data) => {
@@ -49,17 +49,16 @@
       let res: any;
       type.value = data.type;
 
-      //TODO Separate requests for interfaces based on type
       if (data.type === 'docker') {
         res = await fetchDockerConfig();
-      } else if (data.type === 'docker') {
-        res = await fetchAlertConfig();
+      } else if (data.type === 'email') {
+        res = await fetchEmailConfig();
       }
       settings.value = res
         ?.filter((i) => i.settingKey.startsWith(data.type))
         ?.sort((a, b) => a.orderNum - b.orderNum);
 
-      setFieldsValue(
+      await setFieldsValue(
         data.settings.reduce((pre, cur) => {
           if (!isNullOrUnDef(cur.settingValue)) pre[cur.settingKey] = 
cur.settingValue;
           return pre;
@@ -90,12 +89,11 @@
               : 'Input'
             : 'Switch';
 
-        //TODO Build the form schema data based on the data returned by the 
interface.
         const getField = () => {
           if (type.value == 'docker') {
             return item.settingKey.replaceAll('docker.register.', '');
           }
-          if (type.value == 'alert') {
+          if (type.value == 'email') {
             return item.settingKey.replaceAll('alert.email.', '');
           }
           return item.settingKey;
@@ -124,7 +122,7 @@
     try {
       const formData = await validate();
       if (type.value === 'docker') await fetchDockerUpdate(formData);
-      if (type.value === 'alert') await fetchAlertUpdate(formData);
+      if (type.value === 'email') await fetchEmailUpdate(formData);
       createMessage.success(t('setting.system.update.success'));
       closeModal();
       emit('success');
diff --git 
a/streampark-console/streampark-console-webapp/src/views/setting/System/SettingList.vue
 
b/streampark-console/streampark-console-webapp/src/views/setting/System/SettingList.vue
index 3a9775732..0a8c3db3d 100644
--- 
a/streampark-console/streampark-console-webapp/src/views/setting/System/SettingList.vue
+++ 
b/streampark-console/streampark-console-webapp/src/views/setting/System/SettingList.vue
@@ -69,7 +69,7 @@
       });
     } else if (record.settingKey.startsWith('alert.email')) {
       openModal(true, {
-        type: 'alert',
+        type: 'email',
       });
     } else {
       if (!record.editable) {

Reply via email to