You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampark.apache.org by be...@apache.org on 2024/02/27 17:13:07 UTC

(incubator-streampark) branch issue-3583 created (now 1a83aeba9)

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

benjobs pushed a change to branch issue-3583
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


      at 1a83aeba9 [Improve][WIP] docker|email settings improvements

This branch includes the following new commits:

     new 1a83aeba9 [Improve][WIP] docker|email settings improvements

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(incubator-streampark) 01/01: [Improve][WIP] docker|email settings improvements

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1a83aeba96e1032f1264e96bb3636f5a3dee8f8b
Author: benjobs <be...@gmail.com>
AuthorDate: Wed Feb 28 01:12:50 2024 +0800

    [Improve][WIP] docker|email settings improvements
---
 .../streampark/console/core/bean/DockerConfig.java |  44 +++++--
 .../streampark/console/core/bean/MavenConfig.java  |  36 +++---
 .../streampark/console/core/bean/SenderEmail.java  |  38 +++++-
 .../core/bean/SettingAlertEmailConfigParams.java   |   6 +-
 .../core/bean/SettingDockerConfigParams.java       |   8 +-
 .../console/core/controller/SettingController.java |  55 ++++----
 .../console/core/runner/EnvInitializer.java        |  24 +---
 .../console/core/service/SettingService.java       |  26 +---
 .../alert/impl/EmailAlertNotifyServiceImpl.java    |   6 +-
 .../core/service/impl/AppBuildPipeServiceImpl.java |  10 +-
 .../core/service/impl/SettingServiceImpl.java      |  76 +++--------
 .../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 ++-
 17 files changed, 203 insertions(+), 552 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..7bba34952 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. */
@@ -50,26 +52,23 @@ public class 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 +79,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..d6090d0ef 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,9 @@
 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.SenderEmail;
 import org.apache.streampark.console.core.entity.Setting;
 import org.apache.streampark.console.core.service.SettingService;
 
@@ -34,11 +33,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 +72,35 @@ public class SettingController {
     return RestResponse.success(updated);
   }
 
+  @Operation(summary = "get Docker config")
+  @PostMapping("docker")
+  @RequiresPermissions("get")
+  public RestResponse docker() {
+    DockerConfig dockerConfig = DockerConfig.fromSetting();
+    return RestResponse.success(dockerConfig);
+  }
+
   @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("get")
+  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 = "Update sender email")
+  @PostMapping("update/email")
+  @RequiresPermissions("setting:update")
+  public RestResponse updateAlertEmail(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..86a3f8c2e 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,8 @@ 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 mavenConfig = MavenConfig.fromSetting();
+    mavenConfig.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..3812227ad 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,12 @@
 
 package org.apache.streampark.console.core.service;
 
+import org.apache.streampark.console.core.bean.DockerConfig;
 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 +54,11 @@ 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 getDockerRegisterNamespace();
-
   String getIngressModeDefault();
 }
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..d1fd33770 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
@@ -19,6 +19,7 @@ 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.SenderEmail;
 import org.apache.streampark.console.core.entity.Setting;
 import org.apache.streampark.console.core.mapper.SettingMapper;
@@ -95,10 +96,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) {
-      boolean result = update(each);
-      if (!result) {
+      if (!update(each)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  @Override
+  public boolean updateEmail(SenderEmail senderEmail) {
+    List<Setting> settings = SenderEmail.toSettings(senderEmail);
+    for (Setting each : settings) {
+      if (!update(each)) {
         return false;
       }
     }
@@ -116,8 +128,8 @@ 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);
+      senderEmail.setPort(Integer.parseInt(port));
       senderEmail.setFrom(from);
       senderEmail.setUserName(userName);
       senderEmail.setPassword(password);
@@ -129,60 +141,6 @@ public class SettingServiceImpl extends ServiceImpl<SettingMapper, Setting>
     return null;
   }
 
-  @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() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_REPOSITORY, emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getMavenAuthUser() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_AUTH_USER, emptySetting)
-        .getSettingValue();
-  }
-
-  @Override
-  public String getMavenAuthPassword() {
-    return SETTINGS
-        .getOrDefault(SettingService.KEY_MAVEN_AUTH_PASSWORD, emptySetting)
-        .getSettingValue();
-  }
-
   @Override
   public String getIngressModeDefault() {
     return SETTINGS
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("testEmail@test.com");
-    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..d42b20faa 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,70 @@
 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.setPort(456);
+    senderEmail.setUserName("test-username-setting-value");
+    senderEmail.setPassword("test-password-setting-value");
+    senderEmail.setFrom("test-from-setting-value");
+    senderEmail.setSsl(true);
+
+    settingService.updateEmail(senderEmail);
 
     Assertions.assertEquals(
-        "test-host-setting-value", settingService.get("alert.email.host").getSettingValue());
+        "test-host-setting-value",
+        settingService.get(SettingService.KEY_ALERT_EMAIL_HOST).getSettingValue());
     Assertions.assertEquals(
-        "test-port-setting-value", settingService.get("alert.email.port").getSettingValue());
+        "test-port-setting-value",
+        settingService.get(SettingService.KEY_ALERT_EMAIL_PORT).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(
-        "test-ssl-setting-value", settingService.get("alert.email.ssl").getSettingValue());
+        "test-ssl-setting-value",
+        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');