From 92786e22bbc0c6d99fac274bfa67d09c6772597a Mon Sep 17 00:00:00 2001
From: lixuliang <lixuliang_hd@126.com>
Date: 星期二, 10 九月 2024 11:10:40 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/se-cloud

---
 docker-compose/system/bootstrap.yml                                                   |    3 
 docker-compose/mysql/initdb/wgcloud-MySQL.sql                                         |  307 ++++++++++
 se-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml               |   43 +
 se-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml               |    5 
 se-gateway/src/main/resources/bootstrap.yml                                           |    5 
 docker-compose/mysql/initdb/se_cloud_20240629.sql                                     |    5 
 se-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java |   64 +-
 docker-compose/wgcloud/application.yml                                                |   84 +++
 docker-compose/file/bootstrap.yml                                                     |    2 
 se-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java            |   45 
 se-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java       |    2 
 se-common/se-common-core/src/main/java/com/se/common/core/utils/AesUtils.java         |    2 
 se-modules/se-file/src/main/resources/bootstrap.yml                                   |    2 
 se-modules/se-system/src/main/java/com/se/system/service/impl/SyncUserService.java    |   79 ++
 se-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java    |  136 ++--
 se-auth/src/main/java/com/se/auth/controller/TokenController.java                     |   30 
 se-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java |  256 +++-----
 docker-compose/docker-compose.yml                                                     |   36 +
 docker-compose/auth/bootstrap.yml                                                     |    3 
 se-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java                  |   12 
 docker-compose/mysql/initdb/se_config_20231204.sql                                    |    4 
 se-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java            |    8 
 se-auth/src/main/resources/bootstrap.yml                                              |    5 
 se-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java         |   49 +
 se-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java    |   26 
 se-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java |  277 ++++-----
 se-modules/se-system/src/main/resources/bootstrap.yml                                 |    5 
 docker-compose/gateway/bootstrap.yml                                                  |    2 
 /dev/null                                                                             |   35 -
 se-modules/se-system/pom.xml                                                          |    7 
 se-auth/se-auth.iml                                                                   |    1 
 docker-compose/nginx/conf/nginx.conf                                                  |    9 
 se-modules/se-system/src/main/java/com/se/system/service/impl/IsimUserService.java    |   66 ++
 se-modules/se-system/src/main/resources/logback.xml                                   |    2 
 docker-compose/nacos/conf/application.properties                                      |   12 
 se-modules/se-job/src/main/resources/bootstrap.yml                                    |    2 
 se-auth/pom.xml                                                                       |    8 
 37 files changed, 1,109 insertions(+), 530 deletions(-)

diff --git a/docker-compose/auth/bootstrap.yml b/docker-compose/auth/bootstrap.yml
index 0ca30e2..c56d6ac 100644
--- a/docker-compose/auth/bootstrap.yml
+++ b/docker-compose/auth/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: se-nacos:8848
@@ -23,3 +25,4 @@
         # 鍏变韩閰嶇疆
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+enableEncrypt: false
\ No newline at end of file
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
index 434bca5..041a6f9 100644
--- a/docker-compose/docker-compose.yml
+++ b/docker-compose/docker-compose.yml
@@ -35,15 +35,16 @@
       - ./nacos/logs/:/home/nacos/logs
       - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
     ports:
+#      - 7848:7848
       - 8848:8848
-#      - 9848:9848
+      - 9848:9848
 #      - 9849:9849
     depends_on:
       - se-mysql
     networks:
       - network-se
     restart: always
-  # redis,Redis_s!E_6.2.6
+  # redis
   se-redis:
     image: redis:latest
     ports:
@@ -52,6 +53,7 @@
       - ./redis/data/redis.conf:/data/redis.conf
       - ./redis/data:/data
     command: redis-server /data/redis.conf
+#    command: redis-server --requirepass Redis_s!E_6.2.6
     networks:
       - network-se
     restart: always
@@ -61,16 +63,17 @@
 #    ports:
 #      - 9204:8080
     volumes:
+      - ./gateway/logs:/logs
       - ./gateway:/data
     environment:
       TZ: Asia/Shanghai
     entrypoint: java -jar /data/se-gateway.jar --spring.config.location=file:/data/
     depends_on:
       - se-redis
+      - se-mysql
       - se-nacos
-    links:
-      - se-redis
-      - se-nacos
+#    links:
+#      - se-redis
     networks:
       - network-se
     restart: always
@@ -80,12 +83,14 @@
 #    ports:
 #      - 9200:9200
     volumes:
+      - ./auth/logs:/logs
       - ./auth:/data
     environment:
       TZ: Asia/Shanghai
     entrypoint: java -jar /data/se-auth.jar --spring.config.location=file:/data/
     depends_on:
       - se-redis
+      - se-mysql
       - se-nacos
     networks:
       - network-se
@@ -96,14 +101,15 @@
 #    ports:
 #      - 9201:9201
     volumes:
+      - ./system/logs:/logs
       - ./system:/data
     environment:
       TZ: Asia/Shanghai
     entrypoint: java -jar /data/se-modules-system.jar --spring.config.location=file:/data/
     depends_on:
       - se-redis
-      - se-nacos
       - se-mysql
+      - se-nacos
     networks:
       - network-se
     restart: always
@@ -113,15 +119,33 @@
 #    ports:
 #      - 9300:9300
     volumes:
+      - ./file/logs:/logs
       - ./file:/data
     environment:
       TZ: Asia/Shanghai
     entrypoint: java -jar /data/se-modules-file.jar --spring.config.location=file:/data/
     depends_on:
+      - se-mysql
       - se-nacos
     networks:
       - network-se
     restart: always
+  # se-wgcloud
+  se-wgcloud:
+    image: openjdk:8-jre
+    ports:
+      - 9999:9999
+    volumes:
+      - ./wgcloud/logs:/log
+      - ./wgcloud:/data
+    environment:
+      TZ: Asia/Shanghai
+    entrypoint: java -jar /data/wgcloud-server-release.jar --spring.config.location=file:/data/
+    depends_on:
+      - se-mysql
+    networks:
+      - network-se
+    restart: always
   # nginx
   se-nginx:
     image: nginx:latest
diff --git a/docker-compose/file/bootstrap.yml b/docker-compose/file/bootstrap.yml
index 10e6f14..e03b95e 100644
--- a/docker-compose/file/bootstrap.yml
+++ b/docker-compose/file/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: se-nacos:8848
diff --git a/docker-compose/gateway/bootstrap.yml b/docker-compose/gateway/bootstrap.yml
index 5672f35..6dca5c9 100644
--- a/docker-compose/gateway/bootstrap.yml
+++ b/docker-compose/gateway/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: se-nacos:8848
diff --git a/docker-compose/mysql/initdb/se_cloud_20240629.sql b/docker-compose/mysql/initdb/se_cloud_20240629.sql
index edff4ac..6489582 100644
--- a/docker-compose/mysql/initdb/se_cloud_20240629.sql
+++ b/docker-compose/mysql/initdb/se_cloud_20240629.sql
@@ -270,6 +270,10 @@
 -- insert into sys_menu values('1059', '棰勮浠g爜', '115', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview',           '#', 'admin', sysdate(), '', null, '');
 -- insert into sys_menu values('1060', '鐢熸垚浠g爜', '115', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code',              '#', 'admin', sysdate(), '', null, '');
 
+alter table sys_menu add column mark varchar(20) comment '鑿滃崟鏍囪瘑';
+update sys_menu set mark = 'sys' where menu_id < 1070;
+-- select * from sys_menu;
+
 
 -- ----------------------------
 -- 6銆佺敤鎴峰拰瑙掕壊鍏宠仈琛�  鐢ㄦ埛N-1瑙掕壊
@@ -385,6 +389,7 @@
 -- insert into sys_role_menu values ('2', '1058');
 -- insert into sys_role_menu values ('2', '1059');
 -- insert into sys_role_menu values ('2', '1060');
+-- select * from sys_role_menu;
 
 -- ----------------------------
 -- 8銆佽鑹插拰閮ㄩ棬鍏宠仈琛�  瑙掕壊1-N閮ㄩ棬
diff --git a/docker-compose/mysql/initdb/se_config_20231204.sql b/docker-compose/mysql/initdb/se_config_20231204.sql
index 79ed49f..47acff3 100644
--- a/docker-compose/mysql/initdb/se_config_20231204.sql
+++ b/docker-compose/mysql/initdb/se_config_20231204.sql
@@ -214,6 +214,8 @@
     UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
 );
 
-INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
+-- nAcos_!9#_admIn
+INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$LnJDlPeP.XbQnr6iabc65OI6kM4LLS/BRLwPHEtRSERErvnmlKkBu', TRUE);
+-- INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
 
 INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
diff --git a/docker-compose/mysql/initdb/wgcloud-MySQL.sql b/docker-compose/mysql/initdb/wgcloud-MySQL.sql
new file mode 100644
index 0000000..24e2f97
--- /dev/null
+++ b/docker-compose/mysql/initdb/wgcloud-MySQL.sql
@@ -0,0 +1,307 @@
+-- DROP DATABASE IF EXISTS `wgcloud`;
+
+CREATE DATABASE IF NOT EXISTS  `wgcloud` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+USE `wgcloud`;
+
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : 127.0.0.1
+Source Server Version : 50717
+Source Host           : localhost:3306
+Source Database       : wgcloud
+
+Target Server Type    : MYSQL
+Target Server Version : 50717
+File Encoding         : 65001
+
+Date: 2021-11-26 20:01:46
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for app_info
+-- ----------------------------
+DROP TABLE IF EXISTS `APP_INFO`;
+CREATE TABLE `APP_INFO` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `APP_PID` char(200) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  `APP_NAME` varchar(50) DEFAULT NULL,
+  `CPU_PER` double(8,2) DEFAULT NULL,
+  `MEM_PER` double(10,2) DEFAULT NULL,
+  `APP_TYPE` char(1) DEFAULT NULL,
+  `STATE` char(1) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for app_state
+-- ----------------------------
+DROP TABLE IF EXISTS `APP_STATE`;
+CREATE TABLE `APP_STATE` (
+  `ID` char(32) NOT NULL,
+  `APP_INFO_ID` char(32) DEFAULT NULL,
+  `CPU_PER` double(8,2) DEFAULT NULL,
+  `MEM_PER` double(10,2) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `APP_STAT_INDEX` (`APP_INFO_ID`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for cpu_state
+-- ----------------------------
+DROP TABLE IF EXISTS `CPU_STATE`;
+CREATE TABLE `CPU_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `USER` char(30) DEFAULT NULL,
+  `SYS` double(8,2) DEFAULT NULL,
+  `IDLE` double(8,2) DEFAULT NULL,
+  `IOWAIT` double(8,2) DEFAULT NULL,
+  `IRQ` char(30) DEFAULT NULL,
+  `SOFT` char(30) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `CPU_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for db_info
+-- ----------------------------
+DROP TABLE IF EXISTS `DB_INFO`;
+CREATE TABLE `DB_INFO` (
+  `ID` char(32) NOT NULL,
+  `DBTYPE` char(32) DEFAULT NULL,
+  `USER` varchar(50) DEFAULT NULL,
+  `PASSWD` varchar(50) DEFAULT NULL,
+  `IP` char(20) DEFAULT NULL,
+  `PORT` char(10) DEFAULT NULL,
+--   `CREATE_TIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
+  `CREATE_TIME` timestamp DEFAULT CURRENT_TIMESTAMP,
+  `DBNAME` char(50) DEFAULT NULL,
+  `DB_STATE` char(1) DEFAULT NULL,
+  `ALIAS_NAME` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for db_table
+-- ----------------------------
+DROP TABLE IF EXISTS `DB_TABLE`;
+CREATE TABLE `DB_TABLE` (
+  `ID` char(32) NOT NULL,
+  `TABLE_NAME` varchar(50) DEFAULT NULL,
+  `WHERE_VAL` varchar(200) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
+  `REMARK` varchar(50) DEFAULT NULL,
+  `TABLE_COUNT` bigint(20) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `DBINFO_ID` char(32) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for db_table_count
+-- ----------------------------
+DROP TABLE IF EXISTS `DB_TABLE_COUNT`;
+CREATE TABLE `DB_TABLE_COUNT` (
+  `ID` char(32) NOT NULL,
+  `DB_TABLE_ID` char(32) DEFAULT NULL,
+  `TABLE_COUNT` bigint(20) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for desk_state
+-- ----------------------------
+DROP TABLE IF EXISTS `DESK_STATE`;
+CREATE TABLE `DESK_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `FILE_STSTEM` char(50) DEFAULT NULL,
+  `SIZE` char(30) DEFAULT NULL,
+  `USED` char(30) DEFAULT NULL,
+  `AVAIL` char(30) DEFAULT NULL,
+  `USE_PER` char(10) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `DESK_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for heath_monitor
+-- ----------------------------
+DROP TABLE IF EXISTS `HEATH_MONITOR`;
+CREATE TABLE `HEATH_MONITOR` (
+  `ID` char(32) NOT NULL,
+  `APP_NAME` char(50) DEFAULT NULL,
+  `HEATH_URL` varchar(255) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
+  `HEATH_STATUS` char(10) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for host_info
+-- ----------------------------
+DROP TABLE IF EXISTS `HOST_INFO`;
+CREATE TABLE `HOST_INFO` (
+  `ID` char(32) NOT NULL,
+  `IP` char(30) DEFAULT NULL,
+  `PORT` char(20) DEFAULT NULL,
+  `ROOT` char(50) DEFAULT NULL,
+  `PASSWD` char(50) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
+  `REMARK` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for intrusion_info
+-- ----------------------------
+DROP TABLE IF EXISTS `INTRUSION_INFO`;
+CREATE TABLE `INTRUSION_INFO` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `LSMOD` text,
+  `PASSWD_INFO` varchar(100) DEFAULT NULL,
+  `CRONTAB` text,
+  `PROMISC` varchar(100) DEFAULT NULL,
+  `RPCINFO` text,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for log_info
+-- ----------------------------
+DROP TABLE IF EXISTS `LOG_INFO`;
+CREATE TABLE `LOG_INFO` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(50) DEFAULT NULL,
+  `INFO_CONTENT` text,
+  `STATE` char(1) DEFAULT NULL,
+  `CREATE_TIME` timestamp DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for mail_set
+-- ----------------------------
+DROP TABLE IF EXISTS `MAIL_SET`;
+CREATE TABLE `MAIL_SET` (
+  `ID` char(32) COLLATE utf8_unicode_ci NOT NULL,
+  `SEND_MAIL` char(60) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `FROM_MAIL_NAME` char(60) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `FROM_PWD` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `SMTP_HOST` char(50) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `SMTP_PORT` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `SMTP_SSL` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `TO_MAIL` char(200) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `CPU_PER` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  `MEM_PER` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  `HEATH_PER` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+-- ----------------------------
+-- Table structure for mem_state
+-- ----------------------------
+DROP TABLE IF EXISTS `MEM_STATE`;
+CREATE TABLE `MEM_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `TOTAL` char(30) DEFAULT NULL,
+  `USED` char(30) DEFAULT NULL,
+  `FREE` char(30) DEFAULT NULL,
+  `USE_PER` double(8,2) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `MEM_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for netio_state
+-- ----------------------------
+DROP TABLE IF EXISTS `NETIO_STATE`;
+CREATE TABLE `NETIO_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `RXPCK` char(30) DEFAULT NULL,
+  `TXPCK` char(30) DEFAULT NULL,
+  `RXBYT` char(30) DEFAULT NULL,
+  `TXBYT` char(30) DEFAULT NULL,
+  `RXCMP` char(30) DEFAULT NULL,
+  `TXCMP` char(30) DEFAULT NULL,
+  `RXMCST` char(30) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `NETIO_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for system_info
+-- ----------------------------
+DROP TABLE IF EXISTS `SYSTEM_INFO`;
+CREATE TABLE `SYSTEM_INFO` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `VERSION` char(100) DEFAULT NULL,
+  `VERSION_DETAIL` char(200) DEFAULT NULL,
+  `CPU_PER` double(8,2) DEFAULT NULL,
+  `MEM_PER` double(8,2) DEFAULT NULL,
+  `CPU_CORE_NUM` char(10) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  `CPU_XH` char(150) DEFAULT NULL,
+  `STATE` char(1) DEFAULT NULL,
+  `REMARK` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for sys_load_state
+-- ----------------------------
+DROP TABLE IF EXISTS `SYS_LOAD_STATE`;
+CREATE TABLE `SYS_LOAD_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `ONE_LOAD` double(8,2) DEFAULT NULL,
+  `FIVE_LOAD` double(8,2) DEFAULT NULL,
+  `FIFTEEN_LOAD` double(8,2) DEFAULT NULL,
+  `USERS` char(10) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `LOAD_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for tcp_state
+-- ----------------------------
+DROP TABLE IF EXISTS `TCP_STATE`;
+CREATE TABLE `TCP_STATE` (
+  `ID` char(32) NOT NULL,
+  `HOST_NAME` char(30) DEFAULT NULL,
+  `ACTIVE` char(30) DEFAULT NULL,
+  `PASSIVE` char(30) DEFAULT NULL,
+  `RETRANS` char(30) DEFAULT NULL,
+  `DATE_STR` char(30) DEFAULT NULL,
+  `CREATE_TIME` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ID`),
+  KEY `TCP_ACC_HOST_INDEX` (`HOST_NAME`,`CREATE_TIME`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/docker-compose/nacos/conf/application.properties b/docker-compose/nacos/conf/application.properties
index f6169c8..86a2238 100644
--- a/docker-compose/nacos/conf/application.properties
+++ b/docker-compose/nacos/conf/application.properties
@@ -149,25 +149,25 @@
 nacos.core.auth.system.type=nacos
 
 ### If turn on auth system:
-nacos.core.auth.enabled=false
+nacos.core.auth.enabled=true
 
 ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
 nacos.core.auth.caching.enabled=true
 
 ### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
-nacos.core.auth.enable.userAgentAuthWhite=true
+nacos.core.auth.enable.userAgentAuthWhite=false
 
 ### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
 ### The two properties is the white list for auth and used by identity the request from other server.
-nacos.core.auth.server.identity.key=
-nacos.core.auth.server.identity.value=
+nacos.core.auth.server.identity.key=admin
+nacos.core.auth.server.identity.value=nAcos_!9#_admIn
 
 ### worked when nacos.core.auth.system.type=nacos
 ### The token expiration in seconds:
 nacos.core.auth.plugin.nacos.token.cache.enable=false
 nacos.core.auth.plugin.nacos.token.expire.seconds=18000
-### The default token (Base64 String):
-nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
+### The default token (Base64 String): https://base64.us/
+nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXljVXN0b21TZWNyZXRLZTkwMTIzNDU2Nzg=
 
 ### worked when nacos.core.auth.system.type=ldap锛寋0} is Placeholder,replace login username
 #nacos.core.auth.ldap.url=ldap://localhost:389
diff --git a/docker-compose/nginx/conf/nginx.conf b/docker-compose/nginx/conf/nginx.conf
index 47c0c36..7582db2 100644
--- a/docker-compose/nginx/conf/nginx.conf
+++ b/docker-compose/nginx/conf/nginx.conf
@@ -50,6 +50,15 @@
             proxy_pass http://se-gateway:8080/;
         }
 
+        location /wgcloud {
+            proxy_set_header Host $http_host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header REMOTE-HOST $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            
+            proxy_pass http://se-wgcloud:9999/wgcloud;
+        }
+
         # actuator
         if ($request_uri ~ "/actuator") {
             return 403;
diff --git a/docker-compose/system/bootstrap.yml b/docker-compose/system/bootstrap.yml
index 68120e5..2a1984f 100644
--- a/docker-compose/system/bootstrap.yml
+++ b/docker-compose/system/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: se-nacos:8848
@@ -23,3 +25,4 @@
         # 鍏变韩閰嶇疆
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+enableEncrypt: false
\ No newline at end of file
diff --git a/docker-compose/wgcloud/application.yml b/docker-compose/wgcloud/application.yml
new file mode 100644
index 0000000..e0b5bb7
--- /dev/null
+++ b/docker-compose/wgcloud/application.yml
@@ -0,0 +1,84 @@
+server:
+  port: 9999
+  servlet:
+    session:
+      timeout: 120m
+    context-path: /wgcloud
+#鏃ュ織鏂囦欢杈撳嚭璺緞
+logging:
+  file:
+    path: ./log
+# 鏁版嵁搴� 鐩稿叧璁剧疆
+spring:
+  application:
+    name: wgcloud-server
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://se-mysql:3306/wgcloud?characterEncoding=utf-8&characterSetResults=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true
+    username: root
+    password: My_Sql_s!E_v5.7
+    # hikari杩炴帴姹犵殑鍙傛暟 鐩稿叧璁剧疆
+    hikari:
+      # 鐢熸晥瓒呮椂
+      validationTimeout: 3000
+      # 瀹氫箟鑾峰彇杩炴帴鐨勮秴鏃舵椂闂淬�傛渶灏�250ms,榛樿30s
+      connectionTimeout: 60000
+      # 瀹氫箟杩炴帴绌洪棽鏃堕棿銆傛渶灏�10s,榛樿10m
+      idleTimeout: 60000
+      # 瀹氫箟鏈�灏忕殑绌洪棽杩炴帴鏁般�傛帹鑽愪笉璁剧疆銆傛垨涓庢渶澶ц繛鎺ユ暟涓�鑷达紱淇濇寔鍥哄畾鐨勮繛鎺ユ暟鐩�
+      minimumIdle: 10
+      # 瀹氫箟鏈�澶х殑杩炴帴鏁般�傞粯璁�10
+      maximumPoolSize: 10
+      # 瀹氫箟杩炴帴鐨勬渶澶х敓鍛藉懆鏈熴�傛帹鑽愯缃灞炴�с�傛渶灏�30s锛岄粯璁�30m
+      maxLifeTime: 60000
+      # 浠庤繛鎺ユ睜鑾峰彇鍒拌繛鎺ュ悗锛岃繘琛屾鏌ョ殑鏌ヨ璇彞銆傛帹鑽愯缃灞炴�с�傞粯璁ゅ�间负none
+      connectionTestQuery: select 1
+  mvc:
+    static-path-pattern: /static/**
+  thymeleaf:
+    cache: false
+
+#Mybatis閰嶇疆
+mybatis:
+  config-location: classpath:mybatis/mybatis-config.xml
+  mapper-locations: classpath:mybatis/mapper/*.xml
+
+#鑷畾涔夐厤缃弬鏁�
+base:
+  #鐧婚檰璐﹀彿admin鐨勫瘑鐮�
+  admindPwd: 111111
+  #閫氫俊token锛宎gent绔拰姝や繚鎸佷竴鑷�
+  wgToken: wgcloud
+  #鏄惁寮�鍚叕浼楃湅鏉匡紝yes寮�鍚紝no鍏抽棴锛屽叕浼楃湅鏉块〉闈㈡棤闇�鐧婚檰
+  dashView: yes
+  # 鍒濆鍖栨搷浣�
+  initTaskTimes: 10000
+  # 妫�娴嬩富鏈烘槸鍚﹀凡缁忎笅绾�
+  hostDownCheckTimes: 10000
+  #鏈嶅姟鎺ュ彛鐩戞帶闂撮殧锛屽崟浣嶆绉�
+  heathTimes: 10000
+  #鏁版嵁搴撶洃鎺ч棿闅�,鍗曚綅姣
+  dbInfoTimes: 10000
+  #鏁版嵁琛ㄧ洃鎺ч棿闅�,鍗曚綅姣
+  dbTableTimes: 10000
+  # 鎵归噺鎻愪氦鏁版嵁
+  commitTaskTimes: 10000
+
+#鍛婅閰嶇疆
+mail:
+  #鍛婅閭欢鎬诲紑鍏筹紝yes寮�鍚紝no鍏抽棴
+  allWarnMail: yes
+  #鐩戞帶涓绘満鍐呭瓨浣跨敤鐜�%鎶ヨ鍊硷紝瓒呰繃姝ゅ�煎嵆鍙戦�侀偖浠舵姤璀�
+  memWarnVal: 98
+  #鐩戞帶涓绘満cpu浣跨敤鐜�%鎶ヨ鍊硷紝瓒呰繃姝ゅ�煎嵆鍙戦�侀偖浠舵姤璀�
+  cpuWarnVal: 98
+  #鍐呭瓨鍛婅閭欢寮�鍏筹紝yes寮�鍚紝no鍏抽棴銆傛�诲紑鍏冲紑鍚悗锛屾澶勮缃墠浼氱敓鏁堛�備互涓嬪紑鍏冲潎閬靛惊姝よ鍒欍��
+  memWarnMail: yes
+  #CPU鍛婅閭欢寮�鍏筹紝yes寮�鍚紝no鍏抽棴
+  cpuWarnMail: yes
+  #涓绘満涓嬬嚎鍛婅閭欢寮�鍏筹紝yes寮�鍚紝no鍏抽棴
+  hostDownWarnMail: yes
+  #杩涚▼涓嬬嚎鍛婅閭欢寮�鍏筹紝yes寮�鍚紝no鍏抽棴
+  appDownWarnMail: yes
+  #鏈嶅姟鎺ュ彛鍛婅閭欢寮�鍏筹紝yes寮�鍚紝no鍏抽棴
+  heathWarnMail: yes
\ No newline at end of file
diff --git a/se-auth/pom.xml b/se-auth/pom.xml
index 711eefa..6dad247 100644
--- a/se-auth/pom.xml
+++ b/se-auth/pom.xml
@@ -51,14 +51,6 @@
             <groupId>com.se</groupId>
             <artifactId>se-common-security</artifactId>
         </dependency>
-
-        <!--lombok-->
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.22</version>
-            <optional>true</optional>
-        </dependency>
     </dependencies>
 	
     <build>
diff --git a/se-auth/se-auth.iml b/se-auth/se-auth.iml
index bd45c6c..489f425 100644
--- a/se-auth/se-auth.iml
+++ b/se-auth/se-auth.iml
@@ -163,7 +163,6 @@
     <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.10.RELEASE" level="project" />
     <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.34" level="project" />
     <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.4" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.30" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-bootstrap:3.1.7" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:3.1.7" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.11.RELEASE" level="project" />
diff --git a/se-auth/src/main/java/com/se/auth/controller/TokenController.java b/se-auth/src/main/java/com/se/auth/controller/TokenController.java
index 7cba290..3f34d1f 100644
--- a/se-auth/src/main/java/com/se/auth/controller/TokenController.java
+++ b/se-auth/src/main/java/com/se/auth/controller/TokenController.java
@@ -5,7 +5,9 @@
 import com.se.auth.form.LoginBody;
 import com.se.auth.form.RegisterBody;
 import com.se.auth.service.SysLoginService;
+import com.se.common.core.utils.AesUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import com.se.common.core.domain.R;
 import com.se.common.core.utils.JwtUtils;
@@ -21,17 +23,21 @@
  * @author admin
  */
 @RestController
-public class TokenController
-{
+public class TokenController {
     @Autowired
     private TokenService tokenService;
 
     @Autowired
     private SysLoginService sysLoginService;
 
+    @Value("${enableEncrypt}")
+    boolean enableEncrypt;
+
     @PostMapping("login")
-    public R<?> login(@RequestBody LoginBody form)
-    {
+    public R<?> login(@RequestBody LoginBody form) throws Exception {
+        if (enableEncrypt && !StringUtils.isEmpty(form.getPassword())) {
+            form.setPassword(AesUtils.decrypt(form.getPassword()));
+        }
         // 鐢ㄦ埛鐧诲綍
         LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
         // 鑾峰彇鐧诲綍token
@@ -56,11 +62,9 @@
     }
 
     @DeleteMapping("logout")
-    public R<?> logout(HttpServletRequest request)
-    {
+    public R<?> logout(HttpServletRequest request) {
         String token = SecurityUtils.getToken(request);
-        if (StringUtils.isNotEmpty(token))
-        {
+        if (StringUtils.isNotEmpty(token)) {
             String username = JwtUtils.getUserName(token);
             // 鍒犻櫎鐢ㄦ埛缂撳瓨璁板綍
             AuthUtil.logoutByToken(token);
@@ -71,11 +75,9 @@
     }
 
     @PostMapping("refresh")
-    public R<?> refresh(HttpServletRequest request)
-    {
+    public R<?> refresh(HttpServletRequest request) {
         LoginUser loginUser = tokenService.getLoginUser(request);
-        if (StringUtils.isNotNull(loginUser))
-        {
+        if (StringUtils.isNotNull(loginUser)) {
             // 鍒锋柊浠ょ墝鏈夋晥鏈�
             tokenService.refreshToken(loginUser);
             return R.ok();
@@ -83,11 +85,11 @@
         return R.ok();
     }
 
-    @PostMapping("register")
+    /*@PostMapping("register")
     public R<?> register(@RequestBody RegisterBody registerBody)
     {
         // 鐢ㄦ埛娉ㄥ唽
         sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
         return R.ok();
-    }
+    }*/
 }
diff --git a/se-auth/src/main/java/com/se/auth/service/AsyncService.java b/se-auth/src/main/java/com/se/auth/service/AsyncService.java
deleted file mode 100644
index 4c59740..0000000
--- a/se-auth/src/main/java/com/se/auth/service/AsyncService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.se.auth.service;
-
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * 寮傛鏈嶅姟
- *
- * @author WWW
- * @date 2024-08-25
- */
-@Slf4j
-@Service
-@SuppressWarnings("ALL")
-public class AsyncService {
-    public void asyncCall() {
-        try {
-            ExecutorService executor = Executors.newSingleThreadExecutor();
-            executor.execute(new Runnable() {
-                @Override
-                @SneakyThrows
-                public void run() {
-                    //
-                }
-            });
-            executor.shutdown();
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-        }
-    }
-}
diff --git a/se-auth/src/main/resources/bootstrap.yml b/se-auth/src/main/resources/bootstrap.yml
index 5e1086f..5b028cd 100644
--- a/se-auth/src/main/resources/bootstrap.yml
+++ b/se-auth/src/main/resources/bootstrap.yml
@@ -12,16 +12,17 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
       config:
         # 閰嶇疆涓績鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
         # 閰嶇疆鏂囦欢鏍煎紡
         file-extension: yml
         # 鍏变韩閰嶇疆
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+enableEncrypt: false
\ No newline at end of file
diff --git a/se-common/se-common-core/src/main/java/com/se/common/core/utils/AesUtils.java b/se-common/se-common-core/src/main/java/com/se/common/core/utils/AesUtils.java
index 1076e28..bf450f6 100644
--- a/se-common/se-common-core/src/main/java/com/se/common/core/utils/AesUtils.java
+++ b/se-common/se-common-core/src/main/java/com/se/common/core/utils/AesUtils.java
@@ -15,7 +15,7 @@
     /**
      * 瀵嗛挜闀垮害蹇呴』鏄�16
      */
-    private static final String DEFAULT_KEY = "A#s_zZ_sErve_k.y";
+    private static final String DEFAULT_KEY = "A#s_zZ3seRve_k.y";
 
     private static final String KEY_ALGORITHM = "AES";
 
diff --git a/se-gateway/src/main/resources/bootstrap.yml b/se-gateway/src/main/resources/bootstrap.yml
index a33bfe4..c10a471 100644
--- a/se-gateway/src/main/resources/bootstrap.yml
+++ b/se-gateway/src/main/resources/bootstrap.yml
@@ -12,13 +12,13 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
       config:
         # 閰嶇疆涓績鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
         # 閰嶇疆鏂囦欢鏍煎紡
         file-extension: yml
@@ -35,7 +35,6 @@
       datasource:
         ds1:
           nacos:
-            #server-addr: 192.168.11.203:8848
             server-addr: 127.0.0.1:8848
             dataId: sentinel-se-gateway
             groupId: DEFAULT_GROUP
diff --git a/se-modules/se-file/src/main/resources/bootstrap.yml b/se-modules/se-file/src/main/resources/bootstrap.yml
index f39b515..3204f87 100644
--- a/se-modules/se-file/src/main/resources/bootstrap.yml
+++ b/se-modules/se-file/src/main/resources/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: 127.0.0.1:8848
diff --git a/se-modules/se-job/src/main/resources/bootstrap.yml b/se-modules/se-job/src/main/resources/bootstrap.yml
index 1051ccf..94beb34 100644
--- a/se-modules/se-job/src/main/resources/bootstrap.yml
+++ b/se-modules/se-job/src/main/resources/bootstrap.yml
@@ -12,6 +12,8 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
         server-addr: 127.0.0.1:8848
diff --git a/se-modules/se-system/pom.xml b/se-modules/se-system/pom.xml
index 48aa313..10ee629 100644
--- a/se-modules/se-system/pom.xml
+++ b/se-modules/se-system/pom.xml
@@ -78,6 +78,13 @@
             <artifactId>se-common-swagger</artifactId>
         </dependency>
 
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.22</version>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/se-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java b/se-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java
index 4b87041..6dfeba5 100644
--- a/se-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java
+++ b/se-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java
@@ -151,10 +151,30 @@
      * @return 璺敱淇℃伅
      */
     @GetMapping("getRouters")
-    public AjaxResult getRouters()
+    public AjaxResult getRouters(String mark) {
+        Long userId = SecurityUtils.getUserId();
+        if (StringUtils.isEmpty(mark)) {
+            mark = "sys";
+        }
+        if ("all".equals(mark)) {
+            mark = null;
+        }
+
+        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId, mark);
+        return success(menuService.buildMenus(menus));
+    }
+
+    /**
+     * 鏍规嵁鏍囪瘑鑾峰彇鑿滃崟
+     *
+     * @return 鑿滃崟
+     */
+    @GetMapping("getMenusByMark")
+    public AjaxResult getMenusByMark(String mark)
     {
         Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
-        return success(menuService.buildMenus(menus));
+        List<SysMenu> menus = menuService.selectMenusByUserIdAndMark(userId, mark);
+
+        return success(menus);
     }
 }
\ No newline at end of file
diff --git a/se-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java b/se-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java
index 2cfdc41..6201f36 100644
--- a/se-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java
+++ b/se-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java
@@ -1,7 +1,10 @@
 package com.se.system.controller;
 
 import java.util.Arrays;
+
+import com.se.common.core.utils.AesUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -33,25 +36,30 @@
  */
 @RestController
 @RequestMapping("/user/profile")
-public class SysProfileController extends BaseController
-{
+public class SysProfileController extends BaseController {
     @Autowired
     private ISysUserService userService;
-    
+
     @Autowired
     private TokenService tokenService;
-    
+
     @Autowired
     private RemoteFileService remoteFileService;
+
+    @Value("${enableEncrypt}")
+    boolean enableEncrypt;
 
     /**
      * 涓汉淇℃伅
      */
     @GetMapping
-    public AjaxResult profile()
-    {
+    public AjaxResult profile() {
         String username = SecurityUtils.getUsername();
         SysUser user = userService.selectUserByUserName(username);
+        if (null != user) {
+            // 璁剧疆瀵嗙爜涓虹┖
+            user.setPassword(null);
+        }
         AjaxResult ajax = AjaxResult.success(user);
         ajax.put("roleGroup", userService.selectUserRoleGroup(username));
         ajax.put("postGroup", userService.selectUserPostGroup(username));
@@ -63,24 +71,20 @@
      */
     @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult updateProfile(@RequestBody SysUser user)
-    {
+    public AjaxResult updateProfile(@RequestBody SysUser user) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         SysUser currentUser = loginUser.getSysUser();
         currentUser.setNickName(user.getNickName());
         currentUser.setEmail(user.getEmail());
         currentUser.setPhonenumber(user.getPhonenumber());
         currentUser.setSex(user.getSex());
-        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
-        {
+        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) {
             return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
         }
-        if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
-        {
+        if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) {
             return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
         }
-        if (userService.updateUserProfile(currentUser))
-        {
+        if (userService.updateUserProfile(currentUser)) {
             // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅
             tokenService.setLoginUser(loginUser);
             return success();
@@ -93,22 +97,21 @@
      */
     @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
     @PutMapping("/updatePwd")
-    public AjaxResult updatePwd(String oldPassword, String newPassword)
-    {
+    public AjaxResult updatePwd(String oldPassword, String newPassword) throws Exception {
         String username = SecurityUtils.getUsername();
         SysUser user = userService.selectUserByUserName(username);
+        if (enableEncrypt && !StringUtils.isEmpty(user.getPassword())) {
+            user.setPassword(AesUtils.decrypt(user.getPassword()));
+        }
         String password = user.getPassword();
-        if (!SecurityUtils.matchesPassword(oldPassword, password))
-        {
+        if (!SecurityUtils.matchesPassword(oldPassword, password)) {
             return error("淇敼瀵嗙爜澶辫触锛屾棫瀵嗙爜閿欒");
         }
-        if (SecurityUtils.matchesPassword(newPassword, password))
-        {
+        if (SecurityUtils.matchesPassword(newPassword, password)) {
             return error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
         }
         newPassword = SecurityUtils.encryptPassword(newPassword);
-        if (userService.resetUserPwd(username, newPassword) > 0)
-        {
+        if (userService.resetUserPwd(username, newPassword) > 0) {
             // 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜
             LoginUser loginUser = SecurityUtils.getLoginUser();
             loginUser.getSysUser().setPassword(newPassword);
@@ -117,30 +120,25 @@
         }
         return error("淇敼瀵嗙爜寮傚父锛岃鑱旂郴绠$悊鍛�");
     }
-    
+
     /**
      * 澶村儚涓婁紶
      */
     @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE)
     @PostMapping("/avatar")
-    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file)
-    {
-        if (!file.isEmpty())
-        {
+    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) {
+        if (!file.isEmpty()) {
             LoginUser loginUser = SecurityUtils.getLoginUser();
             String extension = FileTypeUtils.getExtension(file);
-            if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION))
-            {
+            if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
                 return error("鏂囦欢鏍煎紡涓嶆纭紝璇蜂笂浼�" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "鏍煎紡");
             }
             R<SysFile> fileResult = remoteFileService.upload(file);
-            if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
-            {
+            if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) {
                 return error("鏂囦欢鏈嶅姟寮傚父锛岃鑱旂郴绠$悊鍛�");
             }
             String url = fileResult.getData().getUrl();
-            if (userService.updateUserAvatar(loginUser.getUsername(), url))
-            {
+            if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
                 AjaxResult ajax = AjaxResult.success();
                 ajax.put("imgUrl", url);
                 // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚
diff --git a/se-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java b/se-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java
index b6d3ea3..34177f6 100644
--- a/se-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java
+++ b/se-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java
@@ -5,8 +5,12 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
+
+import com.se.common.core.utils.AesUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -32,12 +36,7 @@
 import com.se.system.api.domain.SysRole;
 import com.se.system.api.domain.SysUser;
 import com.se.system.api.model.LoginUser;
-import com.se.system.service.ISysConfigService;
-import com.se.system.service.ISysDeptService;
-import com.se.system.service.ISysPermissionService;
-import com.se.system.service.ISysPostService;
-import com.se.system.service.ISysRoleService;
-import com.se.system.service.ISysUserService;
+import com.se.system.service.*;
 
 /**
  * 鐢ㄦ埛淇℃伅
@@ -46,8 +45,7 @@
  */
 @RestController
 @RequestMapping("/user")
-public class SysUserController extends BaseController
-{
+public class SysUserController extends BaseController {
     @Autowired
     private ISysUserService userService;
 
@@ -66,24 +64,37 @@
     @Autowired
     private ISysConfigService configService;
 
+    @Value("${enableEncrypt}")
+    boolean enableEncrypt;
+
     /**
      * 鑾峰彇鐢ㄦ埛鍒楄〃
      */
     @RequiresPermissions("system:user:list")
     @GetMapping("/list")
-    public TableDataInfo list(SysUser user)
-    {
+    public TableDataInfo list(SysUser user) {
         startPage();
         List<SysUser> list = userService.selectUserList(user);
+        if (!CollectionUtils.isEmpty(list)) {
+            for (SysUser sysUser : list) {
+                // 璁剧疆瀵嗙爜涓虹┖
+                sysUser.setPassword(null);
+            }
+        }
         return getDataTable(list);
     }
 
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
     @RequiresPermissions("system:user:export")
     @PostMapping("/export")
-    public void export(HttpServletResponse response, SysUser user)
-    {
+    public void export(HttpServletResponse response, SysUser user) {
         List<SysUser> list = userService.selectUserList(user);
+        if (!CollectionUtils.isEmpty(list)) {
+            for (SysUser sysUser : list) {
+                // 璁剧疆瀵嗙爜涓虹┖
+                sysUser.setPassword(null);
+            }
+        }
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁");
     }
@@ -91,8 +102,7 @@
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT)
     @RequiresPermissions("system:user:import")
     @PostMapping("/importData")
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         List<SysUser> userList = util.importExcel(file.getInputStream());
         String operName = SecurityUtils.getUsername();
@@ -101,8 +111,7 @@
     }
 
     @PostMapping("/importTemplate")
-    public void importTemplate(HttpServletResponse response) throws IOException
-    {
+    public void importTemplate(HttpServletResponse response) throws IOException {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁");
     }
@@ -112,13 +121,13 @@
      */
     @InnerAuth
     @GetMapping("/info/{username}")
-    public R<LoginUser> info(@PathVariable("username") String username)
-    {
+    public R<LoginUser> info(@PathVariable("username") String username) {
         SysUser sysUser = userService.selectUserByUserName(username);
-        if (StringUtils.isNull(sysUser))
-        {
+        if (StringUtils.isNull(sysUser)) {
             return R.fail("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
         }
+        // 璁剧疆瀵嗙爜涓虹┖
+        //sysUser.setPassword(null);
         // 瑙掕壊闆嗗悎
         Set<String> roles = permissionService.getRolePermission(sysUser);
         // 鏉冮檺闆嗗悎
@@ -135,38 +144,38 @@
      */
     @InnerAuth
     @PostMapping("/register")
-    public R<Boolean> register(@RequestBody SysUser sysUser)
-    {
+    public R<Boolean> register(@RequestBody SysUser sysUser) {
         String username = sysUser.getUserName();
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
+        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
             return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚敞鍐屽姛鑳斤紒");
         }
-        if (!userService.checkUserNameUnique(sysUser))
-        {
+        if (!userService.checkUserNameUnique(sysUser)) {
             return R.fail("淇濆瓨鐢ㄦ埛'" + username + "'澶辫触锛屾敞鍐岃处鍙峰凡瀛樺湪");
         }
         return R.ok(userService.registerUser(sysUser));
     }
 
     /**
-     *璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂�
+     * 璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂�
      */
     @InnerAuth
     @PutMapping("/recordlogin")
-    public R<Boolean> recordlogin(@RequestBody SysUser sysUser)
-    {
+    public R<Boolean> recordlogin(@RequestBody SysUser sysUser) {
         return R.ok(userService.updateUserProfile(sysUser));
     }
 
     /**
      * 鑾峰彇鐢ㄦ埛淇℃伅
-     * 
+     *
      * @return 鐢ㄦ埛淇℃伅
      */
     @GetMapping("getInfo")
     public AjaxResult getInfo() {
         SysUser user = userService.selectUserById(SecurityUtils.getUserId());
+        if (null != user) {
+            // 璁剧疆瀵嗙爜涓虹┖
+            user.setPassword(null);
+        }
         // 瑙掕壊闆嗗悎
         Set<String> roles = permissionService.getRolePermission(user);
         // 鏉冮檺闆嗗悎
@@ -185,17 +194,19 @@
      * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅
      */
     @RequiresPermissions("system:user:query")
-    @GetMapping(value = { "/", "/{userId}" })
-    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
-    {
+    @GetMapping(value = {"/", "/{userId}"})
+    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
         userService.checkUserDataScope(userId);
         AjaxResult ajax = AjaxResult.success();
         List<SysRole> roles = roleService.selectRoleAll();
         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
         ajax.put("posts", postService.selectPostAll());
-        if (StringUtils.isNotNull(userId))
-        {
+        if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = userService.selectUserById(userId);
+            if (null != sysUser) {
+                // 璁剧疆瀵嗙爜涓虹┖
+                sysUser.setPassword(null);
+            }
             ajax.put(AjaxResult.DATA_TAG, sysUser);
             ajax.put("postIds", postService.selectPostListByUserId(userId));
             ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
@@ -209,21 +220,18 @@
     @RequiresPermissions("system:user:add")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysUser user)
-    {
+    public AjaxResult add(@Validated @RequestBody SysUser user) throws Exception {
         deptService.checkDeptDataScope(user.getDeptId());
         roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkUserNameUnique(user))
-        {
+        if (!userService.checkUserNameUnique(user)) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
+        }
+        if (enableEncrypt && !StringUtils.isEmpty(user.getPassword())) {
+            user.setPassword(AesUtils.decrypt(user.getPassword()));
         }
         user.setCreateBy(SecurityUtils.getUsername());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@@ -236,22 +244,16 @@
     @RequiresPermissions("system:user:edit")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysUser user)
-    {
+    public AjaxResult edit(@Validated @RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         deptService.checkDeptDataScope(user.getDeptId());
         roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkUserNameUnique(user))
-        {
+        if (!userService.checkUserNameUnique(user)) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
         }
         user.setUpdateBy(SecurityUtils.getUsername());
@@ -264,10 +266,8 @@
     @RequiresPermissions("system:user:remove")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE)
     @DeleteMapping("/{userIds}")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        if (ArrayUtils.contains(userIds, SecurityUtils.getUserId()))
-        {
+    public AjaxResult remove(@PathVariable Long[] userIds) {
+        if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
             return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎");
         }
         return toAjax(userService.deleteUserByIds(userIds));
@@ -279,10 +279,12 @@
     @RequiresPermissions("system:user:edit")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping("/resetPwd")
-    public AjaxResult resetPwd(@RequestBody SysUser user)
-    {
+    public AjaxResult resetPwd(@RequestBody SysUser user) throws Exception {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
+        if (enableEncrypt && !StringUtils.isEmpty(user.getPassword())) {
+            user.setPassword(AesUtils.decrypt(user.getPassword()));
+        }
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         user.setUpdateBy(SecurityUtils.getUsername());
         return toAjax(userService.resetPwd(user));
@@ -294,8 +296,7 @@
     @RequiresPermissions("system:user:edit")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysUser user)
-    {
+    public AjaxResult changeStatus(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setUpdateBy(SecurityUtils.getUsername());
@@ -307,8 +308,7 @@
      */
     @RequiresPermissions("system:user:query")
     @GetMapping("/authRole/{userId}")
-    public AjaxResult authRole(@PathVariable("userId") Long userId)
-    {
+    public AjaxResult authRole(@PathVariable("userId") Long userId) {
         AjaxResult ajax = AjaxResult.success();
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
@@ -323,8 +323,7 @@
     @RequiresPermissions("system:user:edit")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT)
     @PutMapping("/authRole")
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
+    public AjaxResult insertAuthRole(Long userId, Long[] roleIds) {
         userService.checkUserDataScope(userId);
         roleService.checkRoleDataScope(roleIds);
         userService.insertUserAuth(userId, roleIds);
@@ -336,8 +335,7 @@
      */
     @RequiresPermissions("system:user:list")
     @GetMapping("/deptTree")
-    public AjaxResult deptTree(SysDept dept)
-    {
+    public AjaxResult deptTree(SysDept dept) {
         return success(deptService.selectDeptTreeList(dept));
     }
 }
diff --git a/se-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java b/se-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java
index a22cecb..e33a922 100644
--- a/se-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java
+++ b/se-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java
@@ -66,6 +66,9 @@
     /** 鑿滃崟鍥炬爣 */
     private String icon;
 
+    /** 鑿滃崟鏍囪瘑 */
+    private String mark;
+
     /** 瀛愯彍鍗� */
     private List<SysMenu> children = new ArrayList<SysMenu>();
 
@@ -246,6 +249,14 @@
         this.children = children;
     }
 
+    public String getMark() {
+        return mark;
+    }
+
+    public void setMark(String mark) {
+        this.mark = mark;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -269,6 +280,7 @@
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
             .append("remark", getRemark())
+            .append("mark", getMark())
             .toString();
     }
 }
diff --git a/se-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java b/se-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java
index 4df0242..b58335d 100644
--- a/se-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java
+++ b/se-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java
@@ -10,11 +10,10 @@
  * 
  * @author admin
  */
-public interface SysMenuMapper
-{
+public interface SysMenuMapper {
     /**
      * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 鑿滃崟鍒楄〃
      */
@@ -22,14 +21,14 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄�
-     * 
+     *
      * @return 鏉冮檺鍒楄〃
      */
     public List<String> selectMenuPerms();
 
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 鑿滃崟鍒楄〃
      */
@@ -37,7 +36,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 鏉冮檺鍒楄〃
      */
@@ -45,7 +44,7 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鏉冮檺鍒楄〃
      */
@@ -53,23 +52,24 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
+     *
      * @return 鑿滃崟鍒楄〃
      */
     public List<SysMenu> selectMenuTreeAll();
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
+     * @param mark   鏍囪瘑
      * @return 鑿滃崟鍒楄〃
      */
-    public List<SysMenu> selectMenuTreeByUserId(Long userId);
+    public List<SysMenu> selectMenuTreeByUserId(@Param("userId") Long userId, @Param("mark") String mark);
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
+     *
+     * @param roleId            瑙掕壊ID
      * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
      * @return 閫変腑鑿滃崟鍒楄〃
      */
@@ -77,7 +77,7 @@
 
     /**
      * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 鑿滃崟淇℃伅
      */
@@ -85,7 +85,7 @@
 
     /**
      * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
@@ -93,7 +93,7 @@
 
     /**
      * 鏂板鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
@@ -101,7 +101,7 @@
 
     /**
      * 淇敼鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
@@ -109,7 +109,7 @@
 
     /**
      * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
@@ -117,10 +117,19 @@
 
     /**
      * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param menuName 鑿滃崟鍚嶇О
      * @param parentId 鐖惰彍鍗旾D
      * @return 缁撴灉
      */
     public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鍜屾爣璇嗘煡璇㈣彍鍗�
+     *
+     * @param userId 鐢ㄦ埛ID
+     * @param mark   鏍囪瘑
+     * @return 鑿滃崟闆嗗悎
+     */
+    List<SysMenu> selectMenusByUserIdAndMark(@Param("userId") Long userId, @Param("mark") String mark);
 }
diff --git a/se-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java b/se-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java
index 00a7aff..30e048d 100644
--- a/se-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java
+++ b/se-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java
@@ -52,6 +52,14 @@
     public SysUser selectUserById(Long userId);
 
     /**
+     * 閫氳繃ids鏌ヨ鐢ㄦ埛
+     *
+     * @param ids
+     * @return
+     */
+    public List<SysUser> selectUserByIds(@Param("ids") String ids);
+
+    /**
      * 鏂板鐢ㄦ埛淇℃伅
      * 
      * @param user 鐢ㄦ埛淇℃伅
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java b/se-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java
index 0bf126e..f1b236a 100644
--- a/se-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java
+++ b/se-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java
@@ -1,7 +1,7 @@
 package com.se.system.service;
 
 import java.util.List;
-import com.se.system.domain.SysConfig;
+import com.se.system.domain.*;
 
 /**
  * 鍙傛暟閰嶇疆 鏈嶅姟灞�
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java b/se-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java
index 61746b0..e983f71 100644
--- a/se-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java
+++ b/se-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java
@@ -11,11 +11,10 @@
  * 
  * @author admin
  */
-public interface ISysMenuService
-{
+public interface ISysMenuService {
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鑿滃崟鍒楄〃
      */
@@ -23,8 +22,8 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param menu 鑿滃崟淇℃伅
+     *
+     * @param menu   鑿滃崟淇℃伅
      * @param userId 鐢ㄦ埛ID
      * @return 鑿滃崟鍒楄〃
      */
@@ -32,7 +31,7 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鏉冮檺鍒楄〃
      */
@@ -40,7 +39,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 鏉冮檺鍒楄〃
      */
@@ -48,15 +47,16 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
+     * @param mark   鏍囪瘑
      * @return 鑿滃崟鍒楄〃
      */
-    public List<SysMenu> selectMenuTreeByUserId(Long userId);
+    public List<SysMenu> selectMenuTreeByUserId(Long userId, String mark);
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 閫変腑鑿滃崟鍒楄〃
      */
@@ -64,7 +64,7 @@
 
     /**
      * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 璺敱鍒楄〃
      */
@@ -72,7 +72,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
@@ -80,7 +80,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 涓嬫媺鏍戠粨鏋勫垪琛�
      */
@@ -88,7 +88,7 @@
 
     /**
      * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 鑿滃崟淇℃伅
      */
@@ -96,7 +96,7 @@
 
     /**
      * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
      */
@@ -104,7 +104,7 @@
 
     /**
      * 鏌ヨ鑿滃崟鏄惁瀛樺湪瑙掕壊
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
      */
@@ -112,7 +112,7 @@
 
     /**
      * 鏂板淇濆瓨鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
@@ -120,7 +120,7 @@
 
     /**
      * 淇敼淇濆瓨鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
@@ -128,7 +128,7 @@
 
     /**
      * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
@@ -136,9 +136,18 @@
 
     /**
      * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
     public boolean checkMenuNameUnique(SysMenu menu);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鍜屾爣璇嗘煡璇㈣彍鍗�
+     *
+     * @param userId 鐢ㄦ埛ID
+     * @param mark   鏍囪瘑
+     * @return 鑿滃崟闆嗗悎
+     */
+    List<SysMenu> selectMenusByUserIdAndMark(Long userId, String mark);
 }
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/impl/IsimUserService.java b/se-modules/se-system/src/main/java/com/se/system/service/impl/IsimUserService.java
new file mode 100644
index 0000000..b38cd56
--- /dev/null
+++ b/se-modules/se-system/src/main/java/com/se/system/service/impl/IsimUserService.java
@@ -0,0 +1,66 @@
+package com.se.system.service.impl;
+
+import com.se.system.api.domain.SysUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ISIM鐢ㄦ埛鏈嶅姟
+ *
+ * @author WWW
+ * @date 2024-08-30
+ */
+@Slf4j
+@Service
+@SuppressWarnings("ALL")
+public class IsimUserService {
+    public void insertUser(SysUser user) {
+        try {
+            System.out.println("insertUser");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public void insertUsers(List<SysUser> list) {
+        try {
+            System.out.println("insertUsers");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public void updateUser(SysUser user) {
+        try {
+            System.out.println("updateUser");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public void updateUsers(List<SysUser> list) {
+        try {
+            System.out.println("updateUsers");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public void deleteUser(SysUser user) {
+        try {
+            System.out.println("deleteUser");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public void deleteUsers(List<SysUser> list) {
+        try {
+            System.out.println("deleteUsers");
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+}
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/impl/SyncUserService.java b/se-modules/se-system/src/main/java/com/se/system/service/impl/SyncUserService.java
new file mode 100644
index 0000000..e76767c
--- /dev/null
+++ b/se-modules/se-system/src/main/java/com/se/system/service/impl/SyncUserService.java
@@ -0,0 +1,79 @@
+package com.se.system.service.impl;
+
+import com.se.system.api.domain.SysUser;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 鐢ㄦ埛鍚屾鏈嶅姟
+ *
+ * @author WWW
+ * @date 2024-08-30
+ */
+@Slf4j
+@Service
+@SuppressWarnings("ALL")
+public class SyncUserService {
+    @Resource
+    IsimUserService isimUserService;
+
+    public void insertUser(SysUser user) {
+        // supplyAsync-甯﹁繑鍥炲�硷紝runAsync-鏃犺繑鍥炲��
+        CompletableFuture.runAsync(() -> {
+            isimUserService.insertUser(user);
+        });
+    }
+
+    public void insertUsers(List<SysUser> list) {
+        CompletableFuture.runAsync(() -> {
+            isimUserService.insertUsers(list);
+        });
+    }
+
+    public void updateUser(SysUser user) {
+        CompletableFuture.runAsync(() -> {
+            isimUserService.updateUser(user);
+        });
+    }
+
+    public void updateUsers(List<SysUser> list) {
+        CompletableFuture.runAsync(() -> {
+            isimUserService.updateUsers(list);
+        });
+    }
+
+    public void deleteUser(SysUser user) {
+        CompletableFuture.runAsync(() -> {
+            isimUserService.deleteUser(user);
+        });
+    }
+
+    public void deleteUsers(List<SysUser> list) {
+        CompletableFuture.runAsync(() -> {
+            isimUserService.deleteUsers(list);
+        });
+    }
+
+    private void asyncCall() {
+        try {
+            ExecutorService executor = Executors.newSingleThreadExecutor();
+            executor.execute(new Runnable() {
+                @Override
+                @SneakyThrows
+                public void run() {
+                    //
+                }
+            });
+            executor.shutdown();
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+}
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java b/se-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java
index 6dcb451..9a03e9f 100644
--- a/se-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java
+++ b/se-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java
@@ -10,7 +10,6 @@
 import java.util.stream.Collectors;
 
 import com.se.system.domain.SysMenu;
-import com.se.system.domain.vo.MetaVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.se.common.core.constant.Constants;
@@ -19,11 +18,9 @@
 import com.se.common.security.utils.SecurityUtils;
 import com.se.system.api.domain.SysRole;
 import com.se.system.api.domain.SysUser;
-import com.se.system.domain.vo.RouterVo;
-import com.se.system.domain.vo.TreeSelect;
+import com.se.system.domain.vo.*;
 import com.se.system.mapper.SysMenuMapper;
-import com.se.system.mapper.SysRoleMapper;
-import com.se.system.mapper.SysRoleMenuMapper;
+import com.se.system.mapper.*;
 import com.se.system.service.ISysMenuService;
 
 /**
@@ -32,8 +29,7 @@
  * @author admin
  */
 @Service
-public class SysMenuServiceImpl implements ISysMenuService
-{
+public class SysMenuServiceImpl implements ISysMenuService {
     public static final String PREMISSION_STRING = "perms[\"{0}\"]";
 
     @Autowired
@@ -47,33 +43,28 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鑿滃崟鍒楄〃
      */
     @Override
-    public List<SysMenu> selectMenuList(Long userId)
-    {
+    public List<SysMenu> selectMenuList(Long userId) {
         return selectMenuList(new SysMenu(), userId);
     }
 
     /**
      * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 鑿滃崟鍒楄〃
      */
     @Override
-    public List<SysMenu> selectMenuList(SysMenu menu, Long userId)
-    {
+    public List<SysMenu> selectMenuList(SysMenu menu, Long userId) {
         List<SysMenu> menuList = null;
         // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭�
-        if (SysUser.isAdmin(userId))
-        {
+        if (SysUser.isAdmin(userId)) {
             menuList = menuMapper.selectMenuList(menu);
-        }
-        else
-        {
+        } else {
             menu.getParams().put("userId", userId);
             menuList = menuMapper.selectMenuListByUserId(menu);
         }
@@ -82,19 +73,16 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鏉冮檺鍒楄〃
      */
     @Override
-    public Set<String> selectMenuPermsByUserId(Long userId)
-    {
+    public Set<String> selectMenuPermsByUserId(Long userId) {
         List<String> perms = menuMapper.selectMenuPermsByUserId(userId);
         Set<String> permsSet = new HashSet<>();
-        for (String perm : perms)
-        {
-            if (StringUtils.isNotEmpty(perm))
-            {
+        for (String perm : perms) {
+            if (StringUtils.isNotEmpty(perm)) {
                 permsSet.addAll(Arrays.asList(perm.trim().split(",")));
             }
         }
@@ -103,19 +91,16 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 鏉冮檺鍒楄〃
      */
     @Override
-    public Set<String> selectMenuPermsByRoleId(Long roleId)
-    {
+    public Set<String> selectMenuPermsByRoleId(Long roleId) {
         List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId);
         Set<String> permsSet = new HashSet<>();
-        for (String perm : perms)
-        {
-            if (StringUtils.isNotEmpty(perm))
-            {
+        for (String perm : perms) {
+            if (StringUtils.isNotEmpty(perm)) {
                 permsSet.addAll(Arrays.asList(perm.trim().split(",")));
             }
         }
@@ -124,14 +109,14 @@
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
+     *
      * @param userId 鐢ㄦ埛鍚嶇О
+     * @param mark   鏍囪瘑
      * @return 鑿滃崟鍒楄〃
      */
     @Override
-    public List<SysMenu> selectMenuTreeByUserId(Long userId)
-    {
-        List<SysMenu> menus = null;
+    public List<SysMenu> selectMenuTreeByUserId(Long userId, String mark) {
+        /*List<SysMenu> menus = null;
         if (SecurityUtils.isAdmin(userId))
         {
             menus = menuMapper.selectMenuTreeAll();
@@ -139,35 +124,41 @@
         else
         {
             menus = menuMapper.selectMenuTreeByUserId(userId);
-        }
+        }*/
+        List<SysMenu> menus = menuMapper.selectMenuTreeByUserId(SecurityUtils.isAdmin(userId) ? null : userId, mark);
+
+        return getChildPerms(menus, 0);
+    }
+
+    @Override
+    public List<SysMenu> selectMenusByUserIdAndMark(Long userId, String mark) {
+        List<SysMenu> menus = menuMapper.selectMenusByUserIdAndMark(SecurityUtils.isAdmin(userId) ? null : userId, mark);
+
         return getChildPerms(menus, 0);
     }
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 閫変腑鑿滃崟鍒楄〃
      */
     @Override
-    public List<Long> selectMenuListByRoleId(Long roleId)
-    {
+    public List<Long> selectMenuListByRoleId(Long roleId) {
         SysRole role = roleMapper.selectRoleById(roleId);
         return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
     }
 
     /**
      * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 璺敱鍒楄〃
      */
     @Override
-    public List<RouterVo> buildMenus(List<SysMenu> menus)
-    {
+    public List<RouterVo> buildMenus(List<SysMenu> menus) {
         List<RouterVo> routers = new LinkedList<RouterVo>();
-        for (SysMenu menu : menus)
-        {
+        for (SysMenu menu : menus) {
             RouterVo router = new RouterVo();
             router.setHidden("1".equals(menu.getVisible()));
             router.setName(getRouteName(menu));
@@ -176,14 +167,11 @@
             router.setQuery(menu.getQuery());
             router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
             List<SysMenu> cMenus = menu.getChildren();
-            if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType()))
-            {
+            if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
                 router.setAlwaysShow(true);
                 router.setRedirect("noRedirect");
                 router.setChildren(buildMenus(cMenus));
-            }
-            else if (isMenuFrame(menu))
-            {
+            } else if (isMenuFrame(menu)) {
                 router.setMeta(null);
                 List<RouterVo> childrenList = new ArrayList<RouterVo>();
                 RouterVo children = new RouterVo();
@@ -194,9 +182,7 @@
                 children.setQuery(menu.getQuery());
                 childrenList.add(children);
                 router.setChildren(childrenList);
-            }
-            else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
-            {
+            } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) {
                 router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
                 router.setPath("/");
                 List<RouterVo> childrenList = new ArrayList<RouterVo>();
@@ -216,27 +202,23 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
     @Override
-    public List<SysMenu> buildMenuTree(List<SysMenu> menus)
-    {
+    public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
         List<SysMenu> returnList = new ArrayList<SysMenu>();
         List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
-        for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
-        {
+        for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext(); ) {
             SysMenu menu = (SysMenu) iterator.next();
             // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
-            if (!tempList.contains(menu.getParentId()))
-            {
+            if (!tempList.contains(menu.getParentId())) {
                 recursionFn(menus, menu);
                 returnList.add(menu);
             }
         }
-        if (returnList.isEmpty())
-        {
+        if (returnList.isEmpty()) {
             returnList = menus;
         }
         return returnList;
@@ -244,104 +226,95 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
+     *
      * @param menus 鑿滃崟鍒楄〃
      * @return 涓嬫媺鏍戠粨鏋勫垪琛�
      */
     @Override
-    public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus)
-    {
+    public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) {
         List<SysMenu> menuTrees = buildMenuTree(menus);
         return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
     /**
      * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 鑿滃崟淇℃伅
      */
     @Override
-    public SysMenu selectMenuById(Long menuId)
-    {
+    public SysMenu selectMenuById(Long menuId) {
         return menuMapper.selectMenuById(menuId);
     }
 
     /**
      * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
     @Override
-    public boolean hasChildByMenuId(Long menuId)
-    {
+    public boolean hasChildByMenuId(Long menuId) {
         int result = menuMapper.hasChildByMenuId(menuId);
         return result > 0;
     }
 
     /**
      * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
     @Override
-    public boolean checkMenuExistRole(Long menuId)
-    {
+    public boolean checkMenuExistRole(Long menuId) {
         int result = roleMenuMapper.checkMenuExistRole(menuId);
         return result > 0;
     }
 
     /**
      * 鏂板淇濆瓨鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int insertMenu(SysMenu menu)
-    {
+    public int insertMenu(SysMenu menu) {
         return menuMapper.insertMenu(menu);
     }
 
     /**
      * 淇敼淇濆瓨鑿滃崟淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int updateMenu(SysMenu menu)
-    {
+    public int updateMenu(SysMenu menu) {
         return menuMapper.updateMenu(menu);
     }
 
     /**
      * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
     @Override
-    public int deleteMenuById(Long menuId)
-    {
+    public int deleteMenuById(Long menuId) {
         return menuMapper.deleteMenuById(menuId);
     }
 
     /**
      * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public boolean checkMenuNameUnique(SysMenu menu)
-    {
+    public boolean checkMenuNameUnique(SysMenu menu) {
         Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
         SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId());
-        if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -349,15 +322,13 @@
 
     /**
      * 鑾峰彇璺敱鍚嶇О
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 璺敱鍚嶇О
      */
-    public String getRouteName(SysMenu menu)
-    {
+    public String getRouteName(SysMenu menu) {
         // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
-        if (isMenuFrame(menu))
-        {
+        if (isMenuFrame(menu)) {
             return StringUtils.EMPTY;
         }
         return getRouteName(menu.getRouteName(), menu.getPath());
@@ -365,40 +336,35 @@
 
     /**
      * 鑾峰彇璺敱鍚嶇О锛屽娌℃湁閰嶇疆璺敱鍚嶇О鍒欏彇璺敱鍦板潃
-     * 
+     *
      * @param routerName 璺敱鍚嶇О
-     * @param path 璺敱鍦板潃
+     * @param path       璺敱鍦板潃
      * @return 璺敱鍚嶇О锛堥┘宄版牸寮忥級
      */
-    public String getRouteName(String name, String path)
-    {
+    public String getRouteName(String name, String path) {
         String routerName = StringUtils.isNotEmpty(name) ? name : path;
         return StringUtils.capitalize(routerName);
     }
 
     /**
      * 鑾峰彇璺敱鍦板潃
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 璺敱鍦板潃
      */
-    public String getRouterPath(SysMenu menu)
-    {
+    public String getRouterPath(SysMenu menu) {
         String routerPath = menu.getPath();
         // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡
-        if (menu.getParentId().intValue() != 0 && isInnerLink(menu))
-        {
+        if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
             routerPath = innerLinkReplaceEach(routerPath);
         }
         // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
         if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType())
-                && UserConstants.NO_FRAME.equals(menu.getIsFrame()))
-        {
+                && UserConstants.NO_FRAME.equals(menu.getIsFrame())) {
             routerPath = "/" + menu.getPath();
         }
         // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級
-        else if (isMenuFrame(menu))
-        {
+        else if (isMenuFrame(menu)) {
             routerPath = "/";
         }
         return routerPath;
@@ -406,23 +372,17 @@
 
     /**
      * 鑾峰彇缁勪欢淇℃伅
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁勪欢淇℃伅
      */
-    public String getComponent(SysMenu menu)
-    {
+    public String getComponent(SysMenu menu) {
         String component = UserConstants.LAYOUT;
-        if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu))
-        {
+        if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) {
             component = menu.getComponent();
-        }
-        else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu))
-        {
+        } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
             component = UserConstants.INNER_LINK;
-        }
-        else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu))
-        {
+        } else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) {
             component = UserConstants.PARENT_VIEW;
         }
         return component;
@@ -430,54 +390,48 @@
 
     /**
      * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞�
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
-    public boolean isMenuFrame(SysMenu menu)
-    {
+    public boolean isMenuFrame(SysMenu menu) {
         return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType())
                 && menu.getIsFrame().equals(UserConstants.NO_FRAME);
     }
 
     /**
      * 鏄惁涓哄唴閾剧粍浠�
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
-    public boolean isInnerLink(SysMenu menu)
-    {
+    public boolean isInnerLink(SysMenu menu) {
         return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
     }
 
     /**
      * 鏄惁涓簆arent_view缁勪欢
-     * 
+     *
      * @param menu 鑿滃崟淇℃伅
      * @return 缁撴灉
      */
-    public boolean isParentView(SysMenu menu)
-    {
+    public boolean isParentView(SysMenu menu) {
         return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
     }
 
     /**
      * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣
-     * 
-     * @param list 鍒嗙被琛�
+     *
+     * @param list     鍒嗙被琛�
      * @param parentId 浼犲叆鐨勭埗鑺傜偣ID
      * @return String
      */
-    public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId)
-    {
+    public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) {
         List<SysMenu> returnList = new ArrayList<SysMenu>();
-        for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();)
-        {
+        for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext(); ) {
             SysMenu t = (SysMenu) iterator.next();
             // 涓�銆佹牴鎹紶鍏ョ殑鏌愪釜鐖惰妭鐐笽D,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
-            if (t.getParentId() == parentId)
-            {
+            if (t.getParentId() == parentId) {
                 recursionFn(list, t);
                 returnList.add(t);
             }
@@ -487,19 +441,16 @@
 
     /**
      * 閫掑綊鍒楄〃
-     * 
+     *
      * @param list 鍒嗙被琛�
-     * @param t 瀛愯妭鐐�
+     * @param t    瀛愯妭鐐�
      */
-    private void recursionFn(List<SysMenu> list, SysMenu t)
-    {
+    private void recursionFn(List<SysMenu> list, SysMenu t) {
         // 寰楀埌瀛愯妭鐐瑰垪琛�
         List<SysMenu> childList = getChildList(list, t);
         t.setChildren(childList);
-        for (SysMenu tChild : childList)
-        {
-            if (hasChild(list, tChild))
-            {
+        for (SysMenu tChild : childList) {
+            if (hasChild(list, tChild)) {
                 recursionFn(list, tChild);
             }
         }
@@ -508,15 +459,12 @@
     /**
      * 寰楀埌瀛愯妭鐐瑰垪琛�
      */
-    private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t)
-    {
+    private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) {
         List<SysMenu> tlist = new ArrayList<SysMenu>();
         Iterator<SysMenu> it = list.iterator();
-        while (it.hasNext())
-        {
+        while (it.hasNext()) {
             SysMenu n = (SysMenu) it.next();
-            if (n.getParentId().longValue() == t.getMenuId().longValue())
-            {
+            if (n.getParentId().longValue() == t.getMenuId().longValue()) {
                 tlist.add(n);
             }
         }
@@ -526,19 +474,17 @@
     /**
      * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
      */
-    private boolean hasChild(List<SysMenu> list, SysMenu t)
-    {
+    private boolean hasChild(List<SysMenu> list, SysMenu t) {
         return getChildList(list, t).size() > 0;
     }
 
     /**
      * 鍐呴摼鍩熷悕鐗规畩瀛楃鏇挎崲
-     * 
+     *
      * @return 鏇挎崲鍚庣殑鍐呴摼鍩熷悕
      */
-    public String innerLinkReplaceEach(String path)
-    {
-        return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" },
-                new String[] { "", "", "", "/", "/" });
+    public String innerLinkReplaceEach(String path) {
+        return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"},
+                new String[]{"", "", "", "/", "/"});
     }
 }
diff --git a/se-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java b/se-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java
index 54fc967..7244cf4 100644
--- a/se-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java
+++ b/se-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
+import javax.annotation.Resource;
 import javax.validation.Validator;
 
 import com.se.system.domain.SysPost;
@@ -38,8 +39,7 @@
  * @author admin
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
-{
+public class SysUserServiceImpl implements ISysUserService {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
     @Autowired
@@ -66,81 +66,77 @@
     @Autowired
     protected Validator validator;
 
+    @Resource
+    SyncUserService syncUserService;
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUserList(SysUser user)
-    {
+    public List<SysUser> selectUserList(SysUser user) {
         return userMapper.selectUserList(user);
     }
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectAllocatedList(SysUser user)
-    {
+    public List<SysUser> selectAllocatedList(SysUser user) {
         return userMapper.selectAllocatedList(user);
     }
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
+    public List<SysUser> selectUnallocatedList(SysUser user) {
         return userMapper.selectUnallocatedList(user);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 鐢ㄦ埛瀵硅薄淇℃伅
      */
     @Override
-    public SysUser selectUserByUserName(String userName)
-    {
+    public SysUser selectUserByUserName(String userName) {
         return userMapper.selectUserByUserName(userName);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鐢ㄦ埛瀵硅薄淇℃伅
      */
     @Override
-    public SysUser selectUserById(Long userId)
-    {
+    public SysUser selectUserById(Long userId) {
         return userMapper.selectUserById(userId);
     }
 
     /**
      * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 缁撴灉
      */
     @Override
-    public String selectUserRoleGroup(String userName)
-    {
+    public String selectUserRoleGroup(String userName) {
         List<SysRole> list = roleMapper.selectRolesByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
@@ -148,16 +144,14 @@
 
     /**
      * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 缁撴灉
      */
     @Override
-    public String selectUserPostGroup(String userName)
-    {
+    public String selectUserPostGroup(String userName) {
         List<SysPost> list = postMapper.selectPostsByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
@@ -165,17 +159,15 @@
 
     /**
      * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public boolean checkUserNameUnique(SysUser user)
-    {
+    public boolean checkUserNameUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkUserNameUnique(user.getUserName());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -188,12 +180,10 @@
      * @return
      */
     @Override
-    public boolean checkPhoneUnique(SysUser user)
-    {
+    public boolean checkPhoneUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -206,12 +196,10 @@
      * @return
      */
     @Override
-    public boolean checkEmailUnique(SysUser user)
-    {
+    public boolean checkEmailUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkEmailUnique(user.getEmail());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -219,33 +207,28 @@
 
     /**
      * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      */
     @Override
-    public void checkUserAllowed(SysUser user)
-    {
-        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
-        {
+    public void checkUserAllowed(SysUser user) {
+        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
             throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛");
         }
     }
 
     /**
      * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄�
-     * 
+     *
      * @param userId 鐢ㄦ埛id
      */
     @Override
-    public void checkUserDataScope(Long userId)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
-        {
+    public void checkUserDataScope(Long userId) {
+        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
             SysUser user = new SysUser();
             user.setUserId(userId);
             List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
-            if (StringUtils.isEmpty(users))
-            {
+            if (StringUtils.isEmpty(users)) {
                 throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
             }
         }
@@ -253,45 +236,49 @@
 
     /**
      * 鏂板淇濆瓨鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int insertUser(SysUser user)
-    {
+    public int insertUser(SysUser user) {
         // 鏂板鐢ㄦ埛淇℃伅
         int rows = userMapper.insertUser(user);
         // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
         insertUserPost(user);
         // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
         insertUserRole(user);
+        if (rows > 0) {
+            syncUserService.insertUser(user);
+        }
         return rows;
     }
 
     /**
      * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public boolean registerUser(SysUser user)
-    {
-        return userMapper.insertUser(user) > 0;
+    public boolean registerUser(SysUser user) {
+        int rows = userMapper.insertUser(user);
+        if (rows > 0) {
+            syncUserService.insertUser(user);
+        }
+        return rows > 0;
     }
 
     /**
      * 淇敼淇濆瓨鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateUser(SysUser user)
-    {
+    public int updateUser(SysUser user) {
         Long userId = user.getUserId();
         // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
         userRoleMapper.deleteUserRoleByUserId(userId);
@@ -301,109 +288,111 @@
         userPostMapper.deleteUserPostByUserId(userId);
         // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
         insertUserPost(user);
-        return userMapper.updateUser(user);
+        int rows = userMapper.updateUser(user);
+        if (rows > 0) {
+            syncUserService.updateUser(user);
+        }
+        return rows;
     }
 
     /**
      * 鐢ㄦ埛鎺堟潈瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
+     *
+     * @param userId  鐢ㄦ埛ID
      * @param roleIds 瑙掕壊缁�
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void insertUserAuth(Long userId, Long[] roleIds)
-    {
+    public void insertUserAuth(Long userId, Long[] roleIds) {
         userRoleMapper.deleteUserRoleByUserId(userId);
         insertUserRole(userId, roleIds);
     }
 
     /**
      * 淇敼鐢ㄦ埛鐘舵��
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int updateUserStatus(SysUser user)
-    {
-        return userMapper.updateUser(user);
+    public int updateUserStatus(SysUser user) {
+        int rows = userMapper.updateUser(user);
+        if (rows > 0) {
+            syncUserService.updateUser(user);
+        }
+        return rows;
     }
 
     /**
      * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public boolean updateUserProfile(SysUser user)
-    {
-        return userMapper.updateUser(user) > 0;
+    public boolean updateUserProfile(SysUser user) {
+        int rows = userMapper.updateUser(user);
+        if (rows > 0) {
+            syncUserService.updateUser(user);
+        }
+        return rows > 0;
     }
 
     /**
      * 淇敼鐢ㄦ埛澶村儚
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
-     * @param avatar 澶村儚鍦板潃
+     * @param avatar   澶村儚鍦板潃
      * @return 缁撴灉
      */
     @Override
-    public boolean updateUserAvatar(String userName, String avatar)
-    {
+    public boolean updateUserAvatar(String userName, String avatar) {
         return userMapper.updateUserAvatar(userName, avatar) > 0;
     }
 
     /**
      * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int resetPwd(SysUser user)
-    {
+    public int resetPwd(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @param password 瀵嗙爜
      * @return 缁撴灉
      */
     @Override
-    public int resetUserPwd(String userName, String password)
-    {
+    public int resetUserPwd(String userName, String password) {
         return userMapper.resetUserPwd(userName, password);
     }
 
     /**
      * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛瀵硅薄
      */
-    public void insertUserRole(SysUser user)
-    {
+    public void insertUserRole(SysUser user) {
         this.insertUserRole(user.getUserId(), user.getRoleIds());
     }
 
     /**
      * 鏂板鐢ㄦ埛宀椾綅淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛瀵硅薄
      */
-    public void insertUserPost(SysUser user)
-    {
+    public void insertUserPost(SysUser user) {
         Long[] posts = user.getPostIds();
-        if (StringUtils.isNotEmpty(posts))
-        {
+        if (StringUtils.isNotEmpty(posts)) {
             // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
             List<SysUserPost> list = new ArrayList<SysUserPost>();
-            for (Long postId : posts)
-            {
+            for (Long postId : posts) {
                 SysUserPost up = new SysUserPost();
                 up.setUserId(user.getUserId());
                 up.setPostId(postId);
@@ -415,18 +404,15 @@
 
     /**
      * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
-     * @param userId 鐢ㄦ埛ID
+     *
+     * @param userId  鐢ㄦ埛ID
      * @param roleIds 瑙掕壊缁�
      */
-    public void insertUserRole(Long userId, Long[] roleIds)
-    {
-        if (StringUtils.isNotEmpty(roleIds))
-        {
+    public void insertUserRole(Long userId, Long[] roleIds) {
+        if (StringUtils.isNotEmpty(roleIds)) {
             // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
             List<SysUserRole> list = new ArrayList<SysUserRole>();
-            for (Long roleId : roleIds)
-            {
+            for (Long roleId : roleIds) {
                 SysUserRole ur = new SysUserRole();
                 ur.setUserId(userId);
                 ur.setRoleId(roleId);
@@ -438,33 +424,35 @@
 
     /**
      * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 缁撴灉
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deleteUserById(Long userId)
-    {
+    public int deleteUserById(Long userId) {
         // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
         userRoleMapper.deleteUserRoleByUserId(userId);
         // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
         userPostMapper.deleteUserPostByUserId(userId);
-        return userMapper.deleteUserById(userId);
+        SysUser user = userMapper.selectUserById(userId);
+        int rows = userMapper.deleteUserById(userId);
+        if (rows > 0) {
+            syncUserService.deleteUser(user);
+        }
+        return rows;
     }
 
     /**
      * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
      * @return 缁撴灉
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deleteUserByIds(Long[] userIds)
-    {
-        for (Long userId : userIds)
-        {
+    public int deleteUserByIds(Long[] userIds) {
+        for (Long userId : userIds) {
             checkUserAllowed(new SysUser(userId));
             checkUserDataScope(userId);
         }
@@ -472,81 +460,84 @@
         userRoleMapper.deleteUserRole(userIds);
         // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
         userPostMapper.deleteUserPost(userIds);
-        return userMapper.deleteUserByIds(userIds);
+        List<SysUser> list = userMapper.selectUserByIds(StringUtils.joinWith(",", userIds));
+        int rows = userMapper.deleteUserByIds(userIds);
+        if (rows > 0 && !CollectionUtils.isEmpty(list)) {
+            syncUserService.deleteUsers(list);
+        }
+        return rows;
     }
 
     /**
      * 瀵煎叆鐢ㄦ埛鏁版嵁
-     * 
-     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
+     *
+     * @param userList        鐢ㄦ埛鏁版嵁鍒楄〃
      * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @param operName 鎿嶄綔鐢ㄦ埛
+     * @param operName        鎿嶄綔鐢ㄦ埛
      * @return 缁撴灉
      */
     @Override
-    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
-    {
-        if (StringUtils.isNull(userList) || userList.size() == 0)
-        {
+    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
+        if (StringUtils.isNull(userList) || userList.size() == 0) {
             throw new ServiceException("瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛�");
         }
         int successNum = 0;
         int failureNum = 0;
+        List<SysUser> insertList = new ArrayList<>();
+        List<SysUser> updateList = new ArrayList<>();
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
-        for (SysUser user : userList)
-        {
-            try
-            {
+
+        for (SysUser user : userList) {
+            try {
                 // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛
                 SysUser u = userMapper.selectUserByUserName(user.getUserName());
-                if (StringUtils.isNull(u))
-                {
+                if (StringUtils.isNull(u)) {
                     BeanValidators.validateWithException(validator, user);
                     deptService.checkDeptDataScope(user.getDeptId());
                     String password = configService.selectConfigByKey("sys.user.initPassword");
                     user.setPassword(SecurityUtils.encryptPassword(password));
                     user.setCreateBy(operName);
-                    userMapper.insertUser(user);
+                    if (userMapper.insertUser(user) > 0) {
+                        insertList.add(user);
+                    }
                     successNum++;
                     successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛");
-                }
-                else if (isUpdateSupport)
-                {
+                } else if (isUpdateSupport) {
                     BeanValidators.validateWithException(validator, user);
                     checkUserAllowed(u);
                     checkUserDataScope(u.getUserId());
                     deptService.checkDeptDataScope(user.getDeptId());
                     user.setUserId(u.getUserId());
                     user.setUpdateBy(operName);
-                    userMapper.updateUser(user);
+                    if (userMapper.updateUser(user) > 0) {
+                        updateList.add(user);
+                    }
                     successNum++;
                     successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛");
-                }
-                else
-                {
+                } else {
                     failureNum++;
                     failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�");
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 failureNum++;
                 String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�";
                 failureMsg.append(msg + e.getMessage());
                 log.error(msg, e);
             }
         }
-        if (failureNum > 0)
-        {
+        if (insertList.size() > 0) {
+            syncUserService.insertUsers(insertList);
+        }
+        if (updateList.size() > 0) {
+            syncUserService.updateUsers(updateList);
+        }
+        if (failureNum > 0) {
             failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
             throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
+        } else {
             successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
         }
         return successMsg.toString();
     }
-
 }
diff --git a/se-modules/se-system/src/main/resources/bootstrap.yml b/se-modules/se-system/src/main/resources/bootstrap.yml
index 60963fc..760e409 100644
--- a/se-modules/se-system/src/main/resources/bootstrap.yml
+++ b/se-modules/se-system/src/main/resources/bootstrap.yml
@@ -12,16 +12,17 @@
     active: dev
   cloud:
     nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
       discovery:
         # 鏈嶅姟娉ㄥ唽鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
       config:
         # 閰嶇疆涓績鍦板潃
-        #server-addr: 192.168.11.203:8848
         server-addr: 127.0.0.1:8848
         # 閰嶇疆鏂囦欢鏍煎紡
         file-extension: yml
         # 鍏变韩閰嶇疆
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+enableEncrypt: false
\ No newline at end of file
diff --git a/se-modules/se-system/src/main/resources/logback.xml b/se-modules/se-system/src/main/resources/logback.xml
index 1f21d36..a60457c 100644
--- a/se-modules/se-system/src/main/resources/logback.xml
+++ b/se-modules/se-system/src/main/resources/logback.xml
@@ -57,7 +57,7 @@
         </filter>
     </appender>
 
-    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->
+    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗:info,debug  -->
 	<logger name="com.se" level="info" />
 	<!-- Spring鏃ュ織绾у埆鎺у埗  -->
 	<logger name="org.springframework" level="warn" />
diff --git a/se-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml b/se-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml
index 96e77e2..f5e0ae9 100644
--- a/se-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/se-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -26,10 +26,11 @@
 		<result property="updateTime"     column="update_time"    />
 		<result property="updateBy"       column="update_by"      />
 		<result property="remark"         column="remark"         />
+		<result property="mark"           column="mark"         />
 	</resultMap>
 
 	<sql id="selectMenuVo">
-        select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time 
+        select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time, mark
 		from sys_menu
     </sql>
     
@@ -50,13 +51,13 @@
 	</select>
 	
 	<select id="selectMenuTreeAll" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time, m.mark
 		from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0
 		order by m.parent_id, m.order_num
 	</select>
 	
 	<select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time, m.mark
 		from sys_menu m
 		left join sys_role_menu rm on m.menu_id = rm.menu_id
 		left join sys_user_role ur on rm.role_id = ur.role_id
@@ -73,18 +74,41 @@
 		</if>
 		order by m.parent_id, m.order_num
 	</select>
-    
-    <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+
+    <select id="selectMenuTreeByUserId" resultMap="SysMenuResult">
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time, m.mark
 		from sys_menu m
 			 left join sys_role_menu rm on m.menu_id = rm.menu_id
 			 left join sys_user_role ur on rm.role_id = ur.role_id
 			 left join sys_role ro on ur.role_id = ro.role_id
 			 left join sys_user u on ur.user_id = u.user_id
-		where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0  AND ro.status = 0
+		where m.menu_type in ('M', 'C') and m.status = 0 and ro.status = 0
+			<if test="userId != null and userId != ''">
+				and u.user_id = #{userId}
+			</if>
+			<if test="mark != null and mark != ''">
+				and m.mark = #{mark}
+			</if>
 		order by m.parent_id, m.order_num
 	</select>
-	
+
+	<select id="selectMenusByUserIdAndMark" resultMap="SysMenuResult">
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time, m.mark
+		from sys_menu m
+			left join sys_role_menu rm on m.menu_id = rm.menu_id
+			left join sys_user_role ur on rm.role_id = ur.role_id
+			left join sys_role ro on ur.role_id = ro.role_id
+			left join sys_user u on ur.user_id = u.user_id
+		where m.menu_type in ('M', 'C', 'F') and m.status = 0 and ro.status = 0
+			<if test="userId != null and userId != ''">
+				and u.user_id = #{userId}
+			</if>
+			<if test="mark != null and mark != ''">
+				and m.mark = #{mark}
+			</if>
+		order by m.parent_id, m.order_num
+	</select>
+
 	<select id="selectMenuListByRoleId" resultType="Long">
 		select m.menu_id
 		from sys_menu m
@@ -152,6 +176,7 @@
 			<if test="icon !=null and icon != ''">icon = #{icon},</if>
 			<if test="remark != null and remark != ''">remark = #{remark},</if>
 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+			<if test="mark != null and mark != ''">mark = #{mark},</if>
 			update_time = sysdate()
 		</set>
 		where menu_id = #{menuId}
@@ -176,6 +201,7 @@
 		<if test="icon != null and icon != ''">icon,</if>
 		<if test="remark != null and remark != ''">remark,</if>
 		<if test="createBy != null and createBy != ''">create_by,</if>
+		<if test="mark != null and mark != ''">mark,</if>
 		create_time
 		)values(
 		<if test="menuId != null and menuId != 0">#{menuId},</if>
@@ -195,6 +221,7 @@
 		<if test="icon != null and icon != ''">#{icon},</if>
 		<if test="remark != null and remark != ''">#{remark},</if>
 		<if test="createBy != null and createBy != ''">#{createBy},</if>
+		<if test="mark != null and mark != ''">#{mark},</if>
 		sysdate()
 		)
 	</insert>
diff --git a/se-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml b/se-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml
index cf65b3e..c324b3d 100644
--- a/se-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/se-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -130,6 +130,11 @@
 		<include refid="selectUserVo"/>
 		where u.user_id = #{userId}
 	</select>
+
+	<select id="selectUserByIds" resultMap="SysUserResult">
+		<include refid="selectUserVo"/>
+		where u.user_id in (${ids})
+	</select>
 	
 	<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1

--
Gitblit v1.9.3