浏览代码

!101 merge
Merge pull request !101 from AE86/V_1.0.0_RC

AE86 2 年之前
父节点
当前提交
c0ad3b5cd5
共有 47 个文件被更改,包括 344 次插入396 次删除
  1. 5 3
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/SystemConfigService.java
  2. 3 1
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/UserConfigService.java
  3. 0 1
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/ConnectorChecker.java
  4. 0 1
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/group/ProjectGroupChecker.java
  5. 3 6
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MappingChecker.java
  6. 13 16
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/system/SystemConfigChecker.java
  7. 0 2
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/tablegroup/TableGroupChecker.java
  8. 0 4
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/user/UserConfigChecker.java
  9. 4 4
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConnectorServiceImpl.java
  10. 6 6
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java
  11. 3 3
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ProjectGroupServiceImpl.java
  12. 27 17
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/SystemConfigServiceImpl.java
  13. 5 5
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/TableGroupServiceImpl.java
  14. 21 22
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/UserConfigServiceImpl.java
  15. 18 0
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/DataVo.java
  16. 2 2
      dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/SystemConfigVo.java
  17. 28 46
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/Manager.java
  18. 19 137
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/ManagerFactory.java
  19. 9 7
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/PreloadCommand.java
  20. 11 11
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/CommandEnum.java
  21. 1 1
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/FullPuller.java
  22. 2 2
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/IncrementPuller.java
  23. 1 7
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/TableGroupStrategy.java
  24. 9 0
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/OperationTemplate.java
  25. 5 9
      dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreloadTemplate.java
  26. 32 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/logger/LogType.java
  27. 1 1
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/ConfigModel.java
  28. 5 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Connector.java
  29. 5 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Mapping.java
  30. 3 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Meta.java
  31. 6 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/ProjectGroup.java
  32. 7 1
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/SystemConfig.java
  33. 6 0
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/TableGroup.java
  34. 12 6
      dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/UserConfig.java
  35. 2 2
      dbsyncer-storage/src/main/java/org/dbsyncer/storage/constant/ConfigConstant.java
  36. 1 1
      dbsyncer-storage/src/main/resources/dbsyncer_config.sql
  37. 4 4
      dbsyncer-web/src/main/java/org/dbsyncer/web/config/WebAppConfig.java
  38. 5 5
      dbsyncer-web/src/main/java/org/dbsyncer/web/controller/config/ConfigController.java
  39. 2 3
      dbsyncer-web/src/main/java/org/dbsyncer/web/controller/index/ProjectGroupController.java
  40. 3 3
      dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java
  41. 34 34
      dbsyncer-web/src/main/java/org/dbsyncer/web/controller/system/SystemController.java
  42. 10 10
      dbsyncer-web/src/main/java/org/dbsyncer/web/controller/user/UserController.java
  43. 6 4
      dbsyncer-web/src/main/resources/public/monitor/monitor.html
  44. 2 7
      dbsyncer-web/src/main/resources/public/system/system.html
  45. 2 2
      dbsyncer-web/src/main/resources/public/user/edit.html
  46. 1 0
      dbsyncer-web/src/main/resources/static/js/monitor/index.js
  47. 0 0
      dbsyncer-web/src/main/resources/static/js/system/index.js

+ 5 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/ConfigService.java → dbsyncer-biz/src/main/java/org/dbsyncer/biz/SystemConfigService.java

@@ -8,11 +8,13 @@ import java.util.List;
 import java.util.Map;
 
 /**
+ * 系统配置
+ *
  * @author AE86
  * @version 1.0.0
  * @date 2020/5/30 23:14
  */
-public interface ConfigService {
+public interface SystemConfigService {
 
     /**
      * 修改系统配置
@@ -26,10 +28,10 @@ public interface ConfigService {
      *
      * @return
      */
-    SystemConfigVo getConfig();
+    SystemConfigVo getSystemConfigVo();
 
     /**
-     * 获取所有配置
+     * 获取所有配置(system、user、connector、mapping、tableGroup、meta、projectGroup)
      *
      * @return
      */

+ 3 - 1
dbsyncer-biz/src/main/java/org/dbsyncer/biz/UserService.java → dbsyncer-biz/src/main/java/org/dbsyncer/biz/UserConfigService.java

@@ -8,11 +8,13 @@ import java.util.List;
 import java.util.Map;
 
 /**
+ * 用戶配置服務
+ *
  * @author AE86
  * @version 1.0.0
  * @date 2022/11/17 0:16
  */
-public interface UserService {
+public interface UserConfigService {
 
     /**
      * 获取登录用户属性KEY

+ 0 - 1
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/connector/ConnectorChecker.java

@@ -52,7 +52,6 @@ public class ConnectorChecker extends AbstractChecker {
 
         Connector connector = new Connector();
         connector.setName(name);
-        connector.setType(ConfigConstant.CONNECTOR);
         AbstractConnectorConfig config = getConfig(connectorType);
         connector.setConfig(config);
 

+ 0 - 1
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/group/ProjectGroupChecker.java

@@ -36,7 +36,6 @@ public class ProjectGroupChecker extends AbstractChecker {
     public ConfigModel checkAddConfigModel(Map<String, String> params) {
         String name = params.get(ConfigConstant.CONFIG_MODEL_NAME);
         ProjectGroup projectGroup = new ProjectGroup();
-        projectGroup.setType(ConfigConstant.PROJECT_GROUP);
         projectGroup.setName(name);
 
         modifyProjectGroup(projectGroup, params);

+ 3 - 6
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MappingChecker.java

@@ -57,7 +57,6 @@ public class MappingChecker extends AbstractChecker {
 
         Mapping mapping = new Mapping();
         mapping.setName(name);
-        mapping.setType(ConfigConstant.MAPPING);
         mapping.setSourceConnectorId(sourceConnectorId);
         mapping.setTargetConnectorId(targetConnectorId);
         mapping.setModel(ModelEnum.FULL.getCode());
@@ -151,7 +150,7 @@ public class MappingChecker extends AbstractChecker {
             // 合并配置
             for (TableGroup g : groupAll) {
                 tableGroupChecker.mergeConfig(mapping, g);
-                manager.editTableGroup(g);
+                manager.editConfigModel(g);
             }
         }
     }
@@ -197,19 +196,17 @@ public class MappingChecker extends AbstractChecker {
         getMetaTotal(meta, mapping.getModel());
 
         meta.setUpdateTime(Instant.now().toEpochMilli());
-        manager.editMeta(meta);
+        manager.editConfigModel(meta);
     }
 
     private void addMeta(Mapping mapping) {
         Meta meta = new Meta();
         meta.setMappingId(mapping.getId());
-        meta.setType(ConfigConstant.META);
-        meta.setName(ConfigConstant.META);
 
         // 修改基本配置
         this.modifyConfigModel(meta, new HashMap<>());
 
-        String id = manager.addMeta(meta);
+        String id = manager.addConfigModel(meta);
         mapping.setMetaId(id);
     }
 

+ 13 - 16
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/config/ConfigChecker.java → dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/system/SystemConfigChecker.java

@@ -1,4 +1,4 @@
-package org.dbsyncer.biz.checker.impl.config;
+package org.dbsyncer.biz.checker.impl.system;
 
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.common.util.NumberUtil;
@@ -6,7 +6,7 @@ import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.parser.logger.LogService;
 import org.dbsyncer.parser.logger.LogType;
-import org.dbsyncer.parser.model.Config;
+import org.dbsyncer.parser.model.SystemConfig;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.storage.constant.ConfigConstant;
 import org.slf4j.Logger;
@@ -23,7 +23,7 @@ import java.util.Map;
  * @date 2020/1/8 15:17
  */
 @Component
-public class ConfigChecker extends AbstractChecker {
+public class SystemConfigChecker extends AbstractChecker {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -35,15 +35,14 @@ public class ConfigChecker extends AbstractChecker {
 
     @Override
     public ConfigModel checkAddConfigModel(Map<String, String> params) {
-        Config config = new Config();
-        config.setName("系统配置");
-        config.setType(ConfigConstant.CONFIG);
+        SystemConfig systemConfig = new SystemConfig();
+        systemConfig.setName("系统配置");
 
         // 修改基本配置
-        this.modifyConfigModel(config, params);
+        this.modifyConfigModel(systemConfig, params);
 
-        manager.addConfig(config);
-        return config;
+        manager.addConfigModel(systemConfig);
+        return systemConfig;
     }
 
     @Override
@@ -51,22 +50,20 @@ public class ConfigChecker extends AbstractChecker {
         logger.info("params:{}", params);
         Assert.notEmpty(params, "Config check params is null.");
 
-        String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
-        Assert.hasText(id, "Config id is empty.");
-        Config config = manager.getConfig(id);
-        Assert.notNull(config, "配置文件为空.");
+        SystemConfig systemConfig = manager.getSystemConfig();
+        Assert.notNull(systemConfig, "配置文件为空.");
 
         // 刷新监控间隔(秒)
         String refreshInterval = params.get("refreshInterval");
         if (StringUtil.isNotBlank(refreshInterval)) {
             int time = NumberUtil.toInt(refreshInterval, 10);
-            config.setRefreshInterval(time);
+            systemConfig.setRefreshInterval(time);
         }
         logService.log(LogType.SystemLog.INFO, "修改系统配置");
 
         // 修改基本配置
-        this.modifyConfigModel(config, params);
-        return config;
+        this.modifyConfigModel(systemConfig, params);
+        return systemConfig;
     }
 
 }

+ 0 - 2
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/tablegroup/TableGroupChecker.java

@@ -63,8 +63,6 @@ public class TableGroupChecker extends AbstractChecker {
         // 获取连接器信息
         TableGroup tableGroup = new TableGroup();
         tableGroup.setFieldMapping(new ArrayList<>());
-        tableGroup.setName(ConfigConstant.TABLE_GROUP);
-        tableGroup.setType(ConfigConstant.TABLE_GROUP);
         tableGroup.setMappingId(mappingId);
         tableGroup.setSourceTable(getTable(mapping.getSourceConnectorId(), sourceTable, sourceTablePK));
         tableGroup.setTargetTable(getTable(mapping.getTargetConnectorId(), targetTable, targetTablePK));

+ 0 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/user/UserConfigChecker.java

@@ -4,10 +4,8 @@ import org.dbsyncer.biz.BizException;
 import org.dbsyncer.biz.checker.AbstractChecker;
 import org.dbsyncer.parser.model.ConfigModel;
 import org.dbsyncer.parser.model.UserConfig;
-import org.dbsyncer.storage.constant.ConfigConstant;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.Map;
 
 /**
@@ -22,8 +20,6 @@ public class UserConfigChecker extends AbstractChecker {
     public ConfigModel checkAddConfigModel(Map<String, String> params) {
         UserConfig config = new UserConfig();
         config.setName("用户配置");
-        config.setType(ConfigConstant.USER_CONFIG);
-        config.setUserInfoList(new ArrayList<>());
 
         // 修改基本配置
         this.modifyConfigModel(config, params);

+ 4 - 4
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConnectorServiceImpl.java

@@ -44,7 +44,7 @@ public class ConnectorServiceImpl extends BaseServiceImpl implements ConnectorSe
         ConfigModel model = connectorChecker.checkAddConfigModel(params);
         log(LogType.ConnectorLog.INSERT, model);
 
-        return manager.addConnector(model);
+        return manager.addConfigModel(model);
     }
 
     @Override
@@ -56,7 +56,7 @@ public class ConnectorServiceImpl extends BaseServiceImpl implements ConnectorSe
         params.put(ConfigConstant.CONFIG_MODEL_NAME, connector.getName() + "(复制)");
         ConfigModel model = connectorChecker.checkAddConfigModel(params);
         log(LogType.ConnectorLog.COPY, model);
-        manager.addConnector(model);
+        manager.addConfigModel(model);
 
         return String.format("复制成功[%s]", model.getName());
     }
@@ -66,7 +66,7 @@ public class ConnectorServiceImpl extends BaseServiceImpl implements ConnectorSe
         ConfigModel model = connectorChecker.checkEditConfigModel(params);
         log(LogType.ConnectorLog.UPDATE, model);
 
-        return manager.editConnector(model);
+        return manager.editConfigModel(model);
     }
 
     @Override
@@ -85,7 +85,7 @@ public class ConnectorServiceImpl extends BaseServiceImpl implements ConnectorSe
         Connector connector = manager.getConnector(id);
         log(LogType.ConnectorLog.DELETE, connector);
 
-        manager.removeConnector(id);
+        manager.removeConfigModel(id);
         return "删除连接器成功!";
     }
 

+ 6 - 6
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MappingServiceImpl.java

@@ -47,7 +47,7 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
         ConfigModel model = mappingChecker.checkAddConfigModel(params);
         log(LogType.MappingLog.INSERT, (Mapping) model);
 
-        String id = manager.addMapping(model);
+        String id = manager.addConfigModel(model);
 
         // 匹配相似表 on
         String autoMatchTable = params.get("autoMatchTable");
@@ -68,7 +68,7 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
             log(LogType.MappingLog.UPDATE, model);
 
             mappingChecker.batchMergeTableGroupConfig(model, params);
-            return manager.editMapping(model);
+            return manager.editConfigModel(model);
         }
     }
 
@@ -85,17 +85,17 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
             log(LogType.MetaLog.CLEAR, meta);
 
             // 删除meta
-            manager.removeMeta(metaId);
+            manager.removeConfigModel(metaId);
             log(LogType.MetaLog.DELETE, meta);
 
             // 删除tableGroup
             List<TableGroup> groupList = manager.getTableGroupAll(id);
             if (!CollectionUtils.isEmpty(groupList)) {
-                groupList.forEach(t -> manager.removeTableGroup(t.getId()));
+                groupList.forEach(t -> manager.removeConfigModel(t.getId()));
             }
 
             // 删除驱动
-            manager.removeMapping(id);
+            manager.removeConfigModel(id);
             log(LogType.MappingLog.DELETE, mapping);
         }
         return "驱动删除成功";
@@ -218,7 +218,7 @@ public class MappingServiceImpl extends BaseServiceImpl implements MappingServic
         if (meta.getTotal().get() <= (meta.getSuccess().get() + meta.getFail().get())) {
             meta.getFail().set(0);
             meta.getSuccess().set(0);
-            manager.editMeta(meta);
+            manager.editConfigModel(meta);
         }
     }
 

+ 3 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ProjectGroupServiceImpl.java

@@ -48,7 +48,7 @@ public class ProjectGroupServiceImpl extends BaseServiceImpl implements ProjectG
         ConfigModel model = projectGroupChecker.checkAddConfigModel(params);
         log(LogType.ConnectorLog.INSERT, model);
 
-        return manager.addProjectGroup(model);
+        return manager.addConfigModel(model);
     }
 
     @Override
@@ -56,7 +56,7 @@ public class ProjectGroupServiceImpl extends BaseServiceImpl implements ProjectG
         ConfigModel model = projectGroupChecker.checkEditConfigModel(params);
         log(LogType.ConnectorLog.UPDATE, model);
 
-        return manager.editProjectGroup(model);
+        return manager.editConfigModel(model);
     }
 
     @Override
@@ -64,7 +64,7 @@ public class ProjectGroupServiceImpl extends BaseServiceImpl implements ProjectG
         ProjectGroup projectGroup = manager.getProjectGroup(id);
         log(LogType.ConnectorLog.DELETE, projectGroup);
         Assert.notNull(projectGroup, "该分组已被删除");
-        manager.removeProjectGroup(id);
+        manager.removeConfigModel(id);
         return "删除分组成功!";
     }
 

+ 27 - 17
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/ConfigServiceImpl.java → dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/SystemConfigServiceImpl.java

@@ -1,8 +1,8 @@
 package org.dbsyncer.biz.impl;
 
 import org.apache.commons.io.FileUtils;
-import org.dbsyncer.biz.ConfigService;
-import org.dbsyncer.biz.UserService;
+import org.dbsyncer.biz.SystemConfigService;
+import org.dbsyncer.biz.UserConfigService;
 import org.dbsyncer.biz.checker.Checker;
 import org.dbsyncer.biz.vo.SystemConfigVo;
 import org.dbsyncer.common.util.CollectionUtils;
@@ -10,8 +10,8 @@ import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.template.PreloadTemplate;
 import org.dbsyncer.parser.logger.LogService;
 import org.dbsyncer.parser.logger.LogType;
-import org.dbsyncer.parser.model.Config;
 import org.dbsyncer.parser.model.ConfigModel;
+import org.dbsyncer.parser.model.SystemConfig;
 import org.dbsyncer.plugin.enums.FileSuffixEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,13 +32,13 @@ import java.util.Map;
  * @date 2019/10/17 23:20
  */
 @Service
-public class ConfigServiceImpl implements ConfigService {
+public class SystemConfigServiceImpl implements SystemConfigService {
 
     @Autowired
     private Manager manager;
 
     @Autowired
-    private Checker configChecker;
+    private Checker systemConfigChecker;
 
     @Autowired
     private PreloadTemplate preloadTemplate;
@@ -47,25 +47,25 @@ public class ConfigServiceImpl implements ConfigService {
     private LogService logService;
 
     @Autowired
-    private UserService userService;
+    private UserConfigService userConfigService;
 
     @Override
     public String edit(Map<String, String> params) {
-        ConfigModel model = configChecker.checkEditConfigModel(params);
-        manager.editConfig(model);
+        ConfigModel model = systemConfigChecker.checkEditConfigModel(params);
+        manager.editConfigModel(model);
         return "修改成功.";
     }
 
     @Override
-    public SystemConfigVo getConfig() {
-        return convertConfig2Vo(getConfigModel());
+    public SystemConfigVo getSystemConfigVo() {
+        return convertConfig2Vo(getSystemConfig());
     }
 
     @Override
     public List<ConfigModel> getConfigModelAll() {
         List<ConfigModel> list = new ArrayList<>();
-        list.add(getConfigModel());
-        list.add(userService.getUserConfig());
+        list.add(getSystemConfig());
+        list.add(userConfigService.getUserConfig());
         manager.getConnectorAll().forEach(config -> list.add(config));
         manager.getMappingAll().forEach(config -> list.add(config));
         manager.getMetaAll().forEach(config -> list.add(config));
@@ -98,14 +98,24 @@ public class ConfigServiceImpl implements ConfigService {
         }
     }
 
-    private synchronized Config getConfigModel() {
-        List<Config> all = manager.getConfigAll();
-        return CollectionUtils.isEmpty(all) ? (Config) configChecker.checkAddConfigModel(new HashMap<>()) : all.get(0);
+    private SystemConfig getSystemConfig() {
+        SystemConfig config = manager.getSystemConfig();
+        if (null != config) {
+            return config;
+        }
+
+        synchronized (this) {
+            config = manager.getSystemConfig();
+            if (null == config) {
+                config = (SystemConfig) systemConfigChecker.checkAddConfigModel(new HashMap<>());
+            }
+            return config;
+        }
     }
 
-    private SystemConfigVo convertConfig2Vo(Config config) {
+    private SystemConfigVo convertConfig2Vo(SystemConfig systemConfig) {
         SystemConfigVo systemConfigVo = new SystemConfigVo();
-        BeanUtils.copyProperties(config, systemConfigVo);
+        BeanUtils.copyProperties(systemConfig, systemConfigVo);
         return systemConfigVo;
     }
 

+ 5 - 5
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/TableGroupServiceImpl.java

@@ -51,7 +51,7 @@ public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroup
                 log(LogType.TableGroupLog.INSERT, model);
                 int tableGroupCount = manager.getTableGroupCount(mappingId);
                 model.setIndex(tableGroupCount + 1);
-                id = manager.addTableGroup(model);
+                id = manager.addConfigModel(model);
             }
 
             // 合并驱动公共字段
@@ -70,7 +70,7 @@ public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroup
         TableGroup model = (TableGroup) tableGroupChecker.checkEditConfigModel(params);
         log(LogType.TableGroupLog.UPDATE, model);
 
-        return manager.editTableGroup(model);
+        return manager.editConfigModel(model);
     }
 
     @Override
@@ -83,7 +83,7 @@ public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroup
         Stream.of(StringUtil.split(ids, ",")).parallel().forEach(id -> {
             TableGroup model = manager.getTableGroup(id);
             log(LogType.TableGroupLog.DELETE, model);
-            manager.removeTableGroup(id);
+            manager.removeConfigModel(id);
         });
 
         // 合并驱动公共字段
@@ -114,7 +114,7 @@ public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroup
             while (i > 0) {
                 TableGroup g = list.get(size - i);
                 g.setIndex(i);
-                manager.editTableGroup(g);
+                manager.editConfigModel(g);
                 i--;
             }
         }
@@ -135,7 +135,7 @@ public class TableGroupServiceImpl extends BaseServiceImpl implements TableGroup
 
         mapping.setSourceColumn(sourceColumn);
         mapping.setTargetColumn(targetColumn);
-        manager.editMapping(mapping);
+        manager.editConfigModel(mapping);
     }
 
     private List<Field> pickCommonFields(List<Field> column, List<Field> target) {

+ 21 - 22
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/UserServiceImpl.java → dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/UserConfigServiceImpl.java

@@ -1,11 +1,10 @@
 package org.dbsyncer.biz.impl;
 
 import org.dbsyncer.biz.BizException;
-import org.dbsyncer.biz.UserService;
+import org.dbsyncer.biz.UserConfigService;
 import org.dbsyncer.biz.checker.impl.user.UserConfigChecker;
 import org.dbsyncer.biz.enums.UserRoleEnum;
 import org.dbsyncer.biz.vo.UserInfoVo;
-import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.SHA1Util;
 import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.manager.Manager;
@@ -30,7 +29,7 @@ import java.util.stream.Collectors;
  * @date 2022/11/17 0:16
  */
 @Service
-public class UserServiceImpl implements UserService {
+public class UserConfigServiceImpl implements UserConfigService {
 
     private static final String DEFAULT_USERNAME = "admin";
 
@@ -57,14 +56,15 @@ public class UserServiceImpl implements UserService {
 
         // 验证当前登录用户合法身份(必须是管理员操作)
         UserConfig userConfig = getUserConfig();
-        UserInfo currentUser = userConfig.getUserInfo(params.get(UserService.CURRENT_USER_NAME));
+        UserInfo currentUser = userConfig.getUserInfo(params.get(UserConfigService.CURRENT_USER_NAME));
         Assert.isTrue(null == currentUser || UserRoleEnum.isAdmin(currentUser.getRoleCode()), "No permission.");
         // 新用户合法性(用户不能重复)
         Assert.isNull(userConfig.getUserInfo(username), "用户已存在,请换个账号");
         // 注册新用户
         userConfig.getUserInfoList().add(new UserInfo(username, nickname, SHA1Util.b64_sha1(password), UserRoleEnum.USER.getCode(), mail));
 
-        return manager.editUserConfig(userConfig);
+        logService.log(LogType.UserLog.INSERT, String.format("[%s]添加[%s]账号成功", currentUser.getUsername(), username));
+        return manager.editConfigModel(userConfig);
     }
 
     @Override
@@ -78,7 +78,7 @@ public class UserServiceImpl implements UserService {
 
         // 验证当前登录用户合法身份(管理员或本人操作)
         UserConfig userConfig = getUserConfig();
-        UserInfo currentUser = userConfig.getUserInfo(params.get(UserService.CURRENT_USER_NAME));
+        UserInfo currentUser = userConfig.getUserInfo(params.get(UserConfigService.CURRENT_USER_NAME));
         boolean admin = null != currentUser && UserRoleEnum.isAdmin(currentUser.getRoleCode());
         boolean self = null != currentUser && StringUtil.equals(currentUser.getUsername(), username);
         Assert.isTrue(admin || self, "No permission.");
@@ -104,10 +104,10 @@ public class UserServiceImpl implements UserService {
             newPwd = SHA1Util.b64_sha1(newPwd);
             Assert.isTrue(!StringUtil.equals(newPwd, updateUser.getPassword()), "新旧密码不能完全一样.");
             updateUser.setPassword(newPwd);
-            logService.log(LogType.SystemLog.INFO, String.format("[%s]修改[%s]账号密码成功", currentUser.getUsername(), username));
+            logService.log(LogType.UserLog.UPDATE, String.format("[%s]修改[%s]账号密码成功", currentUser.getUsername(), username));
         }
 
-        return manager.editUserConfig(userConfig);
+        return manager.editConfigModel(userConfig);
     }
 
     @Override
@@ -117,7 +117,7 @@ public class UserServiceImpl implements UserService {
 
         // 验证当前登录用户合法身份(必须是管理员操作)
         UserConfig userConfig = getUserConfig();
-        UserInfo currentUser = userConfig.getUserInfo(params.get(UserService.CURRENT_USER_NAME));
+        UserInfo currentUser = userConfig.getUserInfo(params.get(UserConfigService.CURRENT_USER_NAME));
         Assert.isTrue(UserRoleEnum.isAdmin(currentUser.getRoleCode()), "No permission.");
 
         // 不能删除自己
@@ -127,7 +127,8 @@ public class UserServiceImpl implements UserService {
         UserInfo deleteUser = userConfig.getUserInfo(username);
         Assert.notNull(deleteUser, "用户已删除.");
         userConfig.removeUserInfo(username);
-        manager.editUserConfig(userConfig);
+        manager.editConfigModel(userConfig);
+        logService.log(LogType.UserLog.DELETE, String.format("[%s]删除[%s]账号成功", currentUser.getUsername(), username));
         return "删除用户成功!";
     }
 
@@ -167,22 +168,20 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public UserConfig getUserConfig() {
-        List<UserConfig> all = manager.getUserConfigAll();
-        if (!CollectionUtils.isEmpty(all)) {
-            return all.get(0);
+        UserConfig config = manager.getUserConfig();
+        if (null != config) {
+            return config;
         }
 
         synchronized (this) {
-            all = manager.getUserConfigAll();
-            if (!CollectionUtils.isEmpty(all)) {
-                return all.get(0);
+            config = manager.getUserConfig();
+            if (null == config) {
+                config = (UserConfig) userConfigChecker.checkAddConfigModel(new HashMap<>());
+                UserRoleEnum admin = UserRoleEnum.ADMIN;
+                config.getUserInfoList().add(new UserInfo(DEFAULT_USERNAME, DEFAULT_USERNAME, DEFAULT_PASSWORD, admin.getCode(), ""));
+                manager.addConfigModel(config);
             }
-
-            UserConfig userConfig = (UserConfig) userConfigChecker.checkAddConfigModel(new HashMap<>());
-            UserRoleEnum admin = UserRoleEnum.ADMIN;
-            userConfig.getUserInfoList().add(new UserInfo(DEFAULT_USERNAME, DEFAULT_USERNAME, DEFAULT_PASSWORD, admin.getCode(), ""));
-            manager.addUserConfig(userConfig);
-            return userConfig;
+            return config;
         }
     }
 

+ 18 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/DataVo.java

@@ -4,6 +4,8 @@ public class DataVo {
 
     private String id;
     private int success;
+    private String tableGroupId;
+    private String targetTableName;
     private String event;
     private String error;
     private String json;
@@ -25,6 +27,22 @@ public class DataVo {
         this.success = success;
     }
 
+    public String getTableGroupId() {
+        return tableGroupId;
+    }
+
+    public void setTableGroupId(String tableGroupId) {
+        this.tableGroupId = tableGroupId;
+    }
+
+    public String getTargetTableName() {
+        return targetTableName;
+    }
+
+    public void setTargetTableName(String targetTableName) {
+        this.targetTableName = targetTableName;
+    }
+
     public String getEvent() {
         return event;
     }

+ 2 - 2
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/SystemConfigVo.java

@@ -1,7 +1,7 @@
 package org.dbsyncer.biz.vo;
 
-import org.dbsyncer.parser.model.Config;
+import org.dbsyncer.parser.model.SystemConfig;
 
-public class SystemConfigVo extends Config {
+public class SystemConfigVo extends SystemConfig {
 
 }

+ 28 - 46
dbsyncer-manager/src/main/java/org/dbsyncer/manager/Manager.java

@@ -27,24 +27,39 @@ import java.util.Map;
  */
 public interface Manager extends Executor {
 
-    // user
-    String addUserConfig(ConfigModel model);
-
-    String editUserConfig(ConfigModel model);
-
-    UserConfig getUserConfig(String id);
+    /**
+     * 添加ConfigModel
+     *
+     * @param model
+     * @return id
+     */
+    String addConfigModel(ConfigModel model);
+
+    /**
+     * 编辑ConfigModel
+     *
+     * @param model
+     * @return id
+     */
+    String editConfigModel(ConfigModel model);
+
+    /**
+     * 刪除ConfigModel
+     *
+      * @param id
+     * @return
+     */
+    void removeConfigModel(String id);
+
+    // system
+    SystemConfig getSystemConfig();
 
-    List<UserConfig> getUserConfigAll();
+    // user
+    UserConfig getUserConfig();
 
     // project group
-    String addProjectGroup(ConfigModel model);
-
-    String editProjectGroup(ConfigModel model);
-
     ProjectGroup getProjectGroup(String id);
 
-    void removeProjectGroup(String id);
-
     List<ProjectGroup> getProjectGroupAll();
 
     // Connector
@@ -58,12 +73,6 @@ public interface Manager extends Executor {
 
     MetaInfo getMetaInfo(String connectorId, String tableName);
 
-    String addConnector(ConfigModel model);
-
-    String editConnector(ConfigModel model);
-
-    void removeConnector(String connectorId);
-
     Connector getConnector(String connectorId);
 
     List<Connector> getConnectorAll();
@@ -71,23 +80,11 @@ public interface Manager extends Executor {
     void checkAllConnectorStatus();
 
     // Mapping
-    String addMapping(ConfigModel model);
-
-    String editMapping(ConfigModel model);
-
-    void removeMapping(String mappingId);
-
     Mapping getMapping(String mappingId);
 
     List<Mapping> getMappingAll();
 
     // TableGroup
-    String addTableGroup(ConfigModel model);
-
-    String editTableGroup(ConfigModel model);
-
-    void removeTableGroup(String tableGroupId);
-
     TableGroup getTableGroup(String tableGroupId);
 
     List<TableGroup> getTableGroupAll(String mappingId);
@@ -101,25 +98,10 @@ public interface Manager extends Executor {
     long getCount(String connectorId, Map<String, String> command);
 
     // Meta
-    String addMeta(ConfigModel model);
-
-    String editMeta(ConfigModel model);
-
     Meta getMeta(String metaId);
 
-    void removeMeta(String metaId);
-
     List<Meta> getMetaAll();
 
-    // Config
-    String addConfig(ConfigModel model);
-
-    String editConfig(ConfigModel model);
-
-    Config getConfig(String configId);
-
-    List<Config> getConfigAll();
-
     // Data
     Paging queryData(Query query, String collectionId);
 

+ 19 - 137
dbsyncer-manager/src/main/java/org/dbsyncer/manager/ManagerFactory.java

@@ -26,7 +26,6 @@ import org.dbsyncer.parser.model.*;
 import org.dbsyncer.plugin.PluginFactory;
 import org.dbsyncer.plugin.config.Plugin;
 import org.dbsyncer.storage.StorageService;
-import org.dbsyncer.storage.constant.ConfigConstant;
 import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 import org.dbsyncer.storage.enums.StorageEnum;
 import org.dbsyncer.storage.query.Query;
@@ -68,37 +67,30 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
     private Map<String, Puller> map;
 
     @Override
-    public String addUserConfig(ConfigModel model) {
+    public String addConfigModel(ConfigModel model) {
         return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
     }
 
     @Override
-    public String editUserConfig(ConfigModel model) {
+    public String editConfigModel(ConfigModel model) {
         return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
     }
 
     @Override
-    public UserConfig getUserConfig(String id) {
-        return operationTemplate.queryObject(UserConfig.class, id);
+    public void removeConfigModel(String id) {
+        operationTemplate.remove(new OperationConfig(id));
     }
 
     @Override
-    public List<UserConfig> getUserConfigAll() {
-        UserConfig userConfig = new UserConfig();
-        userConfig.setType(ConfigConstant.USER_CONFIG);
-        QueryConfig<UserConfig> queryConfig = new QueryConfig<>(userConfig);
-        List<UserConfig> userConfigs = operationTemplate.queryAll(queryConfig);
-        return userConfigs;
+    public SystemConfig getSystemConfig() {
+        List<SystemConfig> list = operationTemplate.queryAll(SystemConfig.class);
+        return CollectionUtils.isEmpty(list) ? null : list.get(0);
     }
 
     @Override
-    public String addProjectGroup(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
-    }
-
-    @Override
-    public String editProjectGroup(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
+    public UserConfig getUserConfig() {
+        List<UserConfig> list = operationTemplate.queryAll(UserConfig.class);
+        return CollectionUtils.isEmpty(list) ? null : list.get(0);
     }
 
     @Override
@@ -106,18 +98,9 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
         return operationTemplate.queryObject(ProjectGroup.class, id);
     }
 
-    @Override
-    public void removeProjectGroup(String id) {
-        operationTemplate.remove(new OperationConfig(id));
-    }
-
     @Override
     public List<ProjectGroup> getProjectGroupAll() {
-        ProjectGroup projectGroup = new ProjectGroup();
-        projectGroup.setType(ConfigConstant.PROJECT_GROUP);
-        QueryConfig<ProjectGroup> queryConfig = new QueryConfig<>(projectGroup);
-        List<ProjectGroup> groups = operationTemplate.queryAll(queryConfig);
-        return groups;
+        return operationTemplate.queryAll(ProjectGroup.class);
     }
 
     @Override
@@ -145,21 +128,6 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
         return parser.getMetaInfo(connectorId, tableName);
     }
 
-    @Override
-    public String addConnector(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
-    }
-
-    @Override
-    public String editConnector(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
-    }
-
-    @Override
-    public void removeConnector(String connectorId) {
-        operationTemplate.remove(new OperationConfig(connectorId));
-    }
-
     @Override
     public Connector getConnector(String connectorId) {
         return operationTemplate.queryObject(Connector.class, connectorId);
@@ -167,11 +135,7 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
 
     @Override
     public List<Connector> getConnectorAll() {
-        Connector connector = new Connector();
-        connector.setType(ConfigConstant.CONNECTOR);
-        QueryConfig<Connector> queryConfig = new QueryConfig<>(connector);
-        List<Connector> connectors = operationTemplate.queryAll(queryConfig);
-        return connectors;
+        return operationTemplate.queryAll(Connector.class);
     }
 
     @Override
@@ -189,21 +153,6 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
         }
     }
 
-    @Override
-    public String addMapping(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
-    }
-
-    @Override
-    public String editMapping(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
-    }
-
-    @Override
-    public void removeMapping(String mappingId) {
-        operationTemplate.remove(new OperationConfig(mappingId));
-    }
-
     @Override
     public Mapping getMapping(String mappingId) {
         return operationTemplate.queryObject(Mapping.class, mappingId);
@@ -211,26 +160,7 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
 
     @Override
     public List<Mapping> getMappingAll() {
-        Mapping mapping = new Mapping();
-        mapping.setType(ConfigConstant.MAPPING);
-        QueryConfig<Mapping> queryConfig = new QueryConfig<>(mapping);
-        List<Mapping> mappings = operationTemplate.queryAll(queryConfig);
-        return mappings;
-    }
-
-    @Override
-    public String addTableGroup(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD, GroupStrategyEnum.TABLE));
-    }
-
-    @Override
-    public String editTableGroup(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT, GroupStrategyEnum.TABLE));
-    }
-
-    @Override
-    public void removeTableGroup(String tableGroupId) {
-        operationTemplate.remove(new OperationConfig(tableGroupId, GroupStrategyEnum.TABLE));
+        return operationTemplate.queryAll(Mapping.class);
     }
 
     @Override
@@ -240,12 +170,8 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
 
     @Override
     public List<TableGroup> getTableGroupAll(String mappingId) {
-        TableGroup tableGroup = new TableGroup();
-        tableGroup.setType(ConfigConstant.TABLE_GROUP);
-        tableGroup.setMappingId(mappingId);
-        QueryConfig<TableGroup> queryConfig = new QueryConfig<>(tableGroup, GroupStrategyEnum.TABLE);
-        List<TableGroup> tableGroups = operationTemplate.queryAll(queryConfig);
-        return tableGroups;
+        TableGroup tableGroup = new TableGroup().setMappingId(mappingId);
+        return operationTemplate.queryAll(new QueryConfig(tableGroup, GroupStrategyEnum.TABLE));
     }
 
     @Override
@@ -259,11 +185,8 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
 
     @Override
     public int getTableGroupCount(String mappingId) {
-        TableGroup tableGroup = new TableGroup();
-        tableGroup.setType(ConfigConstant.TABLE_GROUP);
-        tableGroup.setMappingId(mappingId);
-        QueryConfig queryConfig = new QueryConfig<>(tableGroup, GroupStrategyEnum.TABLE);
-        return operationTemplate.queryCount(queryConfig);
+        TableGroup tableGroup = new TableGroup().setMappingId(mappingId);
+        return operationTemplate.queryCount(new QueryConfig<>(tableGroup, GroupStrategyEnum.TABLE));
     }
 
     @Override
@@ -276,55 +199,14 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
         return parser.getCount(connectorId, command);
     }
 
-    @Override
-    public String addMeta(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
-    }
-
-    @Override
-    public String editMeta(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
-    }
-
     @Override
     public Meta getMeta(String metaId) {
         return operationTemplate.queryObject(Meta.class, metaId);
     }
 
-    @Override
-    public void removeMeta(String metaId) {
-        operationTemplate.remove(new OperationConfig(metaId));
-    }
-
     @Override
     public List<Meta> getMetaAll() {
-        Meta meta = new Meta();
-        meta.setType(ConfigConstant.META);
-        QueryConfig<Meta> queryConfig = new QueryConfig<>(meta);
-        return operationTemplate.queryAll(queryConfig);
-    }
-
-    @Override
-    public String addConfig(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_ADD));
-    }
-
-    @Override
-    public String editConfig(ConfigModel model) {
-        return operationTemplate.execute(new OperationConfig(model, CommandEnum.OPR_EDIT));
-    }
-
-    @Override
-    public Config getConfig(String configId) {
-        return operationTemplate.queryObject(Config.class, configId);
-    }
-
-    @Override
-    public List<Config> getConfigAll() {
-        Config config = new Config();
-        config.setType(ConfigConstant.CONFIG);
-        QueryConfig<Config> queryConfig = new QueryConfig<>(config);
-        return operationTemplate.queryAll(queryConfig);
+        return operationTemplate.queryAll(Meta.class);
     }
 
     @Override
@@ -433,7 +315,7 @@ public class ManagerFactory implements Manager, ApplicationListener<ClosedEvent>
         if (null != meta && meta.getState() != code) {
             meta.setState(code);
             meta.setUpdateTime(Instant.now().toEpochMilli());
-            editMeta(meta);
+            editConfigModel(meta);
         }
     }
 

+ 9 - 7
dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/PreloadCommand.java

@@ -3,6 +3,7 @@ package org.dbsyncer.manager.command;
 import org.dbsyncer.manager.Command;
 import org.dbsyncer.parser.Parser;
 import org.dbsyncer.parser.model.*;
+import org.dbsyncer.parser.model.SystemConfig;
 
 public class PreloadCommand implements Command {
 
@@ -15,6 +16,14 @@ public class PreloadCommand implements Command {
         this.json = json;
     }
 
+    public Object parseSystemConfig() {
+        return parser.parseObject(json, SystemConfig.class);
+    }
+
+    public Object parseUserConfig() {
+        return parser.parseObject(json, UserConfig.class);
+    }
+
     public Object parseConnector() {
         return parser.parseConnector(json);
     }
@@ -31,15 +40,8 @@ public class PreloadCommand implements Command {
         return parser.parseObject(json, Meta.class);
     }
 
-    public Object parseConfig() {
-        return parser.parseObject(json, Config.class);
-    }
-
     public Object parseProjectGroup() {
         return parser.parseObject(json, ProjectGroup.class);
     }
 
-    public Object parseUserConfig() {
-        return parser.parseObject(json, UserConfig.class);
-    }
 }

+ 11 - 11
dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/CommandEnum.java

@@ -22,6 +22,16 @@ public enum CommandEnum {
      */
     OPR_EDIT("edit", (cmd) -> ((PersistenceCommand) cmd).edit()),
 
+    /**
+     * 预加载SystemConfig
+     */
+    PRELOAD_SYSTEM(ConfigConstant.SYSTEM, true, (cmd) -> ((PreloadCommand) cmd).parseSystemConfig()),
+
+    /**
+     * 预加载UserConfig
+     */
+    PRELOAD_USER(ConfigConstant.USER, true, (cmd) -> ((PreloadCommand) cmd).parseUserConfig()),
+
     /**
      * 预加载Connector
      */
@@ -42,20 +52,10 @@ public enum CommandEnum {
      */
     PRELOAD_META(ConfigConstant.META, true, (cmd) -> ((PreloadCommand) cmd).parseMeta()),
 
-    /**
-     * 预加载Config
-     */
-    PRELOAD_CONFIG(ConfigConstant.CONFIG, true, (cmd) -> ((PreloadCommand) cmd).parseConfig()),
-
     /**
      * 预加载ProjectGroup
      */
-    PRELOAD_PROJECT_GROUP(ConfigConstant.PROJECT_GROUP, true, (cmd) -> ((PreloadCommand) cmd).parseProjectGroup()),
-
-    /**
-     * 预加载用户配置
-     */
-    USER_CONFIG(ConfigConstant.USER_CONFIG, true, (cmd) -> ((PreloadCommand) cmd).parseUserConfig());
+    PRELOAD_PROJECT_GROUP(ConfigConstant.PROJECT_GROUP, true, (cmd) -> ((PreloadCommand) cmd).parseProjectGroup());
 
     private String modelType;
     private boolean preload;

+ 1 - 1
dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/FullPuller.java

@@ -138,7 +138,7 @@ public class FullPuller extends AbstractPuller implements ApplicationListener<Fu
         snapshot.put(ParserEnum.PAGE_INDEX.getCode(), String.valueOf(task.getPageIndex()));
         snapshot.put(ParserEnum.CURSOR.getCode(), String.valueOf(task.getCursor()));
         snapshot.put(ParserEnum.TABLE_GROUP_INDEX.getCode(), String.valueOf(task.getTableGroupIndex()));
-        manager.editMeta(meta);
+        manager.editConfigModel(meta);
     }
 
 }

+ 2 - 2
dbsyncer-manager/src/main/java/org/dbsyncer/manager/puller/IncrementPuller.java

@@ -109,7 +109,7 @@ public class IncrementPuller extends AbstractPuller implements ScheduledTaskJob
                 long now = Instant.now().toEpochMilli();
                 meta.setBeginTime(now);
                 meta.setEndTime(now);
-                manager.editMeta(meta);
+                manager.editConfigModel(meta);
                 map.putIfAbsent(metaId, getExtractor(mapping, connector, list, meta));
                 map.get(metaId).start();
             } catch (Exception e) {
@@ -208,7 +208,7 @@ public class IncrementPuller extends AbstractPuller implements ScheduledTaskJob
             Meta meta = manager.getMeta(metaId);
             if (null != meta) {
                 meta.setSnapshot(snapshot);
-                manager.editMeta(meta);
+                manager.editConfigModel(meta);
             }
         }
 

+ 1 - 7
dbsyncer-manager/src/main/java/org/dbsyncer/manager/strategy/TableGroupStrategy.java

@@ -3,9 +3,7 @@ package org.dbsyncer.manager.strategy;
 import org.dbsyncer.manager.GroupStrategy;
 import org.dbsyncer.manager.ManagerException;
 import org.dbsyncer.parser.model.ConfigModel;
-import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.TableGroup;
-import org.dbsyncer.storage.constant.ConfigConstant;
 
 /**
  * @author AE86
@@ -23,11 +21,7 @@ public class TableGroupStrategy implements GroupStrategy {
             // 格式:${type} + "_" + ${mappingId}
             return new StringBuilder(type).append("_").append(mappingId).toString();
         }
-        if (model instanceof Mapping) {
-            Mapping m = (Mapping) model;
-            return new StringBuilder(ConfigConstant.TABLE_GROUP).append("_").append(m.getId()).toString();
-        }
-        throw new ManagerException(String.format("Not support config model \"%s\".", model));
+        throw new ManagerException(String.format("UnSupported config model \"%s\".", model.getClass().getName()));
     }
 
 }

+ 9 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/OperationTemplate.java

@@ -41,6 +41,15 @@ public final class OperationTemplate {
     @Autowired
     private CacheService cacheService;
 
+    public <T> List<T> queryAll(Class<T> valueType) {
+        try {
+            ConfigModel configModel = (ConfigModel) valueType.newInstance();
+            return queryAll(new QueryConfig<T>(configModel));
+        } catch (Exception e) {
+            throw new ManagerException(e);
+        }
+    }
+
     public <T> List<T> queryAll(QueryConfig<T> query) {
         ConfigModel model = query.getConfigModel();
         String groupId = getGroupId(model, query.getGroupStrategyEnum());

+ 5 - 9
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/PreloadTemplate.java

@@ -8,7 +8,6 @@ import org.dbsyncer.manager.Manager;
 import org.dbsyncer.manager.command.PreloadCommand;
 import org.dbsyncer.manager.enums.CommandEnum;
 import org.dbsyncer.manager.model.OperationConfig;
-import org.dbsyncer.manager.model.QueryConfig;
 import org.dbsyncer.manager.template.OperationTemplate.Group;
 import org.dbsyncer.parser.Parser;
 import org.dbsyncer.parser.enums.MetaEnum;
@@ -90,8 +89,10 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
             return;
         }
 
-        // Load config
-        reload(map, CommandEnum.PRELOAD_CONFIG);
+        // Load system
+        reload(map, CommandEnum.PRELOAD_SYSTEM);
+        // Load user
+        reload(map, CommandEnum.PRELOAD_USER);
         // Load connectors
         reload(map, CommandEnum.PRELOAD_CONNECTOR);
         // Load mappings
@@ -100,8 +101,6 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
         reload(map, CommandEnum.PRELOAD_META);
         // Load projectGroups
         reload(map, CommandEnum.PRELOAD_PROJECT_GROUP);
-        // Load userConfig
-        reload(map, CommandEnum.USER_CONFIG);
         launch();
     }
 
@@ -134,10 +133,7 @@ public final class PreloadTemplate implements ApplicationListener<ContextRefresh
     }
 
     private void launch() {
-        Meta meta = new Meta();
-        meta.setType(ConfigConstant.META);
-        QueryConfig<Meta> queryConfig = new QueryConfig<>(meta);
-        List<Meta> metas = operationTemplate.queryAll(queryConfig);
+        List<Meta> metas = manager.getMetaAll();
         if (!CollectionUtils.isEmpty(metas)) {
             metas.forEach(m -> {
                 // 恢复驱动状态

+ 32 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/logger/LogType.java

@@ -270,4 +270,36 @@ public interface LogType {
         }
     }
 
+    /**
+     * 用户日志8
+     */
+    enum UserLog implements LogType {
+        INSERT("80", "新增"),
+        UPDATE("81", "修改"),
+        DELETE("82", "删除");
+
+        private String type;
+        private String message;
+
+        UserLog(String type, String message) {
+            this.type = type;
+            this.message = message;
+        }
+
+        @Override
+        public String getName() {
+            return "用户日志";
+        }
+
+        @Override
+        public String getType() {
+            return type;
+        }
+
+        @Override
+        public String getMessage() {
+            return message;
+        }
+    }
+
 }

+ 1 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/ConfigModel.java

@@ -12,7 +12,7 @@ public class ConfigModel {
     private String id;
 
     /**
-     * connector/mapping/tableGroup/meta/config/ProjectGroup/UserConfig
+     * system/user/connector/mapping/tableGroup/meta/projectGroup
      *
      * @see ConfigConstant
      */

+ 5 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Connector.java

@@ -2,6 +2,7 @@ package org.dbsyncer.parser.model;
 
 import org.dbsyncer.common.model.AbstractConnectorConfig;
 import org.dbsyncer.connector.model.Table;
+import org.dbsyncer.storage.constant.ConfigConstant;
 
 import java.util.List;
 
@@ -12,6 +13,10 @@ import java.util.List;
  */
 public class Connector extends ConfigModel{
 
+    public Connector() {
+        super.setType(ConfigConstant.CONNECTOR);
+    }
+
     /**
      * 表名,["MY_USER", "T_MY_USER", "table_999"]
      */

+ 5 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Mapping.java

@@ -3,6 +3,7 @@ package org.dbsyncer.parser.model;
 import org.dbsyncer.connector.model.Field;
 import org.dbsyncer.listener.config.ListenerConfig;
 import org.dbsyncer.parser.enums.ModelEnum;
+import org.dbsyncer.storage.constant.ConfigConstant;
 
 import java.util.List;
 
@@ -15,6 +16,10 @@ import java.util.List;
  */
 public class Mapping extends AbstractConfigModel {
 
+    public Mapping() {
+        super.setType(ConfigConstant.MAPPING);
+    }
+
     // 数据源连接器ID
     private String sourceConnectorId;
 

+ 3 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Meta.java

@@ -1,6 +1,7 @@
 package org.dbsyncer.parser.model;
 
 import org.dbsyncer.parser.enums.MetaEnum;
+import org.dbsyncer.storage.constant.ConfigConstant;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -32,6 +33,8 @@ public class Meta extends ConfigModel {
     private long endTime;
 
     public Meta() {
+        super.setType(ConfigConstant.META);
+        super.setName(ConfigConstant.META);
         init();
     }
 

+ 6 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/ProjectGroup.java

@@ -1,5 +1,7 @@
 package org.dbsyncer.parser.model;
 
+import org.dbsyncer.storage.constant.ConfigConstant;
+
 import java.util.List;
 
 /**
@@ -9,6 +11,10 @@ import java.util.List;
  **/
 public class ProjectGroup extends ConfigModel {
 
+    public ProjectGroup() {
+        super.setType(ConfigConstant.PROJECT_GROUP);
+    }
+
     /**
      * 连接器ID列表
      */

+ 7 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/Config.java → dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/SystemConfig.java

@@ -1,5 +1,7 @@
 package org.dbsyncer.parser.model;
 
+import org.dbsyncer.storage.constant.ConfigConstant;
+
 /**
  * 系统配置
  *
@@ -7,7 +9,11 @@ package org.dbsyncer.parser.model;
  * @Author AE86
  * @Date 2020-05-29 20:13
  */
-public class Config extends ConfigModel {
+public class SystemConfig extends ConfigModel {
+
+    public SystemConfig() {
+        super.setType(ConfigConstant.SYSTEM);
+    }
 
     private int refreshInterval = 5;
 

+ 6 - 0
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/TableGroup.java

@@ -1,6 +1,7 @@
 package org.dbsyncer.parser.model;
 
 import org.dbsyncer.connector.model.Table;
+import org.dbsyncer.storage.constant.ConfigConstant;
 
 import java.util.List;
 import java.util.Map;
@@ -12,6 +13,11 @@ import java.util.Map;
  */
 public class TableGroup extends AbstractConfigModel {
 
+    public TableGroup() {
+        super.setType(ConfigConstant.TABLE_GROUP);
+        super.setName(ConfigConstant.TABLE_GROUP);
+    }
+
     // 排序索引
     private int index;
 

+ 12 - 6
dbsyncer-parser/src/main/java/org/dbsyncer/parser/model/UserConfig.java

@@ -1,5 +1,7 @@
 package org.dbsyncer.parser.model;
 
+import org.dbsyncer.storage.constant.ConfigConstant;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -15,22 +17,26 @@ public class UserConfig extends ConfigModel {
 
     private List<UserInfo> userInfoList = new ArrayList<>();
 
-    public void removeUserInfo(String username){
+    public UserConfig() {
+        super.setType(ConfigConstant.USER);
+    }
+
+    public void removeUserInfo(String username) {
         Iterator<UserInfo> iterator = userInfoList.iterator();
-        while (iterator.hasNext()){
+        while (iterator.hasNext()) {
             UserInfo next = iterator.next();
-            if(next.getUsername().equals(username)){
+            if (next.getUsername().equals(username)) {
                 iterator.remove();
                 break;
             }
         }
     }
 
-    public UserInfo getUserInfo(String username){
+    public UserInfo getUserInfo(String username) {
         Iterator<UserInfo> iterator = userInfoList.iterator();
-        while (iterator.hasNext()){
+        while (iterator.hasNext()) {
             UserInfo next = iterator.next();
-            if(next.getUsername().equals(username)){
+            if (next.getUsername().equals(username)) {
                 return next;
             }
         }

+ 2 - 2
dbsyncer-storage/src/main/java/org/dbsyncer/storage/constant/ConfigConstant.java

@@ -20,13 +20,13 @@ public class ConfigConstant {
     /**
      * 配置类型
      */
+    public static final String SYSTEM = "system";
+    public static final String USER = "user";
     public static final String CONNECTOR = "connector";
     public static final String MAPPING = "mapping";
     public static final String TABLE_GROUP = "tableGroup";
     public static final String META = "meta";
-    public static final String CONFIG = "config";
     public static final String PROJECT_GROUP = "projectGroup";
-    public static final String USER_CONFIG = "userConfig";
 
     /**
      * 数据

+ 1 - 1
dbsyncer-storage/src/main/resources/dbsyncer_config.sql

@@ -1,7 +1,7 @@
 CREATE TABLE `dbsyncer_config`  (
   `ID` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '唯一ID',
   `NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '名称',
-  `TYPE` varchar(24) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'connector、mapping、tableGroup、meta、config',
+  `TYPE` varchar(24) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'system、user、connector、mapping、tableGroup、meta、projectGroup',
   `CREATE_TIME` bigint(0) NOT NULL COMMENT '创建时间',
   `UPDATE_TIME` bigint(0) NOT NULL COMMENT '修改时间',
   `JSON` mediumtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '配置信息',

+ 4 - 4
dbsyncer-web/src/main/java/org/dbsyncer/web/config/WebAppConfig.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.web.config;
 
-import org.dbsyncer.biz.UserService;
+import org.dbsyncer.biz.UserConfigService;
 import org.dbsyncer.biz.vo.RestResult;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.common.util.SHA1Util;
@@ -60,7 +60,7 @@ public class WebAppConfig extends WebSecurityConfigurerAdapter implements Authen
     private static final int MAXIMUM_SESSIONS = 1;
 
     @Autowired
-    private UserService userService;
+    private UserConfigService userConfigService;
 
 
     /**
@@ -141,8 +141,8 @@ public class WebAppConfig extends WebSecurityConfigurerAdapter implements Authen
         String password = (String) authentication.getCredentials();
         password = SHA1Util.b64_sha1(password);
 
-        UserInfo userInfo = userService.getUserInfo(username);
-        if (null != userInfo && !StringUtil.equals(userInfo.getPassword(), password)) {
+        UserInfo userInfo = userConfigService.getUserInfo(username);
+        if (null == userInfo || !StringUtil.equals(userInfo.getPassword(), password)) {
             throw new BadCredentialsException("对不起,您输入的帐号或密码错误");
         }
         List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList(userInfo.getRoleCode());

+ 5 - 5
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/config/ConfigController.java

@@ -2,7 +2,7 @@ package org.dbsyncer.web.controller.config;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.dbsyncer.biz.ConfigService;
+import org.dbsyncer.biz.SystemConfigService;
 import org.dbsyncer.biz.vo.RestResult;
 import org.dbsyncer.cache.CacheService;
 import org.dbsyncer.common.config.AppConfig;
@@ -34,7 +34,7 @@ public class ConfigController {
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
     @Autowired
-    private ConfigService configService;
+    private SystemConfigService systemConfigService;
 
     @Autowired
     private CacheService cacheService;
@@ -50,7 +50,7 @@ public class ConfigController {
 
     @RequestMapping("")
     public String index(ModelMap model) {
-        model.put("config", configService.getConfigModelAll());
+        model.put("config", systemConfigService.getConfigModelAll());
         model.put("fileSize", JsonUtil.objToJson(cacheService.getAll()).getBytes(Charset.defaultCharset()).length);
         return "config/config";
     }
@@ -76,12 +76,12 @@ public class ConfigController {
                         continue;
                     }
                     String filename = files[i].getOriginalFilename();
-                    configService.checkFileSuffix(filename);
+                    systemConfigService.checkFileSuffix(filename);
                     String tmpdir = System.getProperty("java.io.tmpdir");
                     File dest = new File(tmpdir + filename);
                     FileUtils.deleteQuietly(dest);
                     FileUtils.copyInputStreamToFile(files[i].getInputStream(), dest);
-                    configService.refreshConfig(dest);
+                    systemConfigService.refreshConfig(dest);
                     String msg = String.format("导入配置文件%s", filename);
                     logger.info(msg);
                     logService.log(LogType.CacheLog.IMPORT, msg);

+ 2 - 3
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/index/ProjectGroupController.java

@@ -94,14 +94,13 @@ public class ProjectGroupController extends BaseController {
     /**
      * 参数: id(必)
      *
-     * @param request
      * @return org.dbsyncer.biz.vo.RestResult
      * @author xinpeng.Fu
      * @date 2022/6/15 16:10
      **/
     @PostMapping("/remove")
     @ResponseBody
-    public RestResult remove(HttpServletRequest request, @RequestParam(value = "id") String id) {
+    public RestResult remove(@RequestParam(value = "id") String id) {
         try {
             return RestResult.restSuccess(projectGroupService.remove(id));
         } catch (Exception e) {
@@ -112,7 +111,7 @@ public class ProjectGroupController extends BaseController {
 
     @GetMapping("/getAll")
     @ResponseBody
-    public RestResult getAll(HttpServletRequest request) {
+    public RestResult getAll() {
         try {
             return RestResult.restSuccess(projectGroupService.getProjectGroupAll());
         } catch (Exception e) {

+ 3 - 3
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.web.controller.monitor;
 
-import org.dbsyncer.biz.ConfigService;
+import org.dbsyncer.biz.SystemConfigService;
 import org.dbsyncer.biz.ConnectorService;
 import org.dbsyncer.biz.MonitorService;
 import org.dbsyncer.biz.vo.AppReportMetricVo;
@@ -54,7 +54,7 @@ public class MonitorController extends BaseController {
     private ConnectorService connectorService;
 
     @Autowired
-    private ConfigService configService;
+    private SystemConfigService systemConfigService;
 
     @Autowired
     private MetricsEndpoint metricsEndpoint;
@@ -160,7 +160,7 @@ public class MonitorController extends BaseController {
     @GetMapping("/getRefreshInterval")
     public RestResult getRefreshInterval() {
         try {
-            SystemConfigVo config = configService.getConfig();
+            SystemConfigVo config = systemConfigService.getSystemConfigVo();
             return RestResult.restSuccess(config.getRefreshInterval());
         } catch (Exception e) {
             logger.error(e.getLocalizedMessage(), e.getClass());

+ 34 - 34
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/system/SystemController.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.web.controller.system;
 
-import org.dbsyncer.biz.ConfigService;
+import org.dbsyncer.biz.SystemConfigService;
 import org.dbsyncer.biz.vo.RestResult;
 import org.dbsyncer.web.controller.BaseController;
 import org.slf4j.Logger;
@@ -20,38 +20,38 @@ import java.util.Map;
 @RequestMapping(value = "/system")
 public class SystemController extends BaseController {
 
-	private final Logger logger = LoggerFactory.getLogger(getClass());
-
-	@Autowired
-	private ConfigService configService;
-
-	@RequestMapping("")
-	public String index(ModelMap model) {
-		model.put("config", configService.getConfig());
-		return "system/system";
-	}
-
-	@PostMapping("/edit")
-	@ResponseBody
-	public RestResult edit(HttpServletRequest request) {
-		try {
-			Map<String, String> params = getParams(request);
-			return RestResult.restSuccess(configService.edit(params));
-		} catch (Exception e) {
-			logger.error(e.getLocalizedMessage(), e.getClass());
-			return RestResult.restFail(e.getMessage());
-		}
-	}
-
-	@GetMapping("/queryConfig")
-	@ResponseBody
-	public RestResult queryConfig(HttpServletRequest request) {
-		try {
-			return RestResult.restSuccess(configService.getConfig());
-		} catch (Exception e) {
-			logger.error(e.getLocalizedMessage(), e.getClass());
-			return RestResult.restFail(e.getMessage());
-		}
-	}
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private SystemConfigService systemConfigService;
+
+    @RequestMapping("")
+    public String index(ModelMap model) {
+        model.put("config", systemConfigService.getSystemConfigVo());
+        return "system/system";
+    }
+
+    @PostMapping("/edit")
+    @ResponseBody
+    public RestResult edit(HttpServletRequest request) {
+        try {
+            Map<String, String> params = getParams(request);
+            return RestResult.restSuccess(systemConfigService.edit(params));
+        } catch (Exception e) {
+            logger.error(e.getLocalizedMessage(), e.getClass());
+            return RestResult.restFail(e.getMessage());
+        }
+    }
+
+    @GetMapping("/queryConfig")
+    @ResponseBody
+    public RestResult queryConfig() {
+        try {
+            return RestResult.restSuccess(systemConfigService.getSystemConfigVo());
+        } catch (Exception e) {
+            logger.error(e.getLocalizedMessage(), e.getClass());
+            return RestResult.restFail(e.getMessage());
+        }
+    }
 
 }

+ 10 - 10
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/user/UserController.java

@@ -1,6 +1,6 @@
 package org.dbsyncer.web.controller.user;
 
-import org.dbsyncer.biz.UserService;
+import org.dbsyncer.biz.UserConfigService;
 import org.dbsyncer.biz.vo.RestResult;
 import org.dbsyncer.biz.vo.UserInfoVo;
 import org.dbsyncer.web.controller.BaseController;
@@ -34,12 +34,12 @@ public class UserController extends BaseController {
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
     @Autowired
-    private UserService userService;
+    private UserConfigService userConfigService;
 
     @RequestMapping("")
     public String index(ModelMap model) {
         model.put("currentUser", getUserInfoVo());
-        model.put("users", userService.getUserInfoAll(getUserName()));
+        model.put("users", userConfigService.getUserInfoAll(getUserName()));
         return "user/user";
     }
 
@@ -51,8 +51,8 @@ public class UserController extends BaseController {
     @GetMapping("/page/edit")
     public String pageEdit(ModelMap model, String username) {
         String currentUserName = getUserName();
-        model.put(UserService.CURRENT_USER_NAME, currentUserName);
-        model.put("currentUser", userService.getUserInfoVo(currentUserName, username));
+        model.put(UserConfigService.CURRENT_USER_NAME, currentUserName);
+        model.put("currentUser", userConfigService.getUserInfoVo(currentUserName, username));
         return "user/edit";
     }
 
@@ -67,7 +67,7 @@ public class UserController extends BaseController {
     public RestResult add(HttpServletRequest request) {
         try {
             Map<String, String> params = getParamsWithUserName(request);
-            return RestResult.restSuccess(userService.add(params));
+            return RestResult.restSuccess(userConfigService.add(params));
         } catch (Exception e) {
             logger.error(e.getLocalizedMessage(), e);
             return RestResult.restFail(e.getMessage());
@@ -79,7 +79,7 @@ public class UserController extends BaseController {
     public RestResult edit(HttpServletRequest request) {
         try {
             Map<String, String> params = getParamsWithUserName(request);
-            return RestResult.restSuccess(userService.edit(params));
+            return RestResult.restSuccess(userConfigService.edit(params));
         } catch (Exception e) {
             logger.error(e.getLocalizedMessage(), e);
             return RestResult.restFail(e.getMessage());
@@ -91,7 +91,7 @@ public class UserController extends BaseController {
     public RestResult remove(HttpServletRequest request) {
         try {
             Map<String, String> params = getParamsWithUserName(request);
-            return RestResult.restSuccess(userService.remove(params));
+            return RestResult.restSuccess(userConfigService.remove(params));
         } catch (Exception e) {
             logger.error(e.getLocalizedMessage(), e);
             return RestResult.restFail(e.getMessage());
@@ -100,7 +100,7 @@ public class UserController extends BaseController {
 
     private Map<String, String> getParamsWithUserName(HttpServletRequest request) {
         Map<String, String> params = getParams(request);
-        params.put(UserService.CURRENT_USER_NAME, getUserName());
+        params.put(UserConfigService.CURRENT_USER_NAME, getUserName());
         return params;
     }
 
@@ -111,7 +111,7 @@ public class UserController extends BaseController {
      */
     private UserInfoVo getUserInfoVo() {
         String currentUserName = getUserName();
-        return userService.getUserInfoVo(currentUserName, currentUserName);
+        return userConfigService.getUserInfoVo(currentUserName, currentUserName);
     }
 
     private String getUserName() {

+ 6 - 4
dbsyncer-web/src/main/resources/public/monitor/monitor.html

@@ -121,23 +121,25 @@
                                 <thead>
                                 <tr>
                                     <th style="width:3%;"></th>
+                                    <th style="width:5%;">目标表</th>
                                     <th style="width:5%;">事件</th>
                                     <th style="width:5%;">结果</th>
-                                    <th style="width:60%;">异常</th>
+                                    <th style="width:55%;">异常</th>
                                     <th style="width:17%;">时间</th>
                                     <th style="width:10%;">详情</th>
                                 </tr>
                                 </thead>
                                 <tbody id="dataList">
                                 <tr th:each="d,s : ${pagingData?.data}">
-                                    <td th:text="${s.index}+1"></td>
-                                    <td th:text="${d?.event}"></td>
+                                    <td th:text="${s.index}+1" />
+                                    <td th:text="${d?.targetTableName}" />
+                                    <td th:text="${d?.event}" />
                                     <td>
                                         <span th:if="${d?.success == 1}" class="label label-success">成功</span>
                                         <span th:if="${d?.success == 0}" class="label label-warning">失败</span>
                                     </td>
                                     <td style="max-width:100px;" class="dbsyncer_over_hidden"><a href="javascript:;" class="dbsyncer_pointer queryError">[[${d?.error}]]</a></td>
-                                    <td th:text="${#dates.format(d?.createTime, 'yyyy-MM-dd HH:mm:ss')}"></td>
+                                    <td th:text="${#dates.format(d?.createTime, 'yyyy-MM-dd HH:mm:ss')}" />
                                     <td><a th:json="${d?.json}" href="javascript:;" class="label label-info queryData">查看数据</a><div class="hidden" th:text="${d?.json}"></div></td>
                                 </tr>
                                 </tbody>

+ 2 - 7
dbsyncer-web/src/main/resources/public/system/system.html

@@ -13,12 +13,7 @@
         <!-- 操作 -->
         <div class="row">
             <!-- 系统参数配置 -->
-            <div class="col-md-3">
-                <!-- 隐藏表单值 -->
-                <div class="form-group hidden">
-                    <input name="id" type="text" th:value="${config?.id}"/>
-                </div>
-            </div>
+            <div class="col-md-3"></div>
             <div class="col-md-6">
                 <div class="form-group">
                     <label class="col-sm-4 control-label">刷新监控频率(秒) <strong class="driverVerifcateRequired">*</strong></label>
@@ -40,5 +35,5 @@
     </form>
 </div>
 
-<script th:src="@{/js/ststem/index.js}"></script>
+<script th:src="@{/js/system/index.js}"></script>
 </html>

+ 2 - 2
dbsyncer-web/src/main/resources/public/user/edit.html

@@ -107,8 +107,6 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
       const newPwd = data.newPwd;
       doPoster("/user/edit", data, function (data) {
         if (data.success == true) {
-          bootGrowl("修改用户成功!", "success");
-          backUserIndexPage();
           // 刷新个人信息
           if (currentUserName == username) {
             // 修改个人密码后需要重新登录
@@ -120,6 +118,8 @@ xmlns:th="http://www.thymeleaf.org" lang="zh-CN">
             }
             refreshLoginUser();
           }
+          bootGrowl("修改用户成功!", "success");
+          backUserIndexPage();
         } else {
           bootGrowl(data.resultValue, "danger");
         }

+ 1 - 0
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -150,6 +150,7 @@ function showData($dataList, arr, append){
         for(i = 0; i < size; i++) {
             html += '<tr>';
             html += '<td>' + (start + i + 1) + '</td>';
+            html += '<td>' + arr[i].targetTableName + '</td>';
             html += '<td>' + arr[i].event + '</td>';
             html += '<td>' + (arr[i].success ? '<span class="label label-success">成功</span>' : '<span class="label label-warning">失败</span>') + '</td>';
             html += '<td style="max-width:100px;" class="dbsyncer_over_hidden"><a href="javascript:;" class="dbsyncer_pointer queryError">' + arr[i].error + '</a></td>';

+ 0 - 0
dbsyncer-web/src/main/resources/static/js/ststem/index.js → dbsyncer-web/src/main/resources/static/js/system/index.js