From 0f8fd77e9b323cd3712d6ab18723c8716def5311 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 16 八月 2024 17:22:04 +0800
Subject: [PATCH] 1

---
 ruoyi-modules/se-file/src/main/resources/banner.txt                                            |    0 
 se-visual/se-monitor/src/main/resources/bootstrap.yml                                          |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java       |  179 
 se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java                         |   87 
 ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java                               |  171 
 se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java                             |   48 
 ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java                        |   82 
 ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm                                   |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java         |   48 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java              |   83 
 se-auth/src/main/resources/bootstrap.yml                                                       |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java          |  240 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java        |  134 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java                        |  124 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java          |  131 
 se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java                         |   65 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java       |  154 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java                    |   46 
 ruoyi-modules/se-file/src/main/resources/logback.xml                                           |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java                              |   63 
 se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java                                 |  135 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml                 |    0 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml                     |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java                     |   19 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java               |   48 
 se-auth/src/main/java/com/se/auth/SeAuthApplication.java                                       |   22 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java              |   44 
 ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java              |   48 
 ruoyi-modules/se-gen/pom.xml                                                                   |    0 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java                       |   83 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java     |   93 
 se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java                            |   56 
 ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java         |   46 
 ruoyi-modules/se-system/src/main/resources/banner.txt                                          |    0 
 ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm                                 |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java                      |   64 
 ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java                         |   22 
 ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java                          |  182 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml                 |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java       |  338 +
 se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java           |   33 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java      |  122 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java                               |  258 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java                |   76 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java    |   77 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java       |  552 ++
 ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java                     |  185 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java                    |  212 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java                    |  148 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java                  |  127 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java                            |   66 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java               |  124 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml                 |    0 
 se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java                       |   23 
 ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java                      |  102 
 se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java                              |   83 
 ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm                                 |    0 
 se-gateway/src/main/resources/banner.txt                                                       |    3 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java       |  544 ++
 ruoyi-modules/se-system/src/main/resources/bootstrap.yml                                       |    0 
 se-auth/src/main/java/com/se/auth/service/SysPasswordService.java                              |   85 
 ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java                          |  141 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java                          |  409 +
 se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java              |  119 
 ruoyi-modules/se-job/src/main/resources/bootstrap.yml                                          |    0 
 se-visual/se-monitor/src/main/resources/banner.txt                                             |    3 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java                 |  522 +
 ruoyi-modules/se-job/src/main/resources/logback.xml                                            |    0 
 se-auth/src/main/resources/logback.xml                                                         |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java            |   49 
 ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java                |   86 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java                      |  102 
 se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java               |   46 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java                  |   99 
 se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java                   |   56 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java          |  133 
 se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java            |   30 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml                 |    0 
 se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java                   |   48 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java   |  111 
 se-auth/src/main/java/com/se/auth/form/RegisterBody.java                                       |   11 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java   |  223 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml                     |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java      |   21 
 se-visual/se-monitor/pom.xml                                                                   |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java        |   93 
 se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java                         |   75 
 ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java                            |   34 
 ruoyi-modules/se-job/src/main/resources/banner.txt                                             |    0 
 ruoyi-modules/se-system/src/main/resources/logback.xml                                         |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java                 |  187 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java                    |   46 
 se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java                       |   42 
 se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java                              |   20 
 ruoyi-modules/se-system/pom.xml                                                                |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java       |  428 +
 ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java                                 |   28 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml                     |    0 
 ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml                            |    0 
 ruoyi-modules/se-gen/src/main/resources/banner.txt                                             |    0 
 ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm                                |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java                   |  260 
 se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java                |   31 
 ruoyi-modules/se-gen/src/main/resources/logback.xml                                            |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java       |   78 
 se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java                                  |  129 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java                    |   34 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java              |   44 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java          |  341 +
 ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java                      |  107 
 ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm                                          |    0 
 ruoyi-modules/se-job/pom.xml                                                                   |    0 
 ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml              |  127 
 ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java                   |   56 
 ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java                            |  155 
 ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm                                    |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java                |   60 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java               |  173 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java                    |   46 
 ruoyi-modules/se-gen/src/main/resources/bootstrap.yml                                          |    0 
 ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm                                 |    0 
 se-gateway/pom.xml                                                                             |    0 
 se-auth/src/main/resources/banner.txt                                                          |    3 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java               |  206 
 se-auth/pom.xml                                                                                |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java              |   63 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml               |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java              |   95 
 se-gateway/src/main/resources/bootstrap.yml                                                    |    0 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml                 |    0 
 ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java                   |   20 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml                   |    0 
 ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml                         |    0 
 ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm                             |    0 
 se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java                         |   80 
 ruoyi-modules/se-file/pom.xml                                                                  |    0 
 ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java                    |   50 
 ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java                       |    0 
 se-auth/src/main/java/com/se/auth/form/LoginBody.java                                          |   39 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java                        |  274 +
 se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java                   |   41 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java                 |   60 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml                   |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java         |   40 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java         |   29 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java |   89 
 ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java           |   50 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java                  |   77 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java                    |  121 
 ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm                               |    0 
 ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java                         |   67 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java |   86 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java                  |  107 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java                    |   46 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java           |   98 
 se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java                              |   23 
 ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java           |   50 
 ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java              |   92 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java          |  160 
 se-auth/src/main/java/com/se/auth/service/SysLoginService.java                                 |  161 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java             |   60 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java    |   84 
 se-gateway/src/main/resources/logback.xml                                                      |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java                      |  111 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java           |   69 
 se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java    |   51 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java |   65 
 ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm                                        |    0 
 se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java                            |   79 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java                      |  106 
 ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm                            |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java            |   42 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java    |   92 
 ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java                  |  100 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml                  |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java                  |  126 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java           |   60 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml                     |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java               |  144 
 ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java      |  132 
 ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java                |   25 
 se-auth/src/main/java/com/se/auth/controller/TokenController.java                              |   79 
 ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm                             |    0 
 ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml                    |  206 
 se-visual/se-monitor/src/main/resources/logback.xml                                            |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java               |   99 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml                     |    0 
 ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml                 |    0 
 /dev/null                                                                                      |   10 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java                             |  383 +
 ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java             |   82 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java                            |   34 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java              |   44 
 ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java                       |  374 +
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java                  |  118 
 ruoyi-modules/se-file/src/main/resources/bootstrap.yml                                         |    0 
 ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm                            |    0 
 ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java              |   44 
 ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java     |  214 
 199 files changed, 15,728 insertions(+), 10 deletions(-)

diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
deleted file mode 100644
index a765fe9..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.auth;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import com.se.common.security.annotation.EnableRyFeignClients;
-
-/**
- * 璁よ瘉鎺堟潈涓績
- * 
- * @author admin
- */
-@EnableRyFeignClients
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
-public class RuoYiAuthApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiAuthApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  璁よ瘉鎺堟潈涓績鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
deleted file mode 100644
index 2b8fae6..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.ruoyi.auth.controller;
-
-import javax.servlet.http.HttpServletRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.auth.form.LoginBody;
-import com.ruoyi.auth.form.RegisterBody;
-import com.ruoyi.auth.service.SysLoginService;
-import com.se.common.core.domain.R;
-import com.se.common.core.utils.JwtUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.security.auth.AuthUtil;
-import com.se.common.security.service.TokenService;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.model.LoginUser;
-
-/**
- * token 鎺у埗
- * 
- * @author admin
- */
-@RestController
-public class TokenController
-{
-    @Autowired
-    private TokenService tokenService;
-
-    @Autowired
-    private SysLoginService sysLoginService;
-
-    @PostMapping("login")
-    public R<?> login(@RequestBody LoginBody form)
-    {
-        // 鐢ㄦ埛鐧诲綍
-        LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
-        // 鑾峰彇鐧诲綍token
-        return R.ok(tokenService.createToken(userInfo));
-    }
-
-    @DeleteMapping("logout")
-    public R<?> logout(HttpServletRequest request)
-    {
-        String token = SecurityUtils.getToken(request);
-        if (StringUtils.isNotEmpty(token))
-        {
-            String username = JwtUtils.getUserName(token);
-            // 鍒犻櫎鐢ㄦ埛缂撳瓨璁板綍
-            AuthUtil.logoutByToken(token);
-            // 璁板綍鐢ㄦ埛閫�鍑烘棩蹇�
-            sysLoginService.logout(username);
-        }
-        return R.ok();
-    }
-
-    @PostMapping("refresh")
-    public R<?> refresh(HttpServletRequest request)
-    {
-        LoginUser loginUser = tokenService.getLoginUser(request);
-        if (StringUtils.isNotNull(loginUser))
-        {
-            // 鍒锋柊浠ょ墝鏈夋晥鏈�
-            tokenService.refreshToken(loginUser);
-            return R.ok();
-        }
-        return R.ok();
-    }
-
-    @PostMapping("register")
-    public R<?> register(@RequestBody RegisterBody registerBody)
-    {
-        // 鐢ㄦ埛娉ㄥ唽
-        sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
-        return R.ok();
-    }
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java
deleted file mode 100644
index 83b9b07..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/LoginBody.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.auth.form;
-
-/**
- * 鐢ㄦ埛鐧诲綍瀵硅薄
- * 
- * @author admin
- */
-public class LoginBody
-{
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    private String username;
-
-    /**
-     * 鐢ㄦ埛瀵嗙爜
-     */
-    private String password;
-
-    public String getUsername()
-    {
-        return username;
-    }
-
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java
deleted file mode 100644
index b69aaa4..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/form/RegisterBody.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.ruoyi.auth.form;
-
-/**
- * 鐢ㄦ埛娉ㄥ唽瀵硅薄
- * 
- * @author admin
- */
-public class RegisterBody extends LoginBody
-{
-
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
deleted file mode 100644
index 89f23be..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package com.ruoyi.auth.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.constant.SecurityConstants;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.domain.R;
-import com.se.common.core.enums.UserStatus;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.text.Convert;
-import com.se.common.core.utils.DateUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.ip.IpUtils;
-import com.se.common.redis.service.RedisService;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.RemoteUserService;
-import com.se.system.api.domain.SysUser;
-import com.se.system.api.model.LoginUser;
-
-/**
- * 鐧诲綍鏍¢獙鏂规硶
- * 
- * @author admin
- */
-@Component
-public class SysLoginService
-{
-    @Autowired
-    private RemoteUserService remoteUserService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @Autowired
-    private SysRecordLogService recordLogService;
-
-    @Autowired
-    private RedisService redisService;
-
-    /**
-     * 鐧诲綍
-     */
-    public LoginUser login(String username, String password)
-    {
-        // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒
-        if (StringUtils.isAnyBlank(username, password))
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
-            throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
-        }
-        // 瀵嗙爜濡傛灉涓嶅湪鎸囧畾鑼冨洿鍐� 閿欒
-        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
-                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿");
-            throw new ServiceException("鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿");
-        }
-        // 鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥村唴 閿欒
-        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
-                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�");
-            throw new ServiceException("鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�");
-        }
-        // IP榛戝悕鍗曟牎楠�
-        String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
-        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�");
-            throw new ServiceException("寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�");
-        }
-        // 鏌ヨ鐢ㄦ埛淇℃伅
-        R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
-
-        if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐧诲綍鐢ㄦ埛涓嶅瓨鍦�");
-            throw new ServiceException("鐧诲綍鐢ㄦ埛锛�" + username + " 涓嶅瓨鍦�");
-        }
-
-        if (R.FAIL == userResult.getCode())
-        {
-            throw new ServiceException(userResult.getMsg());
-        }
-        
-        LoginUser userInfo = userResult.getData();
-        SysUser user = userResult.getData().getSysUser();
-        if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿宸茶鍒犻櫎");
-            throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸茶鍒犻櫎");
-        }
-        if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
-        {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛宸插仠鐢紝璇疯仈绯荤鐞嗗憳");
-            throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸插仠鐢�");
-        }
-        passwordService.validate(user, password);
-        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "鐧诲綍鎴愬姛");
-        recordLoginInfo(user.getUserId());
-        return userInfo;
-    }
-
-    /**
-     * 璁板綍鐧诲綍淇℃伅
-     *
-     * @param userId 鐢ㄦ埛ID
-     */
-    public void recordLoginInfo(Long userId)
-    {
-        SysUser sysUser = new SysUser();
-        sysUser.setUserId(userId);
-        // 鏇存柊鐢ㄦ埛鐧诲綍IP
-        sysUser.setLoginIp(IpUtils.getIpAddr());
-        // 鏇存柊鐢ㄦ埛鐧诲綍鏃堕棿
-        sysUser.setLoginDate(DateUtils.getNowDate());
-        remoteUserService.recordUserLogin(sysUser, SecurityConstants.INNER);
-    }
-
-    public void logout(String loginName)
-    {
-        recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "閫�鍑烘垚鍔�");
-    }
-
-    /**
-     * 娉ㄥ唽
-     */
-    public void register(String username, String password)
-    {
-        // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒
-        if (StringUtils.isAnyBlank(username, password))
-        {
-            throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
-        }
-        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
-                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
-        {
-            throw new ServiceException("璐︽埛闀垮害蹇呴』鍦�2鍒�20涓瓧绗︿箣闂�");
-        }
-        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
-                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
-        {
-            throw new ServiceException("瀵嗙爜闀垮害蹇呴』鍦�5鍒�20涓瓧绗︿箣闂�");
-        }
-
-        // 娉ㄥ唽鐢ㄦ埛淇℃伅
-        SysUser sysUser = new SysUser();
-        sysUser.setUserName(username);
-        sysUser.setNickName(username);
-        sysUser.setPassword(SecurityUtils.encryptPassword(password));
-        R<?> registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER);
-
-        if (R.FAIL == registerResult.getCode())
-        {
-            throw new ServiceException(registerResult.getMsg());
-        }
-        recordLogService.recordLogininfor(username, Constants.REGISTER, "娉ㄥ唽鎴愬姛");
-    }
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
deleted file mode 100644
index f9260c9..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.ruoyi.auth.service;
-
-import java.util.concurrent.TimeUnit;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.redis.service.RedisService;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysUser;
-
-/**
- * 鐧诲綍瀵嗙爜鏂规硶
- * 
- * @author admin
- */
-@Component
-public class SysPasswordService
-{
-    @Autowired
-    private RedisService redisService;
-
-    private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT;
-
-    private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME;
-
-    @Autowired
-    private SysRecordLogService recordLogService;
-
-    /**
-     * 鐧诲綍璐︽埛瀵嗙爜閿欒娆℃暟缂撳瓨閿悕
-     * 
-     * @param username 鐢ㄦ埛鍚�
-     * @return 缂撳瓨閿甼ey
-     */
-    private String getCacheKey(String username)
-    {
-        return CacheConstants.PWD_ERR_CNT_KEY + username;
-    }
-
-    public void validate(SysUser user, String password)
-    {
-        String username = user.getUserName();
-
-        Integer retryCount = redisService.getCacheObject(getCacheKey(username));
-
-        if (retryCount == null)
-        {
-            retryCount = 0;
-        }
-
-        if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
-        {
-            String errMsg = String.format("瀵嗙爜杈撳叆閿欒%s娆★紝甯愭埛閿佸畾%s鍒嗛挓", maxRetryCount, lockTime);
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
-            throw new ServiceException(errMsg);
-        }
-
-        if (!matches(user, password))
-        {
-            retryCount = retryCount + 1;
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("瀵嗙爜杈撳叆閿欒%s娆�", retryCount));
-            redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
-            throw new ServiceException("鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒");
-        }
-        else
-        {
-            clearLoginRecordCache(username);
-        }
-    }
-
-    public boolean matches(SysUser user, String rawPassword)
-    {
-        return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
-    }
-
-    public void clearLoginRecordCache(String loginName)
-    {
-        if (redisService.hasKey(getCacheKey(loginName)))
-        {
-            redisService.deleteObject(getCacheKey(loginName));
-        }
-    }
-}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
deleted file mode 100644
index 03fd29e..0000000
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ruoyi.auth.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.constant.SecurityConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.ip.IpUtils;
-import com.se.system.api.RemoteLogService;
-import com.se.system.api.domain.SysLogininfor;
-
-/**
- * 璁板綍鏃ュ織鏂规硶
- * 
- * @author admin
- */
-@Component
-public class SysRecordLogService
-{
-    @Autowired
-    private RemoteLogService remoteLogService;
-
-    /**
-     * 璁板綍鐧诲綍淇℃伅
-     * 
-     * @param username 鐢ㄦ埛鍚�
-     * @param status 鐘舵��
-     * @param message 娑堟伅鍐呭
-     * @return
-     */
-    public void recordLogininfor(String username, String status, String message)
-    {
-        SysLogininfor logininfor = new SysLogininfor();
-        logininfor.setUserName(username);
-        logininfor.setIpaddr(IpUtils.getIpAddr());
-        logininfor.setMsg(message);
-        // 鏃ュ織鐘舵��
-        if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER))
-        {
-            logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
-        }
-        else if (Constants.LOGIN_FAIL.equals(status))
-        {
-            logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
-        }
-        remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER);
-    }
-}
diff --git a/ruoyi-auth/src/main/resources/banner.txt b/ruoyi-auth/src/main/resources/banner.txt
deleted file mode 100644
index 97c5c27..0000000
--- a/ruoyi-auth/src/main/resources/banner.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Spring Boot Version: ${spring-boot.version}
-Spring Application Name: ${spring.application.name}
-                            _                        _    _     
-                           (_)                      | |  | |    
- _ __  _   _   ___   _   _  _  ______   __ _  _   _ | |_ | |__  
-| '__|| | | | / _ \ | | | || ||______| / _` || | | || __|| '_ \ 
-| |   | |_| || (_) || |_| || |        | (_| || |_| || |_ | | | |
-|_|    \__,_| \___/  \__, ||_|         \__,_| \__,_| \__||_| |_|
-                      __/ |                                     
-                     |___/                                      
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java
deleted file mode 100644
index 9b7fa5f..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/RuoYiGatewayApplication.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.gateway;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-
-/**
- * 缃戝叧鍚姩绋嬪簭
- * 
- * @author admin
- */
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
-public class RuoYiGatewayApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiGatewayApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鑻ヤ緷缃戝叧鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java
deleted file mode 100644
index 5e23e35..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/CaptchaConfig.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.ruoyi.gateway.config;
-
-import java.util.Properties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.google.code.kaptcha.impl.DefaultKaptcha;
-import com.google.code.kaptcha.util.Config;
-import static com.google.code.kaptcha.Constants.*;
-
-/**
- * 楠岃瘉鐮侀厤缃�
- * 
- * @author admin
- */
-@Configuration
-public class CaptchaConfig
-{
-    @Bean(name = "captchaProducer")
-    public DefaultKaptcha getKaptchaBean()
-    {
-        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
-        Properties properties = new Properties();
-        // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o
-        properties.setProperty(KAPTCHA_BORDER, "yes");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
-        // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200
-        properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
-        // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50
-        properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
-        // KAPTCHA_SESSION_KEY
-        properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
-        // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
-        // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy
-        properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
-        Config config = new Config(properties);
-        defaultKaptcha.setConfig(config);
-        return defaultKaptcha;
-    }
-    
-    @Bean(name = "captchaProducerMath")
-    public DefaultKaptcha getKaptchaBeanMath()
-    {
-        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
-        Properties properties = new Properties();
-        // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o
-        properties.setProperty(KAPTCHA_BORDER, "yes");
-        // 杈规棰滆壊 榛樿涓篊olor.BLACK
-        properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
-        // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200
-        properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
-        // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50
-        properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35");
-        // KAPTCHA_SESSION_KEY
-        properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
-        // 楠岃瘉鐮佹枃鏈敓鎴愬櫒
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.gateway.config.KaptchaTextCreator");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹂棿璺� 榛樿涓�2
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
-        // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");
-        // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
-        // 楠岃瘉鐮佸櫔鐐归鑹� 榛樿涓篊olor.BLACK
-        properties.setProperty(KAPTCHA_NOISE_COLOR, "white");
-        // 骞叉壈瀹炵幇绫�
-        properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
-        // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy
-        properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
-        Config config = new Config(properties);
-        defaultKaptcha.setConfig(config);
-        return defaultKaptcha;
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java
deleted file mode 100644
index 4abfb1f..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.gateway.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import com.ruoyi.gateway.handler.SentinelFallbackHandler;
-
-/**
- * 缃戝叧闄愭祦閰嶇疆
- * 
- * @author admin
- */
-@Configuration
-public class GatewayConfig
-{
-    @Bean
-    @Order(Ordered.HIGHEST_PRECEDENCE)
-    public SentinelFallbackHandler sentinelGatewayExceptionHandler()
-    {
-        return new SentinelFallbackHandler();
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java
deleted file mode 100644
index 7583f4e..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.ruoyi.gateway.config;
-
-import java.util.Random;
-import com.google.code.kaptcha.text.impl.DefaultTextCreator;
-
-/**
- * 楠岃瘉鐮佹枃鏈敓鎴愬櫒
- * 
- * @author admin
- */
-public class KaptchaTextCreator extends DefaultTextCreator
-{
-    private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(",");
-
-    @Override
-    public String getText()
-    {
-        Integer result = 0;
-        Random random = new Random();
-        int x = random.nextInt(10);
-        int y = random.nextInt(10);
-        StringBuilder suChinese = new StringBuilder();
-        int randomoperands = random.nextInt(3);
-        if (randomoperands == 0)
-        {
-            result = x * y;
-            suChinese.append(CNUMBERS[x]);
-            suChinese.append("*");
-            suChinese.append(CNUMBERS[y]);
-        }
-        else if (randomoperands == 1)
-        {
-            if ((x != 0) && y % x == 0)
-            {
-                result = y / x;
-                suChinese.append(CNUMBERS[y]);
-                suChinese.append("/");
-                suChinese.append(CNUMBERS[x]);
-            }
-            else
-            {
-                result = x + y;
-                suChinese.append(CNUMBERS[x]);
-                suChinese.append("+");
-                suChinese.append(CNUMBERS[y]);
-            }
-        }
-        else if (randomoperands == 2)
-        {
-            if (x >= y)
-            {
-                result = x - y;
-                suChinese.append(CNUMBERS[x]);
-                suChinese.append("-");
-                suChinese.append(CNUMBERS[y]);
-            }
-            else
-            {
-                result = y - x;
-                suChinese.append(CNUMBERS[y]);
-                suChinese.append("-");
-                suChinese.append(CNUMBERS[x]);
-            }
-        }
-        else
-        {
-            result = x + y;
-            suChinese.append(CNUMBERS[x]);
-            suChinese.append("+");
-            suChinese.append(CNUMBERS[y]);
-        }
-        suChinese.append("=?@" + result);
-        return suChinese.toString();
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java
deleted file mode 100644
index 4320db1..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.gateway.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.web.reactive.function.server.RequestPredicates;
-import org.springframework.web.reactive.function.server.RouterFunction;
-import org.springframework.web.reactive.function.server.RouterFunctions;
-import com.ruoyi.gateway.handler.ValidateCodeHandler;
-
-/**
- * 璺敱閰嶇疆淇℃伅
- * 
- * @author admin
- */
-@Configuration
-public class RouterFunctionConfiguration
-{
-    @Autowired
-    private ValidateCodeHandler validateCodeHandler;
-
-    @SuppressWarnings("rawtypes")
-    @Bean
-    public RouterFunction routerFunction()
-    {
-        return RouterFunctions.route(
-                RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
-                validateCodeHandler);
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java
deleted file mode 100644
index 5c06161..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.gateway.config;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.config.GatewayProperties;
-import org.springframework.cloud.gateway.route.RouteLocator;
-import org.springframework.cloud.gateway.support.NameUtils;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.config.ResourceHandlerRegistry;
-import org.springframework.web.reactive.config.WebFluxConfigurer;
-import springfox.documentation.swagger.web.SwaggerResource;
-import springfox.documentation.swagger.web.SwaggerResourcesProvider;
-
-/**
- * 鑱氬悎绯荤粺鎺ュ彛
- * 
- * @author admin
- */
-@Component
-public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer
-{
-    /**
-     * Swagger2榛樿鐨剈rl鍚庣紑
-     */
-    public static final String SWAGGER2URL = "/v2/api-docs";
-
-    /**
-     * 缃戝叧璺敱
-     */
-    @Lazy
-    @Autowired
-    private RouteLocator routeLocator;
-
-    @Autowired
-    private GatewayProperties gatewayProperties;
-
-    /**
-     * 鑱氬悎鍏朵粬鏈嶅姟鎺ュ彛
-     * 
-     * @return
-     */
-    @Override
-    public List<SwaggerResource> get()
-    {
-        List<SwaggerResource> resourceList = new ArrayList<>();
-        List<String> routes = new ArrayList<>();
-        // 鑾峰彇缃戝叧涓厤缃殑route
-        routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
-        gatewayProperties.getRoutes().stream()
-                .filter(routeDefinition -> routes
-                        .contains(routeDefinition.getId()))
-                .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
-                        .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
-                        .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId()))
-                        .forEach(predicateDefinition -> resourceList
-                                .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs()
-                                        .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL)))));
-        return resourceList;
-    }
-
-    private SwaggerResource swaggerResource(String name, String location)
-    {
-        SwaggerResource swaggerResource = new SwaggerResource();
-        swaggerResource.setName(name);
-        swaggerResource.setLocation(location);
-        swaggerResource.setSwaggerVersion("2.0");
-        return swaggerResource;
-    }
-
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry)
-    {
-        /** swagger-ui 鍦板潃 */
-        registry.addResourceHandler("/swagger-ui/**")
-                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java
deleted file mode 100644
index ba5ee47..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/CaptchaProperties.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.gateway.config.properties;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 楠岃瘉鐮侀厤缃�
- * 
- * @author admin
- */
-@Configuration
-@RefreshScope
-@ConfigurationProperties(prefix = "security.captcha")
-public class CaptchaProperties
-{
-    /**
-     * 楠岃瘉鐮佸紑鍏�
-     */
-    private Boolean enabled;
-
-    /**
-     * 楠岃瘉鐮佺被鍨嬶紙math 鏁扮粍璁$畻 char 瀛楃锛�
-     */
-    private String type;
-
-    public Boolean getEnabled()
-    {
-        return enabled;
-    }
-
-    public void setEnabled(Boolean enabled)
-    {
-        this.enabled = enabled;
-    }
-
-    public String getType()
-    {
-        return type;
-    }
-
-    public void setType(String type)
-    {
-        this.type = type;
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java
deleted file mode 100644
index 41475c2..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.ruoyi.gateway.config.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 鏀捐鐧藉悕鍗曢厤缃�
- * 
- * @author admin
- */
-@Configuration
-@RefreshScope
-@ConfigurationProperties(prefix = "security.ignore")
-public class IgnoreWhiteProperties
-{
-    /**
-     * 鏀捐鐧藉悕鍗曢厤缃紝缃戝叧涓嶆牎楠屾澶勭殑鐧藉悕鍗�
-     */
-    private List<String> whites = new ArrayList<>();
-
-    public List<String> getWhites()
-    {
-        return whites;
-    }
-
-    public void setWhites(List<String> whites)
-    {
-        this.whites = whites;
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java
deleted file mode 100644
index 13cef90..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/properties/XssProperties.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ruoyi.gateway.config.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * XSS璺ㄧ珯鑴氭湰閰嶇疆
- * 
- * @author admin
- */
-@Configuration
-@RefreshScope
-@ConfigurationProperties(prefix = "security.xss")
-public class XssProperties
-{
-    /**
-     * Xss寮�鍏�
-     */
-    private Boolean enabled;
-
-    /**
-     * 鎺掗櫎璺緞
-     */
-    private List<String> excludeUrls = new ArrayList<>();
-
-    public Boolean getEnabled()
-    {
-        return enabled;
-    }
-
-    public void setEnabled(Boolean enabled)
-    {
-        this.enabled = enabled;
-    }
-
-    public List<String> getExcludeUrls()
-    {
-        return excludeUrls;
-    }
-
-    public void setExcludeUrls(List<String> excludeUrls)
-    {
-        this.excludeUrls = excludeUrls;
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
deleted file mode 100644
index 5a01482..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.ruoyi.gateway.filter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.stereotype.Component;
-import org.springframework.web.server.ServerWebExchange;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.constant.HttpStatus;
-import com.se.common.core.constant.SecurityConstants;
-import com.se.common.core.constant.TokenConstants;
-import com.se.common.core.utils.JwtUtils;
-import com.se.common.core.utils.ServletUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.redis.service.RedisService;
-import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties;
-import io.jsonwebtoken.Claims;
-import reactor.core.publisher.Mono;
-
-/**
- * 缃戝叧閴存潈
- * 
- * @author admin
- */
-@Component
-public class AuthFilter implements GlobalFilter, Ordered
-{
-    private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
-
-    // 鎺掗櫎杩囨护鐨� uri 鍦板潃锛宯acos鑷娣诲姞
-    @Autowired
-    private IgnoreWhiteProperties ignoreWhite;
-
-    @Autowired
-    private RedisService redisService;
-
-
-    @Override
-    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
-    {
-        ServerHttpRequest request = exchange.getRequest();
-        ServerHttpRequest.Builder mutate = request.mutate();
-
-        String url = request.getURI().getPath();
-        // 璺宠繃涓嶉渶瑕侀獙璇佺殑璺緞
-        if (StringUtils.matches(url, ignoreWhite.getWhites()))
-        {
-            return chain.filter(exchange);
-        }
-        String token = getToken(request);
-        if (StringUtils.isEmpty(token))
-        {
-            return unauthorizedResponse(exchange, "浠ょ墝涓嶈兘涓虹┖");
-        }
-        Claims claims = JwtUtils.parseToken(token);
-        if (claims == null)
-        {
-            return unauthorizedResponse(exchange, "浠ょ墝宸茶繃鏈熸垨楠岃瘉涓嶆纭紒");
-        }
-        String userkey = JwtUtils.getUserKey(claims);
-        boolean islogin = redisService.hasKey(getTokenKey(userkey));
-        if (!islogin)
-        {
-            return unauthorizedResponse(exchange, "鐧诲綍鐘舵�佸凡杩囨湡");
-        }
-        String userid = JwtUtils.getUserId(claims);
-        String username = JwtUtils.getUserName(claims);
-        if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
-        {
-            return unauthorizedResponse(exchange, "浠ょ墝楠岃瘉澶辫触");
-        }
-
-        // 璁剧疆鐢ㄦ埛淇℃伅鍒拌姹�
-        addHeader(mutate, SecurityConstants.USER_KEY, userkey);
-        addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
-        addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
-        // 鍐呴儴璇锋眰鏉ユ簮鍙傛暟娓呴櫎
-        removeHeader(mutate, SecurityConstants.FROM_SOURCE);
-        return chain.filter(exchange.mutate().request(mutate.build()).build());
-    }
-
-    private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value)
-    {
-        if (value == null)
-        {
-            return;
-        }
-        String valueStr = value.toString();
-        String valueEncode = ServletUtils.urlEncode(valueStr);
-        mutate.header(name, valueEncode);
-    }
-
-    private void removeHeader(ServerHttpRequest.Builder mutate, String name)
-    {
-        mutate.headers(httpHeaders -> httpHeaders.remove(name)).build();
-    }
-
-    private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg)
-    {
-        log.error("[閴存潈寮傚父澶勭悊]璇锋眰璺緞:{}", exchange.getRequest().getPath());
-        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED);
-    }
-
-    /**
-     * 鑾峰彇缂撳瓨key
-     */
-    private String getTokenKey(String token)
-    {
-        return CacheConstants.LOGIN_TOKEN_KEY + token;
-    }
-
-    /**
-     * 鑾峰彇璇锋眰token
-     */
-    private String getToken(ServerHttpRequest request)
-    {
-        String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
-        // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂�
-        if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
-        {
-            token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
-        }
-        return token;
-    }
-
-    @Override
-    public int getOrder()
-    {
-        return -200;
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java
deleted file mode 100644
index ddea86b..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ruoyi.gateway.filter;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.stereotype.Component;
-import com.se.common.core.utils.ServletUtils;
-
-/**
- * 榛戝悕鍗曡繃婊ゅ櫒
- * 
- * @author admin
- */
-@Component
-public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config>
-{
-    @Override
-    public GatewayFilter apply(Config config)
-    {
-        return (exchange, chain) -> {
-
-            String url = exchange.getRequest().getURI().getPath();
-            if (config.matchBlacklist(url))
-            {
-                return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰鍦板潃涓嶅厑璁歌闂�");
-            }
-
-            return chain.filter(exchange);
-        };
-    }
-
-    public BlackListUrlFilter()
-    {
-        super(Config.class);
-    }
-
-    public static class Config
-    {
-        private List<String> blacklistUrl;
-
-        private List<Pattern> blacklistUrlPattern = new ArrayList<>();
-
-        public boolean matchBlacklist(String url)
-        {
-            return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find());
-        }
-
-        public List<String> getBlacklistUrl()
-        {
-            return blacklistUrl;
-        }
-
-        public void setBlacklistUrl(List<String> blacklistUrl)
-        {
-            this.blacklistUrl = blacklistUrl;
-            this.blacklistUrlPattern.clear();
-            this.blacklistUrl.forEach(url -> {
-                this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE));
-            });
-        }
-    }
-
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java
deleted file mode 100644
index 0954768..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.ruoyi.gateway.filter;
-
-import java.util.Collections;
-import java.util.List;
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.OrderedGatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
-import org.springframework.http.HttpMethod;
-import org.springframework.stereotype.Component;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-/**
- * 鑾峰彇body璇锋眰鏁版嵁锛堣В鍐虫祦涓嶈兘閲嶅璇诲彇闂锛�
- * 
- * @author admin
- */
-@Component
-public class CacheRequestFilter extends AbstractGatewayFilterFactory<CacheRequestFilter.Config>
-{
-    public CacheRequestFilter()
-    {
-        super(Config.class);
-    }
-
-    @Override
-    public String name()
-    {
-        return "CacheRequestFilter";
-    }
-
-    @Override
-    public GatewayFilter apply(Config config)
-    {
-        CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter();
-        Integer order = config.getOrder();
-        if (order == null)
-        {
-            return cacheRequestGatewayFilter;
-        }
-        return new OrderedGatewayFilter(cacheRequestGatewayFilter, order);
-    }
-
-    public static class CacheRequestGatewayFilter implements GatewayFilter
-    {
-        @Override
-        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
-        {
-            // GET DELETE 涓嶈繃婊�
-            HttpMethod method = exchange.getRequest().getMethod();
-            if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE)
-            {
-                return chain.filter(exchange);
-            }
-            return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> {
-                if (serverHttpRequest == exchange.getRequest())
-                {
-                    return chain.filter(exchange);
-                }
-                return chain.filter(exchange.mutate().request(serverHttpRequest).build());
-            });
-        }
-    }
-
-    @Override
-    public List<String> shortcutFieldOrder()
-    {
-        return Collections.singletonList("order");
-    }
-
-    static class Config
-    {
-        private Integer order;
-
-        public Integer getOrder()
-        {
-            return order;
-        }
-
-        public void setOrder(Integer order)
-        {
-            this.order = order;
-        }
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java
deleted file mode 100644
index 176c6e0..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.gateway.filter;
-
-import java.nio.CharBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.atomic.AtomicReference;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.core.io.buffer.DataBuffer;
-import org.springframework.core.io.buffer.DataBufferUtils;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.stereotype.Component;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import com.se.common.core.utils.ServletUtils;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.gateway.config.properties.CaptchaProperties;
-import com.ruoyi.gateway.service.ValidateCodeService;
-import reactor.core.publisher.Flux;
-
-/**
- * 楠岃瘉鐮佽繃婊ゅ櫒
- *
- * @author admin
- */
-@Component
-public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object>
-{
-    private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" };
-
-    @Autowired
-    private ValidateCodeService validateCodeService;
-
-    @Autowired
-    private CaptchaProperties captchaProperties;
-
-    private static final String CODE = "code";
-
-    private static final String UUID = "uuid";
-
-    @Override
-    public GatewayFilter apply(Object config)
-    {
-        return (exchange, chain) -> {
-            ServerHttpRequest request = exchange.getRequest();
-
-            // 闈炵櫥褰�/娉ㄥ唽璇锋眰鎴栭獙璇佺爜鍏抽棴锛屼笉澶勭悊
-            if (!StringUtils.equalsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled())
-            {
-                return chain.filter(exchange);
-            }
-
-            try
-            {
-                String rspStr = resolveBodyFromRequest(request);
-                JSONObject obj = JSON.parseObject(rspStr);
-                validateCodeService.checkCaptcha(obj.getString(CODE), obj.getString(UUID));
-            }
-            catch (Exception e)
-            {
-                return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage());
-            }
-            return chain.filter(exchange);
-        };
-    }
-
-    private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest)
-    {
-        // 鑾峰彇璇锋眰浣�
-        Flux<DataBuffer> body = serverHttpRequest.getBody();
-        AtomicReference<String> bodyRef = new AtomicReference<>();
-        body.subscribe(buffer -> {
-            CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer());
-            DataBufferUtils.release(buffer);
-            bodyRef.set(charBuffer.toString());
-        });
-        return bodyRef.get();
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java
deleted file mode 100644
index 9dd7999..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.ruoyi.gateway.filter;
-
-import java.nio.charset.StandardCharsets;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.core.io.buffer.DataBuffer;
-import org.springframework.core.io.buffer.DataBufferFactory;
-import org.springframework.core.io.buffer.DataBufferUtils;
-import org.springframework.core.io.buffer.DefaultDataBufferFactory;
-import org.springframework.core.io.buffer.NettyDataBufferFactory;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
-import org.springframework.stereotype.Component;
-import org.springframework.web.server.ServerWebExchange;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.html.EscapeUtil;
-import com.ruoyi.gateway.config.properties.XssProperties;
-import io.netty.buffer.ByteBufAllocator;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-/**
- * 璺ㄧ珯鑴氭湰杩囨护鍣�
- *
- * @author admin
- */
-@Component
-@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true")
-public class XssFilter implements GlobalFilter, Ordered
-{
-    // 璺ㄧ珯鑴氭湰鐨� xss 閰嶇疆锛宯acos鑷娣诲姞
-    @Autowired
-    private XssProperties xss;
-
-    @Override
-    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
-    {
-        ServerHttpRequest request = exchange.getRequest();
-        // xss寮�鍏虫湭寮�鍚� 鎴� 閫氳繃nacos鍏抽棴锛屼笉杩囨护
-        if (!xss.getEnabled())
-        {
-            return chain.filter(exchange);
-        }
-        // GET DELETE 涓嶈繃婊�
-        HttpMethod method = request.getMethod();
-        if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE)
-        {
-            return chain.filter(exchange);
-        }
-        // 闈瀓son绫诲瀷锛屼笉杩囨护
-        if (!isJsonRequest(exchange))
-        {
-            return chain.filter(exchange);
-        }
-        // excludeUrls 涓嶈繃婊�
-        String url = request.getURI().getPath();
-        if (StringUtils.matches(url, xss.getExcludeUrls()))
-        {
-            return chain.filter(exchange);
-        }
-        ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange);
-        return chain.filter(exchange.mutate().request(httpRequestDecorator).build());
-
-    }
-
-    private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange)
-    {
-        ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest())
-        {
-            @Override
-            public Flux<DataBuffer> getBody()
-            {
-                Flux<DataBuffer> body = super.getBody();
-                return body.buffer().map(dataBuffers -> {
-                    DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
-                    DataBuffer join = dataBufferFactory.join(dataBuffers);
-                    byte[] content = new byte[join.readableByteCount()];
-                    join.read(content);
-                    DataBufferUtils.release(join);
-                    String bodyStr = new String(content, StandardCharsets.UTF_8);
-                    // 闃瞲ss鏀诲嚮杩囨护
-                    bodyStr = EscapeUtil.clean(bodyStr);
-                    // 杞垚瀛楄妭
-                    byte[] bytes = bodyStr.getBytes(StandardCharsets.UTF_8);
-                    NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT);
-                    DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length);
-                    buffer.write(bytes);
-                    return buffer;
-                });
-            }
-
-            @Override
-            public HttpHeaders getHeaders()
-            {
-                HttpHeaders httpHeaders = new HttpHeaders();
-                httpHeaders.putAll(super.getHeaders());
-                // 鐢变簬淇敼浜嗚姹備綋鐨刡ody锛屽鑷碿ontent-length闀垮害涓嶇‘瀹氾紝鍥犳闇�瑕佸垹闄ゅ師鍏堢殑content-length
-                httpHeaders.remove(HttpHeaders.CONTENT_LENGTH);
-                httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
-                return httpHeaders;
-            }
-
-        };
-        return serverHttpRequestDecorator;
-    }
-
-    /**
-     * 鏄惁鏄疛son璇锋眰
-     * 
-     * @param exchange HTTP璇锋眰
-     */
-    public boolean isJsonRequest(ServerWebExchange exchange)
-    {
-        String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
-        return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
-    }
-
-    @Override
-    public int getOrder()
-    {
-        return -100;
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java
deleted file mode 100644
index 2b7d97f..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/GatewayExceptionHandler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ruoyi.gateway.handler;
-
-import org.springframework.cloud.gateway.support.NotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.annotation.Order;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.web.server.ResponseStatusException;
-import org.springframework.web.server.ServerWebExchange;
-import com.se.common.core.utils.ServletUtils;
-import reactor.core.publisher.Mono;
-
-/**
- * 缃戝叧缁熶竴寮傚父澶勭悊
- *
- * @author admin
- */
-@Order(-1)
-@Configuration
-public class GatewayExceptionHandler implements ErrorWebExceptionHandler
-{
-    private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class);
-
-    @Override
-    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
-    {
-        ServerHttpResponse response = exchange.getResponse();
-
-        if (exchange.getResponse().isCommitted())
-        {
-            return Mono.error(ex);
-        }
-
-        String msg;
-
-        if (ex instanceof NotFoundException)
-        {
-            msg = "鏈嶅姟鏈壘鍒�";
-        }
-        else if (ex instanceof ResponseStatusException)
-        {
-            ResponseStatusException responseStatusException = (ResponseStatusException) ex;
-            msg = responseStatusException.getMessage();
-        }
-        else
-        {
-            msg = "鍐呴儴鏈嶅姟鍣ㄩ敊璇�";
-        }
-
-        log.error("[缃戝叧寮傚父澶勭悊]璇锋眰璺緞:{},寮傚父淇℃伅:{}", exchange.getRequest().getPath(), ex.getMessage());
-
-        return ServletUtils.webFluxResponseWriter(response, msg);
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java
deleted file mode 100644
index d995686..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SentinelFallbackHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ruoyi.gateway.handler;
-
-import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager;
-import com.alibaba.csp.sentinel.slots.block.BlockException;
-import com.se.common.core.utils.ServletUtils;
-import org.springframework.web.reactive.function.server.ServerResponse;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.server.WebExceptionHandler;
-import reactor.core.publisher.Mono;
-
-/**
- * 鑷畾涔夐檺娴佸紓甯稿鐞�
- *
- * @author admin
- */
-public class SentinelFallbackHandler implements WebExceptionHandler
-{
-    private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange)
-    {
-        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰瓒呰繃鏈�澶ф暟锛岃绋嶅�欏啀璇�");
-    }
-
-    @Override
-    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
-    {
-        if (exchange.getResponse().isCommitted())
-        {
-            return Mono.error(ex);
-        }
-        if (!BlockException.isBlockException(ex))
-        {
-            return Mono.error(ex);
-        }
-        return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange));
-    }
-
-    private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable)
-    {
-        return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable);
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java
deleted file mode 100644
index daa21af..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ruoyi.gateway.handler;
-
-import java.util.Optional;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Mono;
-import springfox.documentation.swagger.web.SecurityConfiguration;
-import springfox.documentation.swagger.web.SecurityConfigurationBuilder;
-import springfox.documentation.swagger.web.SwaggerResourcesProvider;
-import springfox.documentation.swagger.web.UiConfiguration;
-import springfox.documentation.swagger.web.UiConfigurationBuilder;
-
-@RestController
-@RequestMapping("/swagger-resources")
-public class SwaggerHandler
-{
-    @Autowired(required = false)
-    private SecurityConfiguration securityConfiguration;
-
-    @Autowired(required = false)
-    private UiConfiguration uiConfiguration;
-
-    private final SwaggerResourcesProvider swaggerResources;
-
-    @Autowired
-    public SwaggerHandler(SwaggerResourcesProvider swaggerResources)
-    {
-        this.swaggerResources = swaggerResources;
-    }
-
-    @GetMapping("/configuration/security")
-    public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration()
-    {
-        return Mono.just(new ResponseEntity<>(
-                Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()),
-                HttpStatus.OK));
-    }
-
-    @GetMapping("/configuration/ui")
-    public Mono<ResponseEntity<UiConfiguration>> uiConfiguration()
-    {
-        return Mono.just(new ResponseEntity<>(
-                Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));
-    }
-
-    @SuppressWarnings("rawtypes")
-    @GetMapping("")
-    public Mono<ResponseEntity> swaggerResources()
-    {
-        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java
deleted file mode 100644
index 1b87ae3..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ruoyi.gateway.handler;
-
-import java.io.IOException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.function.BodyInserters;
-import org.springframework.web.reactive.function.server.HandlerFunction;
-import org.springframework.web.reactive.function.server.ServerRequest;
-import org.springframework.web.reactive.function.server.ServerResponse;
-import com.se.common.core.exception.CaptchaException;
-import com.se.common.core.web.domain.AjaxResult;
-import com.ruoyi.gateway.service.ValidateCodeService;
-import reactor.core.publisher.Mono;
-
-/**
- * 楠岃瘉鐮佽幏鍙�
- *
- * @author admin
- */
-@Component
-public class ValidateCodeHandler implements HandlerFunction<ServerResponse>
-{
-    @Autowired
-    private ValidateCodeService validateCodeService;
-
-    @Override
-    public Mono<ServerResponse> handle(ServerRequest serverRequest)
-    {
-        AjaxResult ajax;
-        try
-        {
-            ajax = validateCodeService.createCaptcha();
-        }
-        catch (CaptchaException | IOException e)
-        {
-            return Mono.error(e);
-        }
-        return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax));
-    }
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java
deleted file mode 100644
index 9bbfa00..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.gateway.service;
-
-import java.io.IOException;
-import com.se.common.core.exception.CaptchaException;
-import com.se.common.core.web.domain.AjaxResult;
-
-/**
- * 楠岃瘉鐮佸鐞�
- *
- * @author admin
- */
-public interface ValidateCodeService
-{
-    /**
-     * 鐢熸垚楠岃瘉鐮�
-     */
-    public AjaxResult createCaptcha() throws IOException, CaptchaException;
-
-    /**
-     * 鏍¢獙楠岃瘉鐮�
-     */
-    public void checkCaptcha(String key, String value) throws CaptchaException;
-}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
deleted file mode 100644
index 6961b68..0000000
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.ruoyi.gateway.service.impl;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.FastByteArrayOutputStream;
-import com.google.code.kaptcha.Producer;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.exception.CaptchaException;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.sign.Base64;
-import com.se.common.core.utils.uuid.IdUtils;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.redis.service.RedisService;
-import com.ruoyi.gateway.config.properties.CaptchaProperties;
-import com.ruoyi.gateway.service.ValidateCodeService;
-
-/**
- * 楠岃瘉鐮佸疄鐜板鐞�
- *
- * @author admin
- */
-@Service
-public class ValidateCodeServiceImpl implements ValidateCodeService
-{
-    @Resource(name = "captchaProducer")
-    private Producer captchaProducer;
-
-    @Resource(name = "captchaProducerMath")
-    private Producer captchaProducerMath;
-
-    @Autowired
-    private RedisService redisService;
-
-    @Autowired
-    private CaptchaProperties captchaProperties;
-
-    /**
-     * 鐢熸垚楠岃瘉鐮�
-     */
-    @Override
-    public AjaxResult createCaptcha() throws IOException, CaptchaException
-    {
-        AjaxResult ajax = AjaxResult.success();
-        boolean captchaEnabled = captchaProperties.getEnabled();
-        ajax.put("captchaEnabled", captchaEnabled);
-        if (!captchaEnabled)
-        {
-            return ajax;
-        }
-
-        // 淇濆瓨楠岃瘉鐮佷俊鎭�
-        String uuid = IdUtils.simpleUUID();
-        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
-
-        String capStr = null, code = null;
-        BufferedImage image = null;
-
-        String captchaType = captchaProperties.getType();
-        // 鐢熸垚楠岃瘉鐮�
-        if ("math".equals(captchaType))
-        {
-            String capText = captchaProducerMath.createText();
-            capStr = capText.substring(0, capText.lastIndexOf("@"));
-            code = capText.substring(capText.lastIndexOf("@") + 1);
-            image = captchaProducerMath.createImage(capStr);
-        }
-        else if ("char".equals(captchaType))
-        {
-            capStr = code = captchaProducer.createText();
-            image = captchaProducer.createImage(capStr);
-        }
-
-        redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
-        // 杞崲娴佷俊鎭啓鍑�
-        FastByteArrayOutputStream os = new FastByteArrayOutputStream();
-        try
-        {
-            ImageIO.write(image, "jpg", os);
-        }
-        catch (IOException e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-
-        ajax.put("uuid", uuid);
-        ajax.put("img", Base64.encode(os.toByteArray()));
-        return ajax;
-    }
-
-    /**
-     * 鏍¢獙楠岃瘉鐮�
-     */
-    @Override
-    public void checkCaptcha(String code, String uuid) throws CaptchaException
-    {
-        if (StringUtils.isEmpty(code))
-        {
-            throw new CaptchaException("楠岃瘉鐮佷笉鑳戒负绌�");
-        }
-        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
-        String captcha = redisService.getCacheObject(verifyKey);
-        if (captcha == null)
-        {
-            throw new CaptchaException("楠岃瘉鐮佸凡澶辨晥");
-        }
-        redisService.deleteObject(verifyKey);
-        if (!code.equalsIgnoreCase(captcha))
-        {
-            throw new CaptchaException("楠岃瘉鐮侀敊璇�");
-        }
-    }
-}
diff --git a/ruoyi-gateway/src/main/resources/banner.txt b/ruoyi-gateway/src/main/resources/banner.txt
deleted file mode 100644
index ceced29..0000000
--- a/ruoyi-gateway/src/main/resources/banner.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Spring Boot Version: ${spring-boot.version}
-Spring Application Name: ${spring.application.name}
-                            _                        _                                 
-                           (_)                      | |                                
- _ __  _   _   ___   _   _  _  ______   __ _   __ _ | |_   ___ __      __  __ _  _   _ 
-| '__|| | | | / _ \ | | | || ||______| / _` | / _` || __| / _ \\ \ /\ / / / _` || | | |
-| |   | |_| || (_) || |_| || |        | (_| || (_| || |_ |  __/ \ V  V / | (_| || |_| |
-|_|    \__,_| \___/  \__, ||_|         \__, | \__,_| \__| \___|  \_/\_/   \__,_| \__, |
-                      __/ |             __/ |                                     __/ |
-                     |___/             |___/                                     |___/ 
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java
deleted file mode 100644
index 5427a06..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/RuoYiFileApplication.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.file;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import com.se.common.swagger.annotation.EnableCustomSwagger2;
-
-/**
- * 鏂囦欢鏈嶅姟
- * 
- * @author admin
- */
-@EnableCustomSwagger2
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
-public class RuoYiFileApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiFileApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鏂囦欢鏈嶅姟妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java
deleted file mode 100644
index 28701a5..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/MinioConfig.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.ruoyi.file.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import io.minio.MinioClient;
-
-/**
- * Minio 閰嶇疆淇℃伅
- *
- * @author admin
- */
-@Configuration
-@ConfigurationProperties(prefix = "minio")
-public class MinioConfig
-{
-    /**
-     * 鏈嶅姟鍦板潃
-     */
-    private String url;
-
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    private String accessKey;
-
-    /**
-     * 瀵嗙爜
-     */
-    private String secretKey;
-
-    /**
-     * 瀛樺偍妗跺悕绉�
-     */
-    private String bucketName;
-
-    public String getUrl()
-    {
-        return url;
-    }
-
-    public void setUrl(String url)
-    {
-        this.url = url;
-    }
-
-    public String getAccessKey()
-    {
-        return accessKey;
-    }
-
-    public void setAccessKey(String accessKey)
-    {
-        this.accessKey = accessKey;
-    }
-
-    public String getSecretKey()
-    {
-        return secretKey;
-    }
-
-    public void setSecretKey(String secretKey)
-    {
-        this.secretKey = secretKey;
-    }
-
-    public String getBucketName()
-    {
-        return bucketName;
-    }
-
-    public void setBucketName(String bucketName)
-    {
-        this.bucketName = bucketName;
-    }
-
-    @Bean
-    public MinioClient getMinioClient()
-    {
-        return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java
deleted file mode 100644
index 425b3cc..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ruoyi.file.config;
-
-import java.io.File;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * 閫氱敤鏄犲皠閰嶇疆
- * 
- * @author admin
- */
-@Configuration
-public class ResourcesConfig implements WebMvcConfigurer
-{
-    /**
-     * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰�
-     */
-    @Value("${file.path}")
-    private String localFilePath;
-
-    /**
-     * 璧勬簮鏄犲皠璺緞 鍓嶇紑
-     */
-    @Value("${file.prefix}")
-    public String localFilePrefix;
-
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry)
-    {
-        /** 鏈湴鏂囦欢涓婁紶璺緞 */
-        registry.addResourceHandler(localFilePrefix + "/**")
-                .addResourceLocations("file:" + localFilePath + File.separator);
-    }
-    
-    /**
-     * 寮�鍚法鍩�
-     */
-    @Override
-    public void addCorsMappings(CorsRegistry registry) {
-        // 璁剧疆鍏佽璺ㄥ煙鐨勮矾鐢�
-        registry.addMapping(localFilePrefix  + "/**")
-                // 璁剧疆鍏佽璺ㄥ煙璇锋眰鐨勫煙鍚�
-                .allowedOrigins("*")
-                // 璁剧疆鍏佽鐨勬柟娉�
-                .allowedMethods("GET");
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
deleted file mode 100644
index 620c19f..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ruoyi.file.controller;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.se.common.core.domain.R;
-import com.se.common.core.utils.file.FileUtils;
-import com.ruoyi.file.service.ISysFileService;
-import com.se.system.api.domain.SysFile;
-
-/**
- * 鏂囦欢璇锋眰澶勭悊
- * 
- * @author admin
- */
-@RestController
-public class SysFileController
-{
-    private static final Logger log = LoggerFactory.getLogger(SysFileController.class);
-
-    @Autowired
-    private ISysFileService sysFileService;
-
-    /**
-     * 鏂囦欢涓婁紶璇锋眰
-     */
-    @PostMapping("upload")
-    public R<SysFile> upload(MultipartFile file)
-    {
-        try
-        {
-            // 涓婁紶骞惰繑鍥炶闂湴鍧�
-            String url = sysFileService.uploadFile(file);
-            SysFile sysFile = new SysFile();
-            sysFile.setName(FileUtils.getName(url));
-            sysFile.setUrl(url);
-            return R.ok(sysFile);
-        }
-        catch (Exception e)
-        {
-            log.error("涓婁紶鏂囦欢澶辫触", e);
-            return R.fail(e.getMessage());
-        }
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java
deleted file mode 100644
index d555d66..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.file.service;
-
-import java.io.InputStream;
-import com.alibaba.nacos.common.utils.IoUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-import com.github.tobato.fastdfs.domain.fdfs.StorePath;
-import com.github.tobato.fastdfs.service.FastFileStorageClient;
-import com.se.common.core.utils.file.FileTypeUtils;
-
-/**
- * FastDFS 鏂囦欢瀛樺偍
- *
- * @author admin
- */
-@Service
-public class FastDfsSysFileServiceImpl implements ISysFileService
-{
-    /**
-     * 鍩熷悕鎴栨湰鏈鸿闂湴鍧�
-     */
-    @Value("${fdfs.domain}")
-    public String domain;
-
-    @Autowired
-    private FastFileStorageClient storageClient;
-
-    /**
-     * FastDfs鏂囦欢涓婁紶鎺ュ彛
-     *
-     * @param file 涓婁紶鐨勬枃浠�
-     * @return 璁块棶鍦板潃
-     * @throws Exception
-     */
-    @Override
-    public String uploadFile(MultipartFile file) throws Exception
-    {
-        InputStream inputStream = file.getInputStream();
-        StorePath storePath = storageClient.uploadFile(inputStream, file.getSize(),
-                FileTypeUtils.getExtension(file), null);
-        IoUtils.closeQuietly(inputStream);
-        return domain + "/" + storePath.getFullPath();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java
deleted file mode 100644
index 9bdad05..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.file.service;
-
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * 鏂囦欢涓婁紶鎺ュ彛
- * 
- * @author admin
- */
-public interface ISysFileService
-{
-    /**
-     * 鏂囦欢涓婁紶鎺ュ彛
-     * 
-     * @param file 涓婁紶鐨勬枃浠�
-     * @return 璁块棶鍦板潃
-     * @throws Exception
-     */
-    public String uploadFile(MultipartFile file) throws Exception;
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java
deleted file mode 100644
index 240bbfb..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ruoyi.file.service;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.file.utils.FileUploadUtils;
-
-/**
- * 鏈湴鏂囦欢瀛樺偍
- * 
- * @author admin
- */
-@Primary
-@Service
-public class LocalSysFileServiceImpl implements ISysFileService
-{
-    /**
-     * 璧勬簮鏄犲皠璺緞 鍓嶇紑
-     */
-    @Value("${file.prefix}")
-    public String localFilePrefix;
-
-    /**
-     * 鍩熷悕鎴栨湰鏈鸿闂湴鍧�
-     */
-    @Value("${file.domain}")
-    public String domain;
-    
-    /**
-     * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰�
-     */
-    @Value("${file.path}")
-    private String localFilePath;
-
-    /**
-     * 鏈湴鏂囦欢涓婁紶鎺ュ彛
-     * 
-     * @param file 涓婁紶鐨勬枃浠�
-     * @return 璁块棶鍦板潃
-     * @throws Exception
-     */
-    @Override
-    public String uploadFile(MultipartFile file) throws Exception
-    {
-        String name = FileUploadUtils.upload(localFilePath, file);
-        String url = domain + localFilePrefix + name;
-        return url;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java
deleted file mode 100644
index 2b46662..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ruoyi.file.service;
-
-import java.io.InputStream;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-import com.alibaba.nacos.common.utils.IoUtils;
-import com.ruoyi.file.config.MinioConfig;
-import com.ruoyi.file.utils.FileUploadUtils;
-import io.minio.MinioClient;
-import io.minio.PutObjectArgs;
-
-/**
- * Minio 鏂囦欢瀛樺偍
- *
- * @author admin
- */
-@Service
-public class MinioSysFileServiceImpl implements ISysFileService
-{
-    @Autowired
-    private MinioConfig minioConfig;
-
-    @Autowired
-    private MinioClient client;
-
-    /**
-     * Minio鏂囦欢涓婁紶鎺ュ彛
-     *
-     * @param file 涓婁紶鐨勬枃浠�
-     * @return 璁块棶鍦板潃
-     * @throws Exception
-     */
-    @Override
-    public String uploadFile(MultipartFile file) throws Exception
-    {
-        String fileName = FileUploadUtils.extractFilename(file);
-        InputStream inputStream = file.getInputStream();
-        PutObjectArgs args = PutObjectArgs.builder()
-                .bucket(minioConfig.getBucketName())
-                .object(fileName)
-                .stream(inputStream, file.getSize(), -1)
-                .contentType(file.getContentType())
-                .build();
-        client.putObject(args);
-        IoUtils.closeQuietly(inputStream);
-        return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java
deleted file mode 100644
index 21317bf..0000000
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.ruoyi.file.utils;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.Objects;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.multipart.MultipartFile;
-import com.se.common.core.exception.file.FileException;
-import com.se.common.core.exception.file.FileNameLengthLimitExceededException;
-import com.se.common.core.exception.file.FileSizeLimitExceededException;
-import com.se.common.core.exception.file.InvalidExtensionException;
-import com.se.common.core.utils.DateUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.file.FileTypeUtils;
-import com.se.common.core.utils.file.MimeTypeUtils;
-import com.se.common.core.utils.uuid.Seq;
-
-/**
- * 鏂囦欢涓婁紶宸ュ叿绫�
- * 
- * @author admin
- */
-public class FileUploadUtils
-{
-    /**
-     * 榛樿澶у皬 50M
-     */
-    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L;
-
-    /**
-     * 榛樿鐨勬枃浠跺悕鏈�澶ч暱搴� 100
-     */
-    public static final int DEFAULT_FILE_NAME_LENGTH = 100;
-
-    /**
-     * 鏍规嵁鏂囦欢璺緞涓婁紶
-     *
-     * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍
-     * @param file 涓婁紶鐨勬枃浠�
-     * @return 鏂囦欢鍚嶇О
-     * @throws IOException
-     */
-    public static final String upload(String baseDir, MultipartFile file) throws IOException
-    {
-        try
-        {
-            return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
-        }
-        catch (FileException fe)
-        {
-            throw new IOException(fe.getDefaultMessage(), fe);
-        }
-        catch (Exception e)
-        {
-            throw new IOException(e.getMessage(), e);
-        }
-    }
-
-    /**
-     * 鏂囦欢涓婁紶
-     *
-     * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍
-     * @param file 涓婁紶鐨勬枃浠�
-     * @param allowedExtension 涓婁紶鏂囦欢绫诲瀷
-     * @return 杩斿洖涓婁紶鎴愬姛鐨勬枃浠跺悕
-     * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏�
-     * @throws FileNameLengthLimitExceededException 鏂囦欢鍚嶅お闀�
-     * @throws IOException 姣斿璇诲啓鏂囦欢鍑洪敊鏃�
-     * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父
-     */
-    public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
-            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
-            InvalidExtensionException
-    {
-        int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
-        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
-        {
-            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
-        }
-
-        assertAllowed(file, allowedExtension);
-
-        String fileName = extractFilename(file);
-
-        String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
-        file.transferTo(Paths.get(absPath));
-        return getPathFileName(fileName);
-    }
-
-    /**
-     * 缂栫爜鏂囦欢鍚�
-     */
-    public static final String extractFilename(MultipartFile file)
-    {
-        return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
-                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file));
-    }
-
-    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
-    {
-        File desc = new File(uploadDir + File.separator + fileName);
-
-        if (!desc.exists())
-        {
-            if (!desc.getParentFile().exists())
-            {
-                desc.getParentFile().mkdirs();
-            }
-        }
-        return desc.isAbsolute() ? desc : desc.getAbsoluteFile();
-    }
-
-    private static final String getPathFileName(String fileName) throws IOException
-    {
-        String pathFileName = "/" + fileName;
-        return pathFileName;
-    }
-
-    /**
-     * 鏂囦欢澶у皬鏍¢獙
-     *
-     * @param file 涓婁紶鐨勬枃浠�
-     * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏�
-     * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父
-     */
-    public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
-            throws FileSizeLimitExceededException, InvalidExtensionException
-    {
-        long size = file.getSize();
-        if (size > DEFAULT_MAX_SIZE)
-        {
-            throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
-        }
-
-        String fileName = file.getOriginalFilename();
-        String extension = FileTypeUtils.getExtension(file);
-        if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
-        {
-            if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
-            {
-                throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
-                        fileName);
-            }
-            else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION)
-            {
-                throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
-                        fileName);
-            }
-            else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION)
-            {
-                throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
-                        fileName);
-            }
-            else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
-            {
-                throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
-                        fileName);
-            }
-            else
-            {
-                throw new InvalidExtensionException(allowedExtension, extension, fileName);
-            }
-        }
-    }
-
-    /**
-     * 鍒ゆ柇MIME绫诲瀷鏄惁鏄厑璁哥殑MIME绫诲瀷
-     *
-     * @param extension 涓婁紶鏂囦欢绫诲瀷
-     * @param allowedExtension 鍏佽涓婁紶鏂囦欢绫诲瀷
-     * @return true/false
-     */
-    public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
-    {
-        for (String str : allowedExtension)
-        {
-            if (str.equalsIgnoreCase(extension))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java
deleted file mode 100644
index d88ddbe..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.ruoyi.gen;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import com.se.common.security.annotation.EnableCustomConfig;
-import com.se.common.security.annotation.EnableRyFeignClients;
-import com.se.common.swagger.annotation.EnableCustomSwagger2;
-
-/**
- * 浠g爜鐢熸垚
- * 
- * @author admin
- */
-@EnableCustomConfig
-@EnableCustomSwagger2
-@EnableRyFeignClients
-@SpringBootApplication
-public class RuoYiGenApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiGenApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  浠g爜鐢熸垚妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java
deleted file mode 100644
index f542350..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/config/GenConfig.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.ruoyi.gen.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * 浠g爜鐢熸垚鐩稿叧閰嶇疆
- * 
- * @author admin
- */
-@Component
-@ConfigurationProperties(prefix = "gen")
-public class GenConfig
-{
-    /** 浣滆�� */
-    public static String author;
-
-    /** 鐢熸垚鍖呰矾寰� */
-    public static String packageName;
-
-    /** 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false */
-    public static boolean autoRemovePre;
-
-    /** 琛ㄥ墠缂�(绫诲悕涓嶄細鍖呭惈琛ㄥ墠缂�) */
-    public static String tablePrefix;
-
-    public static String getAuthor()
-    {
-        return author;
-    }
-
-    public void setAuthor(String author)
-    {
-        GenConfig.author = author;
-    }
-
-    public static String getPackageName()
-    {
-        return packageName;
-    }
-
-    public void setPackageName(String packageName)
-    {
-        GenConfig.packageName = packageName;
-    }
-
-    public static boolean getAutoRemovePre()
-    {
-        return autoRemovePre;
-    }
-
-    public void setAutoRemovePre(boolean autoRemovePre)
-    {
-        GenConfig.autoRemovePre = autoRemovePre;
-    }
-
-    public static String getTablePrefix()
-    {
-        return tablePrefix;
-    }
-
-    public void setTablePrefix(String tablePrefix)
-    {
-        GenConfig.tablePrefix = tablePrefix;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java
deleted file mode 100644
index 96ea440..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/controller/GenController.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.ruoyi.gen.controller;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.text.Convert;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.ruoyi.gen.domain.GenTable;
-import com.ruoyi.gen.domain.GenTableColumn;
-import com.ruoyi.gen.service.IGenTableColumnService;
-import com.ruoyi.gen.service.IGenTableService;
-
-/**
- * 浠g爜鐢熸垚 鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RequestMapping("/gen")
-@RestController
-public class GenController extends BaseController
-{
-    @Autowired
-    private IGenTableService genTableService;
-
-    @Autowired
-    private IGenTableColumnService genTableColumnService;
-
-    /**
-     * 鏌ヨ浠g爜鐢熸垚鍒楄〃
-     */
-    @RequiresPermissions("tool:gen:list")
-    @GetMapping("/list")
-    public TableDataInfo genList(GenTable genTable)
-    {
-        startPage();
-        List<GenTable> list = genTableService.selectGenTableList(genTable);
-        return getDataTable(list);
-    }
-
-    /**
-     * 淇敼浠g爜鐢熸垚涓氬姟
-     */
-    @RequiresPermissions("tool:gen:query")
-    @GetMapping(value = "/{tableId}")
-    public AjaxResult getInfo(@PathVariable Long tableId)
-    {
-        GenTable table = genTableService.selectGenTableById(tableId);
-        List<GenTable> tables = genTableService.selectGenTableAll();
-        List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put("info", table);
-        map.put("rows", list);
-        map.put("tables", tables);
-        return success(map);
-    }
-
-    /**
-     * 鏌ヨ鏁版嵁搴撳垪琛�
-     */
-    @RequiresPermissions("tool:gen:list")
-    @GetMapping("/db/list")
-    public TableDataInfo dataList(GenTable genTable)
-    {
-        startPage();
-        List<GenTable> list = genTableService.selectDbTableList(genTable);
-        return getDataTable(list);
-    }
-
-    /**
-     * 鏌ヨ鏁版嵁琛ㄥ瓧娈靛垪琛�
-     */
-    @GetMapping(value = "/column/{tableId}")
-    public TableDataInfo columnList(Long tableId)
-    {
-        TableDataInfo dataInfo = new TableDataInfo();
-        List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
-        dataInfo.setRows(list);
-        dataInfo.setTotal(list.size());
-        return dataInfo;
-    }
-
-    /**
-     * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛�
-     */
-    @RequiresPermissions("tool:gen:import")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT)
-    @PostMapping("/importTable")
-    public AjaxResult importTableSave(String tables)
-    {
-        String[] tableNames = Convert.toStrArray(tables);
-        // 鏌ヨ琛ㄤ俊鎭�
-        List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames);
-        genTableService.importGenTable(tableList);
-        return success();
-    }
-
-    /**
-     * 淇敼淇濆瓨浠g爜鐢熸垚涓氬姟
-     */
-    @RequiresPermissions("tool:gen:edit")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult editSave(@Validated @RequestBody GenTable genTable)
-    {
-        genTableService.validateEdit(genTable);
-        genTableService.updateGenTable(genTable);
-        return success();
-    }
-
-    /**
-     * 鍒犻櫎浠g爜鐢熸垚
-     */
-    @RequiresPermissions("tool:gen:remove")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{tableIds}")
-    public AjaxResult remove(@PathVariable Long[] tableIds)
-    {
-        genTableService.deleteGenTableByIds(tableIds);
-        return success();
-    }
-
-    /**
-     * 棰勮浠g爜
-     */
-    @RequiresPermissions("tool:gen:preview")
-    @GetMapping("/preview/{tableId}")
-    public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException
-    {
-        Map<String, String> dataMap = genTableService.previewCode(tableId);
-        return success(dataMap);
-    }
-
-    /**
-     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     */
-    @RequiresPermissions("tool:gen:code")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
-    @GetMapping("/download/{tableName}")
-    public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException
-    {
-        byte[] data = genTableService.downloadCode(tableName);
-        genCode(response, data);
-    }
-
-    /**
-     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
-     */
-    @RequiresPermissions("tool:gen:code")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
-    @GetMapping("/genCode/{tableName}")
-    public AjaxResult genCode(@PathVariable("tableName") String tableName)
-    {
-        genTableService.generatorCode(tableName);
-        return success();
-    }
-
-    /**
-     * 鍚屾鏁版嵁搴�
-     */
-    @RequiresPermissions("tool:gen:edit")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
-    @GetMapping("/synchDb/{tableName}")
-    public AjaxResult synchDb(@PathVariable("tableName") String tableName)
-    {
-        genTableService.synchDb(tableName);
-        return success();
-    }
-
-    /**
-     * 鎵归噺鐢熸垚浠g爜
-     */
-    @RequiresPermissions("tool:gen:code")
-    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
-    @GetMapping("/batchGenCode")
-    public void batchGenCode(HttpServletResponse response, String tables) throws IOException
-    {
-        String[] tableNames = Convert.toStrArray(tables);
-        byte[] data = genTableService.downloadCode(tableNames);
-        genCode(response, data);
-    }
-
-    /**
-     * 鐢熸垚zip鏂囦欢
-     */
-    private void genCode(HttpServletResponse response, byte[] data) throws IOException
-    {
-        response.reset();
-        response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
-        response.addHeader("Content-Length", "" + data.length);
-        response.setContentType("application/octet-stream; charset=UTF-8");
-        IOUtils.write(data, response.getOutputStream());
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java
deleted file mode 100644
index 8f7c54f..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTable.java
+++ /dev/null
@@ -1,383 +0,0 @@
-package com.ruoyi.gen.domain;
-
-import java.util.List;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import org.apache.commons.lang3.ArrayUtils;
-import com.se.common.core.constant.GenConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 涓氬姟琛� gen_table
- * 
- * @author admin
- */
-public class GenTable extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 缂栧彿 */
-    private Long tableId;
-
-    /** 琛ㄥ悕绉� */
-    @NotBlank(message = "琛ㄥ悕绉颁笉鑳戒负绌�")
-    private String tableName;
-
-    /** 琛ㄦ弿杩� */
-    @NotBlank(message = "琛ㄦ弿杩颁笉鑳戒负绌�")
-    private String tableComment;
-
-    /** 鍏宠仈鐖惰〃鐨勮〃鍚� */
-    private String subTableName;
-
-    /** 鏈〃鍏宠仈鐖惰〃鐨勫閿悕 */
-    private String subTableFkName;
-
-    /** 瀹炰綋绫诲悕绉�(棣栧瓧姣嶅ぇ鍐�) */
-    @NotBlank(message = "瀹炰綋绫诲悕绉颁笉鑳戒负绌�")
-    private String className;
-
-    /** 浣跨敤鐨勬ā鏉匡紙crud鍗曡〃鎿嶄綔 tree鏍戣〃鎿嶄綔 sub涓诲瓙琛ㄦ搷浣滐級 */
-    private String tplCategory;
-
-    /** 鍓嶇绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛� */
-    private String tplWebType;
-
-    /** 鐢熸垚鍖呰矾寰� */
-    @NotBlank(message = "鐢熸垚鍖呰矾寰勪笉鑳戒负绌�")
-    private String packageName;
-
-    /** 鐢熸垚妯″潡鍚� */
-    @NotBlank(message = "鐢熸垚妯″潡鍚嶄笉鑳戒负绌�")
-    private String moduleName;
-
-    /** 鐢熸垚涓氬姟鍚� */
-    @NotBlank(message = "鐢熸垚涓氬姟鍚嶄笉鑳戒负绌�")
-    private String businessName;
-
-    /** 鐢熸垚鍔熻兘鍚� */
-    @NotBlank(message = "鐢熸垚鍔熻兘鍚嶄笉鑳戒负绌�")
-    private String functionName;
-
-    /** 鐢熸垚浣滆�� */
-    @NotBlank(message = "浣滆�呬笉鑳戒负绌�")
-    private String functionAuthor;
-
-    /** 鐢熸垚浠g爜鏂瑰紡锛�0zip鍘嬬缉鍖� 1鑷畾涔夎矾寰勶級 */
-    private String genType;
-
-    /** 鐢熸垚璺緞锛堜笉濉粯璁ら」鐩矾寰勶級 */
-    private String genPath;
-
-    /** 涓婚敭淇℃伅 */
-    private GenTableColumn pkColumn;
-
-    /** 瀛愯〃淇℃伅 */
-    private GenTable subTable;
-
-    /** 琛ㄥ垪淇℃伅 */
-    @Valid
-    private List<GenTableColumn> columns;
-
-    /** 鍏跺畠鐢熸垚閫夐」 */
-    private String options;
-
-    /** 鏍戠紪鐮佸瓧娈� */
-    private String treeCode;
-
-    /** 鏍戠埗缂栫爜瀛楁 */
-    private String treeParentCode;
-
-    /** 鏍戝悕绉板瓧娈� */
-    private String treeName;
-
-    /** 涓婄骇鑿滃崟ID瀛楁 */
-    private String parentMenuId;
-
-    /** 涓婄骇鑿滃崟鍚嶇О瀛楁 */
-    private String parentMenuName;
-
-    public Long getTableId()
-    {
-        return tableId;
-    }
-
-    public void setTableId(Long tableId)
-    {
-        this.tableId = tableId;
-    }
-
-    public String getTableName()
-    {
-        return tableName;
-    }
-
-    public void setTableName(String tableName)
-    {
-        this.tableName = tableName;
-    }
-
-    public String getTableComment()
-    {
-        return tableComment;
-    }
-
-    public void setTableComment(String tableComment)
-    {
-        this.tableComment = tableComment;
-    }
-
-    public String getSubTableName()
-    {
-        return subTableName;
-    }
-
-    public void setSubTableName(String subTableName)
-    {
-        this.subTableName = subTableName;
-    }
-
-    public String getSubTableFkName()
-    {
-        return subTableFkName;
-    }
-
-    public void setSubTableFkName(String subTableFkName)
-    {
-        this.subTableFkName = subTableFkName;
-    }
-
-    public String getClassName()
-    {
-        return className;
-    }
-
-    public void setClassName(String className)
-    {
-        this.className = className;
-    }
-
-    public String getTplCategory()
-    {
-        return tplCategory;
-    }
-
-    public void setTplCategory(String tplCategory)
-    {
-        this.tplCategory = tplCategory;
-    }
-
-    public String getTplWebType()
-    {
-        return tplWebType;
-    }
-
-    public void setTplWebType(String tplWebType)
-    {
-        this.tplWebType = tplWebType;
-    }
-
-    public String getPackageName()
-    {
-        return packageName;
-    }
-
-    public void setPackageName(String packageName)
-    {
-        this.packageName = packageName;
-    }
-
-    public String getModuleName()
-    {
-        return moduleName;
-    }
-
-    public void setModuleName(String moduleName)
-    {
-        this.moduleName = moduleName;
-    }
-
-    public String getBusinessName()
-    {
-        return businessName;
-    }
-
-    public void setBusinessName(String businessName)
-    {
-        this.businessName = businessName;
-    }
-
-    public String getFunctionName()
-    {
-        return functionName;
-    }
-
-    public void setFunctionName(String functionName)
-    {
-        this.functionName = functionName;
-    }
-
-    public String getFunctionAuthor()
-    {
-        return functionAuthor;
-    }
-
-    public void setFunctionAuthor(String functionAuthor)
-    {
-        this.functionAuthor = functionAuthor;
-    }
-
-    public String getGenType()
-    {
-        return genType;
-    }
-
-    public void setGenType(String genType)
-    {
-        this.genType = genType;
-    }
-
-    public String getGenPath()
-    {
-        return genPath;
-    }
-
-    public void setGenPath(String genPath)
-    {
-        this.genPath = genPath;
-    }
-
-    public GenTableColumn getPkColumn()
-    {
-        return pkColumn;
-    }
-
-    public void setPkColumn(GenTableColumn pkColumn)
-    {
-        this.pkColumn = pkColumn;
-    }
-
-    public GenTable getSubTable()
-    {
-        return subTable;
-    }
-
-    public void setSubTable(GenTable subTable)
-    {
-        this.subTable = subTable;
-    }
-    public List<GenTableColumn> getColumns()
-    {
-        return columns;
-    }
-
-    public void setColumns(List<GenTableColumn> columns)
-    {
-        this.columns = columns;
-    }
-
-    public String getOptions()
-    {
-        return options;
-    }
-
-    public void setOptions(String options)
-    {
-        this.options = options;
-    }
-
-    public String getTreeCode()
-    {
-        return treeCode;
-    }
-
-    public void setTreeCode(String treeCode)
-    {
-        this.treeCode = treeCode;
-    }
-
-    public String getTreeParentCode()
-    {
-        return treeParentCode;
-    }
-
-    public void setTreeParentCode(String treeParentCode)
-    {
-        this.treeParentCode = treeParentCode;
-    }
-
-    public String getTreeName()
-    {
-        return treeName;
-    }
-
-    public void setTreeName(String treeName)
-    {
-        this.treeName = treeName;
-    }
-
-    public String getParentMenuId()
-    {
-        return parentMenuId;
-    }
-
-    public void setParentMenuId(String parentMenuId)
-    {
-        this.parentMenuId = parentMenuId;
-    }
-
-    public String getParentMenuName()
-    {
-        return parentMenuName;
-    }
-
-    public void setParentMenuName(String parentMenuName)
-    {
-        this.parentMenuName = parentMenuName;
-    }
-
-    public boolean isSub()
-    {
-        return isSub(this.tplCategory);
-    }
-
-    public static boolean isSub(String tplCategory)
-    {
-        return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory);
-    }
-    public boolean isTree()
-    {
-        return isTree(this.tplCategory);
-    }
-
-    public static boolean isTree(String tplCategory)
-    {
-        return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory);
-    }
-
-    public boolean isCrud()
-    {
-        return isCrud(this.tplCategory);
-    }
-
-    public static boolean isCrud(String tplCategory)
-    {
-        return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory);
-    }
-
-    public boolean isSuperColumn(String javaField)
-    {
-        return isSuperColumn(this.tplCategory, javaField);
-    }
-
-    public static boolean isSuperColumn(String tplCategory, String javaField)
-    {
-        if (isTree(tplCategory))
-        {
-            return StringUtils.equalsAnyIgnoreCase(javaField,
-                    ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY));
-        }
-        return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java
deleted file mode 100644
index a6e7a9c..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/domain/GenTableColumn.java
+++ /dev/null
@@ -1,374 +0,0 @@
-package com.ruoyi.gen.domain;
-
-import javax.validation.constraints.NotBlank;
-
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 浠g爜鐢熸垚涓氬姟瀛楁琛� gen_table_column
- * 
- * @author admin
- */
-public class GenTableColumn extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 缂栧彿 */
-    private Long columnId;
-
-    /** 褰掑睘琛ㄧ紪鍙� */
-    private Long tableId;
-
-    /** 鍒楀悕绉� */
-    private String columnName;
-
-    /** 鍒楁弿杩� */
-    private String columnComment;
-
-    /** 鍒楃被鍨� */
-    private String columnType;
-
-    /** JAVA绫诲瀷 */
-    private String javaType;
-
-    /** JAVA瀛楁鍚� */
-    @NotBlank(message = "Java灞炴�т笉鑳戒负绌�")
-    private String javaField;
-
-    /** 鏄惁涓婚敭锛�1鏄級 */
-    private String isPk;
-
-    /** 鏄惁鑷锛�1鏄級 */
-    private String isIncrement;
-
-    /** 鏄惁蹇呭~锛�1鏄級 */
-    private String isRequired;
-
-    /** 鏄惁涓烘彃鍏ュ瓧娈碉紙1鏄級 */
-    private String isInsert;
-
-    /** 鏄惁缂栬緫瀛楁锛�1鏄級 */
-    private String isEdit;
-
-    /** 鏄惁鍒楄〃瀛楁锛�1鏄級 */
-    private String isList;
-
-    /** 鏄惁鏌ヨ瀛楁锛�1鏄級 */
-    private String isQuery;
-
-    /** 鏌ヨ鏂瑰紡锛圗Q绛変簬銆丯E涓嶇瓑浜庛�丟T澶т簬銆丩T灏忎簬銆丩IKE妯$硦銆丅ETWEEN鑼冨洿锛� */
-    private String queryType;
-
-    /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乮mage鍥剧墖涓婁紶鎺т欢銆乽pload鏂囦欢涓婁紶鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */
-    private String htmlType;
-
-    /** 瀛楀吀绫诲瀷 */
-    private String dictType;
-
-    /** 鎺掑簭 */
-    private Integer sort;
-
-    public void setColumnId(Long columnId)
-    {
-        this.columnId = columnId;
-    }
-
-    public Long getColumnId()
-    {
-        return columnId;
-    }
-
-    public void setTableId(Long tableId)
-    {
-        this.tableId = tableId;
-    }
-
-    public Long getTableId()
-    {
-        return tableId;
-    }
-
-    public void setColumnName(String columnName)
-    {
-        this.columnName = columnName;
-    }
-
-    public String getColumnName()
-    {
-        return columnName;
-    }
-
-    public void setColumnComment(String columnComment)
-    {
-        this.columnComment = columnComment;
-    }
-
-    public String getColumnComment()
-    {
-        return columnComment;
-    }
-
-    public void setColumnType(String columnType)
-    {
-        this.columnType = columnType;
-    }
-
-    public String getColumnType()
-    {
-        return columnType;
-    }
-
-    public void setJavaType(String javaType)
-    {
-        this.javaType = javaType;
-    }
-
-    public String getJavaType()
-    {
-        return javaType;
-    }
-
-    public void setJavaField(String javaField)
-    {
-        this.javaField = javaField;
-    }
-
-    public String getJavaField()
-    {
-        return javaField;
-    }
-
-    public String getCapJavaField()
-    {
-        return StringUtils.capitalize(javaField);
-    }
-
-    public void setIsPk(String isPk)
-    {
-        this.isPk = isPk;
-    }
-
-    public String getIsPk()
-    {
-        return isPk;
-    }
-
-    public boolean isPk()
-    {
-        return isPk(this.isPk);
-    }
-
-    public boolean isPk(String isPk)
-    {
-        return isPk != null && StringUtils.equals("1", isPk);
-    }
-
-    public String getIsIncrement()
-    {
-        return isIncrement;
-    }
-
-    public void setIsIncrement(String isIncrement)
-    {
-        this.isIncrement = isIncrement;
-    }
-
-    public boolean isIncrement()
-    {
-        return isIncrement(this.isIncrement);
-    }
-
-    public boolean isIncrement(String isIncrement)
-    {
-        return isIncrement != null && StringUtils.equals("1", isIncrement);
-    }
-
-    public void setIsRequired(String isRequired)
-    {
-        this.isRequired = isRequired;
-    }
-
-    public String getIsRequired()
-    {
-        return isRequired;
-    }
-
-    public boolean isRequired()
-    {
-        return isRequired(this.isRequired);
-    }
-
-    public boolean isRequired(String isRequired)
-    {
-        return isRequired != null && StringUtils.equals("1", isRequired);
-    }
-
-    public void setIsInsert(String isInsert)
-    {
-        this.isInsert = isInsert;
-    }
-
-    public String getIsInsert()
-    {
-        return isInsert;
-    }
-
-    public boolean isInsert()
-    {
-        return isInsert(this.isInsert);
-    }
-
-    public boolean isInsert(String isInsert)
-    {
-        return isInsert != null && StringUtils.equals("1", isInsert);
-    }
-
-    public void setIsEdit(String isEdit)
-    {
-        this.isEdit = isEdit;
-    }
-
-    public String getIsEdit()
-    {
-        return isEdit;
-    }
-
-    public boolean isEdit()
-    {
-        return isInsert(this.isEdit);
-    }
-
-    public boolean isEdit(String isEdit)
-    {
-        return isEdit != null && StringUtils.equals("1", isEdit);
-    }
-
-    public void setIsList(String isList)
-    {
-        this.isList = isList;
-    }
-
-    public String getIsList()
-    {
-        return isList;
-    }
-
-    public boolean isList()
-    {
-        return isList(this.isList);
-    }
-
-    public boolean isList(String isList)
-    {
-        return isList != null && StringUtils.equals("1", isList);
-    }
-
-    public void setIsQuery(String isQuery)
-    {
-        this.isQuery = isQuery;
-    }
-
-    public String getIsQuery()
-    {
-        return isQuery;
-    }
-
-    public boolean isQuery()
-    {
-        return isQuery(this.isQuery);
-    }
-
-    public boolean isQuery(String isQuery)
-    {
-        return isQuery != null && StringUtils.equals("1", isQuery);
-    }
-
-    public void setQueryType(String queryType)
-    {
-        this.queryType = queryType;
-    }
-
-    public String getQueryType()
-    {
-        return queryType;
-    }
-
-    public String getHtmlType()
-    {
-        return htmlType;
-    }
-
-    public void setHtmlType(String htmlType)
-    {
-        this.htmlType = htmlType;
-    }
-
-    public void setDictType(String dictType)
-    {
-        this.dictType = dictType;
-    }
-
-    public String getDictType()
-    {
-        return dictType;
-    }
-
-    public void setSort(Integer sort)
-    {
-        this.sort = sort;
-    }
-
-    public Integer getSort()
-    {
-        return sort;
-    }
-
-    public boolean isSuperColumn()
-    {
-        return isSuperColumn(this.javaField);
-    }
-
-    public static boolean isSuperColumn(String javaField)
-    {
-        return StringUtils.equalsAnyIgnoreCase(javaField,
-                // BaseEntity
-                "createBy", "createTime", "updateBy", "updateTime", "remark",
-                // TreeEntity
-                "parentName", "parentId", "orderNum", "ancestors");
-    }
-
-    public boolean isUsableColumn()
-    {
-        return isUsableColumn(javaField);
-    }
-
-    public static boolean isUsableColumn(String javaField)
-    {
-        // isSuperColumn()涓殑鍚嶅崟鐢ㄤ簬閬垮厤鐢熸垚澶氫綑Domain灞炴�э紝鑻ユ煇浜涘睘鎬у湪鐢熸垚椤甸潰鏃堕渶瑕佺敤鍒颁笉鑳藉拷鐣ワ紝鍒欐斁鍦ㄦ澶勭櫧鍚嶅崟
-        return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
-    }
-
-    public String readConverterExp()
-    {
-        String remarks = StringUtils.substringBetween(this.columnComment, "锛�", "锛�");
-        StringBuffer sb = new StringBuffer();
-        if (StringUtils.isNotEmpty(remarks))
-        {
-            for (String value : remarks.split(" "))
-            {
-                if (StringUtils.isNotEmpty(value))
-                {
-                    Object startStr = value.subSequence(0, 1);
-                    String endStr = value.substring(1);
-                    sb.append("").append(startStr).append("=").append(endStr).append(",");
-                }
-            }
-            return sb.deleteCharAt(sb.length() - 1).toString();
-        }
-        else
-        {
-            return this.columnComment;
-        }
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java
deleted file mode 100644
index 508484d..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableColumnMapper.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ruoyi.gen.mapper;
-
-import java.util.List;
-import com.ruoyi.gen.domain.GenTableColumn;
-
-/**
- * 涓氬姟瀛楁 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface GenTableColumnMapper
-{
-    /**
-     * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 鍒椾俊鎭�
-     */
-    public List<GenTableColumn> selectDbTableColumnsByName(String tableName);
-
-    /**
-     * 鏌ヨ涓氬姟瀛楁鍒楄〃
-     * 
-     * @param tableId 涓氬姟瀛楁缂栧彿
-     * @return 涓氬姟瀛楁闆嗗悎
-     */
-    public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);
-
-    /**
-     * 鏂板涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertGenTableColumn(GenTableColumn genTableColumn);
-
-    /**
-     * 淇敼涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateGenTableColumn(GenTableColumn genTableColumn);
-
-    /**
-     * 鍒犻櫎涓氬姟瀛楁
-     * 
-     * @param genTableColumns 鍒楁暟鎹�
-     * @return 缁撴灉
-     */
-    public int deleteGenTableColumns(List<GenTableColumn> genTableColumns);
-
-    /**
-     * 鎵归噺鍒犻櫎涓氬姟瀛楁
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteGenTableColumnByIds(Long[] ids);
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java
deleted file mode 100644
index 3c9b97c..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/mapper/GenTableMapper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.ruoyi.gen.mapper;
-
-import java.util.List;
-import com.ruoyi.gen.domain.GenTable;
-
-/**
- * 涓氬姟 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface GenTableMapper
-{
-    /**
-     * 鏌ヨ涓氬姟鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 涓氬姟闆嗗悎
-     */
-    public List<GenTable> selectGenTableList(GenTable genTable);
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    public List<GenTable> selectDbTableList(GenTable genTable);
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param tableNames 琛ㄥ悕绉扮粍
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    public List<GenTable> selectDbTableListByNames(String[] tableNames);
-
-    /**
-     * 鏌ヨ鎵�鏈夎〃淇℃伅
-     * 
-     * @return 琛ㄤ俊鎭泦鍚�
-     */
-    public List<GenTable> selectGenTableAll();
-
-    /**
-     * 鏌ヨ琛↖D涓氬姟淇℃伅
-     * 
-     * @param id 涓氬姟ID
-     * @return 涓氬姟淇℃伅
-     */
-    public GenTable selectGenTableById(Long id);
-
-    /**
-     * 鏌ヨ琛ㄥ悕绉颁笟鍔′俊鎭�
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 涓氬姟淇℃伅
-     */
-    public GenTable selectGenTableByName(String tableName);
-
-    /**
-     * 鏂板涓氬姟
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertGenTable(GenTable genTable);
-
-    /**
-     * 淇敼涓氬姟
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateGenTable(GenTable genTable);
-
-    /**
-     * 鎵归噺鍒犻櫎涓氬姟
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteGenTableByIds(Long[] ids);
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java
deleted file mode 100644
index 649a3cc..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableColumnServiceImpl.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.ruoyi.gen.service;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.core.text.Convert;
-import com.ruoyi.gen.domain.GenTableColumn;
-import com.ruoyi.gen.mapper.GenTableColumnMapper;
-
-/**
- * 涓氬姟瀛楁 鏈嶅姟灞傚疄鐜�
- * 
- * @author admin
- */
-@Service
-public class GenTableColumnServiceImpl implements IGenTableColumnService 
-{
-	@Autowired
-	private GenTableColumnMapper genTableColumnMapper;
-
-	/**
-     * 鏌ヨ涓氬姟瀛楁鍒楄〃
-     * 
-     * @param tableId 涓氬姟瀛楁缂栧彿
-     * @return 涓氬姟瀛楁闆嗗悎
-     */
-	@Override
-	public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId)
-	{
-	    return genTableColumnMapper.selectGenTableColumnListByTableId(tableId);
-	}
-	
-    /**
-     * 鏂板涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-	@Override
-	public int insertGenTableColumn(GenTableColumn genTableColumn)
-	{
-	    return genTableColumnMapper.insertGenTableColumn(genTableColumn);
-	}
-	
-	/**
-     * 淇敼涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-	@Override
-	public int updateGenTableColumn(GenTableColumn genTableColumn)
-	{
-	    return genTableColumnMapper.updateGenTableColumn(genTableColumn);
-	}
-
-	/**
-     * 鍒犻櫎涓氬姟瀛楁瀵硅薄
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-	@Override
-	public int deleteGenTableColumnByIds(String ids)
-	{
-		return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids));
-	}
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
deleted file mode 100644
index 0587c4e..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
+++ /dev/null
@@ -1,521 +0,0 @@
-package com.ruoyi.gen.service;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.Velocity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.constant.GenConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.text.CharsetKit;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.gen.domain.GenTable;
-import com.ruoyi.gen.domain.GenTableColumn;
-import com.ruoyi.gen.mapper.GenTableColumnMapper;
-import com.ruoyi.gen.mapper.GenTableMapper;
-import com.ruoyi.gen.util.GenUtils;
-import com.ruoyi.gen.util.VelocityInitializer;
-import com.ruoyi.gen.util.VelocityUtils;
-
-/**
- * 涓氬姟 鏈嶅姟灞傚疄鐜�
- * 
- * @author admin
- */
-@Service
-public class GenTableServiceImpl implements IGenTableService
-{
-    private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
-
-    @Autowired
-    private GenTableMapper genTableMapper;
-
-    @Autowired
-    private GenTableColumnMapper genTableColumnMapper;
-
-    /**
-     * 鏌ヨ涓氬姟淇℃伅
-     * 
-     * @param id 涓氬姟ID
-     * @return 涓氬姟淇℃伅
-     */
-    @Override
-    public GenTable selectGenTableById(Long id)
-    {
-        GenTable genTable = genTableMapper.selectGenTableById(id);
-        setTableFromOptions(genTable);
-        return genTable;
-    }
-
-    /**
-     * 鏌ヨ涓氬姟鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 涓氬姟闆嗗悎
-     */
-    @Override
-    public List<GenTable> selectGenTableList(GenTable genTable)
-    {
-        return genTableMapper.selectGenTableList(genTable);
-    }
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    @Override
-    public List<GenTable> selectDbTableList(GenTable genTable)
-    {
-        return genTableMapper.selectDbTableList(genTable);
-    }
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param tableNames 琛ㄥ悕绉扮粍
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    @Override
-    public List<GenTable> selectDbTableListByNames(String[] tableNames)
-    {
-        return genTableMapper.selectDbTableListByNames(tableNames);
-    }
-
-    /**
-     * 鏌ヨ鎵�鏈夎〃淇℃伅
-     * 
-     * @return 琛ㄤ俊鎭泦鍚�
-     */
-    @Override
-    public List<GenTable> selectGenTableAll()
-    {
-        return genTableMapper.selectGenTableAll();
-    }
-
-    /**
-     * 淇敼涓氬姟
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateGenTable(GenTable genTable)
-    {
-        String options = JSON.toJSONString(genTable.getParams());
-        genTable.setOptions(options);
-        int row = genTableMapper.updateGenTable(genTable);
-        if (row > 0)
-        {
-            for (GenTableColumn cenTableColumn : genTable.getColumns())
-            {
-                genTableColumnMapper.updateGenTableColumn(cenTableColumn);
-            }
-        }
-    }
-
-    /**
-     * 鍒犻櫎涓氬姟瀵硅薄
-     * 
-     * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteGenTableByIds(Long[] tableIds)
-    {
-        genTableMapper.deleteGenTableByIds(tableIds);
-        genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
-    }
-
-    /**
-     * 瀵煎叆琛ㄧ粨鏋�
-     * 
-     * @param tableList 瀵煎叆琛ㄥ垪琛�
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void importGenTable(List<GenTable> tableList)
-    {
-        String operName = SecurityUtils.getUsername();
-        try
-        {
-            for (GenTable table : tableList)
-            {
-                String tableName = table.getTableName();
-                GenUtils.initTable(table, operName);
-                int row = genTableMapper.insertGenTable(table);
-                if (row > 0)
-                {
-                    // 淇濆瓨鍒椾俊鎭�
-                    List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
-                    for (GenTableColumn column : genTableColumns)
-                    {
-                        GenUtils.initColumnField(column, table);
-                        genTableColumnMapper.insertGenTableColumn(column);
-                    }
-                }
-            }
-        }
-        catch (Exception e)
-        {
-            throw new ServiceException("瀵煎叆澶辫触锛�" + e.getMessage());
-        }
-    }
-
-    /**
-     * 棰勮浠g爜
-     * 
-     * @param tableId 琛ㄧ紪鍙�
-     * @return 棰勮鏁版嵁鍒楄〃
-     */
-    @Override
-    public Map<String, String> previewCode(Long tableId)
-    {
-        Map<String, String> dataMap = new LinkedHashMap<>();
-        // 鏌ヨ琛ㄤ俊鎭�
-        GenTable table = genTableMapper.selectGenTableById(tableId);
-        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
-        setSubTable(table);
-        // 璁剧疆涓婚敭鍒椾俊鎭�
-        setPkColumn(table);
-        VelocityInitializer.initVelocity();
-
-        VelocityContext context = VelocityUtils.prepareContext(table);
-
-        // 鑾峰彇妯℃澘鍒楄〃
-        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
-        for (String template : templates)
-        {
-            // 娓叉煋妯℃澘
-            StringWriter sw = new StringWriter();
-            Template tpl = Velocity.getTemplate(template, Constants.UTF8);
-            tpl.merge(context, sw);
-            dataMap.put(template, sw.toString());
-        }
-        return dataMap;
-    }
-
-    /**
-     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 鏁版嵁
-     */
-    @Override
-    public byte[] downloadCode(String tableName)
-    {
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        ZipOutputStream zip = new ZipOutputStream(outputStream);
-        generatorCode(tableName, zip);
-        IOUtils.closeQuietly(zip);
-        return outputStream.toByteArray();
-    }
-
-    /**
-     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     */
-    @Override
-    public void generatorCode(String tableName)
-    {
-        // 鏌ヨ琛ㄤ俊鎭�
-        GenTable table = genTableMapper.selectGenTableByName(tableName);
-        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
-        setSubTable(table);
-        // 璁剧疆涓婚敭鍒椾俊鎭�
-        setPkColumn(table);
-
-        VelocityInitializer.initVelocity();
-
-        VelocityContext context = VelocityUtils.prepareContext(table);
-
-        // 鑾峰彇妯℃澘鍒楄〃
-        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
-        for (String template : templates)
-        {
-            if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
-            {
-                // 娓叉煋妯℃澘
-                StringWriter sw = new StringWriter();
-                Template tpl = Velocity.getTemplate(template, Constants.UTF8);
-                tpl.merge(context, sw);
-                try
-                {
-                    String path = getGenPath(table, template);
-                    FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
-                }
-                catch (IOException e)
-                {
-                    throw new ServiceException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍚屾鏁版嵁搴�
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void synchDb(String tableName)
-    {
-        GenTable table = genTableMapper.selectGenTableByName(tableName);
-        List<GenTableColumn> tableColumns = table.getColumns();
-        Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
-
-        List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
-        if (StringUtils.isEmpty(dbTableColumns))
-        {
-            throw new ServiceException("鍚屾鏁版嵁澶辫触锛屽師琛ㄧ粨鏋勪笉瀛樺湪");
-        }
-        List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
-
-        dbTableColumns.forEach(column -> {
-            GenUtils.initColumnField(column, table);
-            if (tableColumnMap.containsKey(column.getColumnName()))
-            {
-                GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName());
-                column.setColumnId(prevColumn.getColumnId());
-                if (column.isList())
-                {
-                    // 濡傛灉鏄垪琛紝缁х画淇濈暀鏌ヨ鏂瑰紡/瀛楀吀绫诲瀷閫夐」
-                    column.setDictType(prevColumn.getDictType());
-                    column.setQueryType(prevColumn.getQueryType());
-                }
-                if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk()
-                        && (column.isInsert() || column.isEdit())
-                        && ((column.isUsableColumn()) || (!column.isSuperColumn())))
-                {
-                    // 濡傛灉鏄�(鏂板/淇敼&闈炰富閿�/闈炲拷鐣ュ強鐖跺睘鎬�)锛岀户缁繚鐣欏繀濉�/鏄剧ず绫诲瀷閫夐」
-                    column.setIsRequired(prevColumn.getIsRequired());
-                    column.setHtmlType(prevColumn.getHtmlType());
-                }
-                genTableColumnMapper.updateGenTableColumn(column);
-            }
-            else
-            {
-                genTableColumnMapper.insertGenTableColumn(column);
-            }
-        });
-
-        List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
-        if (StringUtils.isNotEmpty(delColumns))
-        {
-            genTableColumnMapper.deleteGenTableColumns(delColumns);
-        }
-    }
-
-    /**
-     * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
-     * @param tableNames 琛ㄦ暟缁�
-     * @return 鏁版嵁
-     */
-    @Override
-    public byte[] downloadCode(String[] tableNames)
-    {
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        ZipOutputStream zip = new ZipOutputStream(outputStream);
-        for (String tableName : tableNames)
-        {
-            generatorCode(tableName, zip);
-        }
-        IOUtils.closeQuietly(zip);
-        return outputStream.toByteArray();
-    }
-
-    /**
-     * 鏌ヨ琛ㄤ俊鎭苟鐢熸垚浠g爜
-     */
-    private void generatorCode(String tableName, ZipOutputStream zip)
-    {
-        // 鏌ヨ琛ㄤ俊鎭�
-        GenTable table = genTableMapper.selectGenTableByName(tableName);
-        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
-        setSubTable(table);
-        // 璁剧疆涓婚敭鍒椾俊鎭�
-        setPkColumn(table);
-
-        VelocityInitializer.initVelocity();
-
-        VelocityContext context = VelocityUtils.prepareContext(table);
-
-        // 鑾峰彇妯℃澘鍒楄〃
-        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
-        for (String template : templates)
-        {
-            // 娓叉煋妯℃澘
-            StringWriter sw = new StringWriter();
-            Template tpl = Velocity.getTemplate(template, Constants.UTF8);
-            tpl.merge(context, sw);
-            try
-            {
-                // 娣诲姞鍒皕ip
-                zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
-                IOUtils.write(sw.toString(), zip, Constants.UTF8);
-                IOUtils.closeQuietly(sw);
-                zip.flush();
-                zip.closeEntry();
-            }
-            catch (IOException e)
-            {
-                log.error("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName(), e);
-            }
-        }
-    }
-
-    /**
-     * 淇敼淇濆瓨鍙傛暟鏍¢獙
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     */
-    @Override
-    public void validateEdit(GenTable genTable)
-    {
-        if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
-        {
-            String options = JSON.toJSONString(genTable.getParams());
-            JSONObject paramsObj = JSON.parseObject(options);
-            if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE)))
-            {
-                throw new ServiceException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�");
-            }
-            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
-            {
-                throw new ServiceException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖");
-            }
-            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
-            {
-                throw new ServiceException("鏍戝悕绉板瓧娈典笉鑳戒负绌�");
-            }
-            else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory()))
-            {
-                if (StringUtils.isEmpty(genTable.getSubTableName()))
-                {
-                    throw new ServiceException("鍏宠仈瀛愯〃鐨勮〃鍚嶄笉鑳戒负绌�");
-                }
-                else if (StringUtils.isEmpty(genTable.getSubTableFkName()))
-                {
-                    throw new ServiceException("瀛愯〃鍏宠仈鐨勫閿悕涓嶈兘涓虹┖");
-                }
-            }
-        }
-    }
-
-    /**
-     * 璁剧疆涓婚敭鍒椾俊鎭�
-     * 
-     * @param table 涓氬姟琛ㄤ俊鎭�
-     */
-    public void setPkColumn(GenTable table)
-    {
-        for (GenTableColumn column : table.getColumns())
-        {
-            if (column.isPk())
-            {
-                table.setPkColumn(column);
-                break;
-            }
-        }
-        if (StringUtils.isNull(table.getPkColumn()))
-        {
-            table.setPkColumn(table.getColumns().get(0));
-        }
-        if (GenConstants.TPL_SUB.equals(table.getTplCategory()))
-        {
-            for (GenTableColumn column : table.getSubTable().getColumns())
-            {
-                if (column.isPk())
-                {
-                    table.getSubTable().setPkColumn(column);
-                    break;
-                }
-            }
-            if (StringUtils.isNull(table.getSubTable().getPkColumn()))
-            {
-                table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
-            }
-        }
-    }
-
-    /**
-     * 璁剧疆涓诲瓙琛ㄤ俊鎭�
-     * 
-     * @param table 涓氬姟琛ㄤ俊鎭�
-     */
-    public void setSubTable(GenTable table)
-    {
-        String subTableName = table.getSubTableName();
-        if (StringUtils.isNotEmpty(subTableName))
-        {
-            table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
-        }
-    }
-
-    /**
-     * 璁剧疆浠g爜鐢熸垚鍏朵粬閫夐」鍊�
-     * 
-     * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄
-     */
-    public void setTableFromOptions(GenTable genTable)
-    {
-        JSONObject paramsObj = JSON.parseObject(genTable.getOptions());
-        if (StringUtils.isNotNull(paramsObj))
-        {
-            String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
-            String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
-            String treeName = paramsObj.getString(GenConstants.TREE_NAME);
-            String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID);
-            String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME);
-
-            genTable.setTreeCode(treeCode);
-            genTable.setTreeParentCode(treeParentCode);
-            genTable.setTreeName(treeName);
-            genTable.setParentMenuId(parentMenuId);
-            genTable.setParentMenuName(parentMenuName);
-        }
-    }
-
-    /**
-     * 鑾峰彇浠g爜鐢熸垚鍦板潃
-     * 
-     * @param table 涓氬姟琛ㄤ俊鎭�
-     * @param template 妯℃澘鏂囦欢璺緞
-     * @return 鐢熸垚鍦板潃
-     */
-    public static String getGenPath(GenTable table, String template)
-    {
-        String genPath = table.getGenPath();
-        if (StringUtils.equals(genPath, "/"))
-        {
-            return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
-        }
-        return genPath + File.separator + VelocityUtils.getFileName(template, table);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java
deleted file mode 100644
index bf35e63..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableColumnService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ruoyi.gen.service;
-
-import java.util.List;
-import com.ruoyi.gen.domain.GenTableColumn;
-
-/**
- * 涓氬姟瀛楁 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface IGenTableColumnService
-{
-    /**
-     * 鏌ヨ涓氬姟瀛楁鍒楄〃
-     * 
-     * @param tableId 涓氬姟瀛楁缂栧彿
-     * @return 涓氬姟瀛楁闆嗗悎
-     */
-    public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);
-
-    /**
-     * 鏂板涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertGenTableColumn(GenTableColumn genTableColumn);
-
-    /**
-     * 淇敼涓氬姟瀛楁
-     * 
-     * @param genTableColumn 涓氬姟瀛楁淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateGenTableColumn(GenTableColumn genTableColumn);
-
-    /**
-     * 鍒犻櫎涓氬姟瀛楁淇℃伅
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteGenTableColumnByIds(String ids);
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java
deleted file mode 100644
index ad90cc9..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/IGenTableService.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.ruoyi.gen.service;
-
-import java.util.List;
-import java.util.Map;
-import com.ruoyi.gen.domain.GenTable;
-
-/**
- * 涓氬姟 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface IGenTableService
-{
-    /**
-     * 鏌ヨ涓氬姟鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 涓氬姟闆嗗悎
-     */
-    public List<GenTable> selectGenTableList(GenTable genTable);
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    public List<GenTable> selectDbTableList(GenTable genTable);
-
-    /**
-     * 鏌ヨ鎹簱鍒楄〃
-     * 
-     * @param tableNames 琛ㄥ悕绉扮粍
-     * @return 鏁版嵁搴撹〃闆嗗悎
-     */
-    public List<GenTable> selectDbTableListByNames(String[] tableNames);
-
-    /**
-     * 鏌ヨ鎵�鏈夎〃淇℃伅
-     * 
-     * @return 琛ㄤ俊鎭泦鍚�
-     */
-    public List<GenTable> selectGenTableAll();
-
-    /**
-     * 鏌ヨ涓氬姟淇℃伅
-     * 
-     * @param id 涓氬姟ID
-     * @return 涓氬姟淇℃伅
-     */
-    public GenTable selectGenTableById(Long id);
-
-    /**
-     * 淇敼涓氬姟
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     * @return 缁撴灉
-     */
-    public void updateGenTable(GenTable genTable);
-
-    /**
-     * 鍒犻櫎涓氬姟淇℃伅
-     * 
-     * @param tableIds 闇�瑕佸垹闄ょ殑琛ㄦ暟鎹甀D
-     * @return 缁撴灉
-     */
-    public void deleteGenTableByIds(Long[] tableIds);
-
-    /**
-     * 瀵煎叆琛ㄧ粨鏋�
-     * 
-     * @param tableList 瀵煎叆琛ㄥ垪琛�
-     */
-    public void importGenTable(List<GenTable> tableList);
-
-    /**
-     * 棰勮浠g爜
-     * 
-     * @param tableId 琛ㄧ紪鍙�
-     * @return 棰勮鏁版嵁鍒楄〃
-     */
-    public Map<String, String> previewCode(Long tableId);
-
-    /**
-     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 鏁版嵁
-     */
-    public byte[] downloadCode(String tableName);
-
-    /**
-     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 鏁版嵁
-     */
-    public void generatorCode(String tableName);
-
-    /**
-     * 鍚屾鏁版嵁搴�
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     */
-    public void synchDb(String tableName);
-
-    /**
-     * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
-     * 
-     * @param tableNames 琛ㄦ暟缁�
-     * @return 鏁版嵁
-     */
-    public byte[] downloadCode(String[] tableNames);
-
-    /**
-     * 淇敼淇濆瓨鍙傛暟鏍¢獙
-     * 
-     * @param genTable 涓氬姟淇℃伅
-     */
-    public void validateEdit(GenTable genTable);
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java
deleted file mode 100644
index 08da737..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package com.ruoyi.gen.util;
-
-import java.util.Arrays;
-import org.apache.commons.lang3.RegExUtils;
-import com.se.common.core.constant.GenConstants;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.gen.config.GenConfig;
-import com.ruoyi.gen.domain.GenTable;
-import com.ruoyi.gen.domain.GenTableColumn;
-
-/**
- * 浠g爜鐢熸垚鍣� 宸ュ叿绫�
- * 
- * @author admin
- */
-public class GenUtils
-{
-    /**
-     * 鍒濆鍖栬〃淇℃伅
-     */
-    public static void initTable(GenTable genTable, String operName)
-    {
-        genTable.setClassName(convertClassName(genTable.getTableName()));
-        genTable.setPackageName(GenConfig.getPackageName());
-        genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
-        genTable.setBusinessName(getBusinessName(genTable.getTableName()));
-        genTable.setFunctionName(replaceText(genTable.getTableComment()));
-        genTable.setFunctionAuthor(GenConfig.getAuthor());
-        genTable.setCreateBy(operName);
-    }
-
-    /**
-     * 鍒濆鍖栧垪灞炴�у瓧娈�
-     */
-    public static void initColumnField(GenTableColumn column, GenTable table)
-    {
-        String dataType = getDbType(column.getColumnType());
-        String columnName = column.getColumnName();
-        column.setTableId(table.getTableId());
-        column.setCreateBy(table.getCreateBy());
-        // 璁剧疆java瀛楁鍚�
-        column.setJavaField(StringUtils.toCamelCase(columnName));
-        // 璁剧疆榛樿绫诲瀷
-        column.setJavaType(GenConstants.TYPE_STRING);
-        column.setQueryType(GenConstants.QUERY_EQ);
-
-        if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType))
-        {
-            // 瀛楃涓查暱搴﹁秴杩�500璁剧疆涓烘枃鏈煙
-            Integer columnLength = getColumnLength(column.getColumnType());
-            String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
-            column.setHtmlType(htmlType);
-        }
-        else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType))
-        {
-            column.setJavaType(GenConstants.TYPE_DATE);
-            column.setHtmlType(GenConstants.HTML_DATETIME);
-        }
-        else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType))
-        {
-            column.setHtmlType(GenConstants.HTML_INPUT);
-
-            // 濡傛灉鏄诞鐐瑰瀷 缁熶竴鐢˙igDecimal
-            String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
-            if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
-            {
-                column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
-            }
-            // 濡傛灉鏄暣褰�
-            else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
-            {
-                column.setJavaType(GenConstants.TYPE_INTEGER);
-            }
-            // 闀挎暣褰�
-            else
-            {
-                column.setJavaType(GenConstants.TYPE_LONG);
-            }
-        }
-
-        // 鎻掑叆瀛楁锛堥粯璁ゆ墍鏈夊瓧娈甸兘闇�瑕佹彃鍏ワ級
-        column.setIsInsert(GenConstants.REQUIRE);
-
-        // 缂栬緫瀛楁
-        if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk())
-        {
-            column.setIsEdit(GenConstants.REQUIRE);
-        }
-        // 鍒楄〃瀛楁
-        if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk())
-        {
-            column.setIsList(GenConstants.REQUIRE);
-        }
-        // 鏌ヨ瀛楁
-        if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk())
-        {
-            column.setIsQuery(GenConstants.REQUIRE);
-        }
-
-        // 鏌ヨ瀛楁绫诲瀷
-        if (StringUtils.endsWithIgnoreCase(columnName, "name"))
-        {
-            column.setQueryType(GenConstants.QUERY_LIKE);
-        }
-        // 鐘舵�佸瓧娈佃缃崟閫夋
-        if (StringUtils.endsWithIgnoreCase(columnName, "status"))
-        {
-            column.setHtmlType(GenConstants.HTML_RADIO);
-        }
-        // 绫诲瀷&鎬у埆瀛楁璁剧疆涓嬫媺妗�
-        else if (StringUtils.endsWithIgnoreCase(columnName, "type")
-                || StringUtils.endsWithIgnoreCase(columnName, "sex"))
-        {
-            column.setHtmlType(GenConstants.HTML_SELECT);
-        }
-        // 鍥剧墖瀛楁璁剧疆鍥剧墖涓婁紶鎺т欢
-        else if (StringUtils.endsWithIgnoreCase(columnName, "image"))
-        {
-            column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
-        }
-        // 鏂囦欢瀛楁璁剧疆鏂囦欢涓婁紶鎺т欢
-        else if (StringUtils.endsWithIgnoreCase(columnName, "file"))
-        {
-            column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
-        }
-        // 鍐呭瀛楁璁剧疆瀵屾枃鏈帶浠�
-        else if (StringUtils.endsWithIgnoreCase(columnName, "content"))
-        {
-            column.setHtmlType(GenConstants.HTML_EDITOR);
-        }
-    }
-
-    /**
-     * 鏍¢獙鏁扮粍鏄惁鍖呭惈鎸囧畾鍊�
-     * 
-     * @param arr 鏁扮粍
-     * @param targetValue 鍊�
-     * @return 鏄惁鍖呭惈
-     */
-    public static boolean arraysContains(String[] arr, String targetValue)
-    {
-        return Arrays.asList(arr).contains(targetValue);
-    }
-
-    /**
-     * 鑾峰彇妯″潡鍚�
-     * 
-     * @param packageName 鍖呭悕
-     * @return 妯″潡鍚�
-     */
-    public static String getModuleName(String packageName)
-    {
-        int lastIndex = packageName.lastIndexOf(".");
-        int nameLength = packageName.length();
-        return StringUtils.substring(packageName, lastIndex + 1, nameLength);
-    }
-
-    /**
-     * 鑾峰彇涓氬姟鍚�
-     * 
-     * @param tableName 琛ㄥ悕
-     * @return 涓氬姟鍚�
-     */
-    public static String getBusinessName(String tableName)
-    {
-        int lastIndex = tableName.lastIndexOf("_");
-        int nameLength = tableName.length();
-        return StringUtils.substring(tableName, lastIndex + 1, nameLength);
-    }
-
-    /**
-     * 琛ㄥ悕杞崲鎴怞ava绫诲悕
-     * 
-     * @param tableName 琛ㄥ悕绉�
-     * @return 绫诲悕
-     */
-    public static String convertClassName(String tableName)
-    {
-        boolean autoRemovePre = GenConfig.getAutoRemovePre();
-        String tablePrefix = GenConfig.getTablePrefix();
-        if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix))
-        {
-            String[] searchList = StringUtils.split(tablePrefix, ",");
-            tableName = replaceFirst(tableName, searchList);
-        }
-        return StringUtils.convertToCamelCase(tableName);
-    }
-
-    /**
-     * 鎵归噺鏇挎崲鍓嶇紑
-     * 
-     * @param replacementm 鏇挎崲鍊�
-     * @param searchList 鏇挎崲鍒楄〃
-     * @return
-     */
-    public static String replaceFirst(String replacementm, String[] searchList)
-    {
-        String text = replacementm;
-        for (String searchString : searchList)
-        {
-            if (replacementm.startsWith(searchString))
-            {
-                text = replacementm.replaceFirst(searchString, "");
-                break;
-            }
-        }
-        return text;
-    }
-
-    /**
-     * 鍏抽敭瀛楁浛鎹�
-     * 
-     * @param text 闇�瑕佽鏇挎崲鐨勫悕瀛�
-     * @return 鏇挎崲鍚庣殑鍚嶅瓧
-     */
-    public static String replaceText(String text)
-    {
-        return RegExUtils.replaceAll(text, "(?:琛▅鑻ヤ緷)", "");
-    }
-
-    /**
-     * 鑾峰彇鏁版嵁搴撶被鍨嬪瓧娈�
-     * 
-     * @param columnType 鍒楃被鍨�
-     * @return 鎴彇鍚庣殑鍒楃被鍨�
-     */
-    public static String getDbType(String columnType)
-    {
-        if (StringUtils.indexOf(columnType, "(") > 0)
-        {
-            return StringUtils.substringBefore(columnType, "(");
-        }
-        else
-        {
-            return columnType;
-        }
-    }
-
-    /**
-     * 鑾峰彇瀛楁闀垮害
-     * 
-     * @param columnType 鍒楃被鍨�
-     * @return 鎴彇鍚庣殑鍒楃被鍨�
-     */
-    public static Integer getColumnLength(String columnType)
-    {
-        if (StringUtils.indexOf(columnType, "(") > 0)
-        {
-            String length = StringUtils.substringBetween(columnType, "(", ")");
-            return Integer.valueOf(length);
-        }
-        else
-        {
-            return 0;
-        }
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java
deleted file mode 100644
index 277ee9a..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityInitializer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.ruoyi.gen.util;
-
-import java.util.Properties;
-import org.apache.velocity.app.Velocity;
-import com.se.common.core.constant.Constants;
-
-/**
- * VelocityEngine宸ュ巶
- * 
- * @author admin
- */
-public class VelocityInitializer
-{
-    /**
-     * 鍒濆鍖杤m鏂规硶
-     */
-    public static void initVelocity()
-    {
-        Properties p = new Properties();
-        try
-        {
-            // 鍔犺浇classpath鐩綍涓嬬殑vm鏂囦欢
-            p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
-            // 瀹氫箟瀛楃闆�
-            p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8);
-            // 鍒濆鍖朧elocity寮曟搸锛屾寚瀹氶厤缃甈roperties
-            Velocity.init(p);
-        }
-        catch (Exception e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java
deleted file mode 100644
index 5fc5383..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java
+++ /dev/null
@@ -1,408 +0,0 @@
-package com.ruoyi.gen.util;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.velocity.VelocityContext;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
-import com.se.common.core.constant.GenConstants;
-import com.se.common.core.utils.DateUtils;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.gen.domain.GenTable;
-import com.ruoyi.gen.domain.GenTableColumn;
-
-/**
- * 妯℃澘宸ュ叿绫�
- * 
- * @author admin
- */
-public class VelocityUtils
-{
-    /** 椤圭洰绌洪棿璺緞 */
-    private static final String PROJECT_PATH = "main/java";
-
-    /** mybatis绌洪棿璺緞 */
-    private static final String MYBATIS_PATH = "main/resources/mapper";
-
-    /** 榛樿涓婄骇鑿滃崟锛岀郴缁熷伐鍏� */
-    private static final String DEFAULT_PARENT_MENU_ID = "3";
-
-    /**
-     * 璁剧疆妯℃澘鍙橀噺淇℃伅
-     *
-     * @return 妯℃澘鍒楄〃
-     */
-    public static VelocityContext prepareContext(GenTable genTable)
-    {
-        String moduleName = genTable.getModuleName();
-        String businessName = genTable.getBusinessName();
-        String packageName = genTable.getPackageName();
-        String tplCategory = genTable.getTplCategory();
-        String functionName = genTable.getFunctionName();
-
-        VelocityContext velocityContext = new VelocityContext();
-        velocityContext.put("tplCategory", genTable.getTplCategory());
-        velocityContext.put("tableName", genTable.getTableName());
-        velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "銆愯濉啓鍔熻兘鍚嶇О銆�");
-        velocityContext.put("ClassName", genTable.getClassName());
-        velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName()));
-        velocityContext.put("moduleName", genTable.getModuleName());
-        velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName()));
-        velocityContext.put("businessName", genTable.getBusinessName());
-        velocityContext.put("basePackage", getPackagePrefix(packageName));
-        velocityContext.put("packageName", packageName);
-        velocityContext.put("author", genTable.getFunctionAuthor());
-        velocityContext.put("datetime", DateUtils.getDate());
-        velocityContext.put("pkColumn", genTable.getPkColumn());
-        velocityContext.put("importList", getImportList(genTable));
-        velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
-        velocityContext.put("columns", genTable.getColumns());
-        velocityContext.put("table", genTable);
-        velocityContext.put("dicts", getDicts(genTable));
-        setMenuVelocityContext(velocityContext, genTable);
-        if (GenConstants.TPL_TREE.equals(tplCategory))
-        {
-            setTreeVelocityContext(velocityContext, genTable);
-        }
-        if (GenConstants.TPL_SUB.equals(tplCategory))
-        {
-            setSubVelocityContext(velocityContext, genTable);
-        }
-        return velocityContext;
-    }
-
-    public static void setMenuVelocityContext(VelocityContext context, GenTable genTable)
-    {
-        String options = genTable.getOptions();
-        JSONObject paramsObj = JSON.parseObject(options);
-        String parentMenuId = getParentMenuId(paramsObj);
-        context.put("parentMenuId", parentMenuId);
-    }
-
-    public static void setTreeVelocityContext(VelocityContext context, GenTable genTable)
-    {
-        String options = genTable.getOptions();
-        JSONObject paramsObj = JSON.parseObject(options);
-        String treeCode = getTreecode(paramsObj);
-        String treeParentCode = getTreeParentCode(paramsObj);
-        String treeName = getTreeName(paramsObj);
-
-        context.put("treeCode", treeCode);
-        context.put("treeParentCode", treeParentCode);
-        context.put("treeName", treeName);
-        context.put("expandColumn", getExpandColumn(genTable));
-        if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
-        {
-            context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE));
-        }
-        if (paramsObj.containsKey(GenConstants.TREE_NAME))
-        {
-            context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME));
-        }
-    }
-
-    public static void setSubVelocityContext(VelocityContext context, GenTable genTable)
-    {
-        GenTable subTable = genTable.getSubTable();
-        String subTableName = genTable.getSubTableName();
-        String subTableFkName = genTable.getSubTableFkName();
-        String subClassName = genTable.getSubTable().getClassName();
-        String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName);
-
-        context.put("subTable", subTable);
-        context.put("subTableName", subTableName);
-        context.put("subTableFkName", subTableFkName);
-        context.put("subTableFkClassName", subTableFkClassName);
-        context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName));
-        context.put("subClassName", subClassName);
-        context.put("subclassName", StringUtils.uncapitalize(subClassName));
-        context.put("subImportList", getImportList(genTable.getSubTable()));
-    }
-
-    /**
-     * 鑾峰彇妯℃澘淇℃伅
-     * @param tplCategory 鐢熸垚鐨勬ā鏉�
-     * @param tplWebType 鍓嶇绫诲瀷
-     * @return 妯℃澘鍒楄〃
-     */
-    public static List<String> getTemplateList(String tplCategory, String tplWebType)
-    {
-        String useWebType = "vm/vue";
-        if ("element-plus".equals(tplWebType))
-        {
-            useWebType = "vm/vue/v3";
-        }
-        List<String> templates = new ArrayList<String>();
-        templates.add("vm/java/domain.java.vm");
-        templates.add("vm/java/mapper.java.vm");
-        templates.add("vm/java/service.java.vm");
-        templates.add("vm/java/serviceImpl.java.vm");
-        templates.add("vm/java/controller.java.vm");
-        templates.add("vm/xml/mapper.xml.vm");
-        templates.add("vm/sql/sql.vm");
-        templates.add("vm/js/api.js.vm");
-        if (GenConstants.TPL_CRUD.equals(tplCategory))
-        {
-            templates.add(useWebType + "/index.vue.vm");
-        }
-        else if (GenConstants.TPL_TREE.equals(tplCategory))
-        {
-            templates.add(useWebType + "/index-tree.vue.vm");
-        }
-        else if (GenConstants.TPL_SUB.equals(tplCategory))
-        {
-            templates.add(useWebType + "/index.vue.vm");
-            templates.add("vm/java/sub-domain.java.vm");
-        }
-        return templates;
-    }
-
-    /**
-     * 鑾峰彇鏂囦欢鍚�
-     */
-    public static String getFileName(String template, GenTable genTable)
-    {
-        // 鏂囦欢鍚嶇О
-        String fileName = "";
-        // 鍖呰矾寰�
-        String packageName = genTable.getPackageName();
-        // 妯″潡鍚�
-        String moduleName = genTable.getModuleName();
-        // 澶у啓绫诲悕
-        String className = genTable.getClassName();
-        // 涓氬姟鍚嶇О
-        String businessName = genTable.getBusinessName();
-
-        String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/");
-        String mybatisPath = MYBATIS_PATH + "/" + moduleName;
-        String vuePath = "vue";
-
-        if (template.contains("domain.java.vm"))
-        {
-            fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
-        }
-        if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
-        {
-            fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
-        }
-        else if (template.contains("mapper.java.vm"))
-        {
-            fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
-        }
-        else if (template.contains("service.java.vm"))
-        {
-            fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
-        }
-        else if (template.contains("serviceImpl.java.vm"))
-        {
-            fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
-        }
-        else if (template.contains("controller.java.vm"))
-        {
-            fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
-        }
-        else if (template.contains("mapper.xml.vm"))
-        {
-            fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
-        }
-        else if (template.contains("sql.vm"))
-        {
-            fileName = businessName + "Menu.sql";
-        }
-        else if (template.contains("api.js.vm"))
-        {
-            fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
-        }
-        else if (template.contains("index.vue.vm"))
-        {
-            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
-        }
-        else if (template.contains("index-tree.vue.vm"))
-        {
-            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
-        }
-        return fileName;
-    }
-
-    /**
-     * 鑾峰彇鍖呭墠缂�
-     *
-     * @param packageName 鍖呭悕绉�
-     * @return 鍖呭墠缂�鍚嶇О
-     */
-    public static String getPackagePrefix(String packageName)
-    {
-        int lastIndex = packageName.lastIndexOf(".");
-        return StringUtils.substring(packageName, 0, lastIndex);
-    }
-
-    /**
-     * 鏍规嵁鍒楃被鍨嬭幏鍙栧鍏ュ寘
-     * 
-     * @param genTable 涓氬姟琛ㄥ璞�
-     * @return 杩斿洖闇�瑕佸鍏ョ殑鍖呭垪琛�
-     */
-    public static HashSet<String> getImportList(GenTable genTable)
-    {
-        List<GenTableColumn> columns = genTable.getColumns();
-        GenTable subGenTable = genTable.getSubTable();
-        HashSet<String> importList = new HashSet<String>();
-        if (StringUtils.isNotNull(subGenTable))
-        {
-            importList.add("java.util.List");
-        }
-        for (GenTableColumn column : columns)
-        {
-            if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType()))
-            {
-                importList.add("java.util.Date");
-                importList.add("com.fasterxml.jackson.annotation.JsonFormat");
-            }
-            else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType()))
-            {
-                importList.add("java.math.BigDecimal");
-            }
-        }
-        return importList;
-    }
-
-    /**
-     * 鏍规嵁鍒楃被鍨嬭幏鍙栧瓧鍏哥粍
-     * 
-     * @param genTable 涓氬姟琛ㄥ璞�
-     * @return 杩斿洖瀛楀吀缁�
-     */
-    public static String getDicts(GenTable genTable)
-    {
-        List<GenTableColumn> columns = genTable.getColumns();
-        Set<String> dicts = new HashSet<String>();
-        addDicts(dicts, columns);
-        if (StringUtils.isNotNull(genTable.getSubTable()))
-        {
-            List<GenTableColumn> subColumns = genTable.getSubTable().getColumns();
-            addDicts(dicts, subColumns);
-        }
-        return StringUtils.join(dicts, ", ");
-    }
-
-    /**
-     * 娣诲姞瀛楀吀鍒楄〃
-     * 
-     * @param dicts 瀛楀吀鍒楄〃
-     * @param columns 鍒楅泦鍚�
-     */
-    public static void addDicts(Set<String> dicts, List<GenTableColumn> columns)
-    {
-        for (GenTableColumn column : columns)
-        {
-            if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny(
-                    column.getHtmlType(),
-                    new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX }))
-            {
-                dicts.add("'" + column.getDictType() + "'");
-            }
-        }
-    }
-
-    /**
-     * 鑾峰彇鏉冮檺鍓嶇紑
-     *
-     * @param moduleName 妯″潡鍚嶇О
-     * @param businessName 涓氬姟鍚嶇О
-     * @return 杩斿洖鏉冮檺鍓嶇紑
-     */
-    public static String getPermissionPrefix(String moduleName, String businessName)
-    {
-        return StringUtils.format("{}:{}", moduleName, businessName);
-    }
-
-    /**
-     * 鑾峰彇涓婄骇鑿滃崟ID瀛楁
-     *
-     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
-     * @return 涓婄骇鑿滃崟ID瀛楁
-     */
-    public static String getParentMenuId(JSONObject paramsObj)
-    {
-        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
-                && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID)))
-        {
-            return paramsObj.getString(GenConstants.PARENT_MENU_ID);
-        }
-        return DEFAULT_PARENT_MENU_ID;
-    }
-
-    /**
-     * 鑾峰彇鏍戠紪鐮�
-     *
-     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
-     * @return 鏍戠紪鐮�
-     */
-    public static String getTreecode(JSONObject paramsObj)
-    {
-        if (paramsObj.containsKey(GenConstants.TREE_CODE))
-        {
-            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE));
-        }
-        return StringUtils.EMPTY;
-    }
-
-    /**
-     * 鑾峰彇鏍戠埗缂栫爜
-     *
-     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
-     * @return 鏍戠埗缂栫爜
-     */
-    public static String getTreeParentCode(JSONObject paramsObj)
-    {
-        if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
-        {
-            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE));
-        }
-        return StringUtils.EMPTY;
-    }
-
-    /**
-     * 鑾峰彇鏍戝悕绉�
-     *
-     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
-     * @return 鏍戝悕绉�
-     */
-    public static String getTreeName(JSONObject paramsObj)
-    {
-        if (paramsObj.containsKey(GenConstants.TREE_NAME))
-        {
-            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME));
-        }
-        return StringUtils.EMPTY;
-    }
-
-    /**
-     * 鑾峰彇闇�瑕佸湪鍝竴鍒椾笂闈㈡樉绀哄睍寮�鎸夐挳
-     *
-     * @param genTable 涓氬姟琛ㄥ璞�
-     * @return 灞曞紑鎸夐挳鍒楀簭鍙�
-     */
-    public static int getExpandColumn(GenTable genTable)
-    {
-        String options = genTable.getOptions();
-        JSONObject paramsObj = JSON.parseObject(options);
-        String treeName = paramsObj.getString(GenConstants.TREE_NAME);
-        int num = 0;
-        for (GenTableColumn column : genTable.getColumns())
-        {
-            if (column.isList())
-            {
-                num++;
-                String columnName = column.getColumnName();
-                if (columnName.equals(treeName))
-                {
-                    break;
-                }
-            }
-        }
-        return num;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
deleted file mode 100644
index 9723938..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.gen.mapper.GenTableColumnMapper">
-
-    <resultMap type="GenTableColumn" id="GenTableColumnResult">
-        <id     property="columnId"       column="column_id"      />
-        <result property="tableId"        column="table_id"       />
-        <result property="columnName"     column="column_name"    />
-        <result property="columnComment"  column="column_comment" />
-        <result property="columnType"     column="column_type"    />
-        <result property="javaType"       column="java_type"      />
-        <result property="javaField"      column="java_field"     />
-        <result property="isPk"           column="is_pk"          />
-        <result property="isIncrement"    column="is_increment"   />
-        <result property="isRequired"     column="is_required"    />
-        <result property="isInsert"       column="is_insert"      />
-        <result property="isEdit"         column="is_edit"        />
-        <result property="isList"         column="is_list"        />
-        <result property="isQuery"        column="is_query"       />
-        <result property="queryType"      column="query_type"     />
-        <result property="htmlType"       column="html_type"      />
-        <result property="dictType"       column="dict_type"      />
-        <result property="sort"           column="sort"           />
-        <result property="createBy"       column="create_by"      />
-        <result property="createTime"     column="create_time"    />
-        <result property="updateBy"       column="update_by"      />
-        <result property="updateTime"     column="update_time"    />
-    </resultMap>
-
-	<sql id="selectGenTableColumnVo">
-        select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column
-    </sql>
-
-    <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult">
-        <include refid="selectGenTableColumnVo"/>
-        where table_id = #{tableId}
-        order by sort
-    </select>
-
-    <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
-		select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
-		from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
-		order by ordinal_position
-	</select>
-
-    <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId">
-        insert into gen_table_column (
-			<if test="tableId != null and tableId != ''">table_id,</if>
-			<if test="columnName != null and columnName != ''">column_name,</if>
-			<if test="columnComment != null and columnComment != ''">column_comment,</if>
-			<if test="columnType != null and columnType != ''">column_type,</if>
-			<if test="javaType != null and javaType != ''">java_type,</if>
-			<if test="javaField != null  and javaField != ''">java_field,</if>
-			<if test="isPk != null and isPk != ''">is_pk,</if>
-			<if test="isIncrement != null and isIncrement != ''">is_increment,</if>
-			<if test="isRequired != null and isRequired != ''">is_required,</if>
-			<if test="isInsert != null and isInsert != ''">is_insert,</if>
-			<if test="isEdit != null and isEdit != ''">is_edit,</if>
-			<if test="isList != null and isList != ''">is_list,</if>
-			<if test="isQuery != null and isQuery != ''">is_query,</if>
-			<if test="queryType != null and queryType != ''">query_type,</if>
-			<if test="htmlType != null and htmlType != ''">html_type,</if>
-			<if test="dictType != null and dictType != ''">dict_type,</if>
-			<if test="sort != null">sort,</if>
-			<if test="createBy != null and createBy != ''">create_by,</if>
-			create_time
-         )values(
-			<if test="tableId != null and tableId != ''">#{tableId},</if>
-			<if test="columnName != null and columnName != ''">#{columnName},</if>
-			<if test="columnComment != null and columnComment != ''">#{columnComment},</if>
-			<if test="columnType != null and columnType != ''">#{columnType},</if>
-			<if test="javaType != null and javaType != ''">#{javaType},</if>
-			<if test="javaField != null and javaField != ''">#{javaField},</if>
-			<if test="isPk != null and isPk != ''">#{isPk},</if>
-			<if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
-			<if test="isRequired != null and isRequired != ''">#{isRequired},</if>
-			<if test="isInsert != null and isInsert != ''">#{isInsert},</if>
-			<if test="isEdit != null and isEdit != ''">#{isEdit},</if>
-			<if test="isList != null and isList != ''">#{isList},</if>
-			<if test="isQuery != null and isQuery != ''">#{isQuery},</if>
-			<if test="queryType != null and queryType != ''">#{queryType},</if>
-			<if test="htmlType != null and htmlType != ''">#{htmlType},</if>
-			<if test="dictType != null and dictType != ''">#{dictType},</if>
-			<if test="sort != null">#{sort},</if>
-			<if test="createBy != null and createBy != ''">#{createBy},</if>
-			sysdate()
-         )
-    </insert>
-
-    <update id="updateGenTableColumn" parameterType="GenTableColumn">
-        update gen_table_column
-        <set>
-            <if test="columnComment != null">column_comment = #{columnComment},</if>
-            <if test="javaType != null">java_type = #{javaType},</if>
-            <if test="javaField != null">java_field = #{javaField},</if>
-            <if test="isInsert != null">is_insert = #{isInsert},</if>
-            <if test="isEdit != null">is_edit = #{isEdit},</if>
-            <if test="isList != null">is_list = #{isList},</if>
-            <if test="isQuery != null">is_query = #{isQuery},</if>
-            <if test="isRequired != null">is_required = #{isRequired},</if>
-            <if test="queryType != null">query_type = #{queryType},</if>
-            <if test="htmlType != null">html_type = #{htmlType},</if>
-            <if test="dictType != null">dict_type = #{dictType},</if>
-            <if test="sort != null">sort = #{sort},</if>
-            <if test="updateBy != null">update_by = #{updateBy},</if>
-            update_time = sysdate()
-        </set>
-        where column_id = #{columnId}
-    </update>
-
-    <delete id="deleteGenTableColumnByIds" parameterType="Long">
-        delete from gen_table_column where table_id in
-        <foreach collection="array" item="tableId" open="(" separator="," close=")">
-            #{tableId}
-        </foreach>
-    </delete>
-    
-    <delete id="deleteGenTableColumns">
-        delete from gen_table_column where column_id in
-        <foreach collection="list" item="item" open="(" separator="," close=")">
-            #{item.columnId}
-        </foreach>
-    </delete>
-
-</mapper>
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml
deleted file mode 100644
index 3daf21e..0000000
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/mapper/generator/GenTableMapper.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.gen.mapper.GenTableMapper">
-
-	<resultMap type="GenTable" id="GenTableResult">
-	    <id     property="tableId"        column="table_id"          />
-		<result property="tableName"      column="table_name"        />
-		<result property="tableComment"   column="table_comment"     />
-		<result property="subTableName"   column="sub_table_name"    />
-		<result property="subTableFkName" column="sub_table_fk_name" />
-		<result property="className"      column="class_name"        />
-		<result property="tplCategory"    column="tpl_category"      />
-		<result property="tplWebType"     column="tpl_web_type"      />
-		<result property="packageName"    column="package_name"      />
-		<result property="moduleName"     column="module_name"       />
-		<result property="businessName"   column="business_name"     />
-		<result property="functionName"   column="function_name"     />
-		<result property="functionAuthor" column="function_author"   />
-		<result property="genType"        column="gen_type"          />
-		<result property="genPath"        column="gen_path"          />
-		<result property="options"        column="options"           />
-		<result property="createBy"       column="create_by"         />
-		<result property="createTime"     column="create_time"       />
-		<result property="updateBy"       column="update_by"         />
-		<result property="updateTime"     column="update_time"       />
-		<result property="remark"         column="remark"            />
-		<collection  property="columns"   javaType="java.util.List"  resultMap="GenTableColumnResult" />
-	</resultMap>
-	
-	<resultMap type="GenTableColumn" id="GenTableColumnResult">
-        <id     property="columnId"       column="column_id"      />
-        <result property="tableId"        column="table_id"       />
-        <result property="columnName"     column="column_name"    />
-        <result property="columnComment"  column="column_comment" />
-        <result property="columnType"     column="column_type"    />
-        <result property="javaType"       column="java_type"      />
-        <result property="javaField"      column="java_field"     />
-        <result property="isPk"           column="is_pk"          />
-        <result property="isIncrement"    column="is_increment"   />
-        <result property="isRequired"     column="is_required"    />
-        <result property="isInsert"       column="is_insert"      />
-        <result property="isEdit"         column="is_edit"        />
-        <result property="isList"         column="is_list"        />
-        <result property="isQuery"        column="is_query"       />
-        <result property="queryType"      column="query_type"     />
-        <result property="htmlType"       column="html_type"      />
-        <result property="dictType"       column="dict_type"      />
-        <result property="sort"           column="sort"           />
-        <result property="createBy"       column="create_by"      />
-        <result property="createTime"     column="create_time"    />
-        <result property="updateBy"       column="update_by"      />
-        <result property="updateTime"     column="update_time"    />
-    </resultMap>
-	
-	<sql id="selectGenTableVo">
-        select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
-    </sql>
-    
-    <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
-		<include refid="selectGenTableVo"/>
-		<where>
-			<if test="tableName != null and tableName != ''">
-				AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
-			</if>
-			<if test="tableComment != null and tableComment != ''">
-				AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
-			</if>
-			<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
-				AND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
-			</if>
-			<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
-				AND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
-			</if>
-		</where>
-	</select>
-
-	<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
-		select table_name, table_comment, create_time, update_time from information_schema.tables
-		where table_schema = (select database())
-		AND table_name NOT LIKE 'qrtz\_%' AND table_name NOT LIKE 'gen\_%'
-		AND table_name NOT IN (select table_name from gen_table)
-		<if test="tableName != null and tableName != ''">
-			AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
-		</if>
-		<if test="tableComment != null and tableComment != ''">
-			AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
-		</if>
-		<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
-			AND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
-		</if>
-		<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
-			AND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
-		</if>
-        order by create_time desc
-	</select>
-	
-	<select id="selectDbTableListByNames" resultMap="GenTableResult">
-		select table_name, table_comment, create_time, update_time from information_schema.tables
-		where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database())
-		and table_name in
-	    <foreach collection="array" item="name" open="(" separator="," close=")">
- 			#{name}
-        </foreach> 
-	</select>
-	
-	<select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
-		select table_name, table_comment, create_time, update_time from information_schema.tables
-		where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())
-		and table_name = #{tableName}
-	</select>
-	
-	<select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult">
-	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
-			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
-		FROM gen_table t
-			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
-		where t.table_id = #{tableId} order by c.sort
-	</select>
-	
-	<select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult">
-	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
-			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
-		FROM gen_table t
-			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
-		where t.table_name = #{tableName} order by c.sort
-	</select>
-	
-	<select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult">
-	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
-			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
-		FROM gen_table t
-			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
-		order by c.sort
-	</select>
-	
-	<insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
-        insert into gen_table (
-			<if test="tableName != null">table_name,</if>
-			<if test="tableComment != null and tableComment != ''">table_comment,</if>
-			<if test="className != null and className != ''">class_name,</if>
-			<if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
-			<if test="tplWebType != null and tplWebType != ''">tpl_web_type,</if>
-			<if test="packageName != null and packageName != ''">package_name,</if>
-			<if test="moduleName != null and moduleName != ''">module_name,</if>
-			<if test="businessName != null and businessName != ''">business_name,</if>
-			<if test="functionName != null and functionName != ''">function_name,</if>
-			<if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
-			<if test="genType != null and genType != ''">gen_type,</if>
-			<if test="genPath != null and genPath != ''">gen_path,</if>
-			<if test="remark != null and remark != ''">remark,</if>
- 			<if test="createBy != null and createBy != ''">create_by,</if>
-			create_time
-         )values(
-			<if test="tableName != null">#{tableName},</if>
-			<if test="tableComment != null and tableComment != ''">#{tableComment},</if>
-			<if test="className != null and className != ''">#{className},</if>
-			<if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
-			<if test="tplWebType != null and tplWebType != ''">#{tplWebType},</if>
-			<if test="packageName != null and packageName != ''">#{packageName},</if>
-			<if test="moduleName != null and moduleName != ''">#{moduleName},</if>
-			<if test="businessName != null and businessName != ''">#{businessName},</if>
-			<if test="functionName != null and functionName != ''">#{functionName},</if>
-			<if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
-			<if test="genType != null and genType != ''">#{genType},</if>
-			<if test="genPath != null and genPath != ''">#{genPath},</if>
-			<if test="remark != null and remark != ''">#{remark},</if>
- 			<if test="createBy != null and createBy != ''">#{createBy},</if>
-			sysdate()
-         )
-    </insert>
-    
-    <update id="updateGenTable" parameterType="GenTable">
-        update gen_table
-        <set>
-            <if test="tableName != null">table_name = #{tableName},</if>
-            <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
-            <if test="subTableName != null">sub_table_name = #{subTableName},</if>
-            <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
-            <if test="className != null and className != ''">class_name = #{className},</if>
-            <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
-            <if test="genType != null and genType != ''">gen_type = #{genType},</if>
-            <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
-            <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
-            <if test="tplWebType != null and tplWebType != ''">tpl_web_type = #{tplWebType},</if>
-            <if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
-            <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
-            <if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
-            <if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
-            <if test="options != null and options != ''">options = #{options},</if>
-            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
-            <if test="remark != null">remark = #{remark},</if>
-            update_time = sysdate()
-        </set>
-        where table_id = #{tableId}
-    </update>
-    
-    <delete id="deleteGenTableByIds" parameterType="Long">
-        delete from gen_table where table_id in 
-        <foreach collection="array" item="tableId" open="(" separator="," close=")">
-            #{tableId}
-        </foreach>
-    </delete>
-
-</mapper>
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java
deleted file mode 100644
index 1e316f6..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.ruoyi.job;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import com.se.common.security.annotation.EnableCustomConfig;
-import com.se.common.security.annotation.EnableRyFeignClients;
-import com.se.common.swagger.annotation.EnableCustomSwagger2;
-
-/**
- * 瀹氭椂浠诲姟
- * 
- * @author admin
- */
-@EnableCustomConfig
-@EnableCustomSwagger2
-@EnableRyFeignClients   
-@SpringBootApplication
-public class RuoYiJobApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiJobApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  瀹氭椂浠诲姟妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java
deleted file mode 100644
index 0959adc..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.ruoyi.job.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.exception.job.TaskException;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.job.domain.SysJob;
-import com.ruoyi.job.service.ISysJobService;
-import com.ruoyi.job.util.CronUtils;
-import com.ruoyi.job.util.ScheduleUtils;
-
-/**
- * 璋冨害浠诲姟淇℃伅鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/job")
-public class SysJobController extends BaseController
-{
-    @Autowired
-    private ISysJobService jobService;
-
-    /**
-     * 鏌ヨ瀹氭椂浠诲姟鍒楄〃
-     */
-    @RequiresPermissions("monitor:job:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysJob sysJob)
-    {
-        startPage();
-        List<SysJob> list = jobService.selectJobList(sysJob);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭瀹氭椂浠诲姟鍒楄〃
-     */
-    @RequiresPermissions("monitor:job:export")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysJob sysJob)
-    {
-        List<SysJob> list = jobService.selectJobList(sysJob);
-        ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
-        util.exportExcel(response, list, "瀹氭椂浠诲姟");
-    }
-
-    /**
-     * 鑾峰彇瀹氭椂浠诲姟璇︾粏淇℃伅
-     */
-    @RequiresPermissions("monitor:job:query")
-    @GetMapping(value = "/{jobId}")
-    public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
-    {
-        return success(jobService.selectJobById(jobId));
-    }
-
-    /**
-     * 鏂板瀹氭椂浠诲姟
-     */
-    @RequiresPermissions("monitor:job:add")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException
-    {
-        if (!CronUtils.isValid(job.getCronExpression()))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊");
-        }
-        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
-        {
-            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴");
-        }
-        job.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(jobService.insertJob(job));
-    }
-
-    /**
-     * 淇敼瀹氭椂浠诲姟
-     */
-    @RequiresPermissions("monitor:job:edit")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException
-    {
-        if (!CronUtils.isValid(job.getCronExpression()))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊");
-        }
-        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
-        {
-            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴");
-        }
-        job.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(jobService.updateJob(job));
-    }
-
-    /**
-     * 瀹氭椂浠诲姟鐘舵�佷慨鏀�
-     */
-    @RequiresPermissions("monitor:job:changeStatus")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException
-    {
-        SysJob newJob = jobService.selectJobById(job.getJobId());
-        newJob.setStatus(job.getStatus());
-        return toAjax(jobService.changeStatus(newJob));
-    }
-
-    /**
-     * 瀹氭椂浠诲姟绔嬪嵆鎵ц涓�娆�
-     */
-    @RequiresPermissions("monitor:job:changeStatus")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
-    @PutMapping("/run")
-    public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
-    {
-        boolean result = jobService.run(job);
-        return result ? success() : error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈燂紒");
-    }
-
-    /**
-     * 鍒犻櫎瀹氭椂浠诲姟
-     */
-    @RequiresPermissions("monitor:job:remove")
-    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{jobIds}")
-    public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException
-    {
-        jobService.deleteJobByIds(jobIds);
-        return success();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java
deleted file mode 100644
index 5e0cae6..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobLogController.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.ruoyi.job.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.ruoyi.job.domain.SysJobLog;
-import com.ruoyi.job.service.ISysJobLogService;
-
-/**
- * 璋冨害鏃ュ織鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/job/log")
-public class SysJobLogController extends BaseController
-{
-    @Autowired
-    private ISysJobLogService jobLogService;
-
-    /**
-     * 鏌ヨ瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃
-     */
-    @RequiresPermissions("monitor:job:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysJobLog sysJobLog)
-    {
-        startPage();
-        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃
-     */
-    @RequiresPermissions("monitor:job:export")
-    @Log(title = "浠诲姟璋冨害鏃ュ織", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysJobLog sysJobLog)
-    {
-        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-        ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
-        util.exportExcel(response, list, "璋冨害鏃ュ織");
-    }
-
-    /**
-     * 鏍规嵁璋冨害缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("monitor:job:query")
-    @GetMapping(value = "/{jobLogId}")
-    public AjaxResult getInfo(@PathVariable Long jobLogId)
-    {
-        return success(jobLogService.selectJobLogById(jobLogId));
-    }
-
-    /**
-     * 鍒犻櫎瀹氭椂浠诲姟璋冨害鏃ュ織
-     */
-    @RequiresPermissions("monitor:job:remove")
-    @Log(title = "瀹氭椂浠诲姟璋冨害鏃ュ織", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{jobLogIds}")
-    public AjaxResult remove(@PathVariable Long[] jobLogIds)
-    {
-        return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
-    }
-
-    /**
-     * 娓呯┖瀹氭椂浠诲姟璋冨害鏃ュ織
-     */
-    @RequiresPermissions("monitor:job:remove")
-    @Log(title = "璋冨害鏃ュ織", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        jobLogService.cleanJobLog();
-        return success();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java
deleted file mode 100644
index 51e0c3a..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.ruoyi.job.domain;
-
-import java.util.Date;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.se.common.core.annotation.Excel;
-import com.se.common.core.annotation.Excel.ColumnType;
-import com.se.common.core.constant.ScheduleConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.domain.BaseEntity;
-import com.ruoyi.job.util.CronUtils;
-
-/**
- * 瀹氭椂浠诲姟璋冨害琛� sys_job
- * 
- * @author admin
- */
-public class SysJob extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 浠诲姟ID */
-    @Excel(name = "浠诲姟搴忓彿", cellType = ColumnType.NUMERIC)
-    private Long jobId;
-
-    /** 浠诲姟鍚嶇О */
-    @Excel(name = "浠诲姟鍚嶇О")
-    private String jobName;
-
-    /** 浠诲姟缁勫悕 */
-    @Excel(name = "浠诲姟缁勫悕")
-    private String jobGroup;
-
-    /** 璋冪敤鐩爣瀛楃涓� */
-    @Excel(name = "璋冪敤鐩爣瀛楃涓�")
-    private String invokeTarget;
-
-    /** cron鎵ц琛ㄨ揪寮� */
-    @Excel(name = "鎵ц琛ㄨ揪寮� ")
-    private String cronExpression;
-
-    /** cron璁″垝绛栫暐 */
-    @Excel(name = "璁″垝绛栫暐 ", readConverterExp = "0=榛樿,1=绔嬪嵆瑙﹀彂鎵ц,2=瑙﹀彂涓�娆℃墽琛�,3=涓嶈Е鍙戠珛鍗虫墽琛�")
-    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
-
-    /** 鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛� */
-    @Excel(name = "骞跺彂鎵ц", readConverterExp = "0=鍏佽,1=绂佹")
-    private String concurrent;
-
-    /** 浠诲姟鐘舵�侊紙0姝e父 1鏆傚仠锛� */
-    @Excel(name = "浠诲姟鐘舵��", readConverterExp = "0=姝e父,1=鏆傚仠")
-    private String status;
-
-    public Long getJobId()
-    {
-        return jobId;
-    }
-
-    public void setJobId(Long jobId)
-    {
-        this.jobId = jobId;
-    }
-
-    @NotBlank(message = "浠诲姟鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 64, message = "浠诲姟鍚嶇О涓嶈兘瓒呰繃64涓瓧绗�")
-    public String getJobName()
-    {
-        return jobName;
-    }
-
-    public void setJobName(String jobName)
-    {
-        this.jobName = jobName;
-    }
-
-    public String getJobGroup()
-    {
-        return jobGroup;
-    }
-
-    public void setJobGroup(String jobGroup)
-    {
-        this.jobGroup = jobGroup;
-    }
-
-    @NotBlank(message = "璋冪敤鐩爣瀛楃涓蹭笉鑳戒负绌�")
-    @Size(min = 0, max = 500, message = "璋冪敤鐩爣瀛楃涓查暱搴︿笉鑳借秴杩�500涓瓧绗�")
-    public String getInvokeTarget()
-    {
-        return invokeTarget;
-    }
-
-    public void setInvokeTarget(String invokeTarget)
-    {
-        this.invokeTarget = invokeTarget;
-    }
-
-    @NotBlank(message = "Cron鎵ц琛ㄨ揪寮忎笉鑳戒负绌�")
-    @Size(min = 0, max = 255, message = "Cron鎵ц琛ㄨ揪寮忎笉鑳借秴杩�255涓瓧绗�")
-    public String getCronExpression()
-    {
-        return cronExpression;
-    }
-
-    public void setCronExpression(String cronExpression)
-    {
-        this.cronExpression = cronExpression;
-    }
-
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    public Date getNextValidTime()
-    {
-        if (StringUtils.isNotEmpty(cronExpression))
-        {
-            return CronUtils.getNextExecution(cronExpression);
-        }
-        return null;
-    }
-
-    public String getMisfirePolicy()
-    {
-        return misfirePolicy;
-    }
-
-    public void setMisfirePolicy(String misfirePolicy)
-    {
-        this.misfirePolicy = misfirePolicy;
-    }
-
-    public String getConcurrent()
-    {
-        return concurrent;
-    }
-
-    public void setConcurrent(String concurrent)
-    {
-        this.concurrent = concurrent;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("jobId", getJobId())
-            .append("jobName", getJobName())
-            .append("jobGroup", getJobGroup())
-            .append("cronExpression", getCronExpression())
-            .append("nextValidTime", getNextValidTime())
-            .append("misfirePolicy", getMisfirePolicy())
-            .append("concurrent", getConcurrent())
-            .append("status", getStatus())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java
deleted file mode 100644
index a74443d..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJobLog.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.ruoyi.job.domain;
-
-import java.util.Date;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.se.common.core.annotation.Excel;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 瀹氭椂浠诲姟璋冨害鏃ュ織琛� sys_job_log
- * 
- * @author admin
- */
-public class SysJobLog extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** ID */
-    @Excel(name = "鏃ュ織搴忓彿")
-    private Long jobLogId;
-
-    /** 浠诲姟鍚嶇О */
-    @Excel(name = "浠诲姟鍚嶇О")
-    private String jobName;
-
-    /** 浠诲姟缁勫悕 */
-    @Excel(name = "浠诲姟缁勫悕")
-    private String jobGroup;
-
-    /** 璋冪敤鐩爣瀛楃涓� */
-    @Excel(name = "璋冪敤鐩爣瀛楃涓�")
-    private String invokeTarget;
-
-    /** 鏃ュ織淇℃伅 */
-    @Excel(name = "鏃ュ織淇℃伅")
-    private String jobMessage;
-
-    /** 鎵ц鐘舵�侊紙0姝e父 1澶辫触锛� */
-    @Excel(name = "鎵ц鐘舵��", readConverterExp = "0=姝e父,1=澶辫触")
-    private String status;
-
-    /** 寮傚父淇℃伅 */
-    @Excel(name = "寮傚父淇℃伅")
-    private String exceptionInfo;
-
-    /** 寮�濮嬫椂闂� */
-    private Date startTime;
-
-    /** 鍋滄鏃堕棿 */
-    private Date stopTime;
-
-    public Long getJobLogId()
-    {
-        return jobLogId;
-    }
-
-    public void setJobLogId(Long jobLogId)
-    {
-        this.jobLogId = jobLogId;
-    }
-
-    public String getJobName()
-    {
-        return jobName;
-    }
-
-    public void setJobName(String jobName)
-    {
-        this.jobName = jobName;
-    }
-
-    public String getJobGroup()
-    {
-        return jobGroup;
-    }
-
-    public void setJobGroup(String jobGroup)
-    {
-        this.jobGroup = jobGroup;
-    }
-
-    public String getInvokeTarget()
-    {
-        return invokeTarget;
-    }
-
-    public void setInvokeTarget(String invokeTarget)
-    {
-        this.invokeTarget = invokeTarget;
-    }
-
-    public String getJobMessage()
-    {
-        return jobMessage;
-    }
-
-    public void setJobMessage(String jobMessage)
-    {
-        this.jobMessage = jobMessage;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getExceptionInfo()
-    {
-        return exceptionInfo;
-    }
-
-    public void setExceptionInfo(String exceptionInfo)
-    {
-        this.exceptionInfo = exceptionInfo;
-    }
-
-    public Date getStartTime()
-    {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime)
-    {
-        this.startTime = startTime;
-    }
-    
-    public Date getStopTime()
-    {
-        return stopTime;
-    }
-
-    public void setStopTime(Date stopTime)
-    {
-        this.stopTime = stopTime;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("jobLogId", getJobLogId())
-            .append("jobName", getJobName())
-            .append("jobGroup", getJobGroup())
-            .append("jobMessage", getJobMessage())
-            .append("status", getStatus())
-            .append("exceptionInfo", getExceptionInfo())
-            .append("startTime", getStartTime())
-            .append("stopTime", getStopTime())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java
deleted file mode 100644
index 5a5ca67..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobLogMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.ruoyi.job.mapper;
-
-import java.util.List;
-import com.ruoyi.job.domain.SysJobLog;
-
-/**
- * 璋冨害浠诲姟鏃ュ織淇℃伅 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysJobLogMapper
-{
-    /**
-     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
-     */
-    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
-
-    /**
-     * 鏌ヨ鎵�鏈夎皟搴︿换鍔℃棩蹇�
-     *
-     * @return 璋冨害浠诲姟鏃ュ織鍒楄〃
-     */
-    public List<SysJobLog> selectJobLogAll();
-
-    /**
-     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
-     * 
-     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
-     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
-     */
-    public SysJobLog selectJobLogById(Long jobLogId);
-
-    /**
-     * 鏂板浠诲姟鏃ュ織
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertJobLog(SysJobLog jobLog);
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
-     * 
-     * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteJobLogByIds(Long[] logIds);
-
-    /**
-     * 鍒犻櫎浠诲姟鏃ュ織
-     * 
-     * @param jobId 璋冨害鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteJobLogById(Long jobId);
-
-    /**
-     * 娓呯┖浠诲姟鏃ュ織
-     */
-    public void cleanJobLog();
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java
deleted file mode 100644
index dae7a8e..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/mapper/SysJobMapper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.ruoyi.job.mapper;
-
-import java.util.List;
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 璋冨害浠诲姟淇℃伅 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysJobMapper
-{
-    /**
-     * 鏌ヨ璋冨害浠诲姟鏃ュ織闆嗗悎
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 鎿嶄綔鏃ュ織闆嗗悎
-     */
-    public List<SysJob> selectJobList(SysJob job);
-
-    /**
-     * 鏌ヨ鎵�鏈夎皟搴︿换鍔�
-     * 
-     * @return 璋冨害浠诲姟鍒楄〃
-     */
-    public List<SysJob> selectJobAll();
-
-    /**
-     * 閫氳繃璋冨害ID鏌ヨ璋冨害浠诲姟淇℃伅
-     * 
-     * @param jobId 璋冨害ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    public SysJob selectJobById(Long jobId);
-
-    /**
-     * 閫氳繃璋冨害ID鍒犻櫎璋冨害浠诲姟淇℃伅
-     * 
-     * @param jobId 璋冨害ID
-     * @return 缁撴灉
-     */
-    public int deleteJobById(Long jobId);
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害浠诲姟淇℃伅
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteJobByIds(Long[] ids);
-
-    /**
-     * 淇敼璋冨害浠诲姟淇℃伅
-     * 
-     * @param job 璋冨害浠诲姟淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateJob(SysJob job);
-
-    /**
-     * 鏂板璋冨害浠诲姟淇℃伅
-     * 
-     * @param job 璋冨害浠诲姟淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertJob(SysJob job);
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java
deleted file mode 100644
index 588a423..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobLogService.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ruoyi.job.service;
-
-import java.util.List;
-import com.ruoyi.job.domain.SysJobLog;
-
-/**
- * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysJobLogService
-{
-    /**
-     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
-     */
-    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
-
-    /**
-     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
-     * 
-     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
-     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
-     */
-    public SysJobLog selectJobLogById(Long jobLogId);
-
-    /**
-     * 鏂板浠诲姟鏃ュ織
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     */
-    public void addJobLog(SysJobLog jobLog);
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
-     * 
-     * @param logIds 闇�瑕佸垹闄ょ殑鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteJobLogByIds(Long[] logIds);
-
-    /**
-     * 鍒犻櫎浠诲姟鏃ュ織
-     * 
-     * @param jobId 璋冨害鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteJobLogById(Long jobId);
-
-    /**
-     * 娓呯┖浠诲姟鏃ュ織
-     */
-    public void cleanJobLog();
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java
deleted file mode 100644
index dd79879..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.ruoyi.job.service;
-
-import java.util.List;
-import org.quartz.SchedulerException;
-import com.se.common.core.exception.job.TaskException;
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 瀹氭椂浠诲姟璋冨害淇℃伅淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysJobService
-{
-    /**
-     * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 璋冨害浠诲姟闆嗗悎
-     */
-    public List<SysJob> selectJobList(SysJob job);
-
-    /**
-     * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅
-     * 
-     * @param jobId 璋冨害浠诲姟ID
-     * @return 璋冨害浠诲姟瀵硅薄淇℃伅
-     */
-    public SysJob selectJobById(Long jobId);
-
-    /**
-     * 鏆傚仠浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int pauseJob(SysJob job) throws SchedulerException;
-
-    /**
-     * 鎭㈠浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int resumeJob(SysJob job) throws SchedulerException;
-
-    /**
-     * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄�
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int deleteJob(SysJob job) throws SchedulerException;
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害淇℃伅
-     * 
-     * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID
-     * @return 缁撴灉
-     */
-    public void deleteJobByIds(Long[] jobIds) throws SchedulerException;
-
-    /**
-     * 浠诲姟璋冨害鐘舵�佷慨鏀�
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int changeStatus(SysJob job) throws SchedulerException;
-
-    /**
-     * 绔嬪嵆杩愯浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean run(SysJob job) throws SchedulerException;
-
-    /**
-     * 鏂板浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertJob(SysJob job) throws SchedulerException, TaskException;
-
-    /**
-     * 鏇存柊浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateJob(SysJob job) throws SchedulerException, TaskException;
-
-    /**
-     * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁�
-     * 
-     * @param cronExpression 琛ㄨ揪寮�
-     * @return 缁撴灉
-     */
-    public boolean checkCronExpressionIsValid(String cronExpression);
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java
deleted file mode 100644
index d415341..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobLogServiceImpl.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.ruoyi.job.service;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.job.domain.SysJobLog;
-import com.ruoyi.job.mapper.SysJobLogMapper;
-
-/**
- * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-@Service
-public class SysJobLogServiceImpl implements ISysJobLogService
-{
-    @Autowired
-    private SysJobLogMapper jobLogMapper;
-
-    /**
-     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
-     */
-    @Override
-    public List<SysJobLog> selectJobLogList(SysJobLog jobLog)
-    {
-        return jobLogMapper.selectJobLogList(jobLog);
-    }
-
-    /**
-     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
-     * 
-     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
-     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
-     */
-    @Override
-    public SysJobLog selectJobLogById(Long jobLogId)
-    {
-        return jobLogMapper.selectJobLogById(jobLogId);
-    }
-
-    /**
-     * 鏂板浠诲姟鏃ュ織
-     * 
-     * @param jobLog 璋冨害鏃ュ織淇℃伅
-     */
-    @Override
-    public void addJobLog(SysJobLog jobLog)
-    {
-        jobLogMapper.insertJobLog(jobLog);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
-     * 
-     * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteJobLogByIds(Long[] logIds)
-    {
-        return jobLogMapper.deleteJobLogByIds(logIds);
-    }
-
-    /**
-     * 鍒犻櫎浠诲姟鏃ュ織
-     * 
-     * @param jobId 璋冨害鏃ュ織ID
-     */
-    @Override
-    public int deleteJobLogById(Long jobId)
-    {
-        return jobLogMapper.deleteJobLogById(jobId);
-    }
-
-    /**
-     * 娓呯┖浠诲姟鏃ュ織
-     */
-    @Override
-    public void cleanJobLog()
-    {
-        jobLogMapper.cleanJobLog();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java
deleted file mode 100644
index 75110d1..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java
+++ /dev/null
@@ -1,260 +0,0 @@
-package com.ruoyi.job.service;
-
-import java.util.List;
-import javax.annotation.PostConstruct;
-import org.quartz.JobDataMap;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.se.common.core.constant.ScheduleConstants;
-import com.se.common.core.exception.job.TaskException;
-import com.ruoyi.job.domain.SysJob;
-import com.ruoyi.job.mapper.SysJobMapper;
-import com.ruoyi.job.util.CronUtils;
-import com.ruoyi.job.util.ScheduleUtils;
-
-/**
- * 瀹氭椂浠诲姟璋冨害淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-@Service
-public class SysJobServiceImpl implements ISysJobService
-{
-    @Autowired
-    private Scheduler scheduler;
-
-    @Autowired
-    private SysJobMapper jobMapper;
-
-    /**
-     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧畾鏃跺櫒 涓昏鏄槻姝㈡墜鍔ㄤ慨鏀规暟鎹簱瀵艰嚧鏈悓姝ュ埌瀹氭椂浠诲姟澶勭悊锛堟敞锛氫笉鑳芥墜鍔ㄤ慨鏀规暟鎹簱ID鍜屼换鍔$粍鍚嶏紝鍚﹀垯浼氬鑷磋剰鏁版嵁锛�
-     */
-    @PostConstruct
-    public void init() throws SchedulerException, TaskException
-    {
-        scheduler.clear();
-        List<SysJob> jobList = jobMapper.selectJobAll();
-        for (SysJob job : jobList)
-        {
-            ScheduleUtils.createScheduleJob(scheduler, job);
-        }
-    }
-
-    /**
-     * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟鍒楄〃
-     * 
-     * @param job 璋冨害淇℃伅
-     * @return
-     */
-    @Override
-    public List<SysJob> selectJobList(SysJob job)
-    {
-        return jobMapper.selectJobList(job);
-    }
-
-    /**
-     * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅
-     * 
-     * @param jobId 璋冨害浠诲姟ID
-     * @return 璋冨害浠诲姟瀵硅薄淇℃伅
-     */
-    @Override
-    public SysJob selectJobById(Long jobId)
-    {
-        return jobMapper.selectJobById(jobId);
-    }
-
-    /**
-     * 鏆傚仠浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int pauseJob(SysJob job) throws SchedulerException
-    {
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
-        int rows = jobMapper.updateJob(job);
-        if (rows > 0)
-        {
-            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
-        }
-        return rows;
-    }
-
-    /**
-     * 鎭㈠浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int resumeJob(SysJob job) throws SchedulerException
-    {
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
-        int rows = jobMapper.updateJob(job);
-        if (rows > 0)
-        {
-            scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
-        }
-        return rows;
-    }
-
-    /**
-     * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄�
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteJob(SysJob job) throws SchedulerException
-    {
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        int rows = jobMapper.deleteJobById(jobId);
-        if (rows > 0)
-        {
-            scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
-        }
-        return rows;
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎璋冨害淇℃伅
-     * 
-     * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteJobByIds(Long[] jobIds) throws SchedulerException
-    {
-        for (Long jobId : jobIds)
-        {
-            SysJob job = jobMapper.selectJobById(jobId);
-            deleteJob(job);
-        }
-    }
-
-    /**
-     * 浠诲姟璋冨害鐘舵�佷慨鏀�
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int changeStatus(SysJob job) throws SchedulerException
-    {
-        int rows = 0;
-        String status = job.getStatus();
-        if (ScheduleConstants.Status.NORMAL.getValue().equals(status))
-        {
-            rows = resumeJob(job);
-        }
-        else if (ScheduleConstants.Status.PAUSE.getValue().equals(status))
-        {
-            rows = pauseJob(job);
-        }
-        return rows;
-    }
-
-    /**
-     * 绔嬪嵆杩愯浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public boolean run(SysJob job) throws SchedulerException
-    {
-        boolean result = false;
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        SysJob properties = selectJobById(job.getJobId());
-        // 鍙傛暟
-        JobDataMap dataMap = new JobDataMap();
-        dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
-        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
-        if (scheduler.checkExists(jobKey))
-        {
-            result = true;
-            scheduler.triggerJob(jobKey, dataMap);
-        }
-        return result;
-    }
-
-    /**
-     * 鏂板浠诲姟
-     * 
-     * @param job 璋冨害淇℃伅 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int insertJob(SysJob job) throws SchedulerException, TaskException
-    {
-        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
-        int rows = jobMapper.insertJob(job);
-        if (rows > 0)
-        {
-            ScheduleUtils.createScheduleJob(scheduler, job);
-        }
-        return rows;
-    }
-
-    /**
-     * 鏇存柊浠诲姟鐨勬椂闂磋〃杈惧紡
-     * 
-     * @param job 璋冨害淇℃伅
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateJob(SysJob job) throws SchedulerException, TaskException
-    {
-        SysJob properties = selectJobById(job.getJobId());
-        int rows = jobMapper.updateJob(job);
-        if (rows > 0)
-        {
-            updateSchedulerJob(job, properties.getJobGroup());
-        }
-        return rows;
-    }
-
-    /**
-     * 鏇存柊浠诲姟
-     * 
-     * @param job 浠诲姟瀵硅薄
-     * @param jobGroup 浠诲姟缁勫悕
-     */
-    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException
-    {
-        Long jobId = job.getJobId();
-        // 鍒ゆ柇鏄惁瀛樺湪
-        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
-        if (scheduler.checkExists(jobKey))
-        {
-            // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣�
-            scheduler.deleteJob(jobKey);
-        }
-        ScheduleUtils.createScheduleJob(scheduler, job);
-    }
-
-    /**
-     * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁�
-     * 
-     * @param cronExpression 琛ㄨ揪寮�
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkCronExpressionIsValid(String cronExpression)
-    {
-        return CronUtils.isValid(cronExpression);
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java
deleted file mode 100644
index 873c7c0..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/RyTask.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.ruoyi.job.task;
-
-import org.springframework.stereotype.Component;
-import com.se.common.core.utils.StringUtils;
-
-/**
- * 瀹氭椂浠诲姟璋冨害娴嬭瘯
- * 
- * @author admin
- */
-@Component("ryTask")
-public class RyTask
-{
-    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
-    {
-        System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
-    }
-
-    public void ryParams(String params)
-    {
-        System.out.println("鎵ц鏈夊弬鏂规硶锛�" + params);
-    }
-
-    public void ryNoParams()
-    {
-        System.out.println("鎵ц鏃犲弬鏂规硶");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java
deleted file mode 100644
index 1e01071..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/AbstractQuartzJob.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.ruoyi.job.util;
-
-import java.util.Date;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.se.common.core.constant.ScheduleConstants;
-import com.se.common.core.utils.ExceptionUtil;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.bean.BeanUtils;
-import com.ruoyi.job.domain.SysJob;
-import com.ruoyi.job.domain.SysJobLog;
-import com.ruoyi.job.service.ISysJobLogService;
-
-/**
- * 鎶借薄quartz璋冪敤
- *
- * @author admin
- */
-public abstract class AbstractQuartzJob implements Job
-{
-    private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
-
-    /**
-     * 绾跨▼鏈湴鍙橀噺
-     */
-    private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
-
-    @Override
-    public void execute(JobExecutionContext context) throws JobExecutionException
-    {
-        SysJob sysJob = new SysJob();
-        BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
-        try
-        {
-            before(context, sysJob);
-            if (sysJob != null)
-            {
-                doExecute(context, sysJob);
-            }
-            after(context, sysJob, null);
-        }
-        catch (Exception e)
-        {
-            log.error("浠诲姟鎵ц寮傚父  - 锛�", e);
-            after(context, sysJob, e);
-        }
-    }
-
-    /**
-     * 鎵ц鍓�
-     *
-     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
-     * @param sysJob 绯荤粺璁″垝浠诲姟
-     */
-    protected void before(JobExecutionContext context, SysJob sysJob)
-    {
-        threadLocal.set(new Date());
-    }
-
-    /**
-     * 鎵ц鍚�
-     *
-     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
-     * @param sysJob 绯荤粺璁″垝浠诲姟
-     */
-    protected void after(JobExecutionContext context, SysJob sysJob, Exception e)
-    {
-        Date startTime = threadLocal.get();
-        threadLocal.remove();
-
-        final SysJobLog sysJobLog = new SysJobLog();
-        sysJobLog.setJobName(sysJob.getJobName());
-        sysJobLog.setJobGroup(sysJob.getJobGroup());
-        sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
-        sysJobLog.setStartTime(startTime);
-        sysJobLog.setStopTime(new Date());
-        long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
-        sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" + runMs + "姣");
-        if (e != null)
-        {
-            sysJobLog.setStatus("1");
-            String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
-            sysJobLog.setExceptionInfo(errorMsg);
-        }
-        else
-        {
-            sysJobLog.setStatus("0");
-        }
-
-        // 鍐欏叆鏁版嵁搴撳綋涓�
-        SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
-    }
-
-    /**
-     * 鎵ц鏂规硶锛岀敱瀛愮被閲嶈浇
-     *
-     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
-     * @param sysJob 绯荤粺璁″垝浠诲姟
-     * @throws Exception 鎵ц杩囩▼涓殑寮傚父
-     */
-    protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java
deleted file mode 100644
index 99c3f61..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/CronUtils.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.ruoyi.job.util;
-
-import java.text.ParseException;
-import java.util.Date;
-import org.quartz.CronExpression;
-
-/**
- * cron琛ㄨ揪寮忓伐鍏风被
- * 
- * @author admin
- *
- */
-public class CronUtils
-{
-    /**
-     * 杩斿洖涓�涓竷灏斿�间唬琛ㄤ竴涓粰瀹氱殑Cron琛ㄨ揪寮忕殑鏈夋晥鎬�
-     *
-     * @param cronExpression Cron琛ㄨ揪寮�
-     * @return boolean 琛ㄨ揪寮忔槸鍚︽湁鏁�
-     */
-    public static boolean isValid(String cronExpression)
-    {
-        return CronExpression.isValidExpression(cronExpression);
-    }
-
-    /**
-     * 杩斿洖涓�涓瓧绗︿覆鍊�,琛ㄧず璇ユ秷鎭棤鏁圕ron琛ㄨ揪寮忕粰鍑烘湁鏁堟��
-     *
-     * @param cronExpression Cron琛ㄨ揪寮�
-     * @return String 鏃犳晥鏃惰繑鍥炶〃杈惧紡閿欒鎻忚堪,濡傛灉鏈夋晥杩斿洖null
-     */
-    public static String getInvalidMessage(String cronExpression)
-    {
-        try
-        {
-            new CronExpression(cronExpression);
-            return null;
-        }
-        catch (ParseException pe)
-        {
-            return pe.getMessage();
-        }
-    }
-
-    /**
-     * 杩斿洖涓嬩竴涓墽琛屾椂闂存牴鎹粰瀹氱殑Cron琛ㄨ揪寮�
-     *
-     * @param cronExpression Cron琛ㄨ揪寮�
-     * @return Date 涓嬫Cron琛ㄨ揪寮忔墽琛屾椂闂�
-     */
-    public static Date getNextExecution(String cronExpression)
-    {
-        try
-        {
-            CronExpression cron = new CronExpression(cronExpression);
-            return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
-        }
-        catch (ParseException e)
-        {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java
deleted file mode 100644
index 13001aa..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/JobInvokeUtil.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package com.ruoyi.job.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.LinkedList;
-import java.util.List;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 浠诲姟鎵ц宸ュ叿
- *
- * @author admin
- */
-public class JobInvokeUtil
-{
-    /**
-     * 鎵ц鏂规硶
-     *
-     * @param sysJob 绯荤粺浠诲姟
-     */
-    public static void invokeMethod(SysJob sysJob) throws Exception
-    {
-        String invokeTarget = sysJob.getInvokeTarget();
-        String beanName = getBeanName(invokeTarget);
-        String methodName = getMethodName(invokeTarget);
-        List<Object[]> methodParams = getMethodParams(invokeTarget);
-
-        if (!isValidClassName(beanName))
-        {
-            Object bean = SpringUtils.getBean(beanName);
-            invokeMethod(bean, methodName, methodParams);
-        }
-        else
-        {
-            Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance();
-            invokeMethod(bean, methodName, methodParams);
-        }
-    }
-
-    /**
-     * 璋冪敤浠诲姟鏂规硶
-     *
-     * @param bean 鐩爣瀵硅薄
-     * @param methodName 鏂规硶鍚嶇О
-     * @param methodParams 鏂规硶鍙傛暟
-     */
-    private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
-            throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
-            InvocationTargetException
-    {
-        if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
-        {
-            Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams));
-            method.invoke(bean, getMethodParamsValue(methodParams));
-        }
-        else
-        {
-            Method method = bean.getClass().getMethod(methodName);
-            method.invoke(bean);
-        }
-    }
-
-    /**
-     * 鏍¢獙鏄惁涓轰负class鍖呭悕
-     * 
-     * @param invokeTarget 鍚嶇О
-     * @return true鏄� false鍚�
-     */
-    public static boolean isValidClassName(String invokeTarget)
-    {
-        return StringUtils.countMatches(invokeTarget, ".") > 1;
-    }
-
-    /**
-     * 鑾峰彇bean鍚嶇О
-     * 
-     * @param invokeTarget 鐩爣瀛楃涓�
-     * @return bean鍚嶇О
-     */
-    public static String getBeanName(String invokeTarget)
-    {
-        String beanName = StringUtils.substringBefore(invokeTarget, "(");
-        return StringUtils.substringBeforeLast(beanName, ".");
-    }
-
-    /**
-     * 鑾峰彇bean鏂规硶
-     * 
-     * @param invokeTarget 鐩爣瀛楃涓�
-     * @return method鏂规硶
-     */
-    public static String getMethodName(String invokeTarget)
-    {
-        String methodName = StringUtils.substringBefore(invokeTarget, "(");
-        return StringUtils.substringAfterLast(methodName, ".");
-    }
-
-    /**
-     * 鑾峰彇method鏂规硶鍙傛暟鐩稿叧鍒楄〃
-     * 
-     * @param invokeTarget 鐩爣瀛楃涓�
-     * @return method鏂规硶鐩稿叧鍙傛暟鍒楄〃
-     */
-    public static List<Object[]> getMethodParams(String invokeTarget)
-    {
-        String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
-        if (StringUtils.isEmpty(methodStr))
-        {
-            return null;
-        }
-        String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)");
-        List<Object[]> classs = new LinkedList<>();
-        for (int i = 0; i < methodParams.length; i++)
-        {
-            String str = StringUtils.trimToEmpty(methodParams[i]);
-            // String瀛楃涓茬被鍨嬶紝浠�'鎴�"寮�澶�
-            if (StringUtils.startsWithAny(str, "'", "\""))
-            {
-                classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class });
-            }
-            // boolean甯冨皵绫诲瀷锛岀瓑浜巘rue鎴栬�協alse
-            else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str))
-            {
-                classs.add(new Object[] { Boolean.valueOf(str), Boolean.class });
-            }
-            // long闀挎暣褰紝浠缁撳熬
-            else if (StringUtils.endsWith(str, "L"))
-            {
-                classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class });
-            }
-            // double娴偣绫诲瀷锛屼互D缁撳熬
-            else if (StringUtils.endsWith(str, "D"))
-            {
-                classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class });
-            }
-            // 鍏朵粬绫诲瀷褰掔被涓烘暣褰�
-            else
-            {
-                classs.add(new Object[] { Integer.valueOf(str), Integer.class });
-            }
-        }
-        return classs;
-    }
-
-    /**
-     * 鑾峰彇鍙傛暟绫诲瀷
-     * 
-     * @param methodParams 鍙傛暟鐩稿叧鍒楄〃
-     * @return 鍙傛暟绫诲瀷鍒楄〃
-     */
-    public static Class<?>[] getMethodParamsType(List<Object[]> methodParams)
-    {
-        Class<?>[] classs = new Class<?>[methodParams.size()];
-        int index = 0;
-        for (Object[] os : methodParams)
-        {
-            classs[index] = (Class<?>) os[1];
-            index++;
-        }
-        return classs;
-    }
-
-    /**
-     * 鑾峰彇鍙傛暟鍊�
-     * 
-     * @param methodParams 鍙傛暟鐩稿叧鍒楄〃
-     * @return 鍙傛暟鍊煎垪琛�
-     */
-    public static Object[] getMethodParamsValue(List<Object[]> methodParams)
-    {
-        Object[] classs = new Object[methodParams.size()];
-        int index = 0;
-        for (Object[] os : methodParams)
-        {
-            classs[index] = (Object) os[0];
-            index++;
-        }
-        return classs;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java
deleted file mode 100644
index 58aa3f0..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzDisallowConcurrentExecution.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.job.util;
-
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.JobExecutionContext;
-
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 瀹氭椂浠诲姟澶勭悊锛堢姝㈠苟鍙戞墽琛岋級
- * 
- * @author admin
- *
- */
-@DisallowConcurrentExecution
-public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
-{
-    @Override
-    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
-    {
-        JobInvokeUtil.invokeMethod(sysJob);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java
deleted file mode 100644
index a34648b..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/QuartzJobExecution.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.job.util;
-
-import org.quartz.JobExecutionContext;
-
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 瀹氭椂浠诲姟澶勭悊锛堝厑璁稿苟鍙戞墽琛岋級
- * 
- * @author admin
- *
- */
-public class QuartzJobExecution extends AbstractQuartzJob
-{
-    @Override
-    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
-    {
-        JobInvokeUtil.invokeMethod(sysJob);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java
deleted file mode 100644
index e76c6d5..0000000
--- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.ruoyi.job.util;
-
-import org.quartz.CronScheduleBuilder;
-import org.quartz.CronTrigger;
-import org.quartz.Job;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.TriggerBuilder;
-import org.quartz.TriggerKey;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.constant.ScheduleConstants;
-import com.se.common.core.exception.job.TaskException;
-import com.se.common.core.exception.job.TaskException.Code;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.job.domain.SysJob;
-
-/**
- * 瀹氭椂浠诲姟宸ュ叿绫�
- * 
- * @author admin
- *
- */
-public class ScheduleUtils
-{
-    /**
-     * 寰楀埌quartz浠诲姟绫�
-     *
-     * @param sysJob 鎵ц璁″垝
-     * @return 鍏蜂綋鎵ц浠诲姟绫�
-     */
-    private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
-    {
-        boolean isConcurrent = "0".equals(sysJob.getConcurrent());
-        return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
-    }
-
-    /**
-     * 鏋勫缓浠诲姟瑙﹀彂瀵硅薄
-     */
-    public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
-    {
-        return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
-    }
-
-    /**
-     * 鏋勫缓浠诲姟閿璞�
-     */
-    public static JobKey getJobKey(Long jobId, String jobGroup)
-    {
-        return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
-    }
-
-    /**
-     * 鍒涘缓瀹氭椂浠诲姟
-     */
-    public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
-    {
-        Class<? extends Job> jobClass = getQuartzJobClass(job);
-        // 鏋勫缓job淇℃伅
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
-
-        // 琛ㄨ揪寮忚皟搴︽瀯寤哄櫒
-        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
-        cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
-
-        // 鎸夋柊鐨刢ronExpression琛ㄨ揪寮忔瀯寤轰竴涓柊鐨則rigger
-        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
-                .withSchedule(cronScheduleBuilder).build();
-
-        // 鏀惧叆鍙傛暟锛岃繍琛屾椂鐨勬柟娉曞彲浠ヨ幏鍙�
-        jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
-
-        // 鍒ゆ柇鏄惁瀛樺湪
-        if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
-        {
-            // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣�
-            scheduler.deleteJob(getJobKey(jobId, jobGroup));
-        }
-
-        // 鍒ゆ柇浠诲姟鏄惁杩囨湡
-        if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression())))
-        {
-            // 鎵ц璋冨害浠诲姟
-            scheduler.scheduleJob(jobDetail, trigger);
-        }
-
-        // 鏆傚仠浠诲姟
-        if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
-        {
-            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
-        }
-    }
-
-    /**
-     * 璁剧疆瀹氭椂浠诲姟绛栫暐
-     */
-    public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
-            throws TaskException
-    {
-        switch (job.getMisfirePolicy())
-        {
-            case ScheduleConstants.MISFIRE_DEFAULT:
-                return cb;
-            case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
-                return cb.withMisfireHandlingInstructionIgnoreMisfires();
-            case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
-                return cb.withMisfireHandlingInstructionFireAndProceed();
-            case ScheduleConstants.MISFIRE_DO_NOTHING:
-                return cb.withMisfireHandlingInstructionDoNothing();
-            default:
-                throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
-                        + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
-        }
-    }
-
-    /**
-     * 妫�鏌ュ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃�
-     * 
-     * @param invokeTarget 鐩爣瀛楃涓�
-     * @return 缁撴灉
-     */
-    public static boolean whiteList(String invokeTarget)
-    {
-        String packageName = StringUtils.substringBefore(invokeTarget, "(");
-        int count = StringUtils.countMatches(packageName, ".");
-        if (count > 1)
-        {
-            return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
-        }
-        Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
-        String beanPackageName = obj.getClass().getPackage().getName();
-        return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR)
-                && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR);
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java
deleted file mode 100644
index 7823d25..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.ruoyi.system;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import com.se.common.security.annotation.EnableCustomConfig;
-import com.se.common.security.annotation.EnableRyFeignClients;
-import com.se.common.swagger.annotation.EnableCustomSwagger2;
-
-/**
- * 绯荤粺妯″潡
- * 
- * @author admin
- */
-@EnableCustomConfig
-@EnableCustomSwagger2
-@EnableRyFeignClients
-@SpringBootApplication
-public class RuoYiSystemApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiSystemApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  绯荤粺妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java
deleted file mode 100644
index f8cb2a8..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 鍙傛暟閰嶇疆 淇℃伅鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/config")
-public class SysConfigController extends BaseController
-{
-    @Autowired
-    private ISysConfigService configService;
-
-    /**
-     * 鑾峰彇鍙傛暟閰嶇疆鍒楄〃
-     */
-    @RequiresPermissions("system:config:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysConfig config)
-    {
-        startPage();
-        List<SysConfig> list = configService.selectConfigList(config);
-        return getDataTable(list);
-    }
-
-    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:config:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysConfig config)
-    {
-        List<SysConfig> list = configService.selectConfigList(config);
-        ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
-        util.exportExcel(response, list, "鍙傛暟鏁版嵁");
-    }
-
-    /**
-     * 鏍规嵁鍙傛暟缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @GetMapping(value = "/{configId}")
-    public AjaxResult getInfo(@PathVariable Long configId)
-    {
-        return success(configService.selectConfigById(configId));
-    }
-
-    /**
-     * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊�
-     */
-    @GetMapping(value = "/configKey/{configKey}")
-    public AjaxResult getConfigKey(@PathVariable String configKey)
-    {
-        return success(configService.selectConfigByKey(configKey));
-    }
-
-    /**
-     * 鏂板鍙傛暟閰嶇疆
-     */
-    @RequiresPermissions("system:config:add")
-    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
-            return error("鏂板鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪");
-        }
-        config.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(configService.insertConfig(config));
-    }
-
-    /**
-     * 淇敼鍙傛暟閰嶇疆
-     */
-    @RequiresPermissions("system:config:edit")
-    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
-            return error("淇敼鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪");
-        }
-        config.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(configService.updateConfig(config));
-    }
-
-    /**
-     * 鍒犻櫎鍙傛暟閰嶇疆
-     */
-    @RequiresPermissions("system:config:remove")
-    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{configIds}")
-    public AjaxResult remove(@PathVariable Long[] configIds)
-    {
-        configService.deleteConfigByIds(configIds);
-        return success();
-    }
-
-    /**
-     * 鍒锋柊鍙傛暟缂撳瓨
-     */
-    @RequiresPermissions("system:config:remove")
-    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/refreshCache")
-    public AjaxResult refreshCache()
-    {
-        configService.resetConfigCache();
-        return success();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java
deleted file mode 100644
index 12cddef..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDeptController.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDept;
-import com.ruoyi.system.service.ISysDeptService;
-
-/**
- * 閮ㄩ棬淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/dept")
-public class SysDeptController extends BaseController
-{
-    @Autowired
-    private ISysDeptService deptService;
-
-    /**
-     * 鑾峰彇閮ㄩ棬鍒楄〃
-     */
-    @RequiresPermissions("system:dept:list")
-    @GetMapping("/list")
-    public AjaxResult list(SysDept dept)
-    {
-        List<SysDept> depts = deptService.selectDeptList(dept);
-        return success(depts);
-    }
-
-    /**
-     * 鏌ヨ閮ㄩ棬鍒楄〃锛堟帓闄よ妭鐐癸級
-     */
-    @RequiresPermissions("system:dept:list")
-    @GetMapping("/list/exclude/{deptId}")
-    public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
-    {
-        List<SysDept> depts = deptService.selectDeptList(new SysDept());
-        depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
-        return success(depts);
-    }
-
-    /**
-     * 鏍规嵁閮ㄩ棬缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:dept:query")
-    @GetMapping(value = "/{deptId}")
-    public AjaxResult getInfo(@PathVariable Long deptId)
-    {
-        deptService.checkDeptDataScope(deptId);
-        return success(deptService.selectDeptById(deptId));
-    }
-
-    /**
-     * 鏂板閮ㄩ棬
-     */
-    @RequiresPermissions("system:dept:add")
-    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDept dept)
-    {
-        if (!deptService.checkDeptNameUnique(dept))
-        {
-            return error("鏂板閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪");
-        }
-        dept.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(deptService.insertDept(dept));
-    }
-
-    /**
-     * 淇敼閮ㄩ棬
-     */
-    @RequiresPermissions("system:dept:edit")
-    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDept dept)
-    {
-        Long deptId = dept.getDeptId();
-        deptService.checkDeptDataScope(deptId);
-        if (!deptService.checkDeptNameUnique(dept))
-        {
-            return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪");
-        }
-        else if (dept.getParentId().equals(deptId))
-        {
-            return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛屼笂绾ч儴闂ㄤ笉鑳芥槸鑷繁");
-        }
-        else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
-        {
-            return error("璇ラ儴闂ㄥ寘鍚湭鍋滅敤鐨勫瓙閮ㄩ棬锛�");
-        }
-        dept.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(deptService.updateDept(dept));
-    }
-
-    /**
-     * 鍒犻櫎閮ㄩ棬
-     */
-    @RequiresPermissions("system:dept:remove")
-    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{deptId}")
-    public AjaxResult remove(@PathVariable Long deptId)
-    {
-        if (deptService.hasChildByDeptId(deptId))
-        {
-            return warn("瀛樺湪涓嬬骇閮ㄩ棬,涓嶅厑璁稿垹闄�");
-        }
-        if (deptService.checkDeptExistUser(deptId))
-        {
-            return warn("閮ㄩ棬瀛樺湪鐢ㄦ埛,涓嶅厑璁稿垹闄�");
-        }
-        deptService.checkDeptDataScope(deptId);
-        return toAjax(deptService.deleteDeptById(deptId));
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java
deleted file mode 100644
index 53e8953..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDictData;
-import com.ruoyi.system.service.ISysDictDataService;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 鏁版嵁瀛楀吀淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/dict/data")
-public class SysDictDataController extends BaseController
-{
-    @Autowired
-    private ISysDictDataService dictDataService;
-    
-    @Autowired
-    private ISysDictTypeService dictTypeService;
-
-    @RequiresPermissions("system:dict:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysDictData dictData)
-    {
-        startPage();
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        return getDataTable(list);
-    }
-
-    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:dict:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysDictData dictData)
-    {
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
-        util.exportExcel(response, list, "瀛楀吀鏁版嵁");
-    }
-
-    /**
-     * 鏌ヨ瀛楀吀鏁版嵁璇︾粏
-     */
-    @RequiresPermissions("system:dict:query")
-    @GetMapping(value = "/{dictCode}")
-    public AjaxResult getInfo(@PathVariable Long dictCode)
-    {
-        return success(dictDataService.selectDictDataById(dictCode));
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁淇℃伅
-     */
-    @GetMapping(value = "/type/{dictType}")
-    public AjaxResult dictType(@PathVariable String dictType)
-    {
-        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
-        if (StringUtils.isNull(data))
-        {
-            data = new ArrayList<SysDictData>();
-        }
-        return success(data);
-    }
-
-    /**
-     * 鏂板瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:add")
-    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDictData dict)
-    {
-        dict.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(dictDataService.insertDictData(dict));
-    }
-
-    /**
-     * 淇敼淇濆瓨瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:edit")
-    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDictData dict)
-    {
-        dict.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(dictDataService.updateDictData(dict));
-    }
-
-    /**
-     * 鍒犻櫎瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:remove")
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{dictCodes}")
-    public AjaxResult remove(@PathVariable Long[] dictCodes)
-    {
-        dictDataService.deleteDictDataByIds(dictCodes);
-        return success();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
deleted file mode 100644
index fe225a6..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDictType;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 鏁版嵁瀛楀吀淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/dict/type")
-public class SysDictTypeController extends BaseController
-{
-    @Autowired
-    private ISysDictTypeService dictTypeService;
-
-    @RequiresPermissions("system:dict:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysDictType dictType)
-    {
-        startPage();
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        return getDataTable(list);
-    }
-
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:dict:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysDictType dictType)
-    {
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
-        util.exportExcel(response, list, "瀛楀吀绫诲瀷");
-    }
-
-    /**
-     * 鏌ヨ瀛楀吀绫诲瀷璇︾粏
-     */
-    @RequiresPermissions("system:dict:query")
-    @GetMapping(value = "/{dictId}")
-    public AjaxResult getInfo(@PathVariable Long dictId)
-    {
-        return success(dictTypeService.selectDictTypeById(dictId));
-    }
-
-    /**
-     * 鏂板瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:add")
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
-            return error("鏂板瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪");
-        }
-        dict.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(dictTypeService.insertDictType(dict));
-    }
-
-    /**
-     * 淇敼瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:edit")
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
-            return error("淇敼瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪");
-        }
-        dict.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(dictTypeService.updateDictType(dict));
-    }
-
-    /**
-     * 鍒犻櫎瀛楀吀绫诲瀷
-     */
-    @RequiresPermissions("system:dict:remove")
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{dictIds}")
-    public AjaxResult remove(@PathVariable Long[] dictIds)
-    {
-        dictTypeService.deleteDictTypeByIds(dictIds);
-        return success();
-    }
-
-    /**
-     * 鍒锋柊瀛楀吀缂撳瓨
-     */
-    @RequiresPermissions("system:dict:remove")
-    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/refreshCache")
-    public AjaxResult refreshCache()
-    {
-        dictTypeService.resetDictCache();
-        return success();
-    }
-
-    /**
-     * 鑾峰彇瀛楀吀閫夋嫨妗嗗垪琛�
-     */
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
-        return success(dictTypes);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
deleted file mode 100644
index ce44741..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.redis.service.RedisService;
-import com.se.common.security.annotation.InnerAuth;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.system.api.domain.SysLogininfor;
-import com.ruoyi.system.service.ISysLogininforService;
-
-/**
- * 绯荤粺璁块棶璁板綍
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/logininfor")
-public class SysLogininforController extends BaseController
-{
-    @Autowired
-    private ISysLogininforService logininforService;
-
-    @Autowired
-    private RedisService redisService;
-
-    @RequiresPermissions("system:logininfor:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysLogininfor logininfor)
-    {
-        startPage();
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        return getDataTable(list);
-    }
-
-    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:logininfor:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysLogininfor logininfor)
-    {
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
-        util.exportExcel(response, list, "鐧诲綍鏃ュ織");
-    }
-
-    @RequiresPermissions("system:logininfor:remove")
-    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{infoIds}")
-    public AjaxResult remove(@PathVariable Long[] infoIds)
-    {
-        return toAjax(logininforService.deleteLogininforByIds(infoIds));
-    }
-
-    @RequiresPermissions("system:logininfor:remove")
-    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        logininforService.cleanLogininfor();
-        return success();
-    }
-
-    @RequiresPermissions("system:logininfor:unlock")
-    @Log(title = "璐︽埛瑙i攣", businessType = BusinessType.OTHER)
-    @GetMapping("/unlock/{userName}")
-    public AjaxResult unlock(@PathVariable("userName") String userName)
-    {
-        redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName);
-        return success();
-    }
-
-    @InnerAuth
-    @PostMapping
-    public AjaxResult add(@RequestBody SysLogininfor logininfor)
-    {
-        return toAjax(logininforService.insertLogininfor(logininfor));
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java
deleted file mode 100644
index d8f8b72..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysMenu;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 鑿滃崟淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/menu")
-public class SysMenuController extends BaseController
-{
-    @Autowired
-    private ISysMenuService menuService;
-
-    /**
-     * 鑾峰彇鑿滃崟鍒楄〃
-     */
-    @RequiresPermissions("system:menu:list")
-    @GetMapping("/list")
-    public AjaxResult list(SysMenu menu)
-    {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuList(menu, userId);
-        return success(menus);
-    }
-
-    /**
-     * 鏍规嵁鑿滃崟缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:menu:query")
-    @GetMapping(value = "/{menuId}")
-    public AjaxResult getInfo(@PathVariable Long menuId)
-    {
-        return success(menuService.selectMenuById(menuId));
-    }
-
-    /**
-     * 鑾峰彇鑿滃崟涓嬫媺鏍戝垪琛�
-     */
-    @GetMapping("/treeselect")
-    public AjaxResult treeselect(SysMenu menu)
-    {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuList(menu, userId);
-        return success(menuService.buildMenuTreeSelect(menus));
-    }
-
-    /**
-     * 鍔犺浇瀵瑰簲瑙掕壊鑿滃崟鍒楄〃鏍�
-     */
-    @GetMapping(value = "/roleMenuTreeselect/{roleId}")
-    public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
-    {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuList(userId);
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
-        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
-        return ajax;
-    }
-
-    /**
-     * 鏂板鑿滃崟
-     */
-    @RequiresPermissions("system:menu:add")
-    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
-            return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�");
-        }
-        menu.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(menuService.insertMenu(menu));
-    }
-
-    /**
-     * 淇敼鑿滃崟
-     */
-    @RequiresPermissions("system:menu:edit")
-    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
-            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪");
-        }
-        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
-        {
-            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�");
-        }
-        else if (menu.getMenuId().equals(menu.getParentId()))
-        {
-            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屼笂绾ц彍鍗曚笉鑳介�夋嫨鑷繁");
-        }
-        menu.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(menuService.updateMenu(menu));
-    }
-
-    /**
-     * 鍒犻櫎鑿滃崟
-     */
-    @RequiresPermissions("system:menu:remove")
-    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{menuId}")
-    public AjaxResult remove(@PathVariable("menuId") Long menuId)
-    {
-        if (menuService.hasChildByMenuId(menuId))
-        {
-            return warn("瀛樺湪瀛愯彍鍗�,涓嶅厑璁稿垹闄�");
-        }
-        if (menuService.checkMenuExistRole(menuId))
-        {
-            return warn("鑿滃崟宸插垎閰�,涓嶅厑璁稿垹闄�");
-        }
-        return toAjax(menuService.deleteMenuById(menuId));
-    }
-
-    /**
-     * 鑾峰彇璺敱淇℃伅
-     * 
-     * @return 璺敱淇℃伅
-     */
-    @GetMapping("getRouters")
-    public AjaxResult getRouters()
-    {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
-        return success(menuService.buildMenus(menus));
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java
deleted file mode 100644
index 0e0c3a3..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysNoticeController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.service.ISysNoticeService;
-
-/**
- * 鍏憡 淇℃伅鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/notice")
-public class SysNoticeController extends BaseController
-{
-    @Autowired
-    private ISysNoticeService noticeService;
-
-    /**
-     * 鑾峰彇閫氱煡鍏憡鍒楄〃
-     */
-    @RequiresPermissions("system:notice:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysNotice notice)
-    {
-        startPage();
-        List<SysNotice> list = noticeService.selectNoticeList(notice);
-        return getDataTable(list);
-    }
-
-    /**
-     * 鏍规嵁閫氱煡鍏憡缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:notice:query")
-    @GetMapping(value = "/{noticeId}")
-    public AjaxResult getInfo(@PathVariable Long noticeId)
-    {
-        return success(noticeService.selectNoticeById(noticeId));
-    }
-
-    /**
-     * 鏂板閫氱煡鍏憡
-     */
-    @RequiresPermissions("system:notice:add")
-    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysNotice notice)
-    {
-        notice.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(noticeService.insertNotice(notice));
-    }
-
-    /**
-     * 淇敼閫氱煡鍏憡
-     */
-    @RequiresPermissions("system:notice:edit")
-    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysNotice notice)
-    {
-        notice.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(noticeService.updateNotice(notice));
-    }
-
-    /**
-     * 鍒犻櫎閫氱煡鍏憡
-     */
-    @RequiresPermissions("system:notice:remove")
-    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{noticeIds}")
-    public AjaxResult remove(@PathVariable Long[] noticeIds)
-    {
-        return toAjax(noticeService.deleteNoticeByIds(noticeIds));
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
deleted file mode 100644
index 4439026..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.InnerAuth;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.system.api.domain.SysOperLog;
-import com.ruoyi.system.service.ISysOperLogService;
-
-/**
- * 鎿嶄綔鏃ュ織璁板綍
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/operlog")
-public class SysOperlogController extends BaseController
-{
-    @Autowired
-    private ISysOperLogService operLogService;
-
-    @RequiresPermissions("system:operlog:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysOperLog operLog)
-    {
-        startPage();
-        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-        return getDataTable(list);
-    }
-
-    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:operlog:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysOperLog operLog)
-    {
-        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-        ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
-        util.exportExcel(response, list, "鎿嶄綔鏃ュ織");
-    }
-
-    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE)
-    @RequiresPermissions("system:operlog:remove")
-    @DeleteMapping("/{operIds}")
-    public AjaxResult remove(@PathVariable Long[] operIds)
-    {
-        return toAjax(operLogService.deleteOperLogByIds(operIds));
-    }
-
-    @RequiresPermissions("system:operlog:remove")
-    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        operLogService.cleanOperLog();
-        return success();
-    }
-
-    @InnerAuth
-    @PostMapping
-    public AjaxResult add(@RequestBody SysOperLog operLog)
-    {
-        return toAjax(operLogService.insertOperlog(operLog));
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java
deleted file mode 100644
index c0fbcb8..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysPostController.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.service.ISysPostService;
-
-/**
- * 宀椾綅淇℃伅鎿嶄綔澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/post")
-public class SysPostController extends BaseController
-{
-    @Autowired
-    private ISysPostService postService;
-
-    /**
-     * 鑾峰彇宀椾綅鍒楄〃
-     */
-    @RequiresPermissions("system:post:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysPost post)
-    {
-        startPage();
-        List<SysPost> list = postService.selectPostList(post);
-        return getDataTable(list);
-    }
-
-    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:post:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysPost post)
-    {
-        List<SysPost> list = postService.selectPostList(post);
-        ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
-        util.exportExcel(response, list, "宀椾綅鏁版嵁");
-    }
-
-    /**
-     * 鏍规嵁宀椾綅缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:post:query")
-    @GetMapping(value = "/{postId}")
-    public AjaxResult getInfo(@PathVariable Long postId)
-    {
-        return success(postService.selectPostById(postId));
-    }
-
-    /**
-     * 鏂板宀椾綅
-     */
-    @RequiresPermissions("system:post:add")
-    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
-            return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
-            return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪");
-        }
-        post.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(postService.insertPost(post));
-    }
-
-    /**
-     * 淇敼宀椾綅
-     */
-    @RequiresPermissions("system:post:edit")
-    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
-            return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
-            return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪");
-        }
-        post.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(postService.updatePost(post));
-    }
-
-    /**
-     * 鍒犻櫎宀椾綅
-     */
-    @RequiresPermissions("system:post:remove")
-    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{postIds}")
-    public AjaxResult remove(@PathVariable Long[] postIds)
-    {
-        return toAjax(postService.deletePostByIds(postIds));
-    }
-
-    /**
-     * 鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
-     */
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        List<SysPost> posts = postService.selectPostAll();
-        return success(posts);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java
deleted file mode 100644
index 18290d2..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.Arrays;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.se.common.core.domain.R;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.file.FileTypeUtils;
-import com.se.common.core.utils.file.MimeTypeUtils;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.service.TokenService;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.RemoteFileService;
-import com.se.system.api.domain.SysFile;
-import com.se.system.api.domain.SysUser;
-import com.se.system.api.model.LoginUser;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 涓汉淇℃伅 涓氬姟澶勭悊
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/user/profile")
-public class SysProfileController extends BaseController
-{
-    @Autowired
-    private ISysUserService userService;
-    
-    @Autowired
-    private TokenService tokenService;
-    
-    @Autowired
-    private RemoteFileService remoteFileService;
-
-    /**
-     * 涓汉淇℃伅
-     */
-    @GetMapping
-    public AjaxResult profile()
-    {
-        String username = SecurityUtils.getUsername();
-        SysUser user = userService.selectUserByUserName(username);
-        AjaxResult ajax = AjaxResult.success(user);
-        ajax.put("roleGroup", userService.selectUserRoleGroup(username));
-        ajax.put("postGroup", userService.selectUserPostGroup(username));
-        return ajax;
-    }
-
-    /**
-     * 淇敼鐢ㄦ埛
-     */
-    @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
-    @PutMapping
-    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))
-        {
-            return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
-        {
-            return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
-        }
-        if (userService.updateUserProfile(currentUser))
-        {
-            // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅
-            tokenService.setLoginUser(loginUser);
-            return success();
-        }
-        return error("淇敼涓汉淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
-    }
-
-    /**
-     * 閲嶇疆瀵嗙爜
-     */
-    @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
-    @PutMapping("/updatePwd")
-    public AjaxResult updatePwd(String oldPassword, String newPassword)
-    {
-        String username = SecurityUtils.getUsername();
-        SysUser user = userService.selectUserByUserName(username);
-        String password = user.getPassword();
-        if (!SecurityUtils.matchesPassword(oldPassword, password))
-        {
-            return error("淇敼瀵嗙爜澶辫触锛屾棫瀵嗙爜閿欒");
-        }
-        if (SecurityUtils.matchesPassword(newPassword, password))
-        {
-            return error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
-        }
-        newPassword = SecurityUtils.encryptPassword(newPassword);
-        if (userService.resetUserPwd(username, newPassword) > 0)
-        {
-            // 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜
-            LoginUser loginUser = SecurityUtils.getLoginUser();
-            loginUser.getSysUser().setPassword(newPassword);
-            tokenService.setLoginUser(loginUser);
-            return success();
-        }
-        return error("淇敼瀵嗙爜寮傚父锛岃鑱旂郴绠$悊鍛�");
-    }
-    
-    /**
-     * 澶村儚涓婁紶
-     */
-    @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE)
-    @PostMapping("/avatar")
-    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))
-            {
-                return error("鏂囦欢鏍煎紡涓嶆纭紝璇蜂笂浼�" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "鏍煎紡");
-            }
-            R<SysFile> fileResult = remoteFileService.upload(file);
-            if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
-            {
-                return error("鏂囦欢鏈嶅姟寮傚父锛岃鑱旂郴绠$悊鍛�");
-            }
-            String url = fileResult.getData().getUrl();
-            if (userService.updateUserAvatar(loginUser.getUsername(), url))
-            {
-                AjaxResult ajax = AjaxResult.success();
-                ajax.put("imgUrl", url);
-                // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚
-                loginUser.getSysUser().setAvatar(url);
-                tokenService.setLoginUser(loginUser);
-                return ajax;
-            }
-        }
-        return error("涓婁紶鍥剧墖寮傚父锛岃鑱旂郴绠$悊鍛�");
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
deleted file mode 100644
index 61ef5a2..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDept;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 瑙掕壊淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/role")
-public class SysRoleController extends BaseController
-{
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysRole role)
-    {
-        startPage();
-        List<SysRole> list = roleService.selectRoleList(role);
-        return getDataTable(list);
-    }
-
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:role:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysRole role)
-    {
-        List<SysRole> list = roleService.selectRoleList(role);
-        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
-        util.exportExcel(response, list, "瑙掕壊鏁版嵁");
-    }
-
-    /**
-     * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping(value = "/{roleId}")
-    public AjaxResult getInfo(@PathVariable Long roleId)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return success(roleService.selectRoleById(roleId));
-    }
-
-    /**
-     * 鏂板瑙掕壊
-     */
-    @RequiresPermissions("system:role:add")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysRole role)
-    {
-        if (!roleService.checkRoleNameUnique(role))
-        {
-            return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
-            return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪");
-        }
-        role.setCreateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.insertRole(role));
-
-    }
-
-    /**
-     * 淇敼淇濆瓨瑙掕壊
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@Validated @RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        if (!roleService.checkRoleNameUnique(role))
-        {
-            return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
-            return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪");
-        }
-        role.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.updateRole(role));
-    }
-
-    /**
-     * 淇敼淇濆瓨鏁版嵁鏉冮檺
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping("/dataScope")
-    public AjaxResult dataScope(@RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        return toAjax(roleService.authDataScope(role));
-    }
-
-    /**
-     * 鐘舵�佷慨鏀�
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        role.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(roleService.updateRoleStatus(role));
-    }
-
-    /**
-     * 鍒犻櫎瑙掕壊
-     */
-    @RequiresPermissions("system:role:remove")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{roleIds}")
-    public AjaxResult remove(@PathVariable Long[] roleIds)
-    {
-        return toAjax(roleService.deleteRoleByIds(roleIds));
-    }
-
-    /**
-     * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping("/optionselect")
-    public AjaxResult optionselect()
-    {
-        return success(roleService.selectRoleAll());
-    }
-    /**
-     * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/allocatedList")
-    public TableDataInfo allocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectAllocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     */
-    @RequiresPermissions("system:role:list")
-    @GetMapping("/authUser/unallocatedList")
-    public TableDataInfo unallocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUnallocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 鍙栨秷鎺堟潈鐢ㄦ埛
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancel")
-    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole)
-    {
-        return toAjax(roleService.deleteAuthUser(userRole));
-    }
-
-    /**
-     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/cancelAll")
-    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds)
-    {
-        return toAjax(roleService.deleteAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
-    @PutMapping("/authUser/selectAll")
-    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return toAjax(roleService.insertAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛�
-     */
-    @RequiresPermissions("system:role:query")
-    @GetMapping(value = "/deptTree/{roleId}")
-    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
-        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
-        return ajax;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
deleted file mode 100644
index 44bed81..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ /dev/null
@@ -1,341 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.se.common.core.domain.R;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.poi.ExcelUtil;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.security.annotation.InnerAuth;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDept;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.se.system.api.model.LoginUser;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysPermissionService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 鐢ㄦ埛淇℃伅
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/user")
-public class SysUserController extends BaseController
-{
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    private ISysPostService postService;
-
-    @Autowired
-    private ISysPermissionService permissionService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    /**
-     * 鑾峰彇鐢ㄦ埛鍒楄〃
-     */
-    @RequiresPermissions("system:user:list")
-    @GetMapping("/list")
-    public TableDataInfo list(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUserList(user);
-        return getDataTable(list);
-    }
-
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:user:export")
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysUser user)
-    {
-        List<SysUser> list = userService.selectUserList(user);
-        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-        util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁");
-    }
-
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT)
-    @RequiresPermissions("system:user:import")
-    @PostMapping("/importData")
-    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();
-        String message = userService.importUser(userList, updateSupport, operName);
-        return success(message);
-    }
-
-    @PostMapping("/importTemplate")
-    public void importTemplate(HttpServletResponse response) throws IOException
-    {
-        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-        util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁");
-    }
-
-    /**
-     * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
-     */
-    @InnerAuth
-    @GetMapping("/info/{username}")
-    public R<LoginUser> info(@PathVariable("username") String username)
-    {
-        SysUser sysUser = userService.selectUserByUserName(username);
-        if (StringUtils.isNull(sysUser))
-        {
-            return R.fail("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
-        }
-        // 瑙掕壊闆嗗悎
-        Set<String> roles = permissionService.getRolePermission(sysUser);
-        // 鏉冮檺闆嗗悎
-        Set<String> permissions = permissionService.getMenuPermission(sysUser);
-        LoginUser sysUserVo = new LoginUser();
-        sysUserVo.setSysUser(sysUser);
-        sysUserVo.setRoles(roles);
-        sysUserVo.setPermissions(permissions);
-        return R.ok(sysUserVo);
-    }
-
-    /**
-     * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     */
-    @InnerAuth
-    @PostMapping("/register")
-    public R<Boolean> register(@RequestBody SysUser sysUser)
-    {
-        String username = sysUser.getUserName();
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
-            return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚敞鍐屽姛鑳斤紒");
-        }
-        if (!userService.checkUserNameUnique(sysUser))
-        {
-            return R.fail("淇濆瓨鐢ㄦ埛'" + username + "'澶辫触锛屾敞鍐岃处鍙峰凡瀛樺湪");
-        }
-        return R.ok(userService.registerUser(sysUser));
-    }
-
-    /**
-     *璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂�
-     */
-    @InnerAuth
-    @PutMapping("/recordlogin")
-    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());
-        // 瑙掕壊闆嗗悎
-        Set<String> roles = permissionService.getRolePermission(user);
-        // 鏉冮檺闆嗗悎
-        Set<String> permissions = permissionService.getMenuPermission(user);
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("user", user);
-        ajax.put("roles", roles);
-        ajax.put("permissions", permissions);
-        return ajax;
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅
-     */
-    @RequiresPermissions("system:user:query")
-    @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))
-        {
-            SysUser sysUser = userService.selectUserById(userId);
-            ajax.put(AjaxResult.DATA_TAG, sysUser);
-            ajax.put("postIds", postService.selectPostListByUserId(userId));
-            ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
-        }
-        return ajax;
-    }
-
-    /**
-     * 鏂板鐢ㄦ埛
-     */
-    @RequiresPermissions("system:user:add")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@Validated @RequestBody SysUser user)
-    {
-        deptService.checkDeptDataScope(user.getDeptId());
-        roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkUserNameUnique(user))
-        {
-            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
-            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
-            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
-        }
-        user.setCreateBy(SecurityUtils.getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        return toAjax(userService.insertUser(user));
-    }
-
-    /**
-     * 淇敼鐢ㄦ埛
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping
-    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))
-        {
-            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
-            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
-            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
-        }
-        user.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(userService.updateUser(user));
-    }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛
-     */
-    @RequiresPermissions("system:user:remove")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{userIds}")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        if (ArrayUtils.contains(userIds, SecurityUtils.getUserId()))
-        {
-            return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎");
-        }
-        return toAjax(userService.deleteUserByIds(userIds));
-    }
-
-    /**
-     * 閲嶇疆瀵嗙爜
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping("/resetPwd")
-    public AjaxResult resetPwd(@RequestBody SysUser user)
-    {
-        userService.checkUserAllowed(user);
-        userService.checkUserDataScope(user.getUserId());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        user.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(userService.resetPwd(user));
-    }
-
-    /**
-     * 鐘舵�佷慨鏀�
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysUser user)
-    {
-        userService.checkUserAllowed(user);
-        userService.checkUserDataScope(user.getUserId());
-        user.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(userService.updateUserStatus(user));
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊
-     */
-    @RequiresPermissions("system:user:query")
-    @GetMapping("/authRole/{userId}")
-    public AjaxResult authRole(@PathVariable("userId") Long userId)
-    {
-        AjaxResult ajax = AjaxResult.success();
-        SysUser user = userService.selectUserById(userId);
-        List<SysRole> roles = roleService.selectRolesByUserId(userId);
-        ajax.put("user", user);
-        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
-        return ajax;
-    }
-
-    /**
-     * 鐢ㄦ埛鎺堟潈瑙掕壊
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT)
-    @PutMapping("/authRole")
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
-        userService.checkUserDataScope(userId);
-        roleService.checkRoleDataScope(roleIds);
-        userService.insertUserAuth(userId, roleIds);
-        return success();
-    }
-
-    /**
-     * 鑾峰彇閮ㄩ棬鏍戝垪琛�
-     */
-    @RequiresPermissions("system:user:list")
-    @GetMapping("/deptTree")
-    public AjaxResult deptTree(SysDept dept)
-    {
-        return success(deptService.selectDeptTreeList(dept));
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
deleted file mode 100644
index 864ddf5..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.web.controller.BaseController;
-import com.se.common.core.web.domain.AjaxResult;
-import com.se.common.core.web.page.TableDataInfo;
-import com.se.common.log.annotation.Log;
-import com.se.common.log.enums.BusinessType;
-import com.se.common.redis.service.RedisService;
-import com.se.common.security.annotation.RequiresPermissions;
-import com.se.system.api.model.LoginUser;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
-
-/**
- * 鍦ㄧ嚎鐢ㄦ埛鐩戞帶
- * 
- * @author admin
- */
-@RestController
-@RequestMapping("/online")
-public class SysUserOnlineController extends BaseController
-{
-    @Autowired
-    private ISysUserOnlineService userOnlineService;
-
-    @Autowired
-    private RedisService redisService;
-
-    @RequiresPermissions("monitor:online:list")
-    @GetMapping("/list")
-    public TableDataInfo list(String ipaddr, String userName)
-    {
-        Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
-        List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
-        for (String key : keys)
-        {
-            LoginUser user = redisService.getCacheObject(key);
-            if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
-            }
-            else if (StringUtils.isNotEmpty(ipaddr))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
-            }
-            else if (StringUtils.isNotEmpty(userName))
-            {
-                userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
-            }
-            else
-            {
-                userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
-            }
-        }
-        Collections.reverse(userOnlineList);
-        userOnlineList.removeAll(Collections.singleton(null));
-        return getDataTable(userOnlineList);
-    }
-
-    /**
-     * 寮洪��鐢ㄦ埛
-     */
-    @RequiresPermissions("monitor:online:forceLogout")
-    @Log(title = "鍦ㄧ嚎鐢ㄦ埛", businessType = BusinessType.FORCE)
-    @DeleteMapping("/{tokenId}")
-    public AjaxResult forceLogout(@PathVariable String tokenId)
-    {
-        redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
-        return success();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
deleted file mode 100644
index 3e18992..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.ruoyi.system.domain;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.se.common.core.annotation.Excel;
-import com.se.common.core.annotation.Excel.ColumnType;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 鍙傛暟閰嶇疆琛� sys_config
- * 
- * @author admin
- */
-public class SysConfig extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鍙傛暟涓婚敭 */
-    @Excel(name = "鍙傛暟涓婚敭", cellType = ColumnType.NUMERIC)
-    private Long configId;
-
-    /** 鍙傛暟鍚嶇О */
-    @Excel(name = "鍙傛暟鍚嶇О")
-    private String configName;
-
-    /** 鍙傛暟閿悕 */
-    @Excel(name = "鍙傛暟閿悕")
-    private String configKey;
-
-    /** 鍙傛暟閿�� */
-    @Excel(name = "鍙傛暟閿��")
-    private String configValue;
-
-    /** 绯荤粺鍐呯疆锛圷鏄� N鍚︼級 */
-    @Excel(name = "绯荤粺鍐呯疆", readConverterExp = "Y=鏄�,N=鍚�")
-    private String configType;
-
-    public Long getConfigId()
-    {
-        return configId;
-    }
-
-    public void setConfigId(Long configId)
-    {
-        this.configId = configId;
-    }
-
-    @NotBlank(message = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "鍙傛暟鍚嶇О涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getConfigName()
-    {
-        return configName;
-    }
-
-    public void setConfigName(String configName)
-    {
-        this.configName = configName;
-    }
-
-    @NotBlank(message = "鍙傛暟閿悕闀垮害涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "鍙傛暟閿悕闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getConfigKey()
-    {
-        return configKey;
-    }
-
-    public void setConfigKey(String configKey)
-    {
-        this.configKey = configKey;
-    }
-
-    @NotBlank(message = "鍙傛暟閿�间笉鑳戒负绌�")
-    @Size(min = 0, max = 500, message = "鍙傛暟閿�奸暱搴︿笉鑳借秴杩�500涓瓧绗�")
-    public String getConfigValue()
-    {
-        return configValue;
-    }
-
-    public void setConfigValue(String configValue)
-    {
-        this.configValue = configValue;
-    }
-
-    public String getConfigType()
-    {
-        return configType;
-    }
-
-    public void setConfigType(String configType)
-    {
-        this.configType = configType;
-    }
-    
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("configId", getConfigId())
-            .append("configName", getConfigName())
-            .append("configKey", getConfigKey())
-            .append("configValue", getConfigValue())
-            .append("configType", getConfigType())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
deleted file mode 100644
index 1be9e3b..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysMenu.java
+++ /dev/null
@@ -1,274 +0,0 @@
-package com.ruoyi.system.domain;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 鑿滃崟鏉冮檺琛� sys_menu
- * 
- * @author admin
- */
-public class SysMenu extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鑿滃崟ID */
-    private Long menuId;
-
-    /** 鑿滃崟鍚嶇О */
-    private String menuName;
-
-    /** 鐖惰彍鍗曞悕绉� */
-    private String parentName;
-
-    /** 鐖惰彍鍗旾D */
-    private Long parentId;
-
-    /** 鏄剧ず椤哄簭 */
-    private Integer orderNum;
-
-    /** 璺敱鍦板潃 */
-    private String path;
-
-    /** 缁勪欢璺緞 */
-    private String component;
-
-    /** 璺敱鍙傛暟 */
-    private String query;
-
-    /** 璺敱鍚嶇О锛岄粯璁ゅ拰璺敱鍦板潃鐩稿悓鐨勯┘宄版牸寮忥紙娉ㄦ剰锛氬洜涓簐ue3鐗堟湰鐨剅outer浼氬垹闄ゅ悕绉扮浉鍚岃矾鐢憋紝涓洪伩鍏嶅悕瀛楃殑鍐茬獊锛岀壒娈婃儏鍐靛彲浠ヨ嚜瀹氫箟锛� */
-    private String routeName;
-
-    /** 鏄惁涓哄閾撅紙0鏄� 1鍚︼級 */
-    private String isFrame;
-
-    /** 鏄惁缂撳瓨锛�0缂撳瓨 1涓嶇紦瀛橈級 */
-    private String isCache;
-
-    /** 绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛� */
-    private String menuType;
-
-    /** 鏄剧ず鐘舵�侊紙0鏄剧ず 1闅愯棌锛� */
-    private String visible;
-    
-    /** 鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    private String status;
-
-    /** 鏉冮檺瀛楃涓� */
-    private String perms;
-
-    /** 鑿滃崟鍥炬爣 */
-    private String icon;
-
-    /** 瀛愯彍鍗� */
-    private List<SysMenu> children = new ArrayList<SysMenu>();
-
-    public Long getMenuId()
-    {
-        return menuId;
-    }
-
-    public void setMenuId(Long menuId)
-    {
-        this.menuId = menuId;
-    }
-
-    @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 50, message = "鑿滃崟鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getMenuName()
-    {
-        return menuName;
-    }
-
-    public void setMenuName(String menuName)
-    {
-        this.menuName = menuName;
-    }
-
-    public String getParentName()
-    {
-        return parentName;
-    }
-
-    public void setParentName(String parentName)
-    {
-        this.parentName = parentName;
-    }
-
-    public Long getParentId()
-    {
-        return parentId;
-    }
-
-    public void setParentId(Long parentId)
-    {
-        this.parentId = parentId;
-    }
-
-    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
-    public Integer getOrderNum()
-    {
-        return orderNum;
-    }
-
-    public void setOrderNum(Integer orderNum)
-    {
-        this.orderNum = orderNum;
-    }
-
-    @Size(min = 0, max = 200, message = "璺敱鍦板潃涓嶈兘瓒呰繃200涓瓧绗�")
-    public String getPath()
-    {
-        return path;
-    }
-
-    public void setPath(String path)
-    {
-        this.path = path;
-    }
-
-    @Size(min = 0, max = 200, message = "缁勪欢璺緞涓嶈兘瓒呰繃255涓瓧绗�")
-    public String getComponent()
-    {
-        return component;
-    }
-
-    public void setComponent(String component)
-    {
-        this.component = component;
-    }
-
-    public String getQuery()
-    {
-        return query;
-    }
-
-    public void setQuery(String query)
-    {
-        this.query = query;
-    }
-
-    public String getRouteName()
-    {
-        return routeName;
-    }
-
-    public void setRouteName(String routeName)
-    {
-        this.routeName = routeName;
-    }
-
-    public String getIsFrame()
-    {
-        return isFrame;
-    }
-
-    public void setIsFrame(String isFrame)
-    {
-        this.isFrame = isFrame;
-    }
-
-    public String getIsCache()
-    {
-        return isCache;
-    }
-
-    public void setIsCache(String isCache)
-    {
-        this.isCache = isCache;
-    }
-
-    @NotBlank(message = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")
-    public String getMenuType()
-    {
-        return menuType;
-    }
-
-    public void setMenuType(String menuType)
-    {
-        this.menuType = menuType;
-    }
-
-    public String getVisible()
-    {
-        return visible;
-    }
-
-    public void setVisible(String visible)
-    {
-        this.visible = visible;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    @Size(min = 0, max = 100, message = "鏉冮檺鏍囪瘑闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getPerms()
-    {
-        return perms;
-    }
-
-    public void setPerms(String perms)
-    {
-        this.perms = perms;
-    }
-
-    public String getIcon()
-    {
-        return icon;
-    }
-
-    public void setIcon(String icon)
-    {
-        this.icon = icon;
-    }
-
-    public List<SysMenu> getChildren()
-    {
-        return children;
-    }
-
-    public void setChildren(List<SysMenu> children)
-    {
-        this.children = children;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("menuId", getMenuId())
-            .append("menuName", getMenuName())
-            .append("parentId", getParentId())
-            .append("orderNum", getOrderNum())
-            .append("path", getPath())
-            .append("component", getComponent())
-            .append("query", getQuery())
-            .append("routeName", getRouteName())
-            .append("isFrame", getIsFrame())
-            .append("IsCache", getIsCache())
-            .append("menuType", getMenuType())
-            .append("visible", getVisible())
-            .append("status ", getStatus())
-            .append("perms", getPerms())
-            .append("icon", getIcon())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
deleted file mode 100644
index 23cd2d8..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.ruoyi.system.domain;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.se.common.core.web.domain.BaseEntity;
-import com.se.common.core.xss.Xss;
-
-/**
- * 閫氱煡鍏憡琛� sys_notice
- * 
- * @author admin
- */
-public class SysNotice extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鍏憡ID */
-    private Long noticeId;
-
-    /** 鍏憡鏍囬 */
-    private String noticeTitle;
-
-    /** 鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛� */
-    private String noticeType;
-
-    /** 鍏憡鍐呭 */
-    private String noticeContent;
-
-    /** 鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛� */
-    private String status;
-
-    public Long getNoticeId()
-    {
-        return noticeId;
-    }
-
-    public void setNoticeId(Long noticeId)
-    {
-        this.noticeId = noticeId;
-    }
-
-    public void setNoticeTitle(String noticeTitle)
-    {
-        this.noticeTitle = noticeTitle;
-    }
-
-    @Xss(message = "鍏憡鏍囬涓嶈兘鍖呭惈鑴氭湰瀛楃")
-    @NotBlank(message = "鍏憡鏍囬涓嶈兘涓虹┖")
-    @Size(min = 0, max = 50, message = "鍏憡鏍囬涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getNoticeTitle()
-    {
-        return noticeTitle;
-    }
-
-    public void setNoticeType(String noticeType)
-    {
-        this.noticeType = noticeType;
-    }
-
-    public String getNoticeType()
-    {
-        return noticeType;
-    }
-
-    public void setNoticeContent(String noticeContent)
-    {
-        this.noticeContent = noticeContent;
-    }
-
-    public String getNoticeContent()
-    {
-        return noticeContent;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("noticeId", getNoticeId())
-            .append("noticeTitle", getNoticeTitle())
-            .append("noticeType", getNoticeType())
-            .append("noticeContent", getNoticeContent())
-            .append("status", getStatus())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
deleted file mode 100644
index 8369664..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ruoyi.system.domain;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.se.common.core.annotation.Excel;
-import com.se.common.core.annotation.Excel.ColumnType;
-import com.se.common.core.web.domain.BaseEntity;
-
-/**
- * 宀椾綅琛� sys_post
- * 
- * @author admin
- */
-public class SysPost extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 宀椾綅搴忓彿 */
-    @Excel(name = "宀椾綅搴忓彿", cellType = ColumnType.NUMERIC)
-    private Long postId;
-
-    /** 宀椾綅缂栫爜 */
-    @Excel(name = "宀椾綅缂栫爜")
-    private String postCode;
-
-    /** 宀椾綅鍚嶇О */
-    @Excel(name = "宀椾綅鍚嶇О")
-    private String postName;
-
-    /** 宀椾綅鎺掑簭 */
-    @Excel(name = "宀椾綅鎺掑簭")
-    private Integer postSort;
-
-    /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
-    private String status;
-
-    /** 鐢ㄦ埛鏄惁瀛樺湪姝ゅ矖浣嶆爣璇� 榛樿涓嶅瓨鍦� */
-    private boolean flag = false;
-
-    public Long getPostId()
-    {
-        return postId;
-    }
-
-    public void setPostId(Long postId)
-    {
-        this.postId = postId;
-    }
-
-    @NotBlank(message = "宀椾綅缂栫爜涓嶈兘涓虹┖")
-    @Size(min = 0, max = 64, message = "宀椾綅缂栫爜闀垮害涓嶈兘瓒呰繃64涓瓧绗�")
-    public String getPostCode()
-    {
-        return postCode;
-    }
-
-    public void setPostCode(String postCode)
-    {
-        this.postCode = postCode;
-    }
-
-    @NotBlank(message = "宀椾綅鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 50, message = "宀椾綅鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getPostName()
-    {
-        return postName;
-    }
-
-    public void setPostName(String postName)
-    {
-        this.postName = postName;
-    }
-
-    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
-    public Integer getPostSort()
-    {
-        return postSort;
-    }
-
-    public void setPostSort(Integer postSort)
-    {
-        this.postSort = postSort;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public boolean isFlag()
-    {
-        return flag;
-    }
-
-    public void setFlag(boolean flag)
-    {
-        this.flag = flag;
-    }
-    
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("postId", getPostId())
-            .append("postCode", getPostCode())
-            .append("postName", getPostName())
-            .append("postSort", getPostSort())
-            .append("status", getStatus())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
deleted file mode 100644
index e6fa9aa..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.system.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 瑙掕壊鍜岄儴闂ㄥ叧鑱� sys_role_dept
- * 
- * @author admin
- */
-public class SysRoleDept
-{
-    /** 瑙掕壊ID */
-    private Long roleId;
-    
-    /** 閮ㄩ棬ID */
-    private Long deptId;
-
-    public Long getRoleId()
-    {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-
-    public Long getDeptId()
-    {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId)
-    {
-        this.deptId = deptId;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("roleId", getRoleId())
-            .append("deptId", getDeptId())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
deleted file mode 100644
index 3897f31..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.system.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 瑙掕壊鍜岃彍鍗曞叧鑱� sys_role_menu
- * 
- * @author admin
- */
-public class SysRoleMenu
-{
-    /** 瑙掕壊ID */
-    private Long roleId;
-    
-    /** 鑿滃崟ID */
-    private Long menuId;
-
-    public Long getRoleId()
-    {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-
-    public Long getMenuId()
-    {
-        return menuId;
-    }
-
-    public void setMenuId(Long menuId)
-    {
-        this.menuId = menuId;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("roleId", getRoleId())
-            .append("menuId", getMenuId())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
deleted file mode 100644
index d1a7db2..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.ruoyi.system.domain;
-
-/**
- * 褰撳墠鍦ㄧ嚎浼氳瘽
- * 
- * @author admin
- */
-public class SysUserOnline
-{
-    /** 浼氳瘽缂栧彿 */
-    private String tokenId;
-
-    /** 鐢ㄦ埛鍚嶇О */
-    private String userName;
-
-    /** 鐧诲綍IP鍦板潃 */
-    private String ipaddr;
-
-    /** 鐧诲綍鍦板潃 */
-    private String loginLocation;
-
-    /** 娴忚鍣ㄧ被鍨� */
-    private String browser;
-
-    /** 鎿嶄綔绯荤粺 */
-    private String os;
-
-    /** 鐧诲綍鏃堕棿 */
-    private Long loginTime;
-
-    public String getTokenId()
-    {
-        return tokenId;
-    }
-
-    public void setTokenId(String tokenId)
-    {
-        this.tokenId = tokenId;
-    }
-
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-    public String getIpaddr()
-    {
-        return ipaddr;
-    }
-
-    public void setIpaddr(String ipaddr)
-    {
-        this.ipaddr = ipaddr;
-    }
-
-    public String getLoginLocation()
-    {
-        return loginLocation;
-    }
-
-    public void setLoginLocation(String loginLocation)
-    {
-        this.loginLocation = loginLocation;
-    }
-
-    public String getBrowser()
-    {
-        return browser;
-    }
-
-    public void setBrowser(String browser)
-    {
-        this.browser = browser;
-    }
-
-    public String getOs()
-    {
-        return os;
-    }
-
-    public void setOs(String os)
-    {
-        this.os = os;
-    }
-
-    public Long getLoginTime()
-    {
-        return loginTime;
-    }
-
-    public void setLoginTime(Long loginTime)
-    {
-        this.loginTime = loginTime;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
deleted file mode 100644
index 5c1219b..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.system.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 鐢ㄦ埛鍜屽矖浣嶅叧鑱� sys_user_post
- * 
- * @author admin
- */
-public class SysUserPost
-{
-    /** 鐢ㄦ埛ID */
-    private Long userId;
-    
-    /** 宀椾綅ID */
-    private Long postId;
-
-    public Long getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(Long userId)
-    {
-        this.userId = userId;
-    }
-
-    public Long getPostId()
-    {
-        return postId;
-    }
-
-    public void setPostId(Long postId)
-    {
-        this.postId = postId;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("userId", getUserId())
-            .append("postId", getPostId())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
deleted file mode 100644
index 65badb7..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.ruoyi.system.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 鐢ㄦ埛鍜岃鑹插叧鑱� sys_user_role
- * 
- * @author admin
- */
-public class SysUserRole
-{
-    /** 鐢ㄦ埛ID */
-    private Long userId;
-    
-    /** 瑙掕壊ID */
-    private Long roleId;
-
-    public Long getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(Long userId)
-    {
-        this.userId = userId;
-    }
-
-    public Long getRoleId()
-    {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("userId", getUserId())
-            .append("roleId", getRoleId())
-            .toString();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
deleted file mode 100644
index 449a1fc..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.ruoyi.system.domain.vo;
-
-import com.se.common.core.utils.StringUtils;
-
-/**
- * 璺敱鏄剧ず淇℃伅
- * 
- * @author admin
- */
-public class MetaVo
-{
-    /**
-     * 璁剧疆璇ヨ矾鐢卞湪渚ц竟鏍忓拰闈㈠寘灞戜腑灞曠ず鐨勫悕瀛�
-     */
-    private String title;
-
-    /**
-     * 璁剧疆璇ヨ矾鐢辩殑鍥炬爣锛屽搴旇矾寰剆rc/assets/icons/svg
-     */
-    private String icon;
-
-    /**
-     * 璁剧疆涓簍rue锛屽垯涓嶄細琚� <keep-alive>缂撳瓨
-     */
-    private boolean noCache;
-
-    /**
-     * 鍐呴摼鍦板潃锛坔ttp(s)://寮�澶达級
-     */
-    private String link;
-
-    public MetaVo()
-    {
-    }
-
-    public MetaVo(String title, String icon)
-    {
-        this.title = title;
-        this.icon = icon;
-    }
-
-    public MetaVo(String title, String icon, boolean noCache)
-    {
-        this.title = title;
-        this.icon = icon;
-        this.noCache = noCache;
-    }
-
-    public MetaVo(String title, String icon, String link)
-    {
-        this.title = title;
-        this.icon = icon;
-        this.link = link;
-    }
-
-    public MetaVo(String title, String icon, boolean noCache, String link)
-    {
-        this.title = title;
-        this.icon = icon;
-        this.noCache = noCache;
-        if (StringUtils.ishttp(link))
-        {
-            this.link = link;
-        }
-    }
-
-    public boolean isNoCache()
-    {
-        return noCache;
-    }
-
-    public void setNoCache(boolean noCache)
-    {
-        this.noCache = noCache;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-    public String getIcon()
-    {
-        return icon;
-    }
-
-    public void setIcon(String icon)
-    {
-        this.icon = icon;
-    }
-
-    public String getLink()
-    {
-        return link;
-    }
-
-    public void setLink(String link)
-    {
-        this.link = link;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java
deleted file mode 100644
index 16eb2e1..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package com.ruoyi.system.domain.vo;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import java.util.List;
-
-/**
- * 璺敱閰嶇疆淇℃伅
- * 
- * @author admin
- */
-@JsonInclude(JsonInclude.Include.NON_EMPTY)
-public class RouterVo
-{
-    /**
-     * 璺敱鍚嶅瓧
-     */
-    private String name;
-
-    /**
-     * 璺敱鍦板潃
-     */
-    private String path;
-
-    /**
-     * 鏄惁闅愯棌璺敱锛屽綋璁剧疆 true 鐨勬椂鍊欒璺敱涓嶄細鍐嶄晶杈规爮鍑虹幇
-     */
-    private boolean hidden;
-
-    /**
-     * 閲嶅畾鍚戝湴鍧�锛屽綋璁剧疆 noRedirect 鐨勬椂鍊欒璺敱鍦ㄩ潰鍖呭睉瀵艰埅涓笉鍙鐐瑰嚮
-     */
-    private String redirect;
-
-    /**
-     * 缁勪欢鍦板潃
-     */
-    private String component;
-
-    /**
-     * 璺敱鍙傛暟锛氬 {"id": 1, "name": "ry"}
-     */
-    private String query;
-
-    /**
-     * 褰撲綘涓�涓矾鐢变笅闈㈢殑 children 澹版槑鐨勮矾鐢卞ぇ浜�1涓椂锛岃嚜鍔ㄤ細鍙樻垚宓屽鐨勬ā寮�--濡傜粍浠堕〉闈�
-     */
-    private Boolean alwaysShow;
-
-    /**
-     * 鍏朵粬鍏冪礌
-     */
-    private MetaVo meta;
-
-    /**
-     * 瀛愯矾鐢�
-     */
-    private List<RouterVo> children;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public String getPath()
-    {
-        return path;
-    }
-
-    public void setPath(String path)
-    {
-        this.path = path;
-    }
-
-    public boolean getHidden()
-    {
-        return hidden;
-    }
-
-    public void setHidden(boolean hidden)
-    {
-        this.hidden = hidden;
-    }
-
-    public String getRedirect()
-    {
-        return redirect;
-    }
-
-    public void setRedirect(String redirect)
-    {
-        this.redirect = redirect;
-    }
-
-    public String getComponent()
-    {
-        return component;
-    }
-
-    public void setComponent(String component)
-    {
-        this.component = component;
-    }
-
-    public String getQuery()
-    {
-        return query;
-    }
-
-    public void setQuery(String query)
-    {
-        this.query = query;
-    }
-
-    public Boolean getAlwaysShow()
-    {
-        return alwaysShow;
-    }
-
-    public void setAlwaysShow(Boolean alwaysShow)
-    {
-        this.alwaysShow = alwaysShow;
-    }
-
-    public MetaVo getMeta()
-    {
-        return meta;
-    }
-
-    public void setMeta(MetaVo meta)
-    {
-        this.meta = meta;
-    }
-
-    public List<RouterVo> getChildren()
-    {
-        return children;
-    }
-
-    public void setChildren(List<RouterVo> children)
-    {
-        this.children = children;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java
deleted file mode 100644
index 4be5870..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TreeSelect.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.ruoyi.system.domain.vo;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.stream.Collectors;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.se.system.api.domain.SysDept;
-import com.ruoyi.system.domain.SysMenu;
-
-/**
- * Treeselect鏍戠粨鏋勫疄浣撶被
- * 
- * @author admin
- */
-public class TreeSelect implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鑺傜偣ID */
-    private Long id;
-
-    /** 鑺傜偣鍚嶇О */
-    private String label;
-
-    /** 瀛愯妭鐐� */
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
-    private List<TreeSelect> children;
-
-    public TreeSelect()
-    {
-
-    }
-
-    public TreeSelect(SysDept dept)
-    {
-        this.id = dept.getDeptId();
-        this.label = dept.getDeptName();
-        this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
-    }
-
-    public TreeSelect(SysMenu menu)
-    {
-        this.id = menu.getMenuId();
-        this.label = menu.getMenuName();
-        this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
-    }
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    public void setLabel(String label)
-    {
-        this.label = label;
-    }
-
-    public List<TreeSelect> getChildren()
-    {
-        return children;
-    }
-
-    public void setChildren(List<TreeSelect> children)
-    {
-        this.children = children;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
deleted file mode 100644
index 1aa9d00..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
-
-/**
- * 鍙傛暟閰嶇疆 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysConfigMapper
-{
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 鍙傛暟閰嶇疆淇℃伅
-     */
-    public SysConfig selectConfig(SysConfig config);
-
-    /**
-     * 閫氳繃ID鏌ヨ閰嶇疆
-     * 
-     * @param configId 鍙傛暟ID
-     * @return 鍙傛暟閰嶇疆淇℃伅
-     */
-    public SysConfig selectConfigById(Long configId);
-
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 鍙傛暟閰嶇疆闆嗗悎
-     */
-    public List<SysConfig> selectConfigList(SysConfig config);
-
-    /**
-     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param configKey 鍙傛暟閿悕
-     * @return 鍙傛暟閰嶇疆淇℃伅
-     */
-    public SysConfig checkConfigKeyUnique(String configKey);
-
-    /**
-     * 鏂板鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertConfig(SysConfig config);
-
-    /**
-     * 淇敼鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateConfig(SysConfig config);
-
-    /**
-     * 鍒犻櫎鍙傛暟閰嶇疆
-     * 
-     * @param configId 鍙傛暟ID
-     * @return 缁撴灉
-     */
-    public int deleteConfigById(Long configId);
-
-    /**
-     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
-     * 
-     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-     * @return 缁撴灉
-     */
-    public int deleteConfigByIds(Long[] configIds);
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
deleted file mode 100644
index b29197e..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import com.se.system.api.domain.SysDept;
-
-/**
- * 閮ㄩ棬绠$悊 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysDeptMapper
-{
-    /**
-     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 閮ㄩ棬淇℃伅闆嗗悎
-     */
-    public List<SysDept> selectDeptList(SysDept dept);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
-     * @return 閫変腑閮ㄩ棬鍒楄〃
-     */
-    public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
-
-    /**
-     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 閮ㄩ棬淇℃伅
-     */
-    public SysDept selectDeptById(Long deptId);
-
-    /**
-     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 閮ㄩ棬鍒楄〃
-     */
-    public List<SysDept> selectChildrenDeptById(Long deptId);
-
-    /**
-     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 瀛愰儴闂ㄦ暟
-     */
-    public int selectNormalChildrenDeptById(Long deptId);
-
-    /**
-     * 鏄惁瀛樺湪瀛愯妭鐐�
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public int hasChildByDeptId(Long deptId);
-
-    /**
-     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public int checkDeptExistUser(Long deptId);
-
-    /**
-     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
-     * @param deptName 閮ㄩ棬鍚嶇О
-     * @param parentId 鐖堕儴闂↖D
-     * @return 缁撴灉
-     */
-    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
-
-    /**
-     * 鏂板閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDept(SysDept dept);
-
-    /**
-     * 淇敼閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDept(SysDept dept);
-
-    /**
-     * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬�
-     * 
-     * @param deptIds 閮ㄩ棬ID缁�
-     */
-    public void updateDeptStatusNormal(Long[] deptIds);
-
-    /**
-     * 淇敼瀛愬厓绱犲叧绯�
-     * 
-     * @param depts 瀛愬厓绱�
-     * @return 缁撴灉
-     */
-    public int updateDeptChildren(@Param("depts") List<SysDept> depts);
-
-    /**
-     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public int deleteDeptById(Long deptId);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
deleted file mode 100644
index 1403a8e..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import com.se.system.api.domain.SysDictData;
-
-/**
- * 瀛楀吀琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysDictDataMapper
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysDictData> selectDictDataList(SysDictData dictData);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysDictData> selectDictDataByType(String dictType);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @param dictValue 瀛楀吀閿��
-     * @return 瀛楀吀鏍囩
-     */
-    public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
-
-    /**
-     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
-     * 
-     * @param dictCode 瀛楀吀鏁版嵁ID
-     * @return 瀛楀吀鏁版嵁
-     */
-    public SysDictData selectDictDataById(Long dictCode);
-
-    /**
-     * 鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀鏁版嵁
-     */
-    public int countDictDataByType(String dictType);
-
-    /**
-     * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictCode 瀛楀吀鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteDictDataById(Long dictCode);
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteDictDataByIds(Long[] dictCodes);
-
-    /**
-     * 鏂板瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDictData(SysDictData dictData);
-
-    /**
-     * 淇敼瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDictData(SysDictData dictData);
-
-    /**
-     * 鍚屾淇敼瀛楀吀绫诲瀷
-     * 
-     * @param oldDictType 鏃у瓧鍏哥被鍨�
-     * @param newDictType 鏂版棫瀛楀吀绫诲瀷
-     * @return 缁撴灉
-     */
-    public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
deleted file mode 100644
index 02fe04c..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.se.system.api.domain.SysDictType;
-
-/**
- * 瀛楀吀琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysDictTypeMapper
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    public List<SysDictType> selectDictTypeList(SysDictType dictType);
-
-    /**
-     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
-     * 
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    public List<SysDictType> selectDictTypeAll();
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
-     * 
-     * @param dictId 瀛楀吀绫诲瀷ID
-     * @return 瀛楀吀绫诲瀷
-     */
-    public SysDictType selectDictTypeById(Long dictId);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀绫诲瀷
-     */
-    public SysDictType selectDictTypeByType(String dictType);
-
-    /**
-     * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀淇℃伅
-     * 
-     * @param dictId 瀛楀吀ID
-     * @return 缁撴灉
-     */
-    public int deleteDictTypeById(Long dictId);
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
-     * @return 缁撴灉
-     */
-    public int deleteDictTypeByIds(Long[] dictIds);
-
-    /**
-     * 鏂板瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDictType(SysDictType dictType);
-
-    /**
-     * 淇敼瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDictType(SysDictType dictType);
-
-    /**
-     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 缁撴灉
-     */
-    public SysDictType checkDictTypeUnique(String dictType);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
deleted file mode 100644
index d6cf4c3..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.se.system.api.domain.SysLogininfor;
-
-/**
- * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysLogininforMapper
-{
-    /**
-     * 鏂板绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     */
-    public int insertLogininfor(SysLogininfor logininfor);
-
-    /**
-     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     * @return 鐧诲綍璁板綍闆嗗悎
-     */
-    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteLogininforByIds(Long[] infoIds);
-
-    /**
-     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @return 缁撴灉
-     */
-    public int cleanLogininfor();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
deleted file mode 100644
index 0342c46..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import com.ruoyi.system.domain.SysMenu;
-
-/**
- * 鑿滃崟琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysMenuMapper
-{
-    /**
-     * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuList(SysMenu menu);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄�
-     * 
-     * @return 鏉冮檺鍒楄〃
-     */
-    public List<String> selectMenuPerms();
-
-    /**
-     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuListByUserId(SysMenu menu);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    public List<String> selectMenuPermsByRoleId(Long roleId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    public List<String> selectMenuPermsByUserId(Long userId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuTreeAll();
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuTreeByUserId(Long userId);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
-     * @return 閫変腑鑿滃崟鍒楄〃
-     */
-    public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
-
-    /**
-     * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 鑿滃崟淇℃伅
-     */
-    public SysMenu selectMenuById(Long menuId);
-
-    /**
-     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    public int hasChildByMenuId(Long menuId);
-
-    /**
-     * 鏂板鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertMenu(SysMenu menu);
-
-    /**
-     * 淇敼鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateMenu(SysMenu menu);
-
-    /**
-     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    public int deleteMenuById(Long menuId);
-
-    /**
-     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
-     * @param menuName 鑿滃崟鍚嶇О
-     * @param parentId 鐖惰彍鍗旾D
-     * @return 缁撴灉
-     */
-    public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
deleted file mode 100644
index 4876782..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysNotice;
-
-/**
- * 閫氱煡鍏憡琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysNoticeMapper
-{
-    /**
-     * 鏌ヨ鍏憡淇℃伅
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 鍏憡淇℃伅
-     */
-    public SysNotice selectNoticeById(Long noticeId);
-
-    /**
-     * 鏌ヨ鍏憡鍒楄〃
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 鍏憡闆嗗悎
-     */
-    public List<SysNotice> selectNoticeList(SysNotice notice);
-
-    /**
-     * 鏂板鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertNotice(SysNotice notice);
-
-    /**
-     * 淇敼鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateNotice(SysNotice notice);
-
-    /**
-     * 鎵归噺鍒犻櫎鍏憡
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 缁撴灉
-     */
-    public int deleteNoticeById(Long noticeId);
-
-    /**
-     * 鎵归噺鍒犻櫎鍏憡淇℃伅
-     * 
-     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
-     * @return 缁撴灉
-     */
-    public int deleteNoticeByIds(Long[] noticeIds);
-}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
deleted file mode 100644
index 04b197a..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.se.system.api.domain.SysOperLog;
-
-/**
- * 鎿嶄綔鏃ュ織 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysOperLogMapper
-{
-    /**
-     * 鏂板鎿嶄綔鏃ュ織
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     */
-    public int insertOperlog(SysOperLog operLog);
-
-    /**
-     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     * @return 鎿嶄綔鏃ュ織闆嗗悎
-     */
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
-     * 
-     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteOperLogByIds(Long[] operIds);
-
-    /**
-     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
-     * 
-     * @param operId 鎿嶄綔ID
-     * @return 鎿嶄綔鏃ュ織瀵硅薄
-     */
-    public SysOperLog selectOperLogById(Long operId);
-
-    /**
-     * 娓呯┖鎿嶄綔鏃ュ織
-     */
-    public void cleanOperLog();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
deleted file mode 100644
index 21e8662..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysPost;
-
-/**
- * 宀椾綅淇℃伅 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysPostMapper
-{
-    /**
-     * 鏌ヨ宀椾綅鏁版嵁闆嗗悎
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 宀椾綅鏁版嵁闆嗗悎
-     */
-    public List<SysPost> selectPostList(SysPost post);
-
-    /**
-     * 鏌ヨ鎵�鏈夊矖浣�
-     * 
-     * @return 宀椾綅鍒楄〃
-     */
-    public List<SysPost> selectPostAll();
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    public SysPost selectPostById(Long postId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑宀椾綅ID鍒楄〃
-     */
-    public List<Long> selectPostListByUserId(Long userId);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 缁撴灉
-     */
-    public List<SysPost> selectPostsByUserName(String userName);
-
-    /**
-     * 鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int deletePostById(Long postId);
-
-    /**
-     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int deletePostByIds(Long[] postIds);
-
-    /**
-     * 淇敼宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public int updatePost(SysPost post);
-
-    /**
-     * 鏂板宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertPost(SysPost post);
-
-    /**
-     * 鏍¢獙宀椾綅鍚嶇О
-     * 
-     * @param postName 宀椾綅鍚嶇О
-     * @return 缁撴灉
-     */
-    public SysPost checkPostNameUnique(String postName);
-
-    /**
-     * 鏍¢獙宀椾綅缂栫爜
-     * 
-     * @param postCode 宀椾綅缂栫爜
-     * @return 缁撴灉
-     */
-    public SysPost checkPostCodeUnique(String postCode);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
deleted file mode 100644
index d1d4f7d..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysRoleDept;
-
-/**
- * 瑙掕壊涓庨儴闂ㄥ叧鑱旇〃 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysRoleDeptMapper
-{
-    /**
-     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岄儴闂ㄥ叧鑱�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleDeptByRoleId(Long roleId);
-
-    /**
-     * 鎵归噺鍒犻櫎瑙掕壊閮ㄩ棬鍏宠仈淇℃伅
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleDept(Long[] ids);
-
-    /**
-     * 鏌ヨ閮ㄩ棬浣跨敤鏁伴噺
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public int selectCountRoleDeptByDeptId(Long deptId);
-
-    /**
-     * 鎵归噺鏂板瑙掕壊閮ㄩ棬淇℃伅
-     * 
-     * @param roleDeptList 瑙掕壊閮ㄩ棬鍒楄〃
-     * @return 缁撴灉
-     */
-    public int batchRoleDept(List<SysRoleDept> roleDeptList);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
deleted file mode 100644
index 5d33398..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.se.system.api.domain.SysRole;
-
-/**
- * 瑙掕壊琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysRoleMapper
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysRole> selectRoleList(SysRole role);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 瑙掕壊鍒楄〃
-     */
-    public List<SysRole> selectRolePermissionByUserId(Long userId);
-
-    /**
-     * 鏌ヨ鎵�鏈夎鑹�
-     * 
-     * @return 瑙掕壊鍒楄〃
-     */
-    public List<SysRole> selectRoleAll();
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑瑙掕壊ID鍒楄〃
-     */
-    public List<Long> selectRoleListByUserId(Long userId);
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    public SysRole selectRoleById(Long roleId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 瑙掕壊鍒楄〃
-     */
-    public List<SysRole> selectRolesByUserName(String userName);
-
-    /**
-     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
-     * 
-     * @param roleName 瑙掕壊鍚嶇О
-     * @return 瑙掕壊淇℃伅
-     */
-    public SysRole checkRoleNameUnique(String roleName);
-
-    /**
-     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
-     * 
-     * @param roleKey 瑙掕壊鏉冮檺
-     * @return 瑙掕壊淇℃伅
-     */
-    public SysRole checkRoleKeyUnique(String roleKey);
-
-    /**
-     * 淇敼瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateRole(SysRole role);
-
-    /**
-     * 鏂板瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertRole(SysRole role);
-
-    /**
-     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleById(Long roleId);
-
-    /**
-     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
-     * 
-     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleByIds(Long[] roleIds);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
deleted file mode 100644
index 87fb374..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysRoleMenu;
-
-/**
- * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysRoleMenuMapper
-{
-    /**
-     * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    public int checkMenuExistRole(Long menuId);
-
-    /**
-     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岃彍鍗曞叧鑱�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleMenuByRoleId(Long roleId);
-
-    /**
-     * 鎵归噺鍒犻櫎瑙掕壊鑿滃崟鍏宠仈淇℃伅
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleMenu(Long[] ids);
-
-    /**
-     * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅
-     * 
-     * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃
-     * @return 缁撴灉
-     */
-    public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
deleted file mode 100644
index 9a4b430..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import com.se.system.api.domain.SysUser;
-
-/**
- * 鐢ㄦ埛琛� 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysUserMapper
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
-     * 
-     * @param sysUser 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectUserList(SysUser sysUser);
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectAllocatedList(SysUser user);
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectUnallocatedList(SysUser user);
-
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    public SysUser selectUserByUserName(String userName);
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    public SysUser selectUserById(Long userId);
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertUser(SysUser user);
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateUser(SysUser user);
-
-    /**
-     * 淇敼鐢ㄦ埛澶村儚
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param avatar 澶村儚鍦板潃
-     * @return 缁撴灉
-     */
-    public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
-
-    /**
-     * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param password 瀵嗙爜
-     * @return 缁撴灉
-     */
-    public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserById(Long userId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
-     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserByIds(Long[] userIds);
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
-     * 
-     * @param userName 鐢ㄦ埛鍚嶇О
-     * @return 缁撴灉
-     */
-    public SysUser checkUserNameUnique(String userName);
-
-    /**
-     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
-     *
-     * @param phonenumber 鎵嬫満鍙风爜
-     * @return 缁撴灉
-     */
-    public SysUser checkPhoneUnique(String phonenumber);
-
-    /**
-     * 鏍¢獙email鏄惁鍞竴
-     *
-     * @param email 鐢ㄦ埛閭
-     * @return 缁撴灉
-     */
-    public SysUser checkEmailUnique(String email);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
deleted file mode 100644
index ad9bb68..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysUserPost;
-
-/**
- * 鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysUserPostMapper
-{
-    /**
-     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserPostByUserId(Long userId);
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int countUserPostById(Long postId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱�
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteUserPost(Long[] ids);
-
-    /**
-     * 鎵归噺鏂板鐢ㄦ埛宀椾綅淇℃伅
-     * 
-     * @param userPostList 鐢ㄦ埛宀椾綅鍒楄〃
-     * @return 缁撴灉
-     */
-    public int batchUserPost(List<SysUserPost> userPostList);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
deleted file mode 100644
index d2dd378..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
-import com.ruoyi.system.domain.SysUserRole;
-
-/**
- * 鐢ㄦ埛涓庤鑹插叧鑱旇〃 鏁版嵁灞�
- * 
- * @author admin
- */
-public interface SysUserRoleMapper
-{
-    /**
-     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserRoleByUserId(Long userId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱�
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteUserRole(Long[] ids);
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int countUserRoleByRoleId(Long roleId);
-
-    /**
-     * 鎵归噺鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
-     * @param userRoleList 鐢ㄦ埛瑙掕壊鍒楄〃
-     * @return 缁撴灉
-     */
-    public int batchUserRole(List<SysUserRole> userRoleList);
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
-     * 
-     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
-     * @return 缁撴灉
-     */
-    public int deleteUserRoleInfo(SysUserRole userRole);
-
-    /**
-     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
deleted file mode 100644
index 607e370..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
-
-/**
- * 鍙傛暟閰嶇疆 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysConfigService
-{
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param configId 鍙傛暟閰嶇疆ID
-     * @return 鍙傛暟閰嶇疆淇℃伅
-     */
-    public SysConfig selectConfigById(Long configId);
-
-    /**
-     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param configKey 鍙傛暟閿悕
-     * @return 鍙傛暟閿��
-     */
-    public String selectConfigByKey(String configKey);
-
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 鍙傛暟閰嶇疆闆嗗悎
-     */
-    public List<SysConfig> selectConfigList(SysConfig config);
-
-    /**
-     * 鏂板鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertConfig(SysConfig config);
-
-    /**
-     * 淇敼鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateConfig(SysConfig config);
-
-    /**
-     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
-     * 
-     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-     */
-    public void deleteConfigByIds(Long[] configIds);
-
-    /**
-     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁
-     */
-    public void loadingConfigCache();
-
-    /**
-     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁
-     */
-    public void clearConfigCache();
-
-    /**
-     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁
-     */
-    public void resetConfigCache();
-
-    /**
-     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
-     * 
-     * @param config 鍙傛暟淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkConfigKeyUnique(SysConfig config);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
deleted file mode 100644
index 76bb396..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysDept;
-import com.ruoyi.system.domain.vo.TreeSelect;
-
-/**
- * 閮ㄩ棬绠$悊 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysDeptService
-{
-    /**
-     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 閮ㄩ棬淇℃伅闆嗗悎
-     */
-    public List<SysDept> selectDeptList(SysDept dept);
-
-    /**
-     * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
-     */
-    public List<TreeSelect> selectDeptTreeList(SysDept dept);
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
-     * @param depts 閮ㄩ棬鍒楄〃
-     * @return 鏍戠粨鏋勫垪琛�
-     */
-    public List<SysDept> buildDeptTree(List<SysDept> depts);
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
-     * @param depts 閮ㄩ棬鍒楄〃
-     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
-     */
-    public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 閫変腑閮ㄩ棬鍒楄〃
-     */
-    public List<Long> selectDeptListByRoleId(Long roleId);
-
-    /**
-     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 閮ㄩ棬淇℃伅
-     */
-    public SysDept selectDeptById(Long deptId);
-
-    /**
-     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 瀛愰儴闂ㄦ暟
-     */
-    public int selectNormalChildrenDeptById(Long deptId);
-
-    /**
-     * 鏄惁瀛樺湪閮ㄩ棬瀛愯妭鐐�
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public boolean hasChildByDeptId(Long deptId);
-
-    /**
-     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
-     */
-    public boolean checkDeptExistUser(Long deptId);
-
-    /**
-     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkDeptNameUnique(SysDept dept);
-
-    /**
-     * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
-     * 
-     * @param deptId 閮ㄩ棬id
-     */
-    public void checkDeptDataScope(Long deptId);
-
-    /**
-     * 鏂板淇濆瓨閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDept(SysDept dept);
-
-    /**
-     * 淇敼淇濆瓨閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDept(SysDept dept);
-
-    /**
-     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    public int deleteDeptById(Long deptId);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
deleted file mode 100644
index 84df114..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysDictData;
-
-/**
- * 瀛楀吀 涓氬姟灞�
- * 
- * @author admin
- */
-public interface ISysDictDataService
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysDictData> selectDictDataList(SysDictData dictData);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @param dictValue 瀛楀吀閿��
-     * @return 瀛楀吀鏍囩
-     */
-    public String selectDictLabel(String dictType, String dictValue);
-
-    /**
-     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
-     * 
-     * @param dictCode 瀛楀吀鏁版嵁ID
-     * @return 瀛楀吀鏁版嵁
-     */
-    public SysDictData selectDictDataById(Long dictCode);
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
-     */
-    public void deleteDictDataByIds(Long[] dictCodes);
-
-    /**
-     * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDictData(SysDictData dictData);
-
-    /**
-     * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDictData(SysDictData dictData);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
deleted file mode 100644
index 78da119..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysDictData;
-import com.se.system.api.domain.SysDictType;
-
-/**
- * 瀛楀吀 涓氬姟灞�
- * 
- * @author admin
- */
-public interface ISysDictTypeService
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    public List<SysDictType> selectDictTypeList(SysDictType dictType);
-
-    /**
-     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
-     * 
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    public List<SysDictType> selectDictTypeAll();
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysDictData> selectDictDataByType(String dictType);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
-     * 
-     * @param dictId 瀛楀吀绫诲瀷ID
-     * @return 瀛楀吀绫诲瀷
-     */
-    public SysDictType selectDictTypeById(Long dictId);
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀绫诲瀷
-     */
-    public SysDictType selectDictTypeByType(String dictType);
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀淇℃伅
-     * 
-     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
-     */
-    public void deleteDictTypeByIds(Long[] dictIds);
-
-    /**
-     * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁
-     */
-    public void loadingDictCache();
-
-    /**
-     * 娓呯┖瀛楀吀缂撳瓨鏁版嵁
-     */
-    public void clearDictCache();
-
-    /**
-     * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁
-     */
-    public void resetDictCache();
-
-    /**
-     * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertDictType(SysDictType dictType);
-
-    /**
-     * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateDictType(SysDictType dictType);
-
-    /**
-     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 缁撴灉
-     */
-    public boolean checkDictTypeUnique(SysDictType dictType);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
deleted file mode 100644
index f46a38a..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysLogininfor;
-
-/**
- * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysLogininforService
-{
-    /**
-     * 鏂板绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     */
-    public int insertLogininfor(SysLogininfor logininfor);
-
-    /**
-     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     * @return 鐧诲綍璁板綍闆嗗悎
-     */
-    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteLogininforByIds(Long[] infoIds);
-
-    /**
-     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
-     */
-    public void cleanLogininfor();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
deleted file mode 100644
index da2b7fe..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import java.util.Set;
-import com.ruoyi.system.domain.SysMenu;
-import com.ruoyi.system.domain.vo.RouterVo;
-import com.ruoyi.system.domain.vo.TreeSelect;
-
-/**
- * 鑿滃崟 涓氬姟灞�
- * 
- * @author admin
- */
-public interface ISysMenuService
-{
-    /**
-     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuList(Long userId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @param userId 鐢ㄦ埛ID
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    public Set<String> selectMenuPermsByUserId(Long userId);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    public Set<String> selectMenuPermsByRoleId(Long roleId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鑿滃崟鍒楄〃
-     */
-    public List<SysMenu> selectMenuTreeByUserId(Long userId);
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 閫変腑鑿滃崟鍒楄〃
-     */
-    public List<Long> selectMenuListByRoleId(Long roleId);
-
-    /**
-     * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟
-     * 
-     * @param menus 鑿滃崟鍒楄〃
-     * @return 璺敱鍒楄〃
-     */
-    public List<RouterVo> buildMenus(List<SysMenu> menus);
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
-     * @param menus 鑿滃崟鍒楄〃
-     * @return 鏍戠粨鏋勫垪琛�
-     */
-    public List<SysMenu> buildMenuTree(List<SysMenu> menus);
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
-     * @param menus 鑿滃崟鍒楄〃
-     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
-     */
-    public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
-
-    /**
-     * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 鑿滃崟淇℃伅
-     */
-    public SysMenu selectMenuById(Long menuId);
-
-    /**
-     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
-     */
-    public boolean hasChildByMenuId(Long menuId);
-
-    /**
-     * 鏌ヨ鑿滃崟鏄惁瀛樺湪瑙掕壊
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
-     */
-    public boolean checkMenuExistRole(Long menuId);
-
-    /**
-     * 鏂板淇濆瓨鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertMenu(SysMenu menu);
-
-    /**
-     * 淇敼淇濆瓨鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateMenu(SysMenu menu);
-
-    /**
-     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    public int deleteMenuById(Long menuId);
-
-    /**
-     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkMenuNameUnique(SysMenu menu);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
deleted file mode 100644
index 88879ce..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysNotice;
-
-/**
- * 鍏憡 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysNoticeService
-{
-    /**
-     * 鏌ヨ鍏憡淇℃伅
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 鍏憡淇℃伅
-     */
-    public SysNotice selectNoticeById(Long noticeId);
-
-    /**
-     * 鏌ヨ鍏憡鍒楄〃
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 鍏憡闆嗗悎
-     */
-    public List<SysNotice> selectNoticeList(SysNotice notice);
-
-    /**
-     * 鏂板鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertNotice(SysNotice notice);
-
-    /**
-     * 淇敼鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateNotice(SysNotice notice);
-
-    /**
-     * 鍒犻櫎鍏憡淇℃伅
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 缁撴灉
-     */
-    public int deleteNoticeById(Long noticeId);
-    
-    /**
-     * 鎵归噺鍒犻櫎鍏憡淇℃伅
-     * 
-     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
-     * @return 缁撴灉
-     */
-    public int deleteNoticeByIds(Long[] noticeIds);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
deleted file mode 100644
index 35040e9..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysOperLog;
-
-/**
- * 鎿嶄綔鏃ュ織 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysOperLogService
-{
-    /**
-     * 鏂板鎿嶄綔鏃ュ織
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     * @return 缁撴灉
-     */
-    public int insertOperlog(SysOperLog operLog);
-
-    /**
-     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     * @return 鎿嶄綔鏃ュ織闆嗗悎
-     */
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
-     * 
-     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
-     * @return 缁撴灉
-     */
-    public int deleteOperLogByIds(Long[] operIds);
-
-    /**
-     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
-     * 
-     * @param operId 鎿嶄綔ID
-     * @return 鎿嶄綔鏃ュ織瀵硅薄
-     */
-    public SysOperLog selectOperLogById(Long operId);
-
-    /**
-     * 娓呯┖鎿嶄綔鏃ュ織
-     */
-    public void cleanOperLog();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java
deleted file mode 100644
index 9f38b49..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPermissionService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.Set;
-
-import com.se.system.api.domain.SysUser;
-
-/**
- * 鏉冮檺淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysPermissionService
-{
-    /**
-     * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛Id
-     * @return 瑙掕壊鏉冮檺淇℃伅
-     */
-    public Set<String> getRolePermission(SysUser user);
-
-    /**
-     * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛Id
-     * @return 鑿滃崟鏉冮檺淇℃伅
-     */
-    public Set<String> getMenuPermission(SysUser user);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
deleted file mode 100644
index 55a43c0..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.ruoyi.system.domain.SysPost;
-
-/**
- * 宀椾綅淇℃伅 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysPostService
-{
-    /**
-     * 鏌ヨ宀椾綅淇℃伅闆嗗悎
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 宀椾綅鍒楄〃
-     */
-    public List<SysPost> selectPostList(SysPost post);
-
-    /**
-     * 鏌ヨ鎵�鏈夊矖浣�
-     * 
-     * @return 宀椾綅鍒楄〃
-     */
-    public List<SysPost> selectPostAll();
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    public SysPost selectPostById(Long postId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑宀椾綅ID鍒楄〃
-     */
-    public List<Long> selectPostListByUserId(Long userId);
-
-    /**
-     * 鏍¢獙宀椾綅鍚嶇О
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkPostNameUnique(SysPost post);
-
-    /**
-     * 鏍¢獙宀椾綅缂栫爜
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkPostCodeUnique(SysPost post);
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int countUserPostById(Long postId);
-
-    /**
-     * 鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int deletePostById(Long postId);
-
-    /**
-     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
-     * @return 缁撴灉
-     */
-    public int deletePostByIds(Long[] postIds);
-
-    /**
-     * 鏂板淇濆瓨宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertPost(SysPost post);
-
-    /**
-     * 淇敼淇濆瓨宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    public int updatePost(SysPost post);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
deleted file mode 100644
index d03531a..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import java.util.Set;
-import com.se.system.api.domain.SysRole;
-import com.ruoyi.system.domain.SysUserRole;
-
-/**
- * 瑙掕壊涓氬姟灞�
- * 
- * @author admin
- */
-public interface ISysRoleService
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
-     */
-    public List<SysRole> selectRoleList(SysRole role);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 瑙掕壊鍒楄〃
-     */
-    public List<SysRole> selectRolesByUserId(Long userId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    public Set<String> selectRolePermissionByUserId(Long userId);
-
-    /**
-     * 鏌ヨ鎵�鏈夎鑹�
-     * 
-     * @return 瑙掕壊鍒楄〃
-     */
-    public List<SysRole> selectRoleAll();
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑瑙掕壊ID鍒楄〃
-     */
-    public List<Long> selectRoleListByUserId(Long userId);
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    public SysRole selectRoleById(Long roleId);
-
-    /**
-     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkRoleNameUnique(SysRole role);
-
-    /**
-     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkRoleKeyUnique(SysRole role);
-
-    /**
-     * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔
-     * 
-     * @param role 瑙掕壊淇℃伅
-     */
-    public void checkRoleAllowed(SysRole role);
-
-    /**
-     * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄�
-     * 
-     * @param roleIds 瑙掕壊id
-     */
-    public void checkRoleDataScope(Long... roleIds);
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int countUserRoleByRoleId(Long roleId);
-
-    /**
-     * 鏂板淇濆瓨瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertRole(SysRole role);
-
-    /**
-     * 淇敼淇濆瓨瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateRole(SysRole role);
-
-    /**
-     * 淇敼瑙掕壊鐘舵��
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateRoleStatus(SysRole role);
-
-    /**
-     * 淇敼鏁版嵁鏉冮檺淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    public int authDataScope(SysRole role);
-
-    /**
-     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleById(Long roleId);
-
-    /**
-     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
-     * 
-     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
-     * @return 缁撴灉
-     */
-    public int deleteRoleByIds(Long[] roleIds);
-
-    /**
-     * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
-     * @return 缁撴灉
-     */
-    public int deleteAuthUser(SysUserRole userRole);
-
-    /**
-     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int deleteAuthUsers(Long roleId, Long[] userIds);
-
-    /**
-     * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int insertAuthUsers(Long roleId, Long[] userIds);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java
deleted file mode 100644
index 469c717..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ruoyi.system.service;
-
-import com.se.system.api.model.LoginUser;
-import com.ruoyi.system.domain.SysUserOnline;
-
-/**
- * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞�
- * 
- * @author admin
- */
-public interface ISysUserOnlineService
-{
-    /**
-     * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
-     * 
-     * @param ipaddr 鐧诲綍鍦板潃
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);
-
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
-     * 
-     * @param userName 鐢ㄦ埛鍚嶇О
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);
-
-    /**
-     * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
-     * 
-     * @param ipaddr 鐧诲綍鍦板潃
-     * @param userName 鐢ㄦ埛鍚嶇О
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);
-
-    /**
-     * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛
-     */
-    public SysUserOnline loginUserToUserOnline(LoginUser user);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
deleted file mode 100644
index 9003977..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.se.system.api.domain.SysUser;
-
-/**
- * 鐢ㄦ埛 涓氬姟灞�
- * 
- * @author admin
- */
-public interface ISysUserService
-{
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectUserList(SysUser user);
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectAllocatedList(SysUser user);
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    public List<SysUser> selectUnallocatedList(SysUser user);
-
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    public SysUser selectUserByUserName(String userName);
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    public SysUser selectUserById(Long userId);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 缁撴灉
-     */
-    public String selectUserRoleGroup(String userName);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 缁撴灉
-     */
-    public String selectUserPostGroup(String userName);
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkUserNameUnique(SysUser user);
-
-    /**
-     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
-     *
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkPhoneUnique(SysUser user);
-
-    /**
-     * 鏍¢獙email鏄惁鍞竴
-     *
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean checkEmailUnique(SysUser user);
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     */
-    public void checkUserAllowed(SysUser user);
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄�
-     * 
-     * @param userId 鐢ㄦ埛id
-     */
-    public void checkUserDataScope(Long userId);
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int insertUser(SysUser user);
-
-    /**
-     * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean registerUser(SysUser user);
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateUser(SysUser user);
-
-    /**
-     * 鐢ㄦ埛鎺堟潈瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @param roleIds 瑙掕壊缁�
-     */
-    public void insertUserAuth(Long userId, Long[] roleIds);
-
-    /**
-     * 淇敼鐢ㄦ埛鐘舵��
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int updateUserStatus(SysUser user);
-
-    /**
-     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean updateUserProfile(SysUser user);
-
-    /**
-     * 淇敼鐢ㄦ埛澶村儚
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param avatar 澶村儚鍦板潃
-     * @return 缁撴灉
-     */
-    public boolean updateUserAvatar(String userName, String avatar);
-
-    /**
-     * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    public int resetPwd(SysUser user);
-
-    /**
-     * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param password 瀵嗙爜
-     * @return 缁撴灉
-     */
-    public int resetUserPwd(String userName, String password);
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserById(Long userId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
-     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public int deleteUserByIds(Long[] userIds);
-
-    /**
-     * 瀵煎叆鐢ㄦ埛鏁版嵁
-     * 
-     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
-     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @param operName 鎿嶄綔鐢ㄦ埛
-     * @return 缁撴灉
-     */
-    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
deleted file mode 100644
index cb7dbe2..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.Collection;
-import java.util.List;
-import javax.annotation.PostConstruct;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.core.constant.CacheConstants;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.text.Convert;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.redis.service.RedisService;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.mapper.SysConfigMapper;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜�
- * 
- * @author admin
- */
-@Service
-public class SysConfigServiceImpl implements ISysConfigService
-{
-    @Autowired
-    private SysConfigMapper configMapper;
-
-    @Autowired
-    private RedisService redisService;
-
-    /**
-     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨
-     */
-    @PostConstruct
-    public void init()
-    {
-        loadingConfigCache();
-    }
-
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param configId 鍙傛暟閰嶇疆ID
-     * @return 鍙傛暟閰嶇疆淇℃伅
-     */
-    @Override
-    public SysConfig selectConfigById(Long configId)
-    {
-        SysConfig config = new SysConfig();
-        config.setConfigId(configId);
-        return configMapper.selectConfig(config);
-    }
-
-    /**
-     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
-     * 
-     * @param configKey 鍙傛暟key
-     * @return 鍙傛暟閿��
-     */
-    @Override
-    public String selectConfigByKey(String configKey)
-    {
-        String configValue = Convert.toStr(redisService.getCacheObject(getCacheKey(configKey)));
-        if (StringUtils.isNotEmpty(configValue))
-        {
-            return configValue;
-        }
-        SysConfig config = new SysConfig();
-        config.setConfigKey(configKey);
-        SysConfig retConfig = configMapper.selectConfig(config);
-        if (StringUtils.isNotNull(retConfig))
-        {
-            redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
-            return retConfig.getConfigValue();
-        }
-        return StringUtils.EMPTY;
-    }
-
-    /**
-     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 鍙傛暟閰嶇疆闆嗗悎
-     */
-    @Override
-    public List<SysConfig> selectConfigList(SysConfig config)
-    {
-        return configMapper.selectConfigList(config);
-    }
-
-    /**
-     * 鏂板鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertConfig(SysConfig config)
-    {
-        int row = configMapper.insertConfig(config);
-        if (row > 0)
-        {
-            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
-        }
-        return row;
-    }
-
-    /**
-     * 淇敼鍙傛暟閰嶇疆
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateConfig(SysConfig config)
-    {
-        SysConfig temp = configMapper.selectConfigById(config.getConfigId());
-        if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey()))
-        {
-            redisService.deleteObject(getCacheKey(temp.getConfigKey()));
-        }
-
-        int row = configMapper.updateConfig(config);
-        if (row > 0)
-        {
-            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
-        }
-        return row;
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
-     * 
-     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-     */
-    @Override
-    public void deleteConfigByIds(Long[] configIds)
-    {
-        for (Long configId : configIds)
-        {
-            SysConfig config = selectConfigById(configId);
-            if (StringUtils.equals(UserConstants.YES, config.getConfigType()))
-            {
-                throw new ServiceException(String.format("鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� ", config.getConfigKey()));
-            }
-            configMapper.deleteConfigById(configId);
-            redisService.deleteObject(getCacheKey(config.getConfigKey()));
-        }
-    }
-
-    /**
-     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁
-     */
-    @Override
-    public void loadingConfigCache()
-    {
-        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
-        for (SysConfig config : configsList)
-        {
-            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
-        }
-    }
-
-    /**
-     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁
-     */
-    @Override
-    public void clearConfigCache()
-    {
-        Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*");
-        redisService.deleteObject(keys);
-    }
-
-    /**
-     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁
-     */
-    @Override
-    public void resetConfigCache()
-    {
-        clearConfigCache();
-        loadingConfigCache();
-    }
-
-    /**
-     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
-     * 
-     * @param config 鍙傛暟閰嶇疆淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkConfigKeyUnique(SysConfig config)
-    {
-        Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
-        SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());
-        if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 璁剧疆cache key
-     * 
-     * @param configKey 鍙傛暟閿�
-     * @return 缂撳瓨閿甼ey
-     */
-    private String getCacheKey(String configKey)
-    {
-        return CacheConstants.SYS_CONFIG_KEY + configKey;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
deleted file mode 100644
index fc39218..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ /dev/null
@@ -1,338 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.text.Convert;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.datascope.annotation.DataScope;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysDept;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.domain.vo.TreeSelect;
-import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.service.ISysDeptService;
-
-/**
- * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇
- * 
- * @author admin
- */
-@Service
-public class SysDeptServiceImpl implements ISysDeptService
-{
-    @Autowired
-    private SysDeptMapper deptMapper;
-
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    /**
-     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 閮ㄩ棬淇℃伅闆嗗悎
-     */
-    @Override
-    @DataScope(deptAlias = "d")
-    public List<SysDept> selectDeptList(SysDept dept)
-    {
-        return deptMapper.selectDeptList(dept);
-    }
-
-    /**
-     * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
-     */
-    @Override
-    public List<TreeSelect> selectDeptTreeList(SysDept dept)
-    {
-        List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
-        return buildDeptTreeSelect(depts);
-    }
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
-     * @param depts 閮ㄩ棬鍒楄〃
-     * @return 鏍戠粨鏋勫垪琛�
-     */
-    @Override
-    public List<SysDept> buildDeptTree(List<SysDept> depts)
-    {
-        List<SysDept> returnList = new ArrayList<SysDept>();
-        List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-        for (SysDept dept : depts)
-        {
-            // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
-            if (!tempList.contains(dept.getParentId()))
-            {
-                recursionFn(depts, dept);
-                returnList.add(dept);
-            }
-        }
-        if (returnList.isEmpty())
-        {
-            returnList = depts;
-        }
-        return returnList;
-    }
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
-     * @param depts 閮ㄩ棬鍒楄〃
-     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
-     */
-    @Override
-    public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts)
-    {
-        List<SysDept> deptTrees = buildDeptTree(depts);
-        return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
-    }
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 閫変腑閮ㄩ棬鍒楄〃
-     */
-    @Override
-    public List<Long> selectDeptListByRoleId(Long roleId)
-    {
-        SysRole role = roleMapper.selectRoleById(roleId);
-        return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly());
-    }
-
-    /**
-     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 閮ㄩ棬淇℃伅
-     */
-    @Override
-    public SysDept selectDeptById(Long deptId)
-    {
-        return deptMapper.selectDeptById(deptId);
-    }
-
-    /**
-     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 瀛愰儴闂ㄦ暟
-     */
-    @Override
-    public int selectNormalChildrenDeptById(Long deptId)
-    {
-        return deptMapper.selectNormalChildrenDeptById(deptId);
-    }
-
-    /**
-     * 鏄惁瀛樺湪瀛愯妭鐐�
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean hasChildByDeptId(Long deptId)
-    {
-        int result = deptMapper.hasChildByDeptId(deptId);
-        return result > 0;
-    }
-
-    /**
-     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
-     */
-    @Override
-    public boolean checkDeptExistUser(Long deptId)
-    {
-        int result = deptMapper.checkDeptExistUser(deptId);
-        return result > 0;
-    }
-
-    /**
-     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkDeptNameUnique(SysDept dept)
-    {
-        Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
-        SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
-        if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
-     * 
-     * @param deptId 閮ㄩ棬id
-     */
-    @Override
-    public void checkDeptDataScope(Long deptId)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId))
-        {
-            SysDept dept = new SysDept();
-            dept.setDeptId(deptId);
-            List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
-            if (StringUtils.isEmpty(depts))
-            {
-                throw new ServiceException("娌℃湁鏉冮檺璁块棶閮ㄩ棬鏁版嵁锛�");
-            }
-        }
-    }
-
-    /**
-     * 鏂板淇濆瓨閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertDept(SysDept dept)
-    {
-        SysDept info = deptMapper.selectDeptById(dept.getParentId());
-        // 濡傛灉鐖惰妭鐐逛笉涓烘甯哥姸鎬�,鍒欎笉鍏佽鏂板瀛愯妭鐐�
-        if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
-        {
-            throw new ServiceException("閮ㄩ棬鍋滅敤锛屼笉鍏佽鏂板");
-        }
-        dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
-        return deptMapper.insertDept(dept);
-    }
-
-    /**
-     * 淇敼淇濆瓨閮ㄩ棬淇℃伅
-     * 
-     * @param dept 閮ㄩ棬淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateDept(SysDept dept)
-    {
-        SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId());
-        SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId());
-        if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept))
-        {
-            String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
-            String oldAncestors = oldDept.getAncestors();
-            dept.setAncestors(newAncestors);
-            updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
-        }
-        int result = deptMapper.updateDept(dept);
-        if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
-                && !StringUtils.equals("0", dept.getAncestors()))
-        {
-            // 濡傛灉璇ラ儴闂ㄦ槸鍚敤鐘舵�侊紝鍒欏惎鐢ㄨ閮ㄩ棬鐨勬墍鏈変笂绾ч儴闂�
-            updateParentDeptStatusNormal(dept);
-        }
-        return result;
-    }
-
-    /**
-     * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵��
-     * 
-     * @param dept 褰撳墠閮ㄩ棬
-     */
-    private void updateParentDeptStatusNormal(SysDept dept)
-    {
-        String ancestors = dept.getAncestors();
-        Long[] deptIds = Convert.toLongArray(ancestors);
-        deptMapper.updateDeptStatusNormal(deptIds);
-    }
-
-    /**
-     * 淇敼瀛愬厓绱犲叧绯�
-     * 
-     * @param deptId 琚慨鏀圭殑閮ㄩ棬ID
-     * @param newAncestors 鏂扮殑鐖禝D闆嗗悎
-     * @param oldAncestors 鏃х殑鐖禝D闆嗗悎
-     */
-    public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors)
-    {
-        List<SysDept> children = deptMapper.selectChildrenDeptById(deptId);
-        for (SysDept child : children)
-        {
-            child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
-        }
-        if (children.size() > 0)
-        {
-            deptMapper.updateDeptChildren(children);
-        }
-    }
-
-    /**
-     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
-     * @param deptId 閮ㄩ棬ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteDeptById(Long deptId)
-    {
-        return deptMapper.deleteDeptById(deptId);
-    }
-
-    /**
-     * 閫掑綊鍒楄〃
-     */
-    private void recursionFn(List<SysDept> list, SysDept t)
-    {
-        // 寰楀埌瀛愯妭鐐瑰垪琛�
-        List<SysDept> childList = getChildList(list, t);
-        t.setChildren(childList);
-        for (SysDept tChild : childList)
-        {
-            if (hasChild(list, tChild))
-            {
-                recursionFn(list, tChild);
-            }
-        }
-    }
-
-    /**
-     * 寰楀埌瀛愯妭鐐瑰垪琛�
-     */
-    private List<SysDept> getChildList(List<SysDept> list, SysDept t)
-    {
-        List<SysDept> tlist = new ArrayList<SysDept>();
-        Iterator<SysDept> it = list.iterator();
-        while (it.hasNext())
-        {
-            SysDept n = (SysDept) it.next();
-            if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue())
-            {
-                tlist.add(n);
-            }
-        }
-        return tlist;
-    }
-
-    /**
-     * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
-     */
-    private boolean hasChild(List<SysDept> list, SysDept t)
-    {
-        return getChildList(list, t).size() > 0 ? true : false;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
deleted file mode 100644
index 1f8ef78..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.security.utils.DictUtils;
-import com.se.system.api.domain.SysDictData;
-import com.ruoyi.system.mapper.SysDictDataMapper;
-import com.ruoyi.system.service.ISysDictDataService;
-
-/**
- * 瀛楀吀 涓氬姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysDictDataServiceImpl implements ISysDictDataService
-{
-    @Autowired
-    private SysDictDataMapper dictDataMapper;
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictData> selectDictDataList(SysDictData dictData)
-    {
-        return dictDataMapper.selectDictDataList(dictData);
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @param dictValue 瀛楀吀閿��
-     * @return 瀛楀吀鏍囩
-     */
-    @Override
-    public String selectDictLabel(String dictType, String dictValue)
-    {
-        return dictDataMapper.selectDictLabel(dictType, dictValue);
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
-     * 
-     * @param dictCode 瀛楀吀鏁版嵁ID
-     * @return 瀛楀吀鏁版嵁
-     */
-    @Override
-    public SysDictData selectDictDataById(Long dictCode)
-    {
-        return dictDataMapper.selectDictDataById(dictCode);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
-     */
-    @Override
-    public void deleteDictDataByIds(Long[] dictCodes)
-    {
-        for (Long dictCode : dictCodes)
-        {
-            SysDictData data = selectDictDataById(dictCode);
-            dictDataMapper.deleteDictDataById(dictCode);
-            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
-            DictUtils.setDictCache(data.getDictType(), dictDatas);
-        }
-    }
-
-    /**
-     * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param data 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertDictData(SysDictData data)
-    {
-        int row = dictDataMapper.insertDictData(data);
-        if (row > 0)
-        {
-            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
-            DictUtils.setDictCache(data.getDictType(), dictDatas);
-        }
-        return row;
-    }
-
-    /**
-     * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     * 
-     * @param data 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateDictData(SysDictData data)
-    {
-        int row = dictDataMapper.updateDictData(data);
-        if (row > 0)
-        {
-            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
-            DictUtils.setDictCache(data.getDictType(), dictDatas);
-        }
-        return row;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
deleted file mode 100644
index a90504a..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ /dev/null
@@ -1,223 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.security.utils.DictUtils;
-import com.se.system.api.domain.SysDictData;
-import com.se.system.api.domain.SysDictType;
-import com.ruoyi.system.mapper.SysDictDataMapper;
-import com.ruoyi.system.mapper.SysDictTypeMapper;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 瀛楀吀 涓氬姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysDictTypeServiceImpl implements ISysDictTypeService
-{
-    @Autowired
-    private SysDictTypeMapper dictTypeMapper;
-
-    @Autowired
-    private SysDictDataMapper dictDataMapper;
-
-    /**
-     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨
-     */
-    @PostConstruct
-    public void init()
-    {
-        loadingDictCache();
-    }
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
-     * 
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictType> selectDictTypeList(SysDictType dictType)
-    {
-        return dictTypeMapper.selectDictTypeList(dictType);
-    }
-
-    /**
-     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
-     * 
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictType> selectDictTypeAll()
-    {
-        return dictTypeMapper.selectDictTypeAll();
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictData> selectDictDataByType(String dictType)
-    {
-        List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
-        if (StringUtils.isNotEmpty(dictDatas))
-        {
-            return dictDatas;
-        }
-        dictDatas = dictDataMapper.selectDictDataByType(dictType);
-        if (StringUtils.isNotEmpty(dictDatas))
-        {
-            DictUtils.setDictCache(dictType, dictDatas);
-            return dictDatas;
-        }
-        return null;
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
-     * 
-     * @param dictId 瀛楀吀绫诲瀷ID
-     * @return 瀛楀吀绫诲瀷
-     */
-    @Override
-    public SysDictType selectDictTypeById(Long dictId)
-    {
-        return dictTypeMapper.selectDictTypeById(dictId);
-    }
-
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
-     * 
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀绫诲瀷
-     */
-    @Override
-    public SysDictType selectDictTypeByType(String dictType)
-    {
-        return dictTypeMapper.selectDictTypeByType(dictType);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
-     */
-    @Override
-    public void deleteDictTypeByIds(Long[] dictIds)
-    {
-        for (Long dictId : dictIds)
-        {
-            SysDictType dictType = selectDictTypeById(dictId);
-            if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0)
-            {
-                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", dictType.getDictName()));
-            }
-            dictTypeMapper.deleteDictTypeById(dictId);
-            DictUtils.removeDictCache(dictType.getDictType());
-        }
-    }
-
-    /**
-     * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁
-     */
-    @Override
-    public void loadingDictCache()
-    {
-        SysDictData dictData = new SysDictData();
-        dictData.setStatus("0");
-        Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType));
-        for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet())
-        {
-            DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList()));
-        }
-    }
-
-    /**
-     * 娓呯┖瀛楀吀缂撳瓨鏁版嵁
-     */
-    @Override
-    public void clearDictCache()
-    {
-        DictUtils.clearDictCache();
-    }
-
-    /**
-     * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁
-     */
-    @Override
-    public void resetDictCache()
-    {
-        clearDictCache();
-        loadingDictCache();
-    }
-
-    /**
-     * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dict 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertDictType(SysDictType dict)
-    {
-        int row = dictTypeMapper.insertDictType(dict);
-        if (row > 0)
-        {
-            DictUtils.setDictCache(dict.getDictType(), null);
-        }
-        return row;
-    }
-
-    /**
-     * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     * 
-     * @param dict 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateDictType(SysDictType dict)
-    {
-        SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
-        dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType());
-        int row = dictTypeMapper.updateDictType(dict);
-        if (row > 0)
-        {
-            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
-            DictUtils.setDictCache(dict.getDictType(), dictDatas);
-        }
-        return row;
-    }
-
-    /**
-     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
-     * 
-     * @param dict 瀛楀吀绫诲瀷
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkDictTypeUnique(SysDictType dict)
-    {
-        Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
-        SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType());
-        if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
deleted file mode 100644
index c1557de..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.system.api.domain.SysLogininfor;
-import com.ruoyi.system.mapper.SysLogininforMapper;
-import com.ruoyi.system.service.ISysLogininforService;
-
-/**
- * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysLogininforServiceImpl implements ISysLogininforService
-{
-
-    @Autowired
-    private SysLogininforMapper logininforMapper;
-
-    /**
-     * 鏂板绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     */
-    @Override
-    public int insertLogininfor(SysLogininfor logininfor)
-    {
-        return logininforMapper.insertLogininfor(logininfor);
-    }
-
-    /**
-     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
-     * 
-     * @param logininfor 璁块棶鏃ュ織瀵硅薄
-     * @return 鐧诲綍璁板綍闆嗗悎
-     */
-    @Override
-    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor)
-    {
-        return logininforMapper.selectLogininforList(logininfor);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
-     * 
-     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteLogininforByIds(Long[] infoIds)
-    {
-        return logininforMapper.deleteLogininforByIds(infoIds);
-    }
-
-    /**
-     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
-     */
-    @Override
-    public void cleanLogininfor()
-    {
-        logininforMapper.cleanLogininfor();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
deleted file mode 100644
index 9241a7f..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ /dev/null
@@ -1,543 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.core.constant.Constants;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.domain.SysMenu;
-import com.ruoyi.system.domain.vo.MetaVo;
-import com.ruoyi.system.domain.vo.RouterVo;
-import com.ruoyi.system.domain.vo.TreeSelect;
-import com.ruoyi.system.mapper.SysMenuMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysRoleMenuMapper;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 鑿滃崟 涓氬姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysMenuServiceImpl implements ISysMenuService
-{
-    public static final String PREMISSION_STRING = "perms[\"{0}\"]";
-
-    @Autowired
-    private SysMenuMapper menuMapper;
-
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysRoleMenuMapper roleMenuMapper;
-
-    /**
-     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鑿滃崟鍒楄〃
-     */
-    @Override
-    public List<SysMenu> selectMenuList(Long userId)
-    {
-        return selectMenuList(new SysMenu(), userId);
-    }
-
-    /**
-     * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 鑿滃崟鍒楄〃
-     */
-    @Override
-    public List<SysMenu> selectMenuList(SysMenu menu, Long userId)
-    {
-        List<SysMenu> menuList = null;
-        // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭�
-        if (SysUser.isAdmin(userId))
-        {
-            menuList = menuMapper.selectMenuList(menu);
-        }
-        else
-        {
-            menu.getParams().put("userId", userId);
-            menuList = menuMapper.selectMenuListByUserId(menu);
-        }
-        return menuList;
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    @Override
-    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))
-            {
-                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
-            }
-        }
-        return permsSet;
-    }
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    @Override
-    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))
-            {
-                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
-            }
-        }
-        return permsSet;
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
-     * 
-     * @param userId 鐢ㄦ埛鍚嶇О
-     * @return 鑿滃崟鍒楄〃
-     */
-    @Override
-    public List<SysMenu> selectMenuTreeByUserId(Long userId)
-    {
-        List<SysMenu> menus = null;
-        if (SecurityUtils.isAdmin(userId))
-        {
-            menus = menuMapper.selectMenuTreeAll();
-        }
-        else
-        {
-            menus = menuMapper.selectMenuTreeByUserId(userId);
-        }
-        return getChildPerms(menus, 0);
-    }
-
-    /**
-     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 閫変腑鑿滃崟鍒楄〃
-     */
-    @Override
-    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)
-    {
-        List<RouterVo> routers = new LinkedList<RouterVo>();
-        for (SysMenu menu : menus)
-        {
-            RouterVo router = new RouterVo();
-            router.setHidden("1".equals(menu.getVisible()));
-            router.setName(getRouteName(menu));
-            router.setPath(getRouterPath(menu));
-            router.setComponent(getComponent(menu));
-            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()))
-            {
-                router.setAlwaysShow(true);
-                router.setRedirect("noRedirect");
-                router.setChildren(buildMenus(cMenus));
-            }
-            else if (isMenuFrame(menu))
-            {
-                router.setMeta(null);
-                List<RouterVo> childrenList = new ArrayList<RouterVo>();
-                RouterVo children = new RouterVo();
-                children.setPath(menu.getPath());
-                children.setComponent(menu.getComponent());
-                children.setName(getRouteName(menu.getRouteName(), menu.getPath()));
-                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
-                children.setQuery(menu.getQuery());
-                childrenList.add(children);
-                router.setChildren(childrenList);
-            }
-            else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
-            {
-                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
-                router.setPath("/");
-                List<RouterVo> childrenList = new ArrayList<RouterVo>();
-                RouterVo children = new RouterVo();
-                String routerPath = innerLinkReplaceEach(menu.getPath());
-                children.setPath(routerPath);
-                children.setComponent(UserConstants.INNER_LINK);
-                children.setName(getRouteName(menu.getRouteName(), routerPath));
-                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
-                childrenList.add(children);
-                router.setChildren(childrenList);
-            }
-            routers.add(router);
-        }
-        return routers;
-    }
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
-     * @param menus 鑿滃崟鍒楄〃
-     * @return 鏍戠粨鏋勫垪琛�
-     */
-    @Override
-    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();)
-        {
-            SysMenu menu = (SysMenu) iterator.next();
-            // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
-            if (!tempList.contains(menu.getParentId()))
-            {
-                recursionFn(menus, menu);
-                returnList.add(menu);
-            }
-        }
-        if (returnList.isEmpty())
-        {
-            returnList = menus;
-        }
-        return returnList;
-    }
-
-    /**
-     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
-     * @param menus 鑿滃崟鍒楄〃
-     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
-     */
-    @Override
-    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)
-    {
-        return menuMapper.selectMenuById(menuId);
-    }
-
-    /**
-     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean hasChildByMenuId(Long menuId)
-    {
-        int result = menuMapper.hasChildByMenuId(menuId);
-        return result > 0;
-    }
-
-    /**
-     * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkMenuExistRole(Long menuId)
-    {
-        int result = roleMenuMapper.checkMenuExistRole(menuId);
-        return result > 0;
-    }
-
-    /**
-     * 鏂板淇濆瓨鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertMenu(SysMenu menu)
-    {
-        return menuMapper.insertMenu(menu);
-    }
-
-    /**
-     * 淇敼淇濆瓨鑿滃崟淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateMenu(SysMenu menu)
-    {
-        return menuMapper.updateMenu(menu);
-    }
-
-    /**
-     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
-     * 
-     * @param menuId 鑿滃崟ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteMenuById(Long menuId)
-    {
-        return menuMapper.deleteMenuById(menuId);
-    }
-
-    /**
-     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    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())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鑾峰彇璺敱鍚嶇О
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 璺敱鍚嶇О
-     */
-    public String getRouteName(SysMenu menu)
-    {
-        // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
-        if (isMenuFrame(menu))
-        {
-            return StringUtils.EMPTY;
-        }
-        return getRouteName(menu.getRouteName(), menu.getPath());
-    }
-
-    /**
-     * 鑾峰彇璺敱鍚嶇О锛屽娌℃湁閰嶇疆璺敱鍚嶇О鍒欏彇璺敱鍦板潃
-     * 
-     * @param routerName 璺敱鍚嶇О
-     * @param path 璺敱鍦板潃
-     * @return 璺敱鍚嶇О锛堥┘宄版牸寮忥級
-     */
-    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)
-    {
-        String routerPath = menu.getPath();
-        // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡
-        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()))
-        {
-            routerPath = "/" + menu.getPath();
-        }
-        // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級
-        else if (isMenuFrame(menu))
-        {
-            routerPath = "/";
-        }
-        return routerPath;
-    }
-
-    /**
-     * 鑾峰彇缁勪欢淇℃伅
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁勪欢淇℃伅
-     */
-    public String getComponent(SysMenu menu)
-    {
-        String component = UserConstants.LAYOUT;
-        if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu))
-        {
-            component = menu.getComponent();
-        }
-        else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu))
-        {
-            component = UserConstants.INNER_LINK;
-        }
-        else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu))
-        {
-            component = UserConstants.PARENT_VIEW;
-        }
-        return component;
-    }
-
-    /**
-     * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞�
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    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)
-    {
-        return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
-    }
-
-    /**
-     * 鏄惁涓簆arent_view缁勪欢
-     * 
-     * @param menu 鑿滃崟淇℃伅
-     * @return 缁撴灉
-     */
-    public boolean isParentView(SysMenu menu)
-    {
-        return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
-    }
-
-    /**
-     * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣
-     * 
-     * @param list 鍒嗙被琛�
-     * @param parentId 浼犲叆鐨勭埗鑺傜偣ID
-     * @return String
-     */
-    public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId)
-    {
-        List<SysMenu> returnList = new ArrayList<SysMenu>();
-        for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();)
-        {
-            SysMenu t = (SysMenu) iterator.next();
-            // 涓�銆佹牴鎹紶鍏ョ殑鏌愪釜鐖惰妭鐐笽D,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
-            if (t.getParentId() == parentId)
-            {
-                recursionFn(list, t);
-                returnList.add(t);
-            }
-        }
-        return returnList;
-    }
-
-    /**
-     * 閫掑綊鍒楄〃
-     * 
-     * @param list 鍒嗙被琛�
-     * @param 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))
-            {
-                recursionFn(list, tChild);
-            }
-        }
-    }
-
-    /**
-     * 寰楀埌瀛愯妭鐐瑰垪琛�
-     */
-    private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t)
-    {
-        List<SysMenu> tlist = new ArrayList<SysMenu>();
-        Iterator<SysMenu> it = list.iterator();
-        while (it.hasNext())
-        {
-            SysMenu n = (SysMenu) it.next();
-            if (n.getParentId().longValue() == t.getMenuId().longValue())
-            {
-                tlist.add(n);
-            }
-        }
-        return tlist;
-    }
-
-    /**
-     * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
-     */
-    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[] { "", "", "", "/", "/" });
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
deleted file mode 100644
index e2ee68f..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.mapper.SysNoticeMapper;
-import com.ruoyi.system.service.ISysNoticeService;
-
-/**
- * 鍏憡 鏈嶅姟灞傚疄鐜�
- * 
- * @author admin
- */
-@Service
-public class SysNoticeServiceImpl implements ISysNoticeService
-{
-    @Autowired
-    private SysNoticeMapper noticeMapper;
-
-    /**
-     * 鏌ヨ鍏憡淇℃伅
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 鍏憡淇℃伅
-     */
-    @Override
-    public SysNotice selectNoticeById(Long noticeId)
-    {
-        return noticeMapper.selectNoticeById(noticeId);
-    }
-
-    /**
-     * 鏌ヨ鍏憡鍒楄〃
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 鍏憡闆嗗悎
-     */
-    @Override
-    public List<SysNotice> selectNoticeList(SysNotice notice)
-    {
-        return noticeMapper.selectNoticeList(notice);
-    }
-
-    /**
-     * 鏂板鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertNotice(SysNotice notice)
-    {
-        return noticeMapper.insertNotice(notice);
-    }
-
-    /**
-     * 淇敼鍏憡
-     * 
-     * @param notice 鍏憡淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateNotice(SysNotice notice)
-    {
-        return noticeMapper.updateNotice(notice);
-    }
-
-    /**
-     * 鍒犻櫎鍏憡瀵硅薄
-     * 
-     * @param noticeId 鍏憡ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteNoticeById(Long noticeId)
-    {
-        return noticeMapper.deleteNoticeById(noticeId);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎鍏憡淇℃伅
-     * 
-     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteNoticeByIds(Long[] noticeIds)
-    {
-        return noticeMapper.deleteNoticeByIds(noticeIds);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
deleted file mode 100644
index 8cb1d92..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.system.api.domain.SysOperLog;
-import com.ruoyi.system.mapper.SysOperLogMapper;
-import com.ruoyi.system.service.ISysOperLogService;
-
-/**
- * 鎿嶄綔鏃ュ織 鏈嶅姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysOperLogServiceImpl implements ISysOperLogService
-{
-    @Autowired
-    private SysOperLogMapper operLogMapper;
-
-    /**
-     * 鏂板鎿嶄綔鏃ュ織
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertOperlog(SysOperLog operLog)
-    {
-        return operLogMapper.insertOperlog(operLog);
-    }
-
-    /**
-     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
-     * 
-     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
-     * @return 鎿嶄綔鏃ュ織闆嗗悎
-     */
-    @Override
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog)
-    {
-        return operLogMapper.selectOperLogList(operLog);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
-     * 
-     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteOperLogByIds(Long[] operIds)
-    {
-        return operLogMapper.deleteOperLogByIds(operIds);
-    }
-
-    /**
-     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
-     * 
-     * @param operId 鎿嶄綔ID
-     * @return 鎿嶄綔鏃ュ織瀵硅薄
-     */
-    @Override
-    public SysOperLog selectOperLogById(Long operId)
-    {
-        return operLogMapper.selectOperLogById(operId);
-    }
-
-    /**
-     * 娓呯┖鎿嶄綔鏃ュ織
-     */
-    @Override
-    public void cleanOperLog()
-    {
-        operLogMapper.cleanOperLog();
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
deleted file mode 100644
index 32240b6..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.service.ISysMenuService;
-import com.ruoyi.system.service.ISysPermissionService;
-import com.ruoyi.system.service.ISysRoleService;
-
-/**
- * 鐢ㄦ埛鏉冮檺澶勭悊
- * 
- * @author admin
- */
-@Service
-public class SysPermissionServiceImpl implements ISysPermissionService
-{
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysMenuService menuService;
-
-    /**
-     * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛Id
-     * @return 瑙掕壊鏉冮檺淇℃伅
-     */
-    @Override
-    public Set<String> getRolePermission(SysUser user)
-    {
-        Set<String> roles = new HashSet<String>();
-        // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄�
-        if (user.isAdmin())
-        {
-            roles.add("admin");
-        }
-        else
-        {
-            roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
-        }
-        return roles;
-    }
-
-    /**
-     * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛Id
-     * @return 鑿滃崟鏉冮檺淇℃伅
-     */
-    @Override
-    public Set<String> getMenuPermission(SysUser user)
-    {
-        Set<String> perms = new HashSet<String>();
-        // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄�
-        if (user.isAdmin())
-        {
-            perms.add("*:*:*");
-        }
-        else
-        {
-            List<SysRole> roles = user.getRoles();
-            if (!CollectionUtils.isEmpty(roles))
-            {
-                // 澶氳鑹茶缃畃ermissions灞炴�э紝浠ヤ究鏁版嵁鏉冮檺鍖归厤鏉冮檺
-                for (SysRole role : roles)
-                {
-                    Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
-                    role.setPermissions(rolePerms);
-                    perms.addAll(rolePerms);
-                }
-            }
-            else
-            {
-                perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
-            }
-        }
-        return perms;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
deleted file mode 100644
index 703f76d..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.utils.StringUtils;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.service.ISysPostService;
-
-/**
- * 宀椾綅淇℃伅 鏈嶅姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysPostServiceImpl implements ISysPostService
-{
-    @Autowired
-    private SysPostMapper postMapper;
-
-    @Autowired
-    private SysUserPostMapper userPostMapper;
-
-    /**
-     * 鏌ヨ宀椾綅淇℃伅闆嗗悎
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 宀椾綅淇℃伅闆嗗悎
-     */
-    @Override
-    public List<SysPost> selectPostList(SysPost post)
-    {
-        return postMapper.selectPostList(post);
-    }
-
-    /**
-     * 鏌ヨ鎵�鏈夊矖浣�
-     * 
-     * @return 宀椾綅鍒楄〃
-     */
-    @Override
-    public List<SysPost> selectPostAll()
-    {
-        return postMapper.selectPostAll();
-    }
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    @Override
-    public SysPost selectPostById(Long postId)
-    {
-        return postMapper.selectPostById(postId);
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑宀椾綅ID鍒楄〃
-     */
-    @Override
-    public List<Long> selectPostListByUserId(Long userId)
-    {
-        return postMapper.selectPostListByUserId(userId);
-    }
-
-    /**
-     * 鏍¢獙宀椾綅鍚嶇О鏄惁鍞竴
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkPostNameUnique(SysPost post)
-    {
-        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
-        SysPost info = postMapper.checkPostNameUnique(post.getPostName());
-        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙宀椾綅缂栫爜鏄惁鍞竴
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkPostCodeUnique(SysPost post)
-    {
-        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
-        SysPost info = postMapper.checkPostCodeUnique(post.getPostCode());
-        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int countUserPostById(Long postId)
-    {
-        return userPostMapper.countUserPostById(postId);
-    }
-
-    /**
-     * 鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postId 宀椾綅ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deletePostById(Long postId)
-    {
-        return postMapper.deletePostById(postId);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
-     * 
-     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deletePostByIds(Long[] postIds)
-    {
-        for (Long postId : postIds)
-        {
-            SysPost post = selectPostById(postId);
-            if (countUserPostById(postId) > 0)
-            {
-                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", post.getPostName()));
-            }
-        }
-        return postMapper.deletePostByIds(postIds);
-    }
-
-    /**
-     * 鏂板淇濆瓨宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertPost(SysPost post)
-    {
-        return postMapper.insertPost(post);
-    }
-
-    /**
-     * 淇敼淇濆瓨宀椾綅淇℃伅
-     * 
-     * @param post 宀椾綅淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updatePost(SysPost post)
-    {
-        return postMapper.updatePost(post);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
deleted file mode 100644
index ebcb81c..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ /dev/null
@@ -1,427 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.datascope.annotation.DataScope;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.domain.SysRoleDept;
-import com.ruoyi.system.domain.SysRoleMenu;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysRoleDeptMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysRoleMenuMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
-import com.ruoyi.system.service.ISysRoleService;
-
-/**
- * 瑙掕壊 涓氬姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysRoleServiceImpl implements ISysRoleService
-{
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysRoleMenuMapper roleMenuMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysRoleDeptMapper roleDeptMapper;
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
-     */
-    @Override
-    @DataScope(deptAlias = "d")
-    public List<SysRole> selectRoleList(SysRole role)
-    {
-        return roleMapper.selectRoleList(role);
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 瑙掕壊鍒楄〃
-     */
-    @Override
-    public List<SysRole> selectRolesByUserId(Long userId)
-    {
-        List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
-        List<SysRole> roles = selectRoleAll();
-        for (SysRole role : roles)
-        {
-            for (SysRole userRole : userRoles)
-            {
-                if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
-                {
-                    role.setFlag(true);
-                    break;
-                }
-            }
-        }
-        return roles;
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鏉冮檺鍒楄〃
-     */
-    @Override
-    public Set<String> selectRolePermissionByUserId(Long userId)
-    {
-        List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
-        Set<String> permsSet = new HashSet<>();
-        for (SysRole perm : perms)
-        {
-            if (StringUtils.isNotNull(perm))
-            {
-                permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
-            }
-        }
-        return permsSet;
-    }
-
-    /**
-     * 鏌ヨ鎵�鏈夎鑹�
-     * 
-     * @return 瑙掕壊鍒楄〃
-     */
-    @Override
-    public List<SysRole> selectRoleAll()
-    {
-        return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
-    }
-
-    /**
-     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 閫変腑瑙掕壊ID鍒楄〃
-     */
-    @Override
-    public List<Long> selectRoleListByUserId(Long userId)
-    {
-        return roleMapper.selectRoleListByUserId(userId);
-    }
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 瑙掕壊瀵硅薄淇℃伅
-     */
-    @Override
-    public SysRole selectRoleById(Long roleId)
-    {
-        return roleMapper.selectRoleById(roleId);
-    }
-
-    /**
-     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkRoleNameUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean checkRoleKeyUnique(SysRole role)
-    {
-        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
-        SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
-        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔
-     * 
-     * @param role 瑙掕壊淇℃伅
-     */
-    @Override
-    public void checkRoleAllowed(SysRole role)
-    {
-        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
-        {
-            throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊");
-        }
-    }
-
-    /**
-     * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄�
-     * 
-     * @param roleIds 瑙掕壊id
-     */
-    @Override
-    public void checkRoleDataScope(Long... roleIds)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
-        {
-            for (Long roleId : roleIds)
-            {
-                SysRole role = new SysRole();
-                role.setRoleId(roleId);
-                List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
-                if (StringUtils.isEmpty(roles))
-                {
-                    throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鏁版嵁锛�");
-                }
-            }
-        }
-    }
-
-    /**
-     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int countUserRoleByRoleId(Long roleId)
-    {
-        return userRoleMapper.countUserRoleByRoleId(roleId);
-    }
-
-    /**
-     * 鏂板淇濆瓨瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int insertRole(SysRole role)
-    {
-        // 鏂板瑙掕壊淇℃伅
-        roleMapper.insertRole(role);
-        return insertRoleMenu(role);
-    }
-
-    /**
-     * 淇敼淇濆瓨瑙掕壊淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateRole(SysRole role)
-    {
-        // 淇敼瑙掕壊淇℃伅
-        roleMapper.updateRole(role);
-        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
-        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
-        return insertRoleMenu(role);
-    }
-
-    /**
-     * 淇敼瑙掕壊鐘舵��
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateRoleStatus(SysRole role)
-    {
-        return roleMapper.updateRole(role);
-    }
-
-    /**
-     * 淇敼鏁版嵁鏉冮檺淇℃伅
-     * 
-     * @param role 瑙掕壊淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int authDataScope(SysRole role)
-    {
-        // 淇敼瑙掕壊淇℃伅
-        roleMapper.updateRole(role);
-        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
-        roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
-        // 鏂板瑙掕壊鍜岄儴闂ㄤ俊鎭紙鏁版嵁鏉冮檺锛�
-        return insertRoleDept(role);
-    }
-
-    /**
-     * 鏂板瑙掕壊鑿滃崟淇℃伅
-     * 
-     * @param role 瑙掕壊瀵硅薄
-     */
-    public int insertRoleMenu(SysRole role)
-    {
-        int rows = 1;
-        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
-        List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
-        for (Long menuId : role.getMenuIds())
-        {
-            SysRoleMenu rm = new SysRoleMenu();
-            rm.setRoleId(role.getRoleId());
-            rm.setMenuId(menuId);
-            list.add(rm);
-        }
-        if (list.size() > 0)
-        {
-            rows = roleMenuMapper.batchRoleMenu(list);
-        }
-        return rows;
-    }
-
-    /**
-     * 鏂板瑙掕壊閮ㄩ棬淇℃伅(鏁版嵁鏉冮檺)
-     *
-     * @param role 瑙掕壊瀵硅薄
-     */
-    public int insertRoleDept(SysRole role)
-    {
-        int rows = 1;
-        // 鏂板瑙掕壊涓庨儴闂紙鏁版嵁鏉冮檺锛夌鐞�
-        List<SysRoleDept> list = new ArrayList<SysRoleDept>();
-        for (Long deptId : role.getDeptIds())
-        {
-            SysRoleDept rd = new SysRoleDept();
-            rd.setRoleId(role.getRoleId());
-            rd.setDeptId(deptId);
-            list.add(rd);
-        }
-        if (list.size() > 0)
-        {
-            rows = roleDeptMapper.batchRoleDept(list);
-        }
-        return rows;
-    }
-
-    /**
-     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteRoleById(Long roleId)
-    {
-        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
-        roleMenuMapper.deleteRoleMenuByRoleId(roleId);
-        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
-        roleDeptMapper.deleteRoleDeptByRoleId(roleId);
-        return roleMapper.deleteRoleById(roleId);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
-     * 
-     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteRoleByIds(Long[] roleIds)
-    {
-        for (Long roleId : roleIds)
-        {
-            checkRoleAllowed(new SysRole(roleId));
-            checkRoleDataScope(roleId);
-            SysRole role = selectRoleById(roleId);
-            if (countUserRoleByRoleId(roleId) > 0)
-            {
-                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", role.getRoleName()));
-            }
-        }
-        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
-        roleMenuMapper.deleteRoleMenu(roleIds);
-        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
-        roleDeptMapper.deleteRoleDept(roleIds);
-        return roleMapper.deleteRoleByIds(roleIds);
-    }
-
-    /**
-     * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteAuthUser(SysUserRole userRole)
-    {
-        return userRoleMapper.deleteUserRoleInfo(userRole);
-    }
-
-    /**
-     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteAuthUsers(Long roleId, Long[] userIds)
-    {
-        return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
-    }
-
-    /**
-     * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊
-     * 
-     * @param roleId 瑙掕壊ID
-     * @param userIds 闇�瑕佹巿鏉冪殑鐢ㄦ埛鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertAuthUsers(Long roleId, Long[] userIds)
-    {
-        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
-        List<SysUserRole> list = new ArrayList<SysUserRole>();
-        for (Long userId : userIds)
-        {
-            SysUserRole ur = new SysUserRole();
-            ur.setUserId(userId);
-            ur.setRoleId(roleId);
-            list.add(ur);
-        }
-        return userRoleMapper.batchUserRole(list);
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
deleted file mode 100644
index 8570d45..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import org.springframework.stereotype.Service;
-import com.se.common.core.utils.StringUtils;
-import com.se.system.api.model.LoginUser;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
-
-/**
- * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysUserOnlineServiceImpl implements ISysUserOnlineService
-{
-    /**
-     * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
-     * 
-     * @param ipaddr 鐧诲綍鍦板潃
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    @Override
-    public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user)
-    {
-        if (StringUtils.equals(ipaddr, user.getIpaddr()))
-        {
-            return loginUserToUserOnline(user);
-        }
-        return null;
-    }
-
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
-     * 
-     * @param userName 鐢ㄦ埛鍚嶇О
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    @Override
-    public SysUserOnline selectOnlineByUserName(String userName, LoginUser user)
-    {
-        if (StringUtils.equals(userName, user.getUsername()))
-        {
-            return loginUserToUserOnline(user);
-        }
-        return null;
-    }
-
-    /**
-     * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
-     * 
-     * @param ipaddr 鐧诲綍鍦板潃
-     * @param userName 鐢ㄦ埛鍚嶇О
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     */
-    @Override
-    public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user)
-    {
-        if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
-        {
-            return loginUserToUserOnline(user);
-        }
-        return null;
-    }
-
-    /**
-     * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鍦ㄧ嚎鐢ㄦ埛
-     */
-    @Override
-    public SysUserOnline loginUserToUserOnline(LoginUser user)
-    {
-        if (StringUtils.isNull(user))
-        {
-            return null;
-        }
-        SysUserOnline sysUserOnline = new SysUserOnline();
-        sysUserOnline.setTokenId(user.getToken());
-        sysUserOnline.setUserName(user.getUsername());
-        sysUserOnline.setIpaddr(user.getIpaddr());
-        sysUserOnline.setLoginTime(user.getLoginTime());
-        return sysUserOnline;
-    }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
deleted file mode 100644
index 1f44f5d..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ /dev/null
@@ -1,551 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-import com.se.common.core.constant.UserConstants;
-import com.se.common.core.exception.ServiceException;
-import com.se.common.core.utils.SpringUtils;
-import com.se.common.core.utils.StringUtils;
-import com.se.common.core.utils.bean.BeanValidators;
-import com.se.common.datascope.annotation.DataScope;
-import com.se.common.security.utils.SecurityUtils;
-import com.se.system.api.domain.SysRole;
-import com.se.system.api.domain.SysUser;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.domain.SysUserPost;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 鐢ㄦ埛 涓氬姟灞傚鐞�
- * 
- * @author admin
- */
-@Service
-public class SysUserServiceImpl implements ISysUserService
-{
-    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
-
-    @Autowired
-    private SysUserMapper userMapper;
-
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysPostMapper postMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysUserPostMapper userPostMapper;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    protected Validator validator;
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    @Override
-    @DataScope(deptAlias = "d", userAlias = "u")
-    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)
-    {
-        return userMapper.selectAllocatedList(user);
-    }
-
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
-     */
-    @Override
-    @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
-        return userMapper.selectUnallocatedList(user);
-    }
-
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    @Override
-    public SysUser selectUserByUserName(String userName)
-    {
-        return userMapper.selectUserByUserName(userName);
-    }
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 鐢ㄦ埛瀵硅薄淇℃伅
-     */
-    @Override
-    public SysUser selectUserById(Long userId)
-    {
-        return userMapper.selectUserById(userId);
-    }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 缁撴灉
-     */
-    @Override
-    public String selectUserRoleGroup(String userName)
-    {
-        List<SysRole> list = roleMapper.selectRolesByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
-            return StringUtils.EMPTY;
-        }
-        return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
-    }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @return 缁撴灉
-     */
-    @Override
-    public String selectUserPostGroup(String userName)
-    {
-        List<SysPost> list = postMapper.selectPostsByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
-            return StringUtils.EMPTY;
-        }
-        return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
-    }
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    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())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
-     *
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return
-     */
-    @Override
-    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())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙email鏄惁鍞竴
-     *
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return
-     */
-    @Override
-    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())
-        {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
-
-    /**
-     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     */
-    @Override
-    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()))
-        {
-            SysUser user = new SysUser();
-            user.setUserId(userId);
-            List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
-            if (StringUtils.isEmpty(users))
-            {
-                throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
-            }
-        }
-    }
-
-    /**
-     * 鏂板淇濆瓨鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int insertUser(SysUser user)
-    {
-        // 鏂板鐢ㄦ埛淇℃伅
-        int rows = userMapper.insertUser(user);
-        // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
-        insertUserPost(user);
-        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
-        insertUserRole(user);
-        return rows;
-    }
-
-    /**
-     * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean registerUser(SysUser user)
-    {
-        return userMapper.insertUser(user) > 0;
-    }
-
-    /**
-     * 淇敼淇濆瓨鐢ㄦ埛淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateUser(SysUser user)
-    {
-        Long userId = user.getUserId();
-        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
-        userRoleMapper.deleteUserRoleByUserId(userId);
-        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
-        insertUserRole(user);
-        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
-        userPostMapper.deleteUserPostByUserId(userId);
-        // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
-        insertUserPost(user);
-        return userMapper.updateUser(user);
-    }
-
-    /**
-     * 鐢ㄦ埛鎺堟潈瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @param roleIds 瑙掕壊缁�
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    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);
-    }
-
-    /**
-     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean updateUserProfile(SysUser user)
-    {
-        return userMapper.updateUser(user) > 0;
-    }
-
-    /**
-     * 淇敼鐢ㄦ埛澶村儚
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param avatar 澶村儚鍦板潃
-     * @return 缁撴灉
-     */
-    @Override
-    public boolean updateUserAvatar(String userName, String avatar)
-    {
-        return userMapper.updateUserAvatar(userName, avatar) > 0;
-    }
-
-    /**
-     * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int resetPwd(SysUser user)
-    {
-        return userMapper.updateUser(user);
-    }
-
-    /**
-     * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
-     * @param userName 鐢ㄦ埛鍚�
-     * @param password 瀵嗙爜
-     * @return 缁撴灉
-     */
-    @Override
-    public int resetUserPwd(String userName, String password)
-    {
-        return userMapper.resetUserPwd(userName, password);
-    }
-
-    /**
-     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
-     * @param user 鐢ㄦ埛瀵硅薄
-     */
-    public void insertUserRole(SysUser user)
-    {
-        this.insertUserRole(user.getUserId(), user.getRoleIds());
-    }
-
-    /**
-     * 鏂板鐢ㄦ埛宀椾綅淇℃伅
-     * 
-     * @param user 鐢ㄦ埛瀵硅薄
-     */
-    public void insertUserPost(SysUser user)
-    {
-        Long[] posts = user.getPostIds();
-        if (StringUtils.isNotEmpty(posts))
-        {
-            // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
-            List<SysUserPost> list = new ArrayList<SysUserPost>();
-            for (Long postId : posts)
-            {
-                SysUserPost up = new SysUserPost();
-                up.setUserId(user.getUserId());
-                up.setPostId(postId);
-                list.add(up);
-            }
-            userPostMapper.batchUserPost(list);
-        }
-    }
-
-    /**
-     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @param roleIds 瑙掕壊缁�
-     */
-    public void insertUserRole(Long userId, Long[] roleIds)
-    {
-        if (StringUtils.isNotEmpty(roleIds))
-        {
-            // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
-            List<SysUserRole> list = new ArrayList<SysUserRole>();
-            for (Long roleId : roleIds)
-            {
-                SysUserRole ur = new SysUserRole();
-                ur.setUserId(userId);
-                ur.setRoleId(roleId);
-                list.add(ur);
-            }
-            userRoleMapper.batchUserRole(list);
-        }
-    }
-
-    /**
-     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteUserById(Long userId)
-    {
-        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
-        userRoleMapper.deleteUserRoleByUserId(userId);
-        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
-        userPostMapper.deleteUserPostByUserId(userId);
-        return userMapper.deleteUserById(userId);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
-     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteUserByIds(Long[] userIds)
-    {
-        for (Long userId : userIds)
-        {
-            checkUserAllowed(new SysUser(userId));
-            checkUserDataScope(userId);
-        }
-        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
-        userRoleMapper.deleteUserRole(userIds);
-        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
-        userPostMapper.deleteUserPost(userIds);
-        return userMapper.deleteUserByIds(userIds);
-    }
-
-    /**
-     * 瀵煎叆鐢ㄦ埛鏁版嵁
-     * 
-     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
-     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @param operName 鎿嶄綔鐢ㄦ埛
-     * @return 缁撴灉
-     */
-    @Override
-    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;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-        for (SysUser user : userList)
-        {
-            try
-            {
-                // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛
-                SysUser u = userMapper.selectUserByUserName(user.getUserName());
-                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);
-                    successNum++;
-                    successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛");
-                }
-                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);
-                    successNum++;
-                    successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛");
-                }
-                else
-                {
-                    failureNum++;
-                    failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�");
-                }
-            }
-            catch (Exception e)
-            {
-                failureNum++;
-                String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�";
-                failureMsg.append(msg + e.getMessage());
-                log.error(msg, e);
-            }
-        }
-        if (failureNum > 0)
-        {
-            failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
-            throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
-            successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
-        }
-        return successMsg.toString();
-    }
-
-}
diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/se-file/pom.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-file/pom.xml
rename to ruoyi-modules/se-file/pom.xml
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java b/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java
new file mode 100644
index 0000000..d853e56
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/SeFileApplication.java
@@ -0,0 +1,22 @@
+package com.se.file;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import com.se.common.swagger.annotation.EnableCustomSwagger2;
+
+/**
+ * 鏂囦欢鏈嶅姟
+ * 
+ * @author admin
+ */
+@EnableCustomSwagger2
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
+public class SeFileApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeFileApplication.class, args);
+        System.out.println("    鏂囦欢妯″潡鍚姩鎴愬姛    ");
+    }
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java b/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java
new file mode 100644
index 0000000..bb02876
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/config/MinioConfig.java
@@ -0,0 +1,82 @@
+package com.se.file.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import io.minio.MinioClient;
+
+/**
+ * Minio 閰嶇疆淇℃伅
+ *
+ * @author admin
+ */
+@Configuration
+@ConfigurationProperties(prefix = "minio")
+public class MinioConfig
+{
+    /**
+     * 鏈嶅姟鍦板潃
+     */
+    private String url;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String accessKey;
+
+    /**
+     * 瀵嗙爜
+     */
+    private String secretKey;
+
+    /**
+     * 瀛樺偍妗跺悕绉�
+     */
+    private String bucketName;
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    public String getAccessKey()
+    {
+        return accessKey;
+    }
+
+    public void setAccessKey(String accessKey)
+    {
+        this.accessKey = accessKey;
+    }
+
+    public String getSecretKey()
+    {
+        return secretKey;
+    }
+
+    public void setSecretKey(String secretKey)
+    {
+        this.secretKey = secretKey;
+    }
+
+    public String getBucketName()
+    {
+        return bucketName;
+    }
+
+    public void setBucketName(String bucketName)
+    {
+        this.bucketName = bucketName;
+    }
+
+    @Bean
+    public MinioClient getMinioClient()
+    {
+        return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
+    }
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java b/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java
new file mode 100644
index 0000000..bb0eebe
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/config/ResourcesConfig.java
@@ -0,0 +1,50 @@
+package com.se.file.config;
+
+import java.io.File;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * 閫氱敤鏄犲皠閰嶇疆
+ * 
+ * @author admin
+ */
+@Configuration
+public class ResourcesConfig implements WebMvcConfigurer
+{
+    /**
+     * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰�
+     */
+    @Value("${file.path}")
+    private String localFilePath;
+
+    /**
+     * 璧勬簮鏄犲皠璺緞 鍓嶇紑
+     */
+    @Value("${file.prefix}")
+    public String localFilePrefix;
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry)
+    {
+        /** 鏈湴鏂囦欢涓婁紶璺緞 */
+        registry.addResourceHandler(localFilePrefix + "/**")
+                .addResourceLocations("file:" + localFilePath + File.separator);
+    }
+    
+    /**
+     * 寮�鍚法鍩�
+     */
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        // 璁剧疆鍏佽璺ㄥ煙鐨勮矾鐢�
+        registry.addMapping(localFilePrefix  + "/**")
+                // 璁剧疆鍏佽璺ㄥ煙璇锋眰鐨勫煙鍚�
+                .allowedOrigins("*")
+                // 璁剧疆鍏佽鐨勬柟娉�
+                .allowedMethods("GET");
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java b/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java
new file mode 100644
index 0000000..e87c238
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/controller/SysFileController.java
@@ -0,0 +1,48 @@
+package com.se.file.controller;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import com.se.common.core.domain.R;
+import com.se.common.core.utils.file.FileUtils;
+import com.se.file.service.ISysFileService;
+import com.se.system.api.domain.SysFile;
+
+/**
+ * 鏂囦欢璇锋眰澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+public class SysFileController
+{
+    private static final Logger log = LoggerFactory.getLogger(SysFileController.class);
+
+    @Autowired
+    private ISysFileService sysFileService;
+
+    /**
+     * 鏂囦欢涓婁紶璇锋眰
+     */
+    @PostMapping("upload")
+    public R<SysFile> upload(MultipartFile file)
+    {
+        try
+        {
+            // 涓婁紶骞惰繑鍥炶闂湴鍧�
+            String url = sysFileService.uploadFile(file);
+            SysFile sysFile = new SysFile();
+            sysFile.setName(FileUtils.getName(url));
+            sysFile.setUrl(url);
+            return R.ok(sysFile);
+        }
+        catch (Exception e)
+        {
+            log.error("涓婁紶鏂囦欢澶辫触", e);
+            return R.fail(e.getMessage());
+        }
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java
new file mode 100644
index 0000000..fa25b7b
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/FastDfsSysFileServiceImpl.java
@@ -0,0 +1,46 @@
+package com.se.file.service;
+
+import java.io.InputStream;
+import com.alibaba.nacos.common.utils.IoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import com.github.tobato.fastdfs.domain.fdfs.StorePath;
+import com.github.tobato.fastdfs.service.FastFileStorageClient;
+import com.se.common.core.utils.file.FileTypeUtils;
+
+/**
+ * FastDFS 鏂囦欢瀛樺偍
+ *
+ * @author admin
+ */
+@Service
+public class FastDfsSysFileServiceImpl implements ISysFileService
+{
+    /**
+     * 鍩熷悕鎴栨湰鏈鸿闂湴鍧�
+     */
+    @Value("${fdfs.domain}")
+    public String domain;
+
+    @Autowired
+    private FastFileStorageClient storageClient;
+
+    /**
+     * FastDfs鏂囦欢涓婁紶鎺ュ彛
+     *
+     * @param file 涓婁紶鐨勬枃浠�
+     * @return 璁块棶鍦板潃
+     * @throws Exception
+     */
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception
+    {
+        InputStream inputStream = file.getInputStream();
+        StorePath storePath = storageClient.uploadFile(inputStream, file.getSize(),
+                FileTypeUtils.getExtension(file), null);
+        IoUtils.closeQuietly(inputStream);
+        return domain + "/" + storePath.getFullPath();
+    }
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java
new file mode 100644
index 0000000..9d4215e
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/ISysFileService.java
@@ -0,0 +1,20 @@
+package com.se.file.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 鏂囦欢涓婁紶鎺ュ彛
+ * 
+ * @author admin
+ */
+public interface ISysFileService
+{
+    /**
+     * 鏂囦欢涓婁紶鎺ュ彛
+     * 
+     * @param file 涓婁紶鐨勬枃浠�
+     * @return 璁块棶鍦板潃
+     * @throws Exception
+     */
+    public String uploadFile(MultipartFile file) throws Exception;
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java
new file mode 100644
index 0000000..0ffaf52
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/LocalSysFileServiceImpl.java
@@ -0,0 +1,50 @@
+package com.se.file.service;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import com.se.file.utils.FileUploadUtils;
+
+/**
+ * 鏈湴鏂囦欢瀛樺偍
+ * 
+ * @author admin
+ */
+@Primary
+@Service
+public class LocalSysFileServiceImpl implements ISysFileService
+{
+    /**
+     * 璧勬簮鏄犲皠璺緞 鍓嶇紑
+     */
+    @Value("${file.prefix}")
+    public String localFilePrefix;
+
+    /**
+     * 鍩熷悕鎴栨湰鏈鸿闂湴鍧�
+     */
+    @Value("${file.domain}")
+    public String domain;
+    
+    /**
+     * 涓婁紶鏂囦欢瀛樺偍鍦ㄦ湰鍦扮殑鏍硅矾寰�
+     */
+    @Value("${file.path}")
+    private String localFilePath;
+
+    /**
+     * 鏈湴鏂囦欢涓婁紶鎺ュ彛
+     * 
+     * @param file 涓婁紶鐨勬枃浠�
+     * @return 璁块棶鍦板潃
+     * @throws Exception
+     */
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception
+    {
+        String name = FileUploadUtils.upload(localFilePath, file);
+        String url = domain + localFilePrefix + name;
+        return url;
+    }
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java b/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java
new file mode 100644
index 0000000..cf7c1a1
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/service/MinioSysFileServiceImpl.java
@@ -0,0 +1,50 @@
+package com.se.file.service;
+
+import java.io.InputStream;
+
+import com.se.file.config.MinioConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import com.alibaba.nacos.common.utils.IoUtils;
+import com.se.file.utils.FileUploadUtils;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+
+/**
+ * Minio 鏂囦欢瀛樺偍
+ *
+ * @author admin
+ */
+@Service
+public class MinioSysFileServiceImpl implements ISysFileService
+{
+    @Autowired
+    private MinioConfig minioConfig;
+
+    @Autowired
+    private MinioClient client;
+
+    /**
+     * Minio鏂囦欢涓婁紶鎺ュ彛
+     *
+     * @param file 涓婁紶鐨勬枃浠�
+     * @return 璁块棶鍦板潃
+     * @throws Exception
+     */
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception
+    {
+        String fileName = FileUploadUtils.extractFilename(file);
+        InputStream inputStream = file.getInputStream();
+        PutObjectArgs args = PutObjectArgs.builder()
+                .bucket(minioConfig.getBucketName())
+                .object(fileName)
+                .stream(inputStream, file.getSize(), -1)
+                .contentType(file.getContentType())
+                .build();
+        client.putObject(args);
+        IoUtils.closeQuietly(inputStream);
+        return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
+    }
+}
diff --git a/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java b/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java
new file mode 100644
index 0000000..c51548d
--- /dev/null
+++ b/ruoyi-modules/se-file/src/main/java/com/se/file/utils/FileUploadUtils.java
@@ -0,0 +1,185 @@
+package com.se.file.utils;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.Objects;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.multipart.MultipartFile;
+import com.se.common.core.exception.file.FileException;
+import com.se.common.core.exception.file.FileNameLengthLimitExceededException;
+import com.se.common.core.exception.file.FileSizeLimitExceededException;
+import com.se.common.core.exception.file.InvalidExtensionException;
+import com.se.common.core.utils.DateUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.file.FileTypeUtils;
+import com.se.common.core.utils.file.MimeTypeUtils;
+import com.se.common.core.utils.uuid.Seq;
+
+/**
+ * 鏂囦欢涓婁紶宸ュ叿绫�
+ * 
+ * @author admin
+ */
+public class FileUploadUtils
+{
+    /**
+     * 榛樿澶у皬 50M
+     */
+    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L;
+
+    /**
+     * 榛樿鐨勬枃浠跺悕鏈�澶ч暱搴� 100
+     */
+    public static final int DEFAULT_FILE_NAME_LENGTH = 100;
+
+    /**
+     * 鏍规嵁鏂囦欢璺緞涓婁紶
+     *
+     * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍
+     * @param file 涓婁紶鐨勬枃浠�
+     * @return 鏂囦欢鍚嶇О
+     * @throws IOException
+     */
+    public static final String upload(String baseDir, MultipartFile file) throws IOException
+    {
+        try
+        {
+            return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
+        }
+        catch (FileException fe)
+        {
+            throw new IOException(fe.getDefaultMessage(), fe);
+        }
+        catch (Exception e)
+        {
+            throw new IOException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 鏂囦欢涓婁紶
+     *
+     * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍
+     * @param file 涓婁紶鐨勬枃浠�
+     * @param allowedExtension 涓婁紶鏂囦欢绫诲瀷
+     * @return 杩斿洖涓婁紶鎴愬姛鐨勬枃浠跺悕
+     * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏�
+     * @throws FileNameLengthLimitExceededException 鏂囦欢鍚嶅お闀�
+     * @throws IOException 姣斿璇诲啓鏂囦欢鍑洪敊鏃�
+     * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父
+     */
+    public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
+            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+            InvalidExtensionException
+    {
+        int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
+        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
+        {
+            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
+        }
+
+        assertAllowed(file, allowedExtension);
+
+        String fileName = extractFilename(file);
+
+        String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
+        file.transferTo(Paths.get(absPath));
+        return getPathFileName(fileName);
+    }
+
+    /**
+     * 缂栫爜鏂囦欢鍚�
+     */
+    public static final String extractFilename(MultipartFile file)
+    {
+        return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
+                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file));
+    }
+
+    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
+    {
+        File desc = new File(uploadDir + File.separator + fileName);
+
+        if (!desc.exists())
+        {
+            if (!desc.getParentFile().exists())
+            {
+                desc.getParentFile().mkdirs();
+            }
+        }
+        return desc.isAbsolute() ? desc : desc.getAbsoluteFile();
+    }
+
+    private static final String getPathFileName(String fileName) throws IOException
+    {
+        String pathFileName = "/" + fileName;
+        return pathFileName;
+    }
+
+    /**
+     * 鏂囦欢澶у皬鏍¢獙
+     *
+     * @param file 涓婁紶鐨勬枃浠�
+     * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏�
+     * @throws InvalidExtensionException 鏂囦欢鏍¢獙寮傚父
+     */
+    public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
+            throws FileSizeLimitExceededException, InvalidExtensionException
+    {
+        long size = file.getSize();
+        if (size > DEFAULT_MAX_SIZE)
+        {
+            throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
+        }
+
+        String fileName = file.getOriginalFilename();
+        String extension = FileTypeUtils.getExtension(file);
+        if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
+        {
+            if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else
+            {
+                throw new InvalidExtensionException(allowedExtension, extension, fileName);
+            }
+        }
+    }
+
+    /**
+     * 鍒ゆ柇MIME绫诲瀷鏄惁鏄厑璁哥殑MIME绫诲瀷
+     *
+     * @param extension 涓婁紶鏂囦欢绫诲瀷
+     * @param allowedExtension 鍏佽涓婁紶鏂囦欢绫诲瀷
+     * @return true/false
+     */
+    public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
+    {
+        for (String str : allowedExtension)
+        {
+            if (str.equalsIgnoreCase(extension))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/banner.txt b/ruoyi-modules/se-file/src/main/resources/banner.txt
similarity index 100%
rename from ruoyi-modules/ruoyi-file/src/main/resources/banner.txt
rename to ruoyi-modules/se-file/src/main/resources/banner.txt
diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/se-file/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
rename to ruoyi-modules/se-file/src/main/resources/bootstrap.yml
diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/logback.xml b/ruoyi-modules/se-file/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-file/src/main/resources/logback.xml
rename to ruoyi-modules/se-file/src/main/resources/logback.xml
diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/se-gen/pom.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/pom.xml
rename to ruoyi-modules/se-gen/pom.xml
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java
new file mode 100644
index 0000000..49a19fd
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/SeGenApplication.java
@@ -0,0 +1,34 @@
+package com.se.gen;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import com.se.common.security.annotation.EnableCustomConfig;
+import com.se.common.security.annotation.EnableRyFeignClients;
+import com.se.common.swagger.annotation.EnableCustomSwagger2;
+
+/**
+ * 浠g爜鐢熸垚
+ * 
+ * @author admin
+ */
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableRyFeignClients
+@SpringBootApplication
+public class SeGenApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeGenApplication.class, args);
+        System.out.println("(鈾モ棤鈥库棤)锞夛緸  浠g爜鐢熸垚妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
+                " .-------.       ____     __        \n" +
+                " |  _ _   \\      \\   \\   /  /    \n" +
+                " | ( ' )  |       \\  _. /  '       \n" +
+                " |(_ o _) /        _( )_ .'         \n" +
+                " | (_,_).' __  ___(_ o _)'          \n" +
+                " |  |\\ \\  |  ||   |(_,_)'         \n" +
+                " |  | \\ `'   /|   `-'  /           \n" +
+                " |  |  \\    /  \\      /           \n" +
+                " ''-'   `'-'    `-..-'              ");
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java
new file mode 100644
index 0000000..28143c1
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/config/GenConfig.java
@@ -0,0 +1,66 @@
+package com.se.gen.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * 浠g爜鐢熸垚鐩稿叧閰嶇疆
+ * 
+ * @author admin
+ */
+@Component
+@ConfigurationProperties(prefix = "gen")
+public class GenConfig
+{
+    /** 浣滆�� */
+    public static String author;
+
+    /** 鐢熸垚鍖呰矾寰� */
+    public static String packageName;
+
+    /** 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸false */
+    public static boolean autoRemovePre;
+
+    /** 琛ㄥ墠缂�(绫诲悕涓嶄細鍖呭惈琛ㄥ墠缂�) */
+    public static String tablePrefix;
+
+    public static String getAuthor()
+    {
+        return author;
+    }
+
+    public void setAuthor(String author)
+    {
+        GenConfig.author = author;
+    }
+
+    public static String getPackageName()
+    {
+        return packageName;
+    }
+
+    public void setPackageName(String packageName)
+    {
+        GenConfig.packageName = packageName;
+    }
+
+    public static boolean getAutoRemovePre()
+    {
+        return autoRemovePre;
+    }
+
+    public void setAutoRemovePre(boolean autoRemovePre)
+    {
+        GenConfig.autoRemovePre = autoRemovePre;
+    }
+
+    public static String getTablePrefix()
+    {
+        return tablePrefix;
+    }
+
+    public void setTablePrefix(String tablePrefix)
+    {
+        GenConfig.tablePrefix = tablePrefix;
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java
new file mode 100644
index 0000000..cd740c0
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/controller/GenController.java
@@ -0,0 +1,212 @@
+package com.se.gen.controller;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.gen.domain.GenTableColumn;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.text.Convert;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.gen.domain.GenTable;
+import com.se.gen.service.IGenTableColumnService;
+import com.se.gen.service.IGenTableService;
+
+/**
+ * 浠g爜鐢熸垚 鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RequestMapping("/gen")
+@RestController
+public class GenController extends BaseController
+{
+    @Autowired
+    private IGenTableService genTableService;
+
+    @Autowired
+    private IGenTableColumnService genTableColumnService;
+
+    /**
+     * 鏌ヨ浠g爜鐢熸垚鍒楄〃
+     */
+    @RequiresPermissions("tool:gen:list")
+    @GetMapping("/list")
+    public TableDataInfo genList(GenTable genTable)
+    {
+        startPage();
+        List<GenTable> list = genTableService.selectGenTableList(genTable);
+        return getDataTable(list);
+    }
+
+    /**
+     * 淇敼浠g爜鐢熸垚涓氬姟
+     */
+    @RequiresPermissions("tool:gen:query")
+    @GetMapping(value = "/{tableId}")
+    public AjaxResult getInfo(@PathVariable Long tableId)
+    {
+        GenTable table = genTableService.selectGenTableById(tableId);
+        List<GenTable> tables = genTableService.selectGenTableAll();
+        List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("info", table);
+        map.put("rows", list);
+        map.put("tables", tables);
+        return success(map);
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁搴撳垪琛�
+     */
+    @RequiresPermissions("tool:gen:list")
+    @GetMapping("/db/list")
+    public TableDataInfo dataList(GenTable genTable)
+    {
+        startPage();
+        List<GenTable> list = genTableService.selectDbTableList(genTable);
+        return getDataTable(list);
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁琛ㄥ瓧娈靛垪琛�
+     */
+    @GetMapping(value = "/column/{tableId}")
+    public TableDataInfo columnList(Long tableId)
+    {
+        TableDataInfo dataInfo = new TableDataInfo();
+        List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
+        dataInfo.setRows(list);
+        dataInfo.setTotal(list.size());
+        return dataInfo;
+    }
+
+    /**
+     * 瀵煎叆琛ㄧ粨鏋勶紙淇濆瓨锛�
+     */
+    @RequiresPermissions("tool:gen:import")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.IMPORT)
+    @PostMapping("/importTable")
+    public AjaxResult importTableSave(String tables)
+    {
+        String[] tableNames = Convert.toStrArray(tables);
+        // 鏌ヨ琛ㄤ俊鎭�
+        List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames);
+        genTableService.importGenTable(tableList);
+        return success();
+    }
+
+    /**
+     * 淇敼淇濆瓨浠g爜鐢熸垚涓氬姟
+     */
+    @RequiresPermissions("tool:gen:edit")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult editSave(@Validated @RequestBody GenTable genTable)
+    {
+        genTableService.validateEdit(genTable);
+        genTableService.updateGenTable(genTable);
+        return success();
+    }
+
+    /**
+     * 鍒犻櫎浠g爜鐢熸垚
+     */
+    @RequiresPermissions("tool:gen:remove")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{tableIds}")
+    public AjaxResult remove(@PathVariable Long[] tableIds)
+    {
+        genTableService.deleteGenTableByIds(tableIds);
+        return success();
+    }
+
+    /**
+     * 棰勮浠g爜
+     */
+    @RequiresPermissions("tool:gen:preview")
+    @GetMapping("/preview/{tableId}")
+    public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException
+    {
+        Map<String, String> dataMap = genTableService.previewCode(tableId);
+        return success(dataMap);
+    }
+
+    /**
+     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
+     */
+    @RequiresPermissions("tool:gen:code")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
+    @GetMapping("/download/{tableName}")
+    public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException
+    {
+        byte[] data = genTableService.downloadCode(tableName);
+        genCode(response, data);
+    }
+
+    /**
+     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
+     */
+    @RequiresPermissions("tool:gen:code")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
+    @GetMapping("/genCode/{tableName}")
+    public AjaxResult genCode(@PathVariable("tableName") String tableName)
+    {
+        genTableService.generatorCode(tableName);
+        return success();
+    }
+
+    /**
+     * 鍚屾鏁版嵁搴�
+     */
+    @RequiresPermissions("tool:gen:edit")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
+    @GetMapping("/synchDb/{tableName}")
+    public AjaxResult synchDb(@PathVariable("tableName") String tableName)
+    {
+        genTableService.synchDb(tableName);
+        return success();
+    }
+
+    /**
+     * 鎵归噺鐢熸垚浠g爜
+     */
+    @RequiresPermissions("tool:gen:code")
+    @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE)
+    @GetMapping("/batchGenCode")
+    public void batchGenCode(HttpServletResponse response, String tables) throws IOException
+    {
+        String[] tableNames = Convert.toStrArray(tables);
+        byte[] data = genTableService.downloadCode(tableNames);
+        genCode(response, data);
+    }
+
+    /**
+     * 鐢熸垚zip鏂囦欢
+     */
+    private void genCode(HttpServletResponse response, byte[] data) throws IOException
+    {
+        response.reset();
+        response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
+        response.addHeader("Content-Length", "" + data.length);
+        response.setContentType("application/octet-stream; charset=UTF-8");
+        IOUtils.write(data, response.getOutputStream());
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java
new file mode 100644
index 0000000..7878289
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTable.java
@@ -0,0 +1,383 @@
+package com.se.gen.domain;
+
+import java.util.List;
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import org.apache.commons.lang3.ArrayUtils;
+import com.se.common.core.constant.GenConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 涓氬姟琛� gen_table
+ * 
+ * @author admin
+ */
+public class GenTable extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 缂栧彿 */
+    private Long tableId;
+
+    /** 琛ㄥ悕绉� */
+    @NotBlank(message = "琛ㄥ悕绉颁笉鑳戒负绌�")
+    private String tableName;
+
+    /** 琛ㄦ弿杩� */
+    @NotBlank(message = "琛ㄦ弿杩颁笉鑳戒负绌�")
+    private String tableComment;
+
+    /** 鍏宠仈鐖惰〃鐨勮〃鍚� */
+    private String subTableName;
+
+    /** 鏈〃鍏宠仈鐖惰〃鐨勫閿悕 */
+    private String subTableFkName;
+
+    /** 瀹炰綋绫诲悕绉�(棣栧瓧姣嶅ぇ鍐�) */
+    @NotBlank(message = "瀹炰綋绫诲悕绉颁笉鑳戒负绌�")
+    private String className;
+
+    /** 浣跨敤鐨勬ā鏉匡紙crud鍗曡〃鎿嶄綔 tree鏍戣〃鎿嶄綔 sub涓诲瓙琛ㄦ搷浣滐級 */
+    private String tplCategory;
+
+    /** 鍓嶇绫诲瀷锛坋lement-ui妯$増 element-plus妯$増锛� */
+    private String tplWebType;
+
+    /** 鐢熸垚鍖呰矾寰� */
+    @NotBlank(message = "鐢熸垚鍖呰矾寰勪笉鑳戒负绌�")
+    private String packageName;
+
+    /** 鐢熸垚妯″潡鍚� */
+    @NotBlank(message = "鐢熸垚妯″潡鍚嶄笉鑳戒负绌�")
+    private String moduleName;
+
+    /** 鐢熸垚涓氬姟鍚� */
+    @NotBlank(message = "鐢熸垚涓氬姟鍚嶄笉鑳戒负绌�")
+    private String businessName;
+
+    /** 鐢熸垚鍔熻兘鍚� */
+    @NotBlank(message = "鐢熸垚鍔熻兘鍚嶄笉鑳戒负绌�")
+    private String functionName;
+
+    /** 鐢熸垚浣滆�� */
+    @NotBlank(message = "浣滆�呬笉鑳戒负绌�")
+    private String functionAuthor;
+
+    /** 鐢熸垚浠g爜鏂瑰紡锛�0zip鍘嬬缉鍖� 1鑷畾涔夎矾寰勶級 */
+    private String genType;
+
+    /** 鐢熸垚璺緞锛堜笉濉粯璁ら」鐩矾寰勶級 */
+    private String genPath;
+
+    /** 涓婚敭淇℃伅 */
+    private GenTableColumn pkColumn;
+
+    /** 瀛愯〃淇℃伅 */
+    private GenTable subTable;
+
+    /** 琛ㄥ垪淇℃伅 */
+    @Valid
+    private List<GenTableColumn> columns;
+
+    /** 鍏跺畠鐢熸垚閫夐」 */
+    private String options;
+
+    /** 鏍戠紪鐮佸瓧娈� */
+    private String treeCode;
+
+    /** 鏍戠埗缂栫爜瀛楁 */
+    private String treeParentCode;
+
+    /** 鏍戝悕绉板瓧娈� */
+    private String treeName;
+
+    /** 涓婄骇鑿滃崟ID瀛楁 */
+    private String parentMenuId;
+
+    /** 涓婄骇鑿滃崟鍚嶇О瀛楁 */
+    private String parentMenuName;
+
+    public Long getTableId()
+    {
+        return tableId;
+    }
+
+    public void setTableId(Long tableId)
+    {
+        this.tableId = tableId;
+    }
+
+    public String getTableName()
+    {
+        return tableName;
+    }
+
+    public void setTableName(String tableName)
+    {
+        this.tableName = tableName;
+    }
+
+    public String getTableComment()
+    {
+        return tableComment;
+    }
+
+    public void setTableComment(String tableComment)
+    {
+        this.tableComment = tableComment;
+    }
+
+    public String getSubTableName()
+    {
+        return subTableName;
+    }
+
+    public void setSubTableName(String subTableName)
+    {
+        this.subTableName = subTableName;
+    }
+
+    public String getSubTableFkName()
+    {
+        return subTableFkName;
+    }
+
+    public void setSubTableFkName(String subTableFkName)
+    {
+        this.subTableFkName = subTableFkName;
+    }
+
+    public String getClassName()
+    {
+        return className;
+    }
+
+    public void setClassName(String className)
+    {
+        this.className = className;
+    }
+
+    public String getTplCategory()
+    {
+        return tplCategory;
+    }
+
+    public void setTplCategory(String tplCategory)
+    {
+        this.tplCategory = tplCategory;
+    }
+
+    public String getTplWebType()
+    {
+        return tplWebType;
+    }
+
+    public void setTplWebType(String tplWebType)
+    {
+        this.tplWebType = tplWebType;
+    }
+
+    public String getPackageName()
+    {
+        return packageName;
+    }
+
+    public void setPackageName(String packageName)
+    {
+        this.packageName = packageName;
+    }
+
+    public String getModuleName()
+    {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName)
+    {
+        this.moduleName = moduleName;
+    }
+
+    public String getBusinessName()
+    {
+        return businessName;
+    }
+
+    public void setBusinessName(String businessName)
+    {
+        this.businessName = businessName;
+    }
+
+    public String getFunctionName()
+    {
+        return functionName;
+    }
+
+    public void setFunctionName(String functionName)
+    {
+        this.functionName = functionName;
+    }
+
+    public String getFunctionAuthor()
+    {
+        return functionAuthor;
+    }
+
+    public void setFunctionAuthor(String functionAuthor)
+    {
+        this.functionAuthor = functionAuthor;
+    }
+
+    public String getGenType()
+    {
+        return genType;
+    }
+
+    public void setGenType(String genType)
+    {
+        this.genType = genType;
+    }
+
+    public String getGenPath()
+    {
+        return genPath;
+    }
+
+    public void setGenPath(String genPath)
+    {
+        this.genPath = genPath;
+    }
+
+    public GenTableColumn getPkColumn()
+    {
+        return pkColumn;
+    }
+
+    public void setPkColumn(GenTableColumn pkColumn)
+    {
+        this.pkColumn = pkColumn;
+    }
+
+    public GenTable getSubTable()
+    {
+        return subTable;
+    }
+
+    public void setSubTable(GenTable subTable)
+    {
+        this.subTable = subTable;
+    }
+    public List<GenTableColumn> getColumns()
+    {
+        return columns;
+    }
+
+    public void setColumns(List<GenTableColumn> columns)
+    {
+        this.columns = columns;
+    }
+
+    public String getOptions()
+    {
+        return options;
+    }
+
+    public void setOptions(String options)
+    {
+        this.options = options;
+    }
+
+    public String getTreeCode()
+    {
+        return treeCode;
+    }
+
+    public void setTreeCode(String treeCode)
+    {
+        this.treeCode = treeCode;
+    }
+
+    public String getTreeParentCode()
+    {
+        return treeParentCode;
+    }
+
+    public void setTreeParentCode(String treeParentCode)
+    {
+        this.treeParentCode = treeParentCode;
+    }
+
+    public String getTreeName()
+    {
+        return treeName;
+    }
+
+    public void setTreeName(String treeName)
+    {
+        this.treeName = treeName;
+    }
+
+    public String getParentMenuId()
+    {
+        return parentMenuId;
+    }
+
+    public void setParentMenuId(String parentMenuId)
+    {
+        this.parentMenuId = parentMenuId;
+    }
+
+    public String getParentMenuName()
+    {
+        return parentMenuName;
+    }
+
+    public void setParentMenuName(String parentMenuName)
+    {
+        this.parentMenuName = parentMenuName;
+    }
+
+    public boolean isSub()
+    {
+        return isSub(this.tplCategory);
+    }
+
+    public static boolean isSub(String tplCategory)
+    {
+        return tplCategory != null && StringUtils.equals(GenConstants.TPL_SUB, tplCategory);
+    }
+    public boolean isTree()
+    {
+        return isTree(this.tplCategory);
+    }
+
+    public static boolean isTree(String tplCategory)
+    {
+        return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory);
+    }
+
+    public boolean isCrud()
+    {
+        return isCrud(this.tplCategory);
+    }
+
+    public static boolean isCrud(String tplCategory)
+    {
+        return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory);
+    }
+
+    public boolean isSuperColumn(String javaField)
+    {
+        return isSuperColumn(this.tplCategory, javaField);
+    }
+
+    public static boolean isSuperColumn(String tplCategory, String javaField)
+    {
+        if (isTree(tplCategory))
+        {
+            return StringUtils.equalsAnyIgnoreCase(javaField,
+                    ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY));
+        }
+        return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY);
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java
new file mode 100644
index 0000000..36200be
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/domain/GenTableColumn.java
@@ -0,0 +1,374 @@
+package com.se.gen.domain;
+
+import javax.validation.constraints.NotBlank;
+
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 浠g爜鐢熸垚涓氬姟瀛楁琛� gen_table_column
+ * 
+ * @author admin
+ */
+public class GenTableColumn extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 缂栧彿 */
+    private Long columnId;
+
+    /** 褰掑睘琛ㄧ紪鍙� */
+    private Long tableId;
+
+    /** 鍒楀悕绉� */
+    private String columnName;
+
+    /** 鍒楁弿杩� */
+    private String columnComment;
+
+    /** 鍒楃被鍨� */
+    private String columnType;
+
+    /** JAVA绫诲瀷 */
+    private String javaType;
+
+    /** JAVA瀛楁鍚� */
+    @NotBlank(message = "Java灞炴�т笉鑳戒负绌�")
+    private String javaField;
+
+    /** 鏄惁涓婚敭锛�1鏄級 */
+    private String isPk;
+
+    /** 鏄惁鑷锛�1鏄級 */
+    private String isIncrement;
+
+    /** 鏄惁蹇呭~锛�1鏄級 */
+    private String isRequired;
+
+    /** 鏄惁涓烘彃鍏ュ瓧娈碉紙1鏄級 */
+    private String isInsert;
+
+    /** 鏄惁缂栬緫瀛楁锛�1鏄級 */
+    private String isEdit;
+
+    /** 鏄惁鍒楄〃瀛楁锛�1鏄級 */
+    private String isList;
+
+    /** 鏄惁鏌ヨ瀛楁锛�1鏄級 */
+    private String isQuery;
+
+    /** 鏌ヨ鏂瑰紡锛圗Q绛変簬銆丯E涓嶇瓑浜庛�丟T澶т簬銆丩T灏忎簬銆丩IKE妯$硦銆丅ETWEEN鑼冨洿锛� */
+    private String queryType;
+
+    /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乮mage鍥剧墖涓婁紶鎺т欢銆乽pload鏂囦欢涓婁紶鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */
+    private String htmlType;
+
+    /** 瀛楀吀绫诲瀷 */
+    private String dictType;
+
+    /** 鎺掑簭 */
+    private Integer sort;
+
+    public void setColumnId(Long columnId)
+    {
+        this.columnId = columnId;
+    }
+
+    public Long getColumnId()
+    {
+        return columnId;
+    }
+
+    public void setTableId(Long tableId)
+    {
+        this.tableId = tableId;
+    }
+
+    public Long getTableId()
+    {
+        return tableId;
+    }
+
+    public void setColumnName(String columnName)
+    {
+        this.columnName = columnName;
+    }
+
+    public String getColumnName()
+    {
+        return columnName;
+    }
+
+    public void setColumnComment(String columnComment)
+    {
+        this.columnComment = columnComment;
+    }
+
+    public String getColumnComment()
+    {
+        return columnComment;
+    }
+
+    public void setColumnType(String columnType)
+    {
+        this.columnType = columnType;
+    }
+
+    public String getColumnType()
+    {
+        return columnType;
+    }
+
+    public void setJavaType(String javaType)
+    {
+        this.javaType = javaType;
+    }
+
+    public String getJavaType()
+    {
+        return javaType;
+    }
+
+    public void setJavaField(String javaField)
+    {
+        this.javaField = javaField;
+    }
+
+    public String getJavaField()
+    {
+        return javaField;
+    }
+
+    public String getCapJavaField()
+    {
+        return StringUtils.capitalize(javaField);
+    }
+
+    public void setIsPk(String isPk)
+    {
+        this.isPk = isPk;
+    }
+
+    public String getIsPk()
+    {
+        return isPk;
+    }
+
+    public boolean isPk()
+    {
+        return isPk(this.isPk);
+    }
+
+    public boolean isPk(String isPk)
+    {
+        return isPk != null && StringUtils.equals("1", isPk);
+    }
+
+    public String getIsIncrement()
+    {
+        return isIncrement;
+    }
+
+    public void setIsIncrement(String isIncrement)
+    {
+        this.isIncrement = isIncrement;
+    }
+
+    public boolean isIncrement()
+    {
+        return isIncrement(this.isIncrement);
+    }
+
+    public boolean isIncrement(String isIncrement)
+    {
+        return isIncrement != null && StringUtils.equals("1", isIncrement);
+    }
+
+    public void setIsRequired(String isRequired)
+    {
+        this.isRequired = isRequired;
+    }
+
+    public String getIsRequired()
+    {
+        return isRequired;
+    }
+
+    public boolean isRequired()
+    {
+        return isRequired(this.isRequired);
+    }
+
+    public boolean isRequired(String isRequired)
+    {
+        return isRequired != null && StringUtils.equals("1", isRequired);
+    }
+
+    public void setIsInsert(String isInsert)
+    {
+        this.isInsert = isInsert;
+    }
+
+    public String getIsInsert()
+    {
+        return isInsert;
+    }
+
+    public boolean isInsert()
+    {
+        return isInsert(this.isInsert);
+    }
+
+    public boolean isInsert(String isInsert)
+    {
+        return isInsert != null && StringUtils.equals("1", isInsert);
+    }
+
+    public void setIsEdit(String isEdit)
+    {
+        this.isEdit = isEdit;
+    }
+
+    public String getIsEdit()
+    {
+        return isEdit;
+    }
+
+    public boolean isEdit()
+    {
+        return isInsert(this.isEdit);
+    }
+
+    public boolean isEdit(String isEdit)
+    {
+        return isEdit != null && StringUtils.equals("1", isEdit);
+    }
+
+    public void setIsList(String isList)
+    {
+        this.isList = isList;
+    }
+
+    public String getIsList()
+    {
+        return isList;
+    }
+
+    public boolean isList()
+    {
+        return isList(this.isList);
+    }
+
+    public boolean isList(String isList)
+    {
+        return isList != null && StringUtils.equals("1", isList);
+    }
+
+    public void setIsQuery(String isQuery)
+    {
+        this.isQuery = isQuery;
+    }
+
+    public String getIsQuery()
+    {
+        return isQuery;
+    }
+
+    public boolean isQuery()
+    {
+        return isQuery(this.isQuery);
+    }
+
+    public boolean isQuery(String isQuery)
+    {
+        return isQuery != null && StringUtils.equals("1", isQuery);
+    }
+
+    public void setQueryType(String queryType)
+    {
+        this.queryType = queryType;
+    }
+
+    public String getQueryType()
+    {
+        return queryType;
+    }
+
+    public String getHtmlType()
+    {
+        return htmlType;
+    }
+
+    public void setHtmlType(String htmlType)
+    {
+        this.htmlType = htmlType;
+    }
+
+    public void setDictType(String dictType)
+    {
+        this.dictType = dictType;
+    }
+
+    public String getDictType()
+    {
+        return dictType;
+    }
+
+    public void setSort(Integer sort)
+    {
+        this.sort = sort;
+    }
+
+    public Integer getSort()
+    {
+        return sort;
+    }
+
+    public boolean isSuperColumn()
+    {
+        return isSuperColumn(this.javaField);
+    }
+
+    public static boolean isSuperColumn(String javaField)
+    {
+        return StringUtils.equalsAnyIgnoreCase(javaField,
+                // BaseEntity
+                "createBy", "createTime", "updateBy", "updateTime", "remark",
+                // TreeEntity
+                "parentName", "parentId", "orderNum", "ancestors");
+    }
+
+    public boolean isUsableColumn()
+    {
+        return isUsableColumn(javaField);
+    }
+
+    public static boolean isUsableColumn(String javaField)
+    {
+        // isSuperColumn()涓殑鍚嶅崟鐢ㄤ簬閬垮厤鐢熸垚澶氫綑Domain灞炴�э紝鑻ユ煇浜涘睘鎬у湪鐢熸垚椤甸潰鏃堕渶瑕佺敤鍒颁笉鑳藉拷鐣ワ紝鍒欐斁鍦ㄦ澶勭櫧鍚嶅崟
+        return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
+    }
+
+    public String readConverterExp()
+    {
+        String remarks = StringUtils.substringBetween(this.columnComment, "锛�", "锛�");
+        StringBuffer sb = new StringBuffer();
+        if (StringUtils.isNotEmpty(remarks))
+        {
+            for (String value : remarks.split(" "))
+            {
+                if (StringUtils.isNotEmpty(value))
+                {
+                    Object startStr = value.subSequence(0, 1);
+                    String endStr = value.substring(1);
+                    sb.append("").append(startStr).append("=").append(endStr).append(",");
+                }
+            }
+            return sb.deleteCharAt(sb.length() - 1).toString();
+        }
+        else
+        {
+            return this.columnComment;
+        }
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java
new file mode 100644
index 0000000..9e8aca2
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableColumnMapper.java
@@ -0,0 +1,60 @@
+package com.se.gen.mapper;
+
+import java.util.List;
+import com.se.gen.domain.GenTableColumn;
+
+/**
+ * 涓氬姟瀛楁 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface GenTableColumnMapper
+{
+    /**
+     * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 鍒椾俊鎭�
+     */
+    public List<GenTableColumn> selectDbTableColumnsByName(String tableName);
+
+    /**
+     * 鏌ヨ涓氬姟瀛楁鍒楄〃
+     * 
+     * @param tableId 涓氬姟瀛楁缂栧彿
+     * @return 涓氬姟瀛楁闆嗗悎
+     */
+    public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);
+
+    /**
+     * 鏂板涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertGenTableColumn(GenTableColumn genTableColumn);
+
+    /**
+     * 淇敼涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateGenTableColumn(GenTableColumn genTableColumn);
+
+    /**
+     * 鍒犻櫎涓氬姟瀛楁
+     * 
+     * @param genTableColumns 鍒楁暟鎹�
+     * @return 缁撴灉
+     */
+    public int deleteGenTableColumns(List<GenTableColumn> genTableColumns);
+
+    /**
+     * 鎵归噺鍒犻櫎涓氬姟瀛楁
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteGenTableColumnByIds(Long[] ids);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java
new file mode 100644
index 0000000..0f781b4
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/mapper/GenTableMapper.java
@@ -0,0 +1,83 @@
+package com.se.gen.mapper;
+
+import java.util.List;
+import com.se.gen.domain.GenTable;
+
+/**
+ * 涓氬姟 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface GenTableMapper
+{
+    /**
+     * 鏌ヨ涓氬姟鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 涓氬姟闆嗗悎
+     */
+    public List<GenTable> selectGenTableList(GenTable genTable);
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    public List<GenTable> selectDbTableList(GenTable genTable);
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param tableNames 琛ㄥ悕绉扮粍
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    public List<GenTable> selectDbTableListByNames(String[] tableNames);
+
+    /**
+     * 鏌ヨ鎵�鏈夎〃淇℃伅
+     * 
+     * @return 琛ㄤ俊鎭泦鍚�
+     */
+    public List<GenTable> selectGenTableAll();
+
+    /**
+     * 鏌ヨ琛↖D涓氬姟淇℃伅
+     * 
+     * @param id 涓氬姟ID
+     * @return 涓氬姟淇℃伅
+     */
+    public GenTable selectGenTableById(Long id);
+
+    /**
+     * 鏌ヨ琛ㄥ悕绉颁笟鍔′俊鎭�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 涓氬姟淇℃伅
+     */
+    public GenTable selectGenTableByName(String tableName);
+
+    /**
+     * 鏂板涓氬姟
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertGenTable(GenTable genTable);
+
+    /**
+     * 淇敼涓氬姟
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateGenTable(GenTable genTable);
+
+    /**
+     * 鎵归噺鍒犻櫎涓氬姟
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteGenTableByIds(Long[] ids);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java
new file mode 100644
index 0000000..9eb75e4
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableColumnServiceImpl.java
@@ -0,0 +1,69 @@
+package com.se.gen.service;
+
+import java.util.List;
+
+import com.se.gen.domain.GenTableColumn;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.common.core.text.Convert;
+import com.se.gen.mapper.GenTableColumnMapper;
+
+/**
+ * 涓氬姟瀛楁 鏈嶅姟灞傚疄鐜�
+ * 
+ * @author admin
+ */
+@Service
+public class GenTableColumnServiceImpl implements IGenTableColumnService 
+{
+	@Autowired
+	private GenTableColumnMapper genTableColumnMapper;
+
+	/**
+     * 鏌ヨ涓氬姟瀛楁鍒楄〃
+     * 
+     * @param tableId 涓氬姟瀛楁缂栧彿
+     * @return 涓氬姟瀛楁闆嗗悎
+     */
+	@Override
+	public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId)
+	{
+	    return genTableColumnMapper.selectGenTableColumnListByTableId(tableId);
+	}
+	
+    /**
+     * 鏂板涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+	@Override
+	public int insertGenTableColumn(GenTableColumn genTableColumn)
+	{
+	    return genTableColumnMapper.insertGenTableColumn(genTableColumn);
+	}
+	
+	/**
+     * 淇敼涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+	@Override
+	public int updateGenTableColumn(GenTableColumn genTableColumn)
+	{
+	    return genTableColumnMapper.updateGenTableColumn(genTableColumn);
+	}
+
+	/**
+     * 鍒犻櫎涓氬姟瀛楁瀵硅薄
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+	@Override
+	public int deleteGenTableColumnByIds(String ids)
+	{
+		return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids));
+	}
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java
new file mode 100644
index 0000000..e636ad8
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/GenTableServiceImpl.java
@@ -0,0 +1,522 @@
+package com.se.gen.service;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import com.se.gen.domain.GenTableColumn;
+import com.se.gen.util.GenUtils;
+import com.se.gen.util.VelocityInitializer;
+import com.se.gen.util.VelocityUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.constant.GenConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.text.CharsetKit;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.gen.domain.GenTable;
+import com.se.gen.mapper.GenTableColumnMapper;
+import com.se.gen.mapper.GenTableMapper;
+
+/**
+ * 涓氬姟 鏈嶅姟灞傚疄鐜�
+ * 
+ * @author admin
+ */
+@Service
+public class GenTableServiceImpl implements IGenTableService
+{
+    private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
+
+    @Autowired
+    private GenTableMapper genTableMapper;
+
+    @Autowired
+    private GenTableColumnMapper genTableColumnMapper;
+
+    /**
+     * 鏌ヨ涓氬姟淇℃伅
+     * 
+     * @param id 涓氬姟ID
+     * @return 涓氬姟淇℃伅
+     */
+    @Override
+    public GenTable selectGenTableById(Long id)
+    {
+        GenTable genTable = genTableMapper.selectGenTableById(id);
+        setTableFromOptions(genTable);
+        return genTable;
+    }
+
+    /**
+     * 鏌ヨ涓氬姟鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 涓氬姟闆嗗悎
+     */
+    @Override
+    public List<GenTable> selectGenTableList(GenTable genTable)
+    {
+        return genTableMapper.selectGenTableList(genTable);
+    }
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    @Override
+    public List<GenTable> selectDbTableList(GenTable genTable)
+    {
+        return genTableMapper.selectDbTableList(genTable);
+    }
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param tableNames 琛ㄥ悕绉扮粍
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    @Override
+    public List<GenTable> selectDbTableListByNames(String[] tableNames)
+    {
+        return genTableMapper.selectDbTableListByNames(tableNames);
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夎〃淇℃伅
+     * 
+     * @return 琛ㄤ俊鎭泦鍚�
+     */
+    @Override
+    public List<GenTable> selectGenTableAll()
+    {
+        return genTableMapper.selectGenTableAll();
+    }
+
+    /**
+     * 淇敼涓氬姟
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateGenTable(GenTable genTable)
+    {
+        String options = JSON.toJSONString(genTable.getParams());
+        genTable.setOptions(options);
+        int row = genTableMapper.updateGenTable(genTable);
+        if (row > 0)
+        {
+            for (GenTableColumn cenTableColumn : genTable.getColumns())
+            {
+                genTableColumnMapper.updateGenTableColumn(cenTableColumn);
+            }
+        }
+    }
+
+    /**
+     * 鍒犻櫎涓氬姟瀵硅薄
+     * 
+     * @param tableIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteGenTableByIds(Long[] tableIds)
+    {
+        genTableMapper.deleteGenTableByIds(tableIds);
+        genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
+    }
+
+    /**
+     * 瀵煎叆琛ㄧ粨鏋�
+     * 
+     * @param tableList 瀵煎叆琛ㄥ垪琛�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void importGenTable(List<GenTable> tableList)
+    {
+        String operName = SecurityUtils.getUsername();
+        try
+        {
+            for (GenTable table : tableList)
+            {
+                String tableName = table.getTableName();
+                GenUtils.initTable(table, operName);
+                int row = genTableMapper.insertGenTable(table);
+                if (row > 0)
+                {
+                    // 淇濆瓨鍒椾俊鎭�
+                    List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
+                    for (GenTableColumn column : genTableColumns)
+                    {
+                        GenUtils.initColumnField(column, table);
+                        genTableColumnMapper.insertGenTableColumn(column);
+                    }
+                }
+            }
+        }
+        catch (Exception e)
+        {
+            throw new ServiceException("瀵煎叆澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    /**
+     * 棰勮浠g爜
+     * 
+     * @param tableId 琛ㄧ紪鍙�
+     * @return 棰勮鏁版嵁鍒楄〃
+     */
+    @Override
+    public Map<String, String> previewCode(Long tableId)
+    {
+        Map<String, String> dataMap = new LinkedHashMap<>();
+        // 鏌ヨ琛ㄤ俊鎭�
+        GenTable table = genTableMapper.selectGenTableById(tableId);
+        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
+        setSubTable(table);
+        // 璁剧疆涓婚敭鍒椾俊鎭�
+        setPkColumn(table);
+        VelocityInitializer.initVelocity();
+
+        VelocityContext context = VelocityUtils.prepareContext(table);
+
+        // 鑾峰彇妯℃澘鍒楄〃
+        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
+        for (String template : templates)
+        {
+            // 娓叉煋妯℃澘
+            StringWriter sw = new StringWriter();
+            Template tpl = Velocity.getTemplate(template, Constants.UTF8);
+            tpl.merge(context, sw);
+            dataMap.put(template, sw.toString());
+        }
+        return dataMap;
+    }
+
+    /**
+     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 鏁版嵁
+     */
+    @Override
+    public byte[] downloadCode(String tableName)
+    {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        ZipOutputStream zip = new ZipOutputStream(outputStream);
+        generatorCode(tableName, zip);
+        IOUtils.closeQuietly(zip);
+        return outputStream.toByteArray();
+    }
+
+    /**
+     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     */
+    @Override
+    public void generatorCode(String tableName)
+    {
+        // 鏌ヨ琛ㄤ俊鎭�
+        GenTable table = genTableMapper.selectGenTableByName(tableName);
+        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
+        setSubTable(table);
+        // 璁剧疆涓婚敭鍒椾俊鎭�
+        setPkColumn(table);
+
+        VelocityInitializer.initVelocity();
+
+        VelocityContext context = VelocityUtils.prepareContext(table);
+
+        // 鑾峰彇妯℃澘鍒楄〃
+        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
+        for (String template : templates)
+        {
+            if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
+            {
+                // 娓叉煋妯℃澘
+                StringWriter sw = new StringWriter();
+                Template tpl = Velocity.getTemplate(template, Constants.UTF8);
+                tpl.merge(context, sw);
+                try
+                {
+                    String path = getGenPath(table, template);
+                    FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
+                }
+                catch (IOException e)
+                {
+                    throw new ServiceException("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName());
+                }
+            }
+        }
+    }
+
+    /**
+     * 鍚屾鏁版嵁搴�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void synchDb(String tableName)
+    {
+        GenTable table = genTableMapper.selectGenTableByName(tableName);
+        List<GenTableColumn> tableColumns = table.getColumns();
+        Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
+
+        List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
+        if (StringUtils.isEmpty(dbTableColumns))
+        {
+            throw new ServiceException("鍚屾鏁版嵁澶辫触锛屽師琛ㄧ粨鏋勪笉瀛樺湪");
+        }
+        List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
+
+        dbTableColumns.forEach(column -> {
+            GenUtils.initColumnField(column, table);
+            if (tableColumnMap.containsKey(column.getColumnName()))
+            {
+                GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName());
+                column.setColumnId(prevColumn.getColumnId());
+                if (column.isList())
+                {
+                    // 濡傛灉鏄垪琛紝缁х画淇濈暀鏌ヨ鏂瑰紡/瀛楀吀绫诲瀷閫夐」
+                    column.setDictType(prevColumn.getDictType());
+                    column.setQueryType(prevColumn.getQueryType());
+                }
+                if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk()
+                        && (column.isInsert() || column.isEdit())
+                        && ((column.isUsableColumn()) || (!column.isSuperColumn())))
+                {
+                    // 濡傛灉鏄�(鏂板/淇敼&闈炰富閿�/闈炲拷鐣ュ強鐖跺睘鎬�)锛岀户缁繚鐣欏繀濉�/鏄剧ず绫诲瀷閫夐」
+                    column.setIsRequired(prevColumn.getIsRequired());
+                    column.setHtmlType(prevColumn.getHtmlType());
+                }
+                genTableColumnMapper.updateGenTableColumn(column);
+            }
+            else
+            {
+                genTableColumnMapper.insertGenTableColumn(column);
+            }
+        });
+
+        List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(delColumns))
+        {
+            genTableColumnMapper.deleteGenTableColumns(delColumns);
+        }
+    }
+
+    /**
+     * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
+     * 
+     * @param tableNames 琛ㄦ暟缁�
+     * @return 鏁版嵁
+     */
+    @Override
+    public byte[] downloadCode(String[] tableNames)
+    {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        ZipOutputStream zip = new ZipOutputStream(outputStream);
+        for (String tableName : tableNames)
+        {
+            generatorCode(tableName, zip);
+        }
+        IOUtils.closeQuietly(zip);
+        return outputStream.toByteArray();
+    }
+
+    /**
+     * 鏌ヨ琛ㄤ俊鎭苟鐢熸垚浠g爜
+     */
+    private void generatorCode(String tableName, ZipOutputStream zip)
+    {
+        // 鏌ヨ琛ㄤ俊鎭�
+        GenTable table = genTableMapper.selectGenTableByName(tableName);
+        // 璁剧疆涓诲瓙琛ㄤ俊鎭�
+        setSubTable(table);
+        // 璁剧疆涓婚敭鍒椾俊鎭�
+        setPkColumn(table);
+
+        VelocityInitializer.initVelocity();
+
+        VelocityContext context = VelocityUtils.prepareContext(table);
+
+        // 鑾峰彇妯℃澘鍒楄〃
+        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory(), table.getTplWebType());
+        for (String template : templates)
+        {
+            // 娓叉煋妯℃澘
+            StringWriter sw = new StringWriter();
+            Template tpl = Velocity.getTemplate(template, Constants.UTF8);
+            tpl.merge(context, sw);
+            try
+            {
+                // 娣诲姞鍒皕ip
+                zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
+                IOUtils.write(sw.toString(), zip, Constants.UTF8);
+                IOUtils.closeQuietly(sw);
+                zip.flush();
+                zip.closeEntry();
+            }
+            catch (IOException e)
+            {
+                log.error("娓叉煋妯℃澘澶辫触锛岃〃鍚嶏細" + table.getTableName(), e);
+            }
+        }
+    }
+
+    /**
+     * 淇敼淇濆瓨鍙傛暟鏍¢獙
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     */
+    @Override
+    public void validateEdit(GenTable genTable)
+    {
+        if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
+        {
+            String options = JSON.toJSONString(genTable.getParams());
+            JSONObject paramsObj = JSON.parseObject(options);
+            if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE)))
+            {
+                throw new ServiceException("鏍戠紪鐮佸瓧娈典笉鑳戒负绌�");
+            }
+            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
+            {
+                throw new ServiceException("鏍戠埗缂栫爜瀛楁涓嶈兘涓虹┖");
+            }
+            else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
+            {
+                throw new ServiceException("鏍戝悕绉板瓧娈典笉鑳戒负绌�");
+            }
+            else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory()))
+            {
+                if (StringUtils.isEmpty(genTable.getSubTableName()))
+                {
+                    throw new ServiceException("鍏宠仈瀛愯〃鐨勮〃鍚嶄笉鑳戒负绌�");
+                }
+                else if (StringUtils.isEmpty(genTable.getSubTableFkName()))
+                {
+                    throw new ServiceException("瀛愯〃鍏宠仈鐨勫閿悕涓嶈兘涓虹┖");
+                }
+            }
+        }
+    }
+
+    /**
+     * 璁剧疆涓婚敭鍒椾俊鎭�
+     * 
+     * @param table 涓氬姟琛ㄤ俊鎭�
+     */
+    public void setPkColumn(GenTable table)
+    {
+        for (GenTableColumn column : table.getColumns())
+        {
+            if (column.isPk())
+            {
+                table.setPkColumn(column);
+                break;
+            }
+        }
+        if (StringUtils.isNull(table.getPkColumn()))
+        {
+            table.setPkColumn(table.getColumns().get(0));
+        }
+        if (GenConstants.TPL_SUB.equals(table.getTplCategory()))
+        {
+            for (GenTableColumn column : table.getSubTable().getColumns())
+            {
+                if (column.isPk())
+                {
+                    table.getSubTable().setPkColumn(column);
+                    break;
+                }
+            }
+            if (StringUtils.isNull(table.getSubTable().getPkColumn()))
+            {
+                table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
+            }
+        }
+    }
+
+    /**
+     * 璁剧疆涓诲瓙琛ㄤ俊鎭�
+     * 
+     * @param table 涓氬姟琛ㄤ俊鎭�
+     */
+    public void setSubTable(GenTable table)
+    {
+        String subTableName = table.getSubTableName();
+        if (StringUtils.isNotEmpty(subTableName))
+        {
+            table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
+        }
+    }
+
+    /**
+     * 璁剧疆浠g爜鐢熸垚鍏朵粬閫夐」鍊�
+     * 
+     * @param genTable 璁剧疆鍚庣殑鐢熸垚瀵硅薄
+     */
+    public void setTableFromOptions(GenTable genTable)
+    {
+        JSONObject paramsObj = JSON.parseObject(genTable.getOptions());
+        if (StringUtils.isNotNull(paramsObj))
+        {
+            String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
+            String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
+            String treeName = paramsObj.getString(GenConstants.TREE_NAME);
+            String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID);
+            String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME);
+
+            genTable.setTreeCode(treeCode);
+            genTable.setTreeParentCode(treeParentCode);
+            genTable.setTreeName(treeName);
+            genTable.setParentMenuId(parentMenuId);
+            genTable.setParentMenuName(parentMenuName);
+        }
+    }
+
+    /**
+     * 鑾峰彇浠g爜鐢熸垚鍦板潃
+     * 
+     * @param table 涓氬姟琛ㄤ俊鎭�
+     * @param template 妯℃澘鏂囦欢璺緞
+     * @return 鐢熸垚鍦板潃
+     */
+    public static String getGenPath(GenTable table, String template)
+    {
+        String genPath = table.getGenPath();
+        if (StringUtils.equals(genPath, "/"))
+        {
+            return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
+        }
+        return genPath + File.separator + VelocityUtils.getFileName(template, table);
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java
new file mode 100644
index 0000000..0a0c6af
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableColumnService.java
@@ -0,0 +1,44 @@
+package com.se.gen.service;
+
+import java.util.List;
+import com.se.gen.domain.GenTableColumn;
+
+/**
+ * 涓氬姟瀛楁 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface IGenTableColumnService
+{
+    /**
+     * 鏌ヨ涓氬姟瀛楁鍒楄〃
+     * 
+     * @param tableId 涓氬姟瀛楁缂栧彿
+     * @return 涓氬姟瀛楁闆嗗悎
+     */
+    public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);
+
+    /**
+     * 鏂板涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertGenTableColumn(GenTableColumn genTableColumn);
+
+    /**
+     * 淇敼涓氬姟瀛楁
+     * 
+     * @param genTableColumn 涓氬姟瀛楁淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateGenTableColumn(GenTableColumn genTableColumn);
+
+    /**
+     * 鍒犻櫎涓氬姟瀛楁淇℃伅
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteGenTableColumnByIds(String ids);
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java
new file mode 100644
index 0000000..ff8cd09
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/service/IGenTableService.java
@@ -0,0 +1,121 @@
+package com.se.gen.service;
+
+import java.util.List;
+import java.util.Map;
+import com.se.gen.domain.GenTable;
+
+/**
+ * 涓氬姟 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface IGenTableService
+{
+    /**
+     * 鏌ヨ涓氬姟鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 涓氬姟闆嗗悎
+     */
+    public List<GenTable> selectGenTableList(GenTable genTable);
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    public List<GenTable> selectDbTableList(GenTable genTable);
+
+    /**
+     * 鏌ヨ鎹簱鍒楄〃
+     * 
+     * @param tableNames 琛ㄥ悕绉扮粍
+     * @return 鏁版嵁搴撹〃闆嗗悎
+     */
+    public List<GenTable> selectDbTableListByNames(String[] tableNames);
+
+    /**
+     * 鏌ヨ鎵�鏈夎〃淇℃伅
+     * 
+     * @return 琛ㄤ俊鎭泦鍚�
+     */
+    public List<GenTable> selectGenTableAll();
+
+    /**
+     * 鏌ヨ涓氬姟淇℃伅
+     * 
+     * @param id 涓氬姟ID
+     * @return 涓氬姟淇℃伅
+     */
+    public GenTable selectGenTableById(Long id);
+
+    /**
+     * 淇敼涓氬姟
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     * @return 缁撴灉
+     */
+    public void updateGenTable(GenTable genTable);
+
+    /**
+     * 鍒犻櫎涓氬姟淇℃伅
+     * 
+     * @param tableIds 闇�瑕佸垹闄ょ殑琛ㄦ暟鎹甀D
+     * @return 缁撴灉
+     */
+    public void deleteGenTableByIds(Long[] tableIds);
+
+    /**
+     * 瀵煎叆琛ㄧ粨鏋�
+     * 
+     * @param tableList 瀵煎叆琛ㄥ垪琛�
+     */
+    public void importGenTable(List<GenTable> tableList);
+
+    /**
+     * 棰勮浠g爜
+     * 
+     * @param tableId 琛ㄧ紪鍙�
+     * @return 棰勮鏁版嵁鍒楄〃
+     */
+    public Map<String, String> previewCode(Long tableId);
+
+    /**
+     * 鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 鏁版嵁
+     */
+    public byte[] downloadCode(String tableName);
+
+    /**
+     * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 鏁版嵁
+     */
+    public void generatorCode(String tableName);
+
+    /**
+     * 鍚屾鏁版嵁搴�
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     */
+    public void synchDb(String tableName);
+
+    /**
+     * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級
+     * 
+     * @param tableNames 琛ㄦ暟缁�
+     * @return 鏁版嵁
+     */
+    public byte[] downloadCode(String[] tableNames);
+
+    /**
+     * 淇敼淇濆瓨鍙傛暟鏍¢獙
+     * 
+     * @param genTable 涓氬姟淇℃伅
+     */
+    public void validateEdit(GenTable genTable);
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java
new file mode 100644
index 0000000..a312d92
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/GenUtils.java
@@ -0,0 +1,258 @@
+package com.se.gen.util;
+
+import java.util.Arrays;
+
+import com.se.gen.config.GenConfig;
+import com.se.gen.domain.GenTableColumn;
+import org.apache.commons.lang3.RegExUtils;
+import com.se.common.core.constant.GenConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.gen.domain.GenTable;
+
+/**
+ * 浠g爜鐢熸垚鍣� 宸ュ叿绫�
+ * 
+ * @author admin
+ */
+public class GenUtils
+{
+    /**
+     * 鍒濆鍖栬〃淇℃伅
+     */
+    public static void initTable(GenTable genTable, String operName)
+    {
+        genTable.setClassName(convertClassName(genTable.getTableName()));
+        genTable.setPackageName(GenConfig.getPackageName());
+        genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
+        genTable.setBusinessName(getBusinessName(genTable.getTableName()));
+        genTable.setFunctionName(replaceText(genTable.getTableComment()));
+        genTable.setFunctionAuthor(GenConfig.getAuthor());
+        genTable.setCreateBy(operName);
+    }
+
+    /**
+     * 鍒濆鍖栧垪灞炴�у瓧娈�
+     */
+    public static void initColumnField(GenTableColumn column, GenTable table)
+    {
+        String dataType = getDbType(column.getColumnType());
+        String columnName = column.getColumnName();
+        column.setTableId(table.getTableId());
+        column.setCreateBy(table.getCreateBy());
+        // 璁剧疆java瀛楁鍚�
+        column.setJavaField(StringUtils.toCamelCase(columnName));
+        // 璁剧疆榛樿绫诲瀷
+        column.setJavaType(GenConstants.TYPE_STRING);
+        column.setQueryType(GenConstants.QUERY_EQ);
+
+        if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType))
+        {
+            // 瀛楃涓查暱搴﹁秴杩�500璁剧疆涓烘枃鏈煙
+            Integer columnLength = getColumnLength(column.getColumnType());
+            String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
+            column.setHtmlType(htmlType);
+        }
+        else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType))
+        {
+            column.setJavaType(GenConstants.TYPE_DATE);
+            column.setHtmlType(GenConstants.HTML_DATETIME);
+        }
+        else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType))
+        {
+            column.setHtmlType(GenConstants.HTML_INPUT);
+
+            // 濡傛灉鏄诞鐐瑰瀷 缁熶竴鐢˙igDecimal
+            String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
+            if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
+            {
+                column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
+            }
+            // 濡傛灉鏄暣褰�
+            else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10)
+            {
+                column.setJavaType(GenConstants.TYPE_INTEGER);
+            }
+            // 闀挎暣褰�
+            else
+            {
+                column.setJavaType(GenConstants.TYPE_LONG);
+            }
+        }
+
+        // 鎻掑叆瀛楁锛堥粯璁ゆ墍鏈夊瓧娈甸兘闇�瑕佹彃鍏ワ級
+        column.setIsInsert(GenConstants.REQUIRE);
+
+        // 缂栬緫瀛楁
+        if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk())
+        {
+            column.setIsEdit(GenConstants.REQUIRE);
+        }
+        // 鍒楄〃瀛楁
+        if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk())
+        {
+            column.setIsList(GenConstants.REQUIRE);
+        }
+        // 鏌ヨ瀛楁
+        if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk())
+        {
+            column.setIsQuery(GenConstants.REQUIRE);
+        }
+
+        // 鏌ヨ瀛楁绫诲瀷
+        if (StringUtils.endsWithIgnoreCase(columnName, "name"))
+        {
+            column.setQueryType(GenConstants.QUERY_LIKE);
+        }
+        // 鐘舵�佸瓧娈佃缃崟閫夋
+        if (StringUtils.endsWithIgnoreCase(columnName, "status"))
+        {
+            column.setHtmlType(GenConstants.HTML_RADIO);
+        }
+        // 绫诲瀷&鎬у埆瀛楁璁剧疆涓嬫媺妗�
+        else if (StringUtils.endsWithIgnoreCase(columnName, "type")
+                || StringUtils.endsWithIgnoreCase(columnName, "sex"))
+        {
+            column.setHtmlType(GenConstants.HTML_SELECT);
+        }
+        // 鍥剧墖瀛楁璁剧疆鍥剧墖涓婁紶鎺т欢
+        else if (StringUtils.endsWithIgnoreCase(columnName, "image"))
+        {
+            column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
+        }
+        // 鏂囦欢瀛楁璁剧疆鏂囦欢涓婁紶鎺т欢
+        else if (StringUtils.endsWithIgnoreCase(columnName, "file"))
+        {
+            column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
+        }
+        // 鍐呭瀛楁璁剧疆瀵屾枃鏈帶浠�
+        else if (StringUtils.endsWithIgnoreCase(columnName, "content"))
+        {
+            column.setHtmlType(GenConstants.HTML_EDITOR);
+        }
+    }
+
+    /**
+     * 鏍¢獙鏁扮粍鏄惁鍖呭惈鎸囧畾鍊�
+     * 
+     * @param arr 鏁扮粍
+     * @param targetValue 鍊�
+     * @return 鏄惁鍖呭惈
+     */
+    public static boolean arraysContains(String[] arr, String targetValue)
+    {
+        return Arrays.asList(arr).contains(targetValue);
+    }
+
+    /**
+     * 鑾峰彇妯″潡鍚�
+     * 
+     * @param packageName 鍖呭悕
+     * @return 妯″潡鍚�
+     */
+    public static String getModuleName(String packageName)
+    {
+        int lastIndex = packageName.lastIndexOf(".");
+        int nameLength = packageName.length();
+        return StringUtils.substring(packageName, lastIndex + 1, nameLength);
+    }
+
+    /**
+     * 鑾峰彇涓氬姟鍚�
+     * 
+     * @param tableName 琛ㄥ悕
+     * @return 涓氬姟鍚�
+     */
+    public static String getBusinessName(String tableName)
+    {
+        int lastIndex = tableName.lastIndexOf("_");
+        int nameLength = tableName.length();
+        return StringUtils.substring(tableName, lastIndex + 1, nameLength);
+    }
+
+    /**
+     * 琛ㄥ悕杞崲鎴怞ava绫诲悕
+     * 
+     * @param tableName 琛ㄥ悕绉�
+     * @return 绫诲悕
+     */
+    public static String convertClassName(String tableName)
+    {
+        boolean autoRemovePre = GenConfig.getAutoRemovePre();
+        String tablePrefix = GenConfig.getTablePrefix();
+        if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix))
+        {
+            String[] searchList = StringUtils.split(tablePrefix, ",");
+            tableName = replaceFirst(tableName, searchList);
+        }
+        return StringUtils.convertToCamelCase(tableName);
+    }
+
+    /**
+     * 鎵归噺鏇挎崲鍓嶇紑
+     * 
+     * @param replacementm 鏇挎崲鍊�
+     * @param searchList 鏇挎崲鍒楄〃
+     * @return
+     */
+    public static String replaceFirst(String replacementm, String[] searchList)
+    {
+        String text = replacementm;
+        for (String searchString : searchList)
+        {
+            if (replacementm.startsWith(searchString))
+            {
+                text = replacementm.replaceFirst(searchString, "");
+                break;
+            }
+        }
+        return text;
+    }
+
+    /**
+     * 鍏抽敭瀛楁浛鎹�
+     * 
+     * @param text 闇�瑕佽鏇挎崲鐨勫悕瀛�
+     * @return 鏇挎崲鍚庣殑鍚嶅瓧
+     */
+    public static String replaceText(String text)
+    {
+        return RegExUtils.replaceAll(text, "(?:琛▅鑻ヤ緷)", "");
+    }
+
+    /**
+     * 鑾峰彇鏁版嵁搴撶被鍨嬪瓧娈�
+     * 
+     * @param columnType 鍒楃被鍨�
+     * @return 鎴彇鍚庣殑鍒楃被鍨�
+     */
+    public static String getDbType(String columnType)
+    {
+        if (StringUtils.indexOf(columnType, "(") > 0)
+        {
+            return StringUtils.substringBefore(columnType, "(");
+        }
+        else
+        {
+            return columnType;
+        }
+    }
+
+    /**
+     * 鑾峰彇瀛楁闀垮害
+     * 
+     * @param columnType 鍒楃被鍨�
+     * @return 鎴彇鍚庣殑鍒楃被鍨�
+     */
+    public static Integer getColumnLength(String columnType)
+    {
+        if (StringUtils.indexOf(columnType, "(") > 0)
+        {
+            String length = StringUtils.substringBetween(columnType, "(", ")");
+            return Integer.valueOf(length);
+        }
+        else
+        {
+            return 0;
+        }
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java
new file mode 100644
index 0000000..5301486
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityInitializer.java
@@ -0,0 +1,34 @@
+package com.se.gen.util;
+
+import java.util.Properties;
+import org.apache.velocity.app.Velocity;
+import com.se.common.core.constant.Constants;
+
+/**
+ * VelocityEngine宸ュ巶
+ * 
+ * @author admin
+ */
+public class VelocityInitializer
+{
+    /**
+     * 鍒濆鍖杤m鏂规硶
+     */
+    public static void initVelocity()
+    {
+        Properties p = new Properties();
+        try
+        {
+            // 鍔犺浇classpath鐩綍涓嬬殑vm鏂囦欢
+            p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+            // 瀹氫箟瀛楃闆�
+            p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8);
+            // 鍒濆鍖朧elocity寮曟搸锛屾寚瀹氶厤缃甈roperties
+            Velocity.init(p);
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java
new file mode 100644
index 0000000..f9de77c
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/java/com/se/gen/util/VelocityUtils.java
@@ -0,0 +1,409 @@
+package com.se.gen.util;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.se.gen.domain.GenTableColumn;
+import org.apache.velocity.VelocityContext;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.se.common.core.constant.GenConstants;
+import com.se.common.core.utils.DateUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.gen.domain.GenTable;
+
+/**
+ * 妯℃澘宸ュ叿绫�
+ * 
+ * @author admin
+ */
+public class VelocityUtils
+{
+    /** 椤圭洰绌洪棿璺緞 */
+    private static final String PROJECT_PATH = "main/java";
+
+    /** mybatis绌洪棿璺緞 */
+    private static final String MYBATIS_PATH = "main/resources/mapper";
+
+    /** 榛樿涓婄骇鑿滃崟锛岀郴缁熷伐鍏� */
+    private static final String DEFAULT_PARENT_MENU_ID = "3";
+
+    /**
+     * 璁剧疆妯℃澘鍙橀噺淇℃伅
+     *
+     * @return 妯℃澘鍒楄〃
+     */
+    public static VelocityContext prepareContext(GenTable genTable)
+    {
+        String moduleName = genTable.getModuleName();
+        String businessName = genTable.getBusinessName();
+        String packageName = genTable.getPackageName();
+        String tplCategory = genTable.getTplCategory();
+        String functionName = genTable.getFunctionName();
+
+        VelocityContext velocityContext = new VelocityContext();
+        velocityContext.put("tplCategory", genTable.getTplCategory());
+        velocityContext.put("tableName", genTable.getTableName());
+        velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "銆愯濉啓鍔熻兘鍚嶇О銆�");
+        velocityContext.put("ClassName", genTable.getClassName());
+        velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName()));
+        velocityContext.put("moduleName", genTable.getModuleName());
+        velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName()));
+        velocityContext.put("businessName", genTable.getBusinessName());
+        velocityContext.put("basePackage", getPackagePrefix(packageName));
+        velocityContext.put("packageName", packageName);
+        velocityContext.put("author", genTable.getFunctionAuthor());
+        velocityContext.put("datetime", DateUtils.getDate());
+        velocityContext.put("pkColumn", genTable.getPkColumn());
+        velocityContext.put("importList", getImportList(genTable));
+        velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
+        velocityContext.put("columns", genTable.getColumns());
+        velocityContext.put("table", genTable);
+        velocityContext.put("dicts", getDicts(genTable));
+        setMenuVelocityContext(velocityContext, genTable);
+        if (GenConstants.TPL_TREE.equals(tplCategory))
+        {
+            setTreeVelocityContext(velocityContext, genTable);
+        }
+        if (GenConstants.TPL_SUB.equals(tplCategory))
+        {
+            setSubVelocityContext(velocityContext, genTable);
+        }
+        return velocityContext;
+    }
+
+    public static void setMenuVelocityContext(VelocityContext context, GenTable genTable)
+    {
+        String options = genTable.getOptions();
+        JSONObject paramsObj = JSON.parseObject(options);
+        String parentMenuId = getParentMenuId(paramsObj);
+        context.put("parentMenuId", parentMenuId);
+    }
+
+    public static void setTreeVelocityContext(VelocityContext context, GenTable genTable)
+    {
+        String options = genTable.getOptions();
+        JSONObject paramsObj = JSON.parseObject(options);
+        String treeCode = getTreecode(paramsObj);
+        String treeParentCode = getTreeParentCode(paramsObj);
+        String treeName = getTreeName(paramsObj);
+
+        context.put("treeCode", treeCode);
+        context.put("treeParentCode", treeParentCode);
+        context.put("treeName", treeName);
+        context.put("expandColumn", getExpandColumn(genTable));
+        if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
+        {
+            context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE));
+        }
+        if (paramsObj.containsKey(GenConstants.TREE_NAME))
+        {
+            context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME));
+        }
+    }
+
+    public static void setSubVelocityContext(VelocityContext context, GenTable genTable)
+    {
+        GenTable subTable = genTable.getSubTable();
+        String subTableName = genTable.getSubTableName();
+        String subTableFkName = genTable.getSubTableFkName();
+        String subClassName = genTable.getSubTable().getClassName();
+        String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName);
+
+        context.put("subTable", subTable);
+        context.put("subTableName", subTableName);
+        context.put("subTableFkName", subTableFkName);
+        context.put("subTableFkClassName", subTableFkClassName);
+        context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName));
+        context.put("subClassName", subClassName);
+        context.put("subclassName", StringUtils.uncapitalize(subClassName));
+        context.put("subImportList", getImportList(genTable.getSubTable()));
+    }
+
+    /**
+     * 鑾峰彇妯℃澘淇℃伅
+     * @param tplCategory 鐢熸垚鐨勬ā鏉�
+     * @param tplWebType 鍓嶇绫诲瀷
+     * @return 妯℃澘鍒楄〃
+     */
+    public static List<String> getTemplateList(String tplCategory, String tplWebType)
+    {
+        String useWebType = "vm/vue";
+        if ("element-plus".equals(tplWebType))
+        {
+            useWebType = "vm/vue/v3";
+        }
+        List<String> templates = new ArrayList<String>();
+        templates.add("vm/java/domain.java.vm");
+        templates.add("vm/java/mapper.java.vm");
+        templates.add("vm/java/service.java.vm");
+        templates.add("vm/java/serviceImpl.java.vm");
+        templates.add("vm/java/controller.java.vm");
+        templates.add("vm/xml/mapper.xml.vm");
+        templates.add("vm/sql/sql.vm");
+        templates.add("vm/js/api.js.vm");
+        if (GenConstants.TPL_CRUD.equals(tplCategory))
+        {
+            templates.add(useWebType + "/index.vue.vm");
+        }
+        else if (GenConstants.TPL_TREE.equals(tplCategory))
+        {
+            templates.add(useWebType + "/index-tree.vue.vm");
+        }
+        else if (GenConstants.TPL_SUB.equals(tplCategory))
+        {
+            templates.add(useWebType + "/index.vue.vm");
+            templates.add("vm/java/sub-domain.java.vm");
+        }
+        return templates;
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢鍚�
+     */
+    public static String getFileName(String template, GenTable genTable)
+    {
+        // 鏂囦欢鍚嶇О
+        String fileName = "";
+        // 鍖呰矾寰�
+        String packageName = genTable.getPackageName();
+        // 妯″潡鍚�
+        String moduleName = genTable.getModuleName();
+        // 澶у啓绫诲悕
+        String className = genTable.getClassName();
+        // 涓氬姟鍚嶇О
+        String businessName = genTable.getBusinessName();
+
+        String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/");
+        String mybatisPath = MYBATIS_PATH + "/" + moduleName;
+        String vuePath = "vue";
+
+        if (template.contains("domain.java.vm"))
+        {
+            fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
+        }
+        if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
+        {
+            fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
+        }
+        else if (template.contains("mapper.java.vm"))
+        {
+            fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
+        }
+        else if (template.contains("service.java.vm"))
+        {
+            fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
+        }
+        else if (template.contains("serviceImpl.java.vm"))
+        {
+            fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
+        }
+        else if (template.contains("controller.java.vm"))
+        {
+            fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
+        }
+        else if (template.contains("mapper.xml.vm"))
+        {
+            fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
+        }
+        else if (template.contains("sql.vm"))
+        {
+            fileName = businessName + "Menu.sql";
+        }
+        else if (template.contains("api.js.vm"))
+        {
+            fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
+        }
+        else if (template.contains("index.vue.vm"))
+        {
+            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
+        }
+        else if (template.contains("index-tree.vue.vm"))
+        {
+            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
+        }
+        return fileName;
+    }
+
+    /**
+     * 鑾峰彇鍖呭墠缂�
+     *
+     * @param packageName 鍖呭悕绉�
+     * @return 鍖呭墠缂�鍚嶇О
+     */
+    public static String getPackagePrefix(String packageName)
+    {
+        int lastIndex = packageName.lastIndexOf(".");
+        return StringUtils.substring(packageName, 0, lastIndex);
+    }
+
+    /**
+     * 鏍规嵁鍒楃被鍨嬭幏鍙栧鍏ュ寘
+     * 
+     * @param genTable 涓氬姟琛ㄥ璞�
+     * @return 杩斿洖闇�瑕佸鍏ョ殑鍖呭垪琛�
+     */
+    public static HashSet<String> getImportList(GenTable genTable)
+    {
+        List<GenTableColumn> columns = genTable.getColumns();
+        GenTable subGenTable = genTable.getSubTable();
+        HashSet<String> importList = new HashSet<String>();
+        if (StringUtils.isNotNull(subGenTable))
+        {
+            importList.add("java.util.List");
+        }
+        for (GenTableColumn column : columns)
+        {
+            if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType()))
+            {
+                importList.add("java.util.Date");
+                importList.add("com.fasterxml.jackson.annotation.JsonFormat");
+            }
+            else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType()))
+            {
+                importList.add("java.math.BigDecimal");
+            }
+        }
+        return importList;
+    }
+
+    /**
+     * 鏍规嵁鍒楃被鍨嬭幏鍙栧瓧鍏哥粍
+     * 
+     * @param genTable 涓氬姟琛ㄥ璞�
+     * @return 杩斿洖瀛楀吀缁�
+     */
+    public static String getDicts(GenTable genTable)
+    {
+        List<GenTableColumn> columns = genTable.getColumns();
+        Set<String> dicts = new HashSet<String>();
+        addDicts(dicts, columns);
+        if (StringUtils.isNotNull(genTable.getSubTable()))
+        {
+            List<GenTableColumn> subColumns = genTable.getSubTable().getColumns();
+            addDicts(dicts, subColumns);
+        }
+        return StringUtils.join(dicts, ", ");
+    }
+
+    /**
+     * 娣诲姞瀛楀吀鍒楄〃
+     * 
+     * @param dicts 瀛楀吀鍒楄〃
+     * @param columns 鍒楅泦鍚�
+     */
+    public static void addDicts(Set<String> dicts, List<GenTableColumn> columns)
+    {
+        for (GenTableColumn column : columns)
+        {
+            if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny(
+                    column.getHtmlType(),
+                    new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX }))
+            {
+                dicts.add("'" + column.getDictType() + "'");
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇鏉冮檺鍓嶇紑
+     *
+     * @param moduleName 妯″潡鍚嶇О
+     * @param businessName 涓氬姟鍚嶇О
+     * @return 杩斿洖鏉冮檺鍓嶇紑
+     */
+    public static String getPermissionPrefix(String moduleName, String businessName)
+    {
+        return StringUtils.format("{}:{}", moduleName, businessName);
+    }
+
+    /**
+     * 鑾峰彇涓婄骇鑿滃崟ID瀛楁
+     *
+     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
+     * @return 涓婄骇鑿滃崟ID瀛楁
+     */
+    public static String getParentMenuId(JSONObject paramsObj)
+    {
+        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
+                && StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID)))
+        {
+            return paramsObj.getString(GenConstants.PARENT_MENU_ID);
+        }
+        return DEFAULT_PARENT_MENU_ID;
+    }
+
+    /**
+     * 鑾峰彇鏍戠紪鐮�
+     *
+     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
+     * @return 鏍戠紪鐮�
+     */
+    public static String getTreecode(JSONObject paramsObj)
+    {
+        if (paramsObj.containsKey(GenConstants.TREE_CODE))
+        {
+            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE));
+        }
+        return StringUtils.EMPTY;
+    }
+
+    /**
+     * 鑾峰彇鏍戠埗缂栫爜
+     *
+     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
+     * @return 鏍戠埗缂栫爜
+     */
+    public static String getTreeParentCode(JSONObject paramsObj)
+    {
+        if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
+        {
+            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE));
+        }
+        return StringUtils.EMPTY;
+    }
+
+    /**
+     * 鑾峰彇鏍戝悕绉�
+     *
+     * @param paramsObj 鐢熸垚鍏朵粬閫夐」
+     * @return 鏍戝悕绉�
+     */
+    public static String getTreeName(JSONObject paramsObj)
+    {
+        if (paramsObj.containsKey(GenConstants.TREE_NAME))
+        {
+            return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME));
+        }
+        return StringUtils.EMPTY;
+    }
+
+    /**
+     * 鑾峰彇闇�瑕佸湪鍝竴鍒椾笂闈㈡樉绀哄睍寮�鎸夐挳
+     *
+     * @param genTable 涓氬姟琛ㄥ璞�
+     * @return 灞曞紑鎸夐挳鍒楀簭鍙�
+     */
+    public static int getExpandColumn(GenTable genTable)
+    {
+        String options = genTable.getOptions();
+        JSONObject paramsObj = JSON.parseObject(options);
+        String treeName = paramsObj.getString(GenConstants.TREE_NAME);
+        int num = 0;
+        for (GenTableColumn column : genTable.getColumns())
+        {
+            if (column.isList())
+            {
+                num++;
+                String columnName = column.getColumnName();
+                if (columnName.equals(treeName))
+                {
+                    break;
+                }
+            }
+        }
+        return num;
+    }
+}
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/banner.txt b/ruoyi-modules/se-gen/src/main/resources/banner.txt
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/banner.txt
rename to ruoyi-modules/se-gen/src/main/resources/banner.txt
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/se-gen/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
rename to ruoyi-modules/se-gen/src/main/resources/bootstrap.yml
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml b/ruoyi-modules/se-gen/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/logback.xml
rename to ruoyi-modules/se-gen/src/main/resources/logback.xml
diff --git a/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
new file mode 100644
index 0000000..57726e8
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableColumnMapper.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.se.gen.mapper.GenTableColumnMapper">
+
+    <resultMap type="GenTableColumn" id="GenTableColumnResult">
+        <id     property="columnId"       column="column_id"      />
+        <result property="tableId"        column="table_id"       />
+        <result property="columnName"     column="column_name"    />
+        <result property="columnComment"  column="column_comment" />
+        <result property="columnType"     column="column_type"    />
+        <result property="javaType"       column="java_type"      />
+        <result property="javaField"      column="java_field"     />
+        <result property="isPk"           column="is_pk"          />
+        <result property="isIncrement"    column="is_increment"   />
+        <result property="isRequired"     column="is_required"    />
+        <result property="isInsert"       column="is_insert"      />
+        <result property="isEdit"         column="is_edit"        />
+        <result property="isList"         column="is_list"        />
+        <result property="isQuery"        column="is_query"       />
+        <result property="queryType"      column="query_type"     />
+        <result property="htmlType"       column="html_type"      />
+        <result property="dictType"       column="dict_type"      />
+        <result property="sort"           column="sort"           />
+        <result property="createBy"       column="create_by"      />
+        <result property="createTime"     column="create_time"    />
+        <result property="updateBy"       column="update_by"      />
+        <result property="updateTime"     column="update_time"    />
+    </resultMap>
+
+	<sql id="selectGenTableColumnVo">
+        select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column
+    </sql>
+
+    <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult">
+        <include refid="selectGenTableColumnVo"/>
+        where table_id = #{tableId}
+        order by sort
+    </select>
+
+    <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
+		select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
+		from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
+		order by ordinal_position
+	</select>
+
+    <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId">
+        insert into gen_table_column (
+			<if test="tableId != null and tableId != ''">table_id,</if>
+			<if test="columnName != null and columnName != ''">column_name,</if>
+			<if test="columnComment != null and columnComment != ''">column_comment,</if>
+			<if test="columnType != null and columnType != ''">column_type,</if>
+			<if test="javaType != null and javaType != ''">java_type,</if>
+			<if test="javaField != null  and javaField != ''">java_field,</if>
+			<if test="isPk != null and isPk != ''">is_pk,</if>
+			<if test="isIncrement != null and isIncrement != ''">is_increment,</if>
+			<if test="isRequired != null and isRequired != ''">is_required,</if>
+			<if test="isInsert != null and isInsert != ''">is_insert,</if>
+			<if test="isEdit != null and isEdit != ''">is_edit,</if>
+			<if test="isList != null and isList != ''">is_list,</if>
+			<if test="isQuery != null and isQuery != ''">is_query,</if>
+			<if test="queryType != null and queryType != ''">query_type,</if>
+			<if test="htmlType != null and htmlType != ''">html_type,</if>
+			<if test="dictType != null and dictType != ''">dict_type,</if>
+			<if test="sort != null">sort,</if>
+			<if test="createBy != null and createBy != ''">create_by,</if>
+			create_time
+         )values(
+			<if test="tableId != null and tableId != ''">#{tableId},</if>
+			<if test="columnName != null and columnName != ''">#{columnName},</if>
+			<if test="columnComment != null and columnComment != ''">#{columnComment},</if>
+			<if test="columnType != null and columnType != ''">#{columnType},</if>
+			<if test="javaType != null and javaType != ''">#{javaType},</if>
+			<if test="javaField != null and javaField != ''">#{javaField},</if>
+			<if test="isPk != null and isPk != ''">#{isPk},</if>
+			<if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
+			<if test="isRequired != null and isRequired != ''">#{isRequired},</if>
+			<if test="isInsert != null and isInsert != ''">#{isInsert},</if>
+			<if test="isEdit != null and isEdit != ''">#{isEdit},</if>
+			<if test="isList != null and isList != ''">#{isList},</if>
+			<if test="isQuery != null and isQuery != ''">#{isQuery},</if>
+			<if test="queryType != null and queryType != ''">#{queryType},</if>
+			<if test="htmlType != null and htmlType != ''">#{htmlType},</if>
+			<if test="dictType != null and dictType != ''">#{dictType},</if>
+			<if test="sort != null">#{sort},</if>
+			<if test="createBy != null and createBy != ''">#{createBy},</if>
+			sysdate()
+         )
+    </insert>
+
+    <update id="updateGenTableColumn" parameterType="GenTableColumn">
+        update gen_table_column
+        <set>
+            <if test="columnComment != null">column_comment = #{columnComment},</if>
+            <if test="javaType != null">java_type = #{javaType},</if>
+            <if test="javaField != null">java_field = #{javaField},</if>
+            <if test="isInsert != null">is_insert = #{isInsert},</if>
+            <if test="isEdit != null">is_edit = #{isEdit},</if>
+            <if test="isList != null">is_list = #{isList},</if>
+            <if test="isQuery != null">is_query = #{isQuery},</if>
+            <if test="isRequired != null">is_required = #{isRequired},</if>
+            <if test="queryType != null">query_type = #{queryType},</if>
+            <if test="htmlType != null">html_type = #{htmlType},</if>
+            <if test="dictType != null">dict_type = #{dictType},</if>
+            <if test="sort != null">sort = #{sort},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            update_time = sysdate()
+        </set>
+        where column_id = #{columnId}
+    </update>
+
+    <delete id="deleteGenTableColumnByIds" parameterType="Long">
+        delete from gen_table_column where table_id in
+        <foreach collection="array" item="tableId" open="(" separator="," close=")">
+            #{tableId}
+        </foreach>
+    </delete>
+    
+    <delete id="deleteGenTableColumns">
+        delete from gen_table_column where column_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.columnId}
+        </foreach>
+    </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml
new file mode 100644
index 0000000..074d782
--- /dev/null
+++ b/ruoyi-modules/se-gen/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.se.gen.mapper.GenTableMapper">
+
+	<resultMap type="GenTable" id="GenTableResult">
+	    <id     property="tableId"        column="table_id"          />
+		<result property="tableName"      column="table_name"        />
+		<result property="tableComment"   column="table_comment"     />
+		<result property="subTableName"   column="sub_table_name"    />
+		<result property="subTableFkName" column="sub_table_fk_name" />
+		<result property="className"      column="class_name"        />
+		<result property="tplCategory"    column="tpl_category"      />
+		<result property="tplWebType"     column="tpl_web_type"      />
+		<result property="packageName"    column="package_name"      />
+		<result property="moduleName"     column="module_name"       />
+		<result property="businessName"   column="business_name"     />
+		<result property="functionName"   column="function_name"     />
+		<result property="functionAuthor" column="function_author"   />
+		<result property="genType"        column="gen_type"          />
+		<result property="genPath"        column="gen_path"          />
+		<result property="options"        column="options"           />
+		<result property="createBy"       column="create_by"         />
+		<result property="createTime"     column="create_time"       />
+		<result property="updateBy"       column="update_by"         />
+		<result property="updateTime"     column="update_time"       />
+		<result property="remark"         column="remark"            />
+		<collection  property="columns"   javaType="java.util.List"  resultMap="GenTableColumnResult" />
+	</resultMap>
+	
+	<resultMap type="GenTableColumn" id="GenTableColumnResult">
+        <id     property="columnId"       column="column_id"      />
+        <result property="tableId"        column="table_id"       />
+        <result property="columnName"     column="column_name"    />
+        <result property="columnComment"  column="column_comment" />
+        <result property="columnType"     column="column_type"    />
+        <result property="javaType"       column="java_type"      />
+        <result property="javaField"      column="java_field"     />
+        <result property="isPk"           column="is_pk"          />
+        <result property="isIncrement"    column="is_increment"   />
+        <result property="isRequired"     column="is_required"    />
+        <result property="isInsert"       column="is_insert"      />
+        <result property="isEdit"         column="is_edit"        />
+        <result property="isList"         column="is_list"        />
+        <result property="isQuery"        column="is_query"       />
+        <result property="queryType"      column="query_type"     />
+        <result property="htmlType"       column="html_type"      />
+        <result property="dictType"       column="dict_type"      />
+        <result property="sort"           column="sort"           />
+        <result property="createBy"       column="create_by"      />
+        <result property="createTime"     column="create_time"    />
+        <result property="updateBy"       column="update_by"      />
+        <result property="updateTime"     column="update_time"    />
+    </resultMap>
+	
+	<sql id="selectGenTableVo">
+        select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
+    </sql>
+    
+    <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
+		<include refid="selectGenTableVo"/>
+		<where>
+			<if test="tableName != null and tableName != ''">
+				AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+			</if>
+			<if test="tableComment != null and tableComment != ''">
+				AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+			</if>
+			<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+				AND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
+			</if>
+			<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+				AND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
+			</if>
+		</where>
+	</select>
+
+	<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
+		select table_name, table_comment, create_time, update_time from information_schema.tables
+		where table_schema = (select database())
+		AND table_name NOT LIKE 'qrtz\_%' AND table_name NOT LIKE 'gen\_%'
+		AND table_name NOT IN (select table_name from gen_table)
+		<if test="tableName != null and tableName != ''">
+			AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
+		</if>
+		<if test="tableComment != null and tableComment != ''">
+			AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
+		</if>
+		<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+			AND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
+		</if>
+		<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+			AND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
+		</if>
+        order by create_time desc
+	</select>
+	
+	<select id="selectDbTableListByNames" resultMap="GenTableResult">
+		select table_name, table_comment, create_time, update_time from information_schema.tables
+		where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database())
+		and table_name in
+	    <foreach collection="array" item="name" open="(" separator="," close=")">
+ 			#{name}
+        </foreach> 
+	</select>
+	
+	<select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
+		select table_name, table_comment, create_time, update_time from information_schema.tables
+		where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())
+		and table_name = #{tableName}
+	</select>
+	
+	<select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult">
+	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+		FROM gen_table t
+			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+		where t.table_id = #{tableId} order by c.sort
+	</select>
+	
+	<select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult">
+	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,
+			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+		FROM gen_table t
+			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+		where t.table_name = #{tableName} order by c.sort
+	</select>
+	
+	<select id="selectGenTableAll" parameterType="String" resultMap="GenTableResult">
+	    SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,
+			   c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort
+		FROM gen_table t
+			 LEFT JOIN gen_table_column c ON t.table_id = c.table_id
+		order by c.sort
+	</select>
+	
+	<insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId">
+        insert into gen_table (
+			<if test="tableName != null">table_name,</if>
+			<if test="tableComment != null and tableComment != ''">table_comment,</if>
+			<if test="className != null and className != ''">class_name,</if>
+			<if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
+			<if test="tplWebType != null and tplWebType != ''">tpl_web_type,</if>
+			<if test="packageName != null and packageName != ''">package_name,</if>
+			<if test="moduleName != null and moduleName != ''">module_name,</if>
+			<if test="businessName != null and businessName != ''">business_name,</if>
+			<if test="functionName != null and functionName != ''">function_name,</if>
+			<if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
+			<if test="genType != null and genType != ''">gen_type,</if>
+			<if test="genPath != null and genPath != ''">gen_path,</if>
+			<if test="remark != null and remark != ''">remark,</if>
+ 			<if test="createBy != null and createBy != ''">create_by,</if>
+			create_time
+         )values(
+			<if test="tableName != null">#{tableName},</if>
+			<if test="tableComment != null and tableComment != ''">#{tableComment},</if>
+			<if test="className != null and className != ''">#{className},</if>
+			<if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
+			<if test="tplWebType != null and tplWebType != ''">#{tplWebType},</if>
+			<if test="packageName != null and packageName != ''">#{packageName},</if>
+			<if test="moduleName != null and moduleName != ''">#{moduleName},</if>
+			<if test="businessName != null and businessName != ''">#{businessName},</if>
+			<if test="functionName != null and functionName != ''">#{functionName},</if>
+			<if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
+			<if test="genType != null and genType != ''">#{genType},</if>
+			<if test="genPath != null and genPath != ''">#{genPath},</if>
+			<if test="remark != null and remark != ''">#{remark},</if>
+ 			<if test="createBy != null and createBy != ''">#{createBy},</if>
+			sysdate()
+         )
+    </insert>
+    
+    <update id="updateGenTable" parameterType="GenTable">
+        update gen_table
+        <set>
+            <if test="tableName != null">table_name = #{tableName},</if>
+            <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
+            <if test="subTableName != null">sub_table_name = #{subTableName},</if>
+            <if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
+            <if test="className != null and className != ''">class_name = #{className},</if>
+            <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
+            <if test="genType != null and genType != ''">gen_type = #{genType},</if>
+            <if test="genPath != null and genPath != ''">gen_path = #{genPath},</if>
+            <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
+            <if test="tplWebType != null and tplWebType != ''">tpl_web_type = #{tplWebType},</if>
+            <if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
+            <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
+            <if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
+            <if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
+            <if test="options != null and options != ''">options = #{options},</if>
+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            update_time = sysdate()
+        </set>
+        where table_id = #{tableId}
+    </update>
+    
+    <delete id="deleteGenTableByIds" parameterType="Long">
+        delete from gen_table where table_id in 
+        <foreach collection="array" item="tableId" open="(" separator="," close=")">
+            #{tableId}
+        </foreach>
+    </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/controller.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/controller.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/domain.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/domain.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/mapper.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/service.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/service.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/serviceImpl.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/serviceImpl.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/sub-domain.java.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/java/sub-domain.java.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm b/ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/js/api.js.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/js/api.js.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm b/ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/sql/sql.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/sql/sql.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/index-tree.vue.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/index.vue.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index-tree.vue.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm b/ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/vue/v3/index.vue.vm
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm
similarity index 100%
rename from ruoyi-modules/ruoyi-gen/src/main/resources/vm/xml/mapper.xml.vm
rename to ruoyi-modules/se-gen/src/main/resources/vm/xml/mapper.xml.vm
diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/se-job/pom.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-job/pom.xml
rename to ruoyi-modules/se-job/pom.xml
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java b/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java
new file mode 100644
index 0000000..43c8afc
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/SeJobApplication.java
@@ -0,0 +1,34 @@
+package com.se.job;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import com.se.common.security.annotation.EnableCustomConfig;
+import com.se.common.security.annotation.EnableRyFeignClients;
+import com.se.common.swagger.annotation.EnableCustomSwagger2;
+
+/**
+ * 瀹氭椂浠诲姟
+ * 
+ * @author admin
+ */
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableRyFeignClients   
+@SpringBootApplication
+public class SeJobApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeJobApplication.class, args);
+        System.out.println("(鈾モ棤鈥库棤)锞夛緸  瀹氭椂浠诲姟妯″潡鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
+                " .-------.       ____     __        \n" +
+                " |  _ _   \\      \\   \\   /  /    \n" +
+                " | ( ' )  |       \\  _. /  '       \n" +
+                " |(_ o _) /        _( )_ .'         \n" +
+                " | (_,_).' __  ___(_ o _)'          \n" +
+                " |  |\\ \\  |  ||   |(_,_)'         \n" +
+                " |  | \\ `'   /|   `-'  /           \n" +
+                " |  |  \\    /  \\      /           \n" +
+                " ''-'   `'-'    `-..-'              ");
+    }
+}
diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java b/ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/config/ScheduleConfig.java
rename to ruoyi-modules/se-job/src/main/java/com/se/job/config/ScheduleConfig.java
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java
new file mode 100644
index 0000000..0cddec9
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobController.java
@@ -0,0 +1,187 @@
+package com.se.job.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.job.domain.SysJob;
+import com.se.job.service.ISysJobService;
+import com.se.job.util.ScheduleUtils;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.exception.job.TaskException;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.job.util.CronUtils;
+
+/**
+ * 璋冨害浠诲姟淇℃伅鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/job")
+public class SysJobController extends BaseController
+{
+    @Autowired
+    private ISysJobService jobService;
+
+    /**
+     * 鏌ヨ瀹氭椂浠诲姟鍒楄〃
+     */
+    @RequiresPermissions("monitor:job:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysJob sysJob)
+    {
+        startPage();
+        List<SysJob> list = jobService.selectJobList(sysJob);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭瀹氭椂浠诲姟鍒楄〃
+     */
+    @RequiresPermissions("monitor:job:export")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysJob sysJob)
+    {
+        List<SysJob> list = jobService.selectJobList(sysJob);
+        ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
+        util.exportExcel(response, list, "瀹氭椂浠诲姟");
+    }
+
+    /**
+     * 鑾峰彇瀹氭椂浠诲姟璇︾粏淇℃伅
+     */
+    @RequiresPermissions("monitor:job:query")
+    @GetMapping(value = "/{jobId}")
+    public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
+    {
+        return success(jobService.selectJobById(jobId));
+    }
+
+    /**
+     * 鏂板瀹氭椂浠诲姟
+     */
+    @RequiresPermissions("monitor:job:add")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException
+    {
+        if (!CronUtils.isValid(job.getCronExpression()))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘");
+        }
+        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊");
+        }
+        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
+        {
+            return error("鏂板浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴");
+        }
+        job.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(jobService.insertJob(job));
+    }
+
+    /**
+     * 淇敼瀹氭椂浠诲姟
+     */
+    @RequiresPermissions("monitor:job:edit")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException
+    {
+        if (!CronUtils.isValid(job.getCronExpression()))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛孋ron琛ㄨ揪寮忎笉姝g‘");
+        }
+        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'rmi'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'ldap(s)'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅厑璁�'http(s)'璋冪敤");
+        }
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆瀛樺湪杩濊");
+        }
+        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
+        {
+            return error("淇敼浠诲姟'" + job.getJobName() + "'澶辫触锛岀洰鏍囧瓧绗︿覆涓嶅湪鐧藉悕鍗曞唴");
+        }
+        job.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(jobService.updateJob(job));
+    }
+
+    /**
+     * 瀹氭椂浠诲姟鐘舵�佷慨鏀�
+     */
+    @RequiresPermissions("monitor:job:changeStatus")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException
+    {
+        SysJob newJob = jobService.selectJobById(job.getJobId());
+        newJob.setStatus(job.getStatus());
+        return toAjax(jobService.changeStatus(newJob));
+    }
+
+    /**
+     * 瀹氭椂浠诲姟绔嬪嵆鎵ц涓�娆�
+     */
+    @RequiresPermissions("monitor:job:changeStatus")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.UPDATE)
+    @PutMapping("/run")
+    public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
+    {
+        boolean result = jobService.run(job);
+        return result ? success() : error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈燂紒");
+    }
+
+    /**
+     * 鍒犻櫎瀹氭椂浠诲姟
+     */
+    @RequiresPermissions("monitor:job:remove")
+    @Log(title = "瀹氭椂浠诲姟", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{jobIds}")
+    public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException
+    {
+        jobService.deleteJobByIds(jobIds);
+        return success();
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java
new file mode 100644
index 0000000..3ba97de
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/controller/SysJobLogController.java
@@ -0,0 +1,92 @@
+package com.se.job.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.job.domain.SysJobLog;
+import com.se.job.service.ISysJobLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+
+/**
+ * 璋冨害鏃ュ織鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/job/log")
+public class SysJobLogController extends BaseController
+{
+    @Autowired
+    private ISysJobLogService jobLogService;
+
+    /**
+     * 鏌ヨ瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃
+     */
+    @RequiresPermissions("monitor:job:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysJobLog sysJobLog)
+    {
+        startPage();
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭瀹氭椂浠诲姟璋冨害鏃ュ織鍒楄〃
+     */
+    @RequiresPermissions("monitor:job:export")
+    @Log(title = "浠诲姟璋冨害鏃ュ織", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysJobLog sysJobLog)
+    {
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
+        ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
+        util.exportExcel(response, list, "璋冨害鏃ュ織");
+    }
+
+    /**
+     * 鏍规嵁璋冨害缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("monitor:job:query")
+    @GetMapping(value = "/{jobLogId}")
+    public AjaxResult getInfo(@PathVariable Long jobLogId)
+    {
+        return success(jobLogService.selectJobLogById(jobLogId));
+    }
+
+    /**
+     * 鍒犻櫎瀹氭椂浠诲姟璋冨害鏃ュ織
+     */
+    @RequiresPermissions("monitor:job:remove")
+    @Log(title = "瀹氭椂浠诲姟璋冨害鏃ュ織", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{jobLogIds}")
+    public AjaxResult remove(@PathVariable Long[] jobLogIds)
+    {
+        return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
+    }
+
+    /**
+     * 娓呯┖瀹氭椂浠诲姟璋冨害鏃ュ織
+     */
+    @RequiresPermissions("monitor:job:remove")
+    @Log(title = "璋冨害鏃ュ織", businessType = BusinessType.CLEAN)
+    @DeleteMapping("/clean")
+    public AjaxResult clean()
+    {
+        jobLogService.cleanJobLog();
+        return success();
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java
new file mode 100644
index 0000000..9fe5163
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJob.java
@@ -0,0 +1,171 @@
+package com.se.job.domain;
+
+import java.util.Date;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.se.common.core.annotation.Excel;
+import com.se.common.core.annotation.Excel.ColumnType;
+import com.se.common.core.constant.ScheduleConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.domain.BaseEntity;
+import com.se.job.util.CronUtils;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害琛� sys_job
+ * 
+ * @author admin
+ */
+public class SysJob extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 浠诲姟ID */
+    @Excel(name = "浠诲姟搴忓彿", cellType = ColumnType.NUMERIC)
+    private Long jobId;
+
+    /** 浠诲姟鍚嶇О */
+    @Excel(name = "浠诲姟鍚嶇О")
+    private String jobName;
+
+    /** 浠诲姟缁勫悕 */
+    @Excel(name = "浠诲姟缁勫悕")
+    private String jobGroup;
+
+    /** 璋冪敤鐩爣瀛楃涓� */
+    @Excel(name = "璋冪敤鐩爣瀛楃涓�")
+    private String invokeTarget;
+
+    /** cron鎵ц琛ㄨ揪寮� */
+    @Excel(name = "鎵ц琛ㄨ揪寮� ")
+    private String cronExpression;
+
+    /** cron璁″垝绛栫暐 */
+    @Excel(name = "璁″垝绛栫暐 ", readConverterExp = "0=榛樿,1=绔嬪嵆瑙﹀彂鎵ц,2=瑙﹀彂涓�娆℃墽琛�,3=涓嶈Е鍙戠珛鍗虫墽琛�")
+    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
+
+    /** 鏄惁骞跺彂鎵ц锛�0鍏佽 1绂佹锛� */
+    @Excel(name = "骞跺彂鎵ц", readConverterExp = "0=鍏佽,1=绂佹")
+    private String concurrent;
+
+    /** 浠诲姟鐘舵�侊紙0姝e父 1鏆傚仠锛� */
+    @Excel(name = "浠诲姟鐘舵��", readConverterExp = "0=姝e父,1=鏆傚仠")
+    private String status;
+
+    public Long getJobId()
+    {
+        return jobId;
+    }
+
+    public void setJobId(Long jobId)
+    {
+        this.jobId = jobId;
+    }
+
+    @NotBlank(message = "浠诲姟鍚嶇О涓嶈兘涓虹┖")
+    @Size(min = 0, max = 64, message = "浠诲姟鍚嶇О涓嶈兘瓒呰繃64涓瓧绗�")
+    public String getJobName()
+    {
+        return jobName;
+    }
+
+    public void setJobName(String jobName)
+    {
+        this.jobName = jobName;
+    }
+
+    public String getJobGroup()
+    {
+        return jobGroup;
+    }
+
+    public void setJobGroup(String jobGroup)
+    {
+        this.jobGroup = jobGroup;
+    }
+
+    @NotBlank(message = "璋冪敤鐩爣瀛楃涓蹭笉鑳戒负绌�")
+    @Size(min = 0, max = 500, message = "璋冪敤鐩爣瀛楃涓查暱搴︿笉鑳借秴杩�500涓瓧绗�")
+    public String getInvokeTarget()
+    {
+        return invokeTarget;
+    }
+
+    public void setInvokeTarget(String invokeTarget)
+    {
+        this.invokeTarget = invokeTarget;
+    }
+
+    @NotBlank(message = "Cron鎵ц琛ㄨ揪寮忎笉鑳戒负绌�")
+    @Size(min = 0, max = 255, message = "Cron鎵ц琛ㄨ揪寮忎笉鑳借秴杩�255涓瓧绗�")
+    public String getCronExpression()
+    {
+        return cronExpression;
+    }
+
+    public void setCronExpression(String cronExpression)
+    {
+        this.cronExpression = cronExpression;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getNextValidTime()
+    {
+        if (StringUtils.isNotEmpty(cronExpression))
+        {
+            return CronUtils.getNextExecution(cronExpression);
+        }
+        return null;
+    }
+
+    public String getMisfirePolicy()
+    {
+        return misfirePolicy;
+    }
+
+    public void setMisfirePolicy(String misfirePolicy)
+    {
+        this.misfirePolicy = misfirePolicy;
+    }
+
+    public String getConcurrent()
+    {
+        return concurrent;
+    }
+
+    public void setConcurrent(String concurrent)
+    {
+        this.concurrent = concurrent;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("jobId", getJobId())
+            .append("jobName", getJobName())
+            .append("jobGroup", getJobGroup())
+            .append("cronExpression", getCronExpression())
+            .append("nextValidTime", getNextValidTime())
+            .append("misfirePolicy", getMisfirePolicy())
+            .append("concurrent", getConcurrent())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java
new file mode 100644
index 0000000..b08cf99
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/domain/SysJobLog.java
@@ -0,0 +1,155 @@
+package com.se.job.domain;
+
+import java.util.Date;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.se.common.core.annotation.Excel;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害鏃ュ織琛� sys_job_log
+ * 
+ * @author admin
+ */
+public class SysJobLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    @Excel(name = "鏃ュ織搴忓彿")
+    private Long jobLogId;
+
+    /** 浠诲姟鍚嶇О */
+    @Excel(name = "浠诲姟鍚嶇О")
+    private String jobName;
+
+    /** 浠诲姟缁勫悕 */
+    @Excel(name = "浠诲姟缁勫悕")
+    private String jobGroup;
+
+    /** 璋冪敤鐩爣瀛楃涓� */
+    @Excel(name = "璋冪敤鐩爣瀛楃涓�")
+    private String invokeTarget;
+
+    /** 鏃ュ織淇℃伅 */
+    @Excel(name = "鏃ュ織淇℃伅")
+    private String jobMessage;
+
+    /** 鎵ц鐘舵�侊紙0姝e父 1澶辫触锛� */
+    @Excel(name = "鎵ц鐘舵��", readConverterExp = "0=姝e父,1=澶辫触")
+    private String status;
+
+    /** 寮傚父淇℃伅 */
+    @Excel(name = "寮傚父淇℃伅")
+    private String exceptionInfo;
+
+    /** 寮�濮嬫椂闂� */
+    private Date startTime;
+
+    /** 鍋滄鏃堕棿 */
+    private Date stopTime;
+
+    public Long getJobLogId()
+    {
+        return jobLogId;
+    }
+
+    public void setJobLogId(Long jobLogId)
+    {
+        this.jobLogId = jobLogId;
+    }
+
+    public String getJobName()
+    {
+        return jobName;
+    }
+
+    public void setJobName(String jobName)
+    {
+        this.jobName = jobName;
+    }
+
+    public String getJobGroup()
+    {
+        return jobGroup;
+    }
+
+    public void setJobGroup(String jobGroup)
+    {
+        this.jobGroup = jobGroup;
+    }
+
+    public String getInvokeTarget()
+    {
+        return invokeTarget;
+    }
+
+    public void setInvokeTarget(String invokeTarget)
+    {
+        this.invokeTarget = invokeTarget;
+    }
+
+    public String getJobMessage()
+    {
+        return jobMessage;
+    }
+
+    public void setJobMessage(String jobMessage)
+    {
+        this.jobMessage = jobMessage;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getExceptionInfo()
+    {
+        return exceptionInfo;
+    }
+
+    public void setExceptionInfo(String exceptionInfo)
+    {
+        this.exceptionInfo = exceptionInfo;
+    }
+
+    public Date getStartTime()
+    {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime)
+    {
+        this.startTime = startTime;
+    }
+    
+    public Date getStopTime()
+    {
+        return stopTime;
+    }
+
+    public void setStopTime(Date stopTime)
+    {
+        this.stopTime = stopTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("jobLogId", getJobLogId())
+            .append("jobName", getJobName())
+            .append("jobGroup", getJobGroup())
+            .append("jobMessage", getJobMessage())
+            .append("status", getStatus())
+            .append("exceptionInfo", getExceptionInfo())
+            .append("startTime", getStartTime())
+            .append("stopTime", getStopTime())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java
new file mode 100644
index 0000000..82cb623
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobLogMapper.java
@@ -0,0 +1,64 @@
+package com.se.job.mapper;
+
+import java.util.List;
+import com.se.job.domain.SysJobLog;
+
+/**
+ * 璋冨害浠诲姟鏃ュ織淇℃伅 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysJobLogMapper
+{
+    /**
+     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
+     */
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
+
+    /**
+     * 鏌ヨ鎵�鏈夎皟搴︿换鍔℃棩蹇�
+     *
+     * @return 璋冨害浠诲姟鏃ュ織鍒楄〃
+     */
+    public List<SysJobLog> selectJobLogAll();
+
+    /**
+     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
+     * 
+     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
+     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
+     */
+    public SysJobLog selectJobLogById(Long jobLogId);
+
+    /**
+     * 鏂板浠诲姟鏃ュ織
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertJobLog(SysJobLog jobLog);
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
+     * 
+     * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteJobLogByIds(Long[] logIds);
+
+    /**
+     * 鍒犻櫎浠诲姟鏃ュ織
+     * 
+     * @param jobId 璋冨害鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteJobLogById(Long jobId);
+
+    /**
+     * 娓呯┖浠诲姟鏃ュ織
+     */
+    public void cleanJobLog();
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java
new file mode 100644
index 0000000..0f99ed6
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/mapper/SysJobMapper.java
@@ -0,0 +1,67 @@
+package com.se.job.mapper;
+
+import java.util.List;
+import com.se.job.domain.SysJob;
+
+/**
+ * 璋冨害浠诲姟淇℃伅 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysJobMapper
+{
+    /**
+     * 鏌ヨ璋冨害浠诲姟鏃ュ織闆嗗悎
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 鎿嶄綔鏃ュ織闆嗗悎
+     */
+    public List<SysJob> selectJobList(SysJob job);
+
+    /**
+     * 鏌ヨ鎵�鏈夎皟搴︿换鍔�
+     * 
+     * @return 璋冨害浠诲姟鍒楄〃
+     */
+    public List<SysJob> selectJobAll();
+
+    /**
+     * 閫氳繃璋冨害ID鏌ヨ璋冨害浠诲姟淇℃伅
+     * 
+     * @param jobId 璋冨害ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    public SysJob selectJobById(Long jobId);
+
+    /**
+     * 閫氳繃璋冨害ID鍒犻櫎璋冨害浠诲姟淇℃伅
+     * 
+     * @param jobId 璋冨害ID
+     * @return 缁撴灉
+     */
+    public int deleteJobById(Long jobId);
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害浠诲姟淇℃伅
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteJobByIds(Long[] ids);
+
+    /**
+     * 淇敼璋冨害浠诲姟淇℃伅
+     * 
+     * @param job 璋冨害浠诲姟淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateJob(SysJob job);
+
+    /**
+     * 鏂板璋冨害浠诲姟淇℃伅
+     * 
+     * @param job 璋冨害浠诲姟淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertJob(SysJob job);
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java
new file mode 100644
index 0000000..0cb8913
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobLogService.java
@@ -0,0 +1,56 @@
+package com.se.job.service;
+
+import java.util.List;
+import com.se.job.domain.SysJobLog;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysJobLogService
+{
+    /**
+     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
+     */
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
+
+    /**
+     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
+     * 
+     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
+     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
+     */
+    public SysJobLog selectJobLogById(Long jobLogId);
+
+    /**
+     * 鏂板浠诲姟鏃ュ織
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     */
+    public void addJobLog(SysJobLog jobLog);
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
+     * 
+     * @param logIds 闇�瑕佸垹闄ょ殑鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteJobLogByIds(Long[] logIds);
+
+    /**
+     * 鍒犻櫎浠诲姟鏃ュ織
+     * 
+     * @param jobId 璋冨害鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteJobLogById(Long jobId);
+
+    /**
+     * 娓呯┖浠诲姟鏃ュ織
+     */
+    public void cleanJobLog();
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java
new file mode 100644
index 0000000..1a5afa9
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/ISysJobService.java
@@ -0,0 +1,102 @@
+package com.se.job.service;
+
+import java.util.List;
+import org.quartz.SchedulerException;
+import com.se.common.core.exception.job.TaskException;
+import com.se.job.domain.SysJob;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害淇℃伅淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysJobService
+{
+    /**
+     * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 璋冨害浠诲姟闆嗗悎
+     */
+    public List<SysJob> selectJobList(SysJob job);
+
+    /**
+     * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅
+     * 
+     * @param jobId 璋冨害浠诲姟ID
+     * @return 璋冨害浠诲姟瀵硅薄淇℃伅
+     */
+    public SysJob selectJobById(Long jobId);
+
+    /**
+     * 鏆傚仠浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int pauseJob(SysJob job) throws SchedulerException;
+
+    /**
+     * 鎭㈠浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int resumeJob(SysJob job) throws SchedulerException;
+
+    /**
+     * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄�
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int deleteJob(SysJob job) throws SchedulerException;
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害淇℃伅
+     * 
+     * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID
+     * @return 缁撴灉
+     */
+    public void deleteJobByIds(Long[] jobIds) throws SchedulerException;
+
+    /**
+     * 浠诲姟璋冨害鐘舵�佷慨鏀�
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int changeStatus(SysJob job) throws SchedulerException;
+
+    /**
+     * 绔嬪嵆杩愯浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean run(SysJob job) throws SchedulerException;
+
+    /**
+     * 鏂板浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertJob(SysJob job) throws SchedulerException, TaskException;
+
+    /**
+     * 鏇存柊浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateJob(SysJob job) throws SchedulerException, TaskException;
+
+    /**
+     * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁�
+     * 
+     * @param cronExpression 琛ㄨ揪寮�
+     * @return 缁撴灉
+     */
+    public boolean checkCronExpressionIsValid(String cronExpression);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java
new file mode 100644
index 0000000..1dcbd38
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobLogServiceImpl.java
@@ -0,0 +1,86 @@
+package com.se.job.service;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.job.domain.SysJobLog;
+import com.se.job.mapper.SysJobLogMapper;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害鏃ュ織淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysJobLogServiceImpl implements ISysJobLogService
+{
+    @Autowired
+    private SysJobLogMapper jobLogMapper;
+
+    /**
+     * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     * @return 璋冨害浠诲姟鏃ュ織闆嗗悎
+     */
+    @Override
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog)
+    {
+        return jobLogMapper.selectJobLogList(jobLog);
+    }
+
+    /**
+     * 閫氳繃璋冨害浠诲姟鏃ュ織ID鏌ヨ璋冨害淇℃伅
+     * 
+     * @param jobLogId 璋冨害浠诲姟鏃ュ織ID
+     * @return 璋冨害浠诲姟鏃ュ織瀵硅薄淇℃伅
+     */
+    @Override
+    public SysJobLog selectJobLogById(Long jobLogId)
+    {
+        return jobLogMapper.selectJobLogById(jobLogId);
+    }
+
+    /**
+     * 鏂板浠诲姟鏃ュ織
+     * 
+     * @param jobLog 璋冨害鏃ュ織淇℃伅
+     */
+    @Override
+    public void addJobLog(SysJobLog jobLog)
+    {
+        jobLogMapper.insertJobLog(jobLog);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害鏃ュ織淇℃伅
+     * 
+     * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteJobLogByIds(Long[] logIds)
+    {
+        return jobLogMapper.deleteJobLogByIds(logIds);
+    }
+
+    /**
+     * 鍒犻櫎浠诲姟鏃ュ織
+     * 
+     * @param jobId 璋冨害鏃ュ織ID
+     */
+    @Override
+    public int deleteJobLogById(Long jobId)
+    {
+        return jobLogMapper.deleteJobLogById(jobId);
+    }
+
+    /**
+     * 娓呯┖浠诲姟鏃ュ織
+     */
+    @Override
+    public void cleanJobLog()
+    {
+        jobLogMapper.cleanJobLog();
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java
new file mode 100644
index 0000000..0e303b4
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/service/SysJobServiceImpl.java
@@ -0,0 +1,260 @@
+package com.se.job.service;
+
+import java.util.List;
+import javax.annotation.PostConstruct;
+import org.quartz.JobDataMap;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.se.common.core.constant.ScheduleConstants;
+import com.se.common.core.exception.job.TaskException;
+import com.se.job.domain.SysJob;
+import com.se.job.mapper.SysJobMapper;
+import com.se.job.util.CronUtils;
+import com.se.job.util.ScheduleUtils;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysJobServiceImpl implements ISysJobService
+{
+    @Autowired
+    private Scheduler scheduler;
+
+    @Autowired
+    private SysJobMapper jobMapper;
+
+    /**
+     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧畾鏃跺櫒 涓昏鏄槻姝㈡墜鍔ㄤ慨鏀规暟鎹簱瀵艰嚧鏈悓姝ュ埌瀹氭椂浠诲姟澶勭悊锛堟敞锛氫笉鑳芥墜鍔ㄤ慨鏀规暟鎹簱ID鍜屼换鍔$粍鍚嶏紝鍚﹀垯浼氬鑷磋剰鏁版嵁锛�
+     */
+    @PostConstruct
+    public void init() throws SchedulerException, TaskException
+    {
+        scheduler.clear();
+        List<SysJob> jobList = jobMapper.selectJobAll();
+        for (SysJob job : jobList)
+        {
+            ScheduleUtils.createScheduleJob(scheduler, job);
+        }
+    }
+
+    /**
+     * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟鍒楄〃
+     * 
+     * @param job 璋冨害淇℃伅
+     * @return
+     */
+    @Override
+    public List<SysJob> selectJobList(SysJob job)
+    {
+        return jobMapper.selectJobList(job);
+    }
+
+    /**
+     * 閫氳繃璋冨害浠诲姟ID鏌ヨ璋冨害淇℃伅
+     * 
+     * @param jobId 璋冨害浠诲姟ID
+     * @return 璋冨害浠诲姟瀵硅薄淇℃伅
+     */
+    @Override
+    public SysJob selectJobById(Long jobId)
+    {
+        return jobMapper.selectJobById(jobId);
+    }
+
+    /**
+     * 鏆傚仠浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int pauseJob(SysJob job) throws SchedulerException
+    {
+        Long jobId = job.getJobId();
+        String jobGroup = job.getJobGroup();
+        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+        int rows = jobMapper.updateJob(job);
+        if (rows > 0)
+        {
+            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+        }
+        return rows;
+    }
+
+    /**
+     * 鎭㈠浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int resumeJob(SysJob job) throws SchedulerException
+    {
+        Long jobId = job.getJobId();
+        String jobGroup = job.getJobGroup();
+        job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
+        int rows = jobMapper.updateJob(job);
+        if (rows > 0)
+        {
+            scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+        }
+        return rows;
+    }
+
+    /**
+     * 鍒犻櫎浠诲姟鍚庯紝鎵�瀵瑰簲鐨則rigger涔熷皢琚垹闄�
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteJob(SysJob job) throws SchedulerException
+    {
+        Long jobId = job.getJobId();
+        String jobGroup = job.getJobGroup();
+        int rows = jobMapper.deleteJobById(jobId);
+        if (rows > 0)
+        {
+            scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+        }
+        return rows;
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璋冨害淇℃伅
+     * 
+     * @param jobIds 闇�瑕佸垹闄ょ殑浠诲姟ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteJobByIds(Long[] jobIds) throws SchedulerException
+    {
+        for (Long jobId : jobIds)
+        {
+            SysJob job = jobMapper.selectJobById(jobId);
+            deleteJob(job);
+        }
+    }
+
+    /**
+     * 浠诲姟璋冨害鐘舵�佷慨鏀�
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int changeStatus(SysJob job) throws SchedulerException
+    {
+        int rows = 0;
+        String status = job.getStatus();
+        if (ScheduleConstants.Status.NORMAL.getValue().equals(status))
+        {
+            rows = resumeJob(job);
+        }
+        else if (ScheduleConstants.Status.PAUSE.getValue().equals(status))
+        {
+            rows = pauseJob(job);
+        }
+        return rows;
+    }
+
+    /**
+     * 绔嬪嵆杩愯浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean run(SysJob job) throws SchedulerException
+    {
+        boolean result = false;
+        Long jobId = job.getJobId();
+        String jobGroup = job.getJobGroup();
+        SysJob properties = selectJobById(job.getJobId());
+        // 鍙傛暟
+        JobDataMap dataMap = new JobDataMap();
+        dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
+        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
+        if (scheduler.checkExists(jobKey))
+        {
+            result = true;
+            scheduler.triggerJob(jobKey, dataMap);
+        }
+        return result;
+    }
+
+    /**
+     * 鏂板浠诲姟
+     * 
+     * @param job 璋冨害淇℃伅 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertJob(SysJob job) throws SchedulerException, TaskException
+    {
+        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+        int rows = jobMapper.insertJob(job);
+        if (rows > 0)
+        {
+            ScheduleUtils.createScheduleJob(scheduler, job);
+        }
+        return rows;
+    }
+
+    /**
+     * 鏇存柊浠诲姟鐨勬椂闂磋〃杈惧紡
+     * 
+     * @param job 璋冨害淇℃伅
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateJob(SysJob job) throws SchedulerException, TaskException
+    {
+        SysJob properties = selectJobById(job.getJobId());
+        int rows = jobMapper.updateJob(job);
+        if (rows > 0)
+        {
+            updateSchedulerJob(job, properties.getJobGroup());
+        }
+        return rows;
+    }
+
+    /**
+     * 鏇存柊浠诲姟
+     * 
+     * @param job 浠诲姟瀵硅薄
+     * @param jobGroup 浠诲姟缁勫悕
+     */
+    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException
+    {
+        Long jobId = job.getJobId();
+        // 鍒ゆ柇鏄惁瀛樺湪
+        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
+        if (scheduler.checkExists(jobKey))
+        {
+            // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣�
+            scheduler.deleteJob(jobKey);
+        }
+        ScheduleUtils.createScheduleJob(scheduler, job);
+    }
+
+    /**
+     * 鏍¢獙cron琛ㄨ揪寮忔槸鍚︽湁鏁�
+     * 
+     * @param cronExpression 琛ㄨ揪寮�
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkCronExpressionIsValid(String cronExpression)
+    {
+        return CronUtils.isValid(cronExpression);
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java b/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java
new file mode 100644
index 0000000..5293b57
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/task/RyTask.java
@@ -0,0 +1,28 @@
+package com.se.job.task;
+
+import org.springframework.stereotype.Component;
+import com.se.common.core.utils.StringUtils;
+
+/**
+ * 瀹氭椂浠诲姟璋冨害娴嬭瘯
+ * 
+ * @author admin
+ */
+@Component("ryTask")
+public class RyTask
+{
+    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
+    {
+        System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
+    }
+
+    public void ryParams(String params)
+    {
+        System.out.println("鎵ц鏈夊弬鏂规硶锛�" + params);
+    }
+
+    public void ryNoParams()
+    {
+        System.out.println("鎵ц鏃犲弬鏂规硶");
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java
new file mode 100644
index 0000000..39be601
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/AbstractQuartzJob.java
@@ -0,0 +1,107 @@
+package com.se.job.util;
+
+import java.util.Date;
+
+import com.se.job.domain.SysJob;
+import com.se.job.domain.SysJobLog;
+import com.se.job.service.ISysJobLogService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.se.common.core.constant.ScheduleConstants;
+import com.se.common.core.utils.ExceptionUtil;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.bean.BeanUtils;
+
+/**
+ * 鎶借薄quartz璋冪敤
+ *
+ * @author admin
+ */
+public abstract class AbstractQuartzJob implements Job
+{
+    private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
+
+    /**
+     * 绾跨▼鏈湴鍙橀噺
+     */
+    private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException
+    {
+        SysJob sysJob = new SysJob();
+        BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
+        try
+        {
+            before(context, sysJob);
+            if (sysJob != null)
+            {
+                doExecute(context, sysJob);
+            }
+            after(context, sysJob, null);
+        }
+        catch (Exception e)
+        {
+            log.error("浠诲姟鎵ц寮傚父  - 锛�", e);
+            after(context, sysJob, e);
+        }
+    }
+
+    /**
+     * 鎵ц鍓�
+     *
+     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
+     * @param sysJob 绯荤粺璁″垝浠诲姟
+     */
+    protected void before(JobExecutionContext context, SysJob sysJob)
+    {
+        threadLocal.set(new Date());
+    }
+
+    /**
+     * 鎵ц鍚�
+     *
+     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
+     * @param sysJob 绯荤粺璁″垝浠诲姟
+     */
+    protected void after(JobExecutionContext context, SysJob sysJob, Exception e)
+    {
+        Date startTime = threadLocal.get();
+        threadLocal.remove();
+
+        final SysJobLog sysJobLog = new SysJobLog();
+        sysJobLog.setJobName(sysJob.getJobName());
+        sysJobLog.setJobGroup(sysJob.getJobGroup());
+        sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
+        sysJobLog.setStartTime(startTime);
+        sysJobLog.setStopTime(new Date());
+        long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
+        sysJobLog.setJobMessage(sysJobLog.getJobName() + " 鎬诲叡鑰楁椂锛�" + runMs + "姣");
+        if (e != null)
+        {
+            sysJobLog.setStatus("1");
+            String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
+            sysJobLog.setExceptionInfo(errorMsg);
+        }
+        else
+        {
+            sysJobLog.setStatus("0");
+        }
+
+        // 鍐欏叆鏁版嵁搴撳綋涓�
+        SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
+    }
+
+    /**
+     * 鎵ц鏂规硶锛岀敱瀛愮被閲嶈浇
+     *
+     * @param context 宸ヤ綔鎵ц涓婁笅鏂囧璞�
+     * @param sysJob 绯荤粺璁″垝浠诲姟
+     * @throws Exception 鎵ц杩囩▼涓殑寮傚父
+     */
+    protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java
new file mode 100644
index 0000000..4590e21
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/CronUtils.java
@@ -0,0 +1,63 @@
+package com.se.job.util;
+
+import java.text.ParseException;
+import java.util.Date;
+import org.quartz.CronExpression;
+
+/**
+ * cron琛ㄨ揪寮忓伐鍏风被
+ * 
+ * @author admin
+ *
+ */
+public class CronUtils
+{
+    /**
+     * 杩斿洖涓�涓竷灏斿�间唬琛ㄤ竴涓粰瀹氱殑Cron琛ㄨ揪寮忕殑鏈夋晥鎬�
+     *
+     * @param cronExpression Cron琛ㄨ揪寮�
+     * @return boolean 琛ㄨ揪寮忔槸鍚︽湁鏁�
+     */
+    public static boolean isValid(String cronExpression)
+    {
+        return CronExpression.isValidExpression(cronExpression);
+    }
+
+    /**
+     * 杩斿洖涓�涓瓧绗︿覆鍊�,琛ㄧず璇ユ秷鎭棤鏁圕ron琛ㄨ揪寮忕粰鍑烘湁鏁堟��
+     *
+     * @param cronExpression Cron琛ㄨ揪寮�
+     * @return String 鏃犳晥鏃惰繑鍥炶〃杈惧紡閿欒鎻忚堪,濡傛灉鏈夋晥杩斿洖null
+     */
+    public static String getInvalidMessage(String cronExpression)
+    {
+        try
+        {
+            new CronExpression(cronExpression);
+            return null;
+        }
+        catch (ParseException pe)
+        {
+            return pe.getMessage();
+        }
+    }
+
+    /**
+     * 杩斿洖涓嬩竴涓墽琛屾椂闂存牴鎹粰瀹氱殑Cron琛ㄨ揪寮�
+     *
+     * @param cronExpression Cron琛ㄨ揪寮�
+     * @return Date 涓嬫Cron琛ㄨ揪寮忔墽琛屾椂闂�
+     */
+    public static Date getNextExecution(String cronExpression)
+    {
+        try
+        {
+            CronExpression cron = new CronExpression(cronExpression);
+            return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
+        }
+        catch (ParseException e)
+        {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java
new file mode 100644
index 0000000..6aaab12
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/JobInvokeUtil.java
@@ -0,0 +1,182 @@
+package com.se.job.util;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.LinkedList;
+import java.util.List;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.job.domain.SysJob;
+
+/**
+ * 浠诲姟鎵ц宸ュ叿
+ *
+ * @author admin
+ */
+public class JobInvokeUtil
+{
+    /**
+     * 鎵ц鏂规硶
+     *
+     * @param sysJob 绯荤粺浠诲姟
+     */
+    public static void invokeMethod(SysJob sysJob) throws Exception
+    {
+        String invokeTarget = sysJob.getInvokeTarget();
+        String beanName = getBeanName(invokeTarget);
+        String methodName = getMethodName(invokeTarget);
+        List<Object[]> methodParams = getMethodParams(invokeTarget);
+
+        if (!isValidClassName(beanName))
+        {
+            Object bean = SpringUtils.getBean(beanName);
+            invokeMethod(bean, methodName, methodParams);
+        }
+        else
+        {
+            Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance();
+            invokeMethod(bean, methodName, methodParams);
+        }
+    }
+
+    /**
+     * 璋冪敤浠诲姟鏂规硶
+     *
+     * @param bean 鐩爣瀵硅薄
+     * @param methodName 鏂规硶鍚嶇О
+     * @param methodParams 鏂规硶鍙傛暟
+     */
+    private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
+            throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
+            InvocationTargetException
+    {
+        if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
+        {
+            Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams));
+            method.invoke(bean, getMethodParamsValue(methodParams));
+        }
+        else
+        {
+            Method method = bean.getClass().getMethod(methodName);
+            method.invoke(bean);
+        }
+    }
+
+    /**
+     * 鏍¢獙鏄惁涓轰负class鍖呭悕
+     * 
+     * @param invokeTarget 鍚嶇О
+     * @return true鏄� false鍚�
+     */
+    public static boolean isValidClassName(String invokeTarget)
+    {
+        return StringUtils.countMatches(invokeTarget, ".") > 1;
+    }
+
+    /**
+     * 鑾峰彇bean鍚嶇О
+     * 
+     * @param invokeTarget 鐩爣瀛楃涓�
+     * @return bean鍚嶇О
+     */
+    public static String getBeanName(String invokeTarget)
+    {
+        String beanName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringBeforeLast(beanName, ".");
+    }
+
+    /**
+     * 鑾峰彇bean鏂规硶
+     * 
+     * @param invokeTarget 鐩爣瀛楃涓�
+     * @return method鏂规硶
+     */
+    public static String getMethodName(String invokeTarget)
+    {
+        String methodName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringAfterLast(methodName, ".");
+    }
+
+    /**
+     * 鑾峰彇method鏂规硶鍙傛暟鐩稿叧鍒楄〃
+     * 
+     * @param invokeTarget 鐩爣瀛楃涓�
+     * @return method鏂规硶鐩稿叧鍙傛暟鍒楄〃
+     */
+    public static List<Object[]> getMethodParams(String invokeTarget)
+    {
+        String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
+        if (StringUtils.isEmpty(methodStr))
+        {
+            return null;
+        }
+        String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)");
+        List<Object[]> classs = new LinkedList<>();
+        for (int i = 0; i < methodParams.length; i++)
+        {
+            String str = StringUtils.trimToEmpty(methodParams[i]);
+            // String瀛楃涓茬被鍨嬶紝浠�'鎴�"寮�澶�
+            if (StringUtils.startsWithAny(str, "'", "\""))
+            {
+                classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class });
+            }
+            // boolean甯冨皵绫诲瀷锛岀瓑浜巘rue鎴栬�協alse
+            else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str))
+            {
+                classs.add(new Object[] { Boolean.valueOf(str), Boolean.class });
+            }
+            // long闀挎暣褰紝浠缁撳熬
+            else if (StringUtils.endsWith(str, "L"))
+            {
+                classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class });
+            }
+            // double娴偣绫诲瀷锛屼互D缁撳熬
+            else if (StringUtils.endsWith(str, "D"))
+            {
+                classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class });
+            }
+            // 鍏朵粬绫诲瀷褰掔被涓烘暣褰�
+            else
+            {
+                classs.add(new Object[] { Integer.valueOf(str), Integer.class });
+            }
+        }
+        return classs;
+    }
+
+    /**
+     * 鑾峰彇鍙傛暟绫诲瀷
+     * 
+     * @param methodParams 鍙傛暟鐩稿叧鍒楄〃
+     * @return 鍙傛暟绫诲瀷鍒楄〃
+     */
+    public static Class<?>[] getMethodParamsType(List<Object[]> methodParams)
+    {
+        Class<?>[] classs = new Class<?>[methodParams.size()];
+        int index = 0;
+        for (Object[] os : methodParams)
+        {
+            classs[index] = (Class<?>) os[1];
+            index++;
+        }
+        return classs;
+    }
+
+    /**
+     * 鑾峰彇鍙傛暟鍊�
+     * 
+     * @param methodParams 鍙傛暟鐩稿叧鍒楄〃
+     * @return 鍙傛暟鍊煎垪琛�
+     */
+    public static Object[] getMethodParamsValue(List<Object[]> methodParams)
+    {
+        Object[] classs = new Object[methodParams.size()];
+        int index = 0;
+        for (Object[] os : methodParams)
+        {
+            classs[index] = (Object) os[0];
+            index++;
+        }
+        return classs;
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java
new file mode 100644
index 0000000..8901480
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzDisallowConcurrentExecution.java
@@ -0,0 +1,21 @@
+package com.se.job.util;
+
+import com.se.job.domain.SysJob;
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+
+/**
+ * 瀹氭椂浠诲姟澶勭悊锛堢姝㈠苟鍙戞墽琛岋級
+ * 
+ * @author admin
+ *
+ */
+@DisallowConcurrentExecution
+public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
+{
+    @Override
+    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
+    {
+        JobInvokeUtil.invokeMethod(sysJob);
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java
new file mode 100644
index 0000000..7529ef2
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/QuartzJobExecution.java
@@ -0,0 +1,19 @@
+package com.se.job.util;
+
+import com.se.job.domain.SysJob;
+import org.quartz.JobExecutionContext;
+
+/**
+ * 瀹氭椂浠诲姟澶勭悊锛堝厑璁稿苟鍙戞墽琛岋級
+ * 
+ * @author admin
+ *
+ */
+public class QuartzJobExecution extends AbstractQuartzJob
+{
+    @Override
+    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
+    {
+        JobInvokeUtil.invokeMethod(sysJob);
+    }
+}
diff --git a/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java b/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java
new file mode 100644
index 0000000..6a50822
--- /dev/null
+++ b/ruoyi-modules/se-job/src/main/java/com/se/job/util/ScheduleUtils.java
@@ -0,0 +1,141 @@
+package com.se.job.util;
+
+import com.se.job.domain.SysJob;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.CronTrigger;
+import org.quartz.Job;
+import org.quartz.JobBuilder;
+import org.quartz.JobDetail;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.TriggerBuilder;
+import org.quartz.TriggerKey;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.constant.ScheduleConstants;
+import com.se.common.core.exception.job.TaskException;
+import com.se.common.core.exception.job.TaskException.Code;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+
+/**
+ * 瀹氭椂浠诲姟宸ュ叿绫�
+ * 
+ * @author admin
+ *
+ */
+public class ScheduleUtils
+{
+    /**
+     * 寰楀埌quartz浠诲姟绫�
+     *
+     * @param sysJob 鎵ц璁″垝
+     * @return 鍏蜂綋鎵ц浠诲姟绫�
+     */
+    private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
+    {
+        boolean isConcurrent = "0".equals(sysJob.getConcurrent());
+        return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
+    }
+
+    /**
+     * 鏋勫缓浠诲姟瑙﹀彂瀵硅薄
+     */
+    public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
+    {
+        return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
+    }
+
+    /**
+     * 鏋勫缓浠诲姟閿璞�
+     */
+    public static JobKey getJobKey(Long jobId, String jobGroup)
+    {
+        return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
+    }
+
+    /**
+     * 鍒涘缓瀹氭椂浠诲姟
+     */
+    public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
+    {
+        Class<? extends Job> jobClass = getQuartzJobClass(job);
+        // 鏋勫缓job淇℃伅
+        Long jobId = job.getJobId();
+        String jobGroup = job.getJobGroup();
+        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
+
+        // 琛ㄨ揪寮忚皟搴︽瀯寤哄櫒
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
+        cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
+
+        // 鎸夋柊鐨刢ronExpression琛ㄨ揪寮忔瀯寤轰竴涓柊鐨則rigger
+        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
+                .withSchedule(cronScheduleBuilder).build();
+
+        // 鏀惧叆鍙傛暟锛岃繍琛屾椂鐨勬柟娉曞彲浠ヨ幏鍙�
+        jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
+
+        // 鍒ゆ柇鏄惁瀛樺湪
+        if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
+        {
+            // 闃叉鍒涘缓鏃跺瓨鍦ㄦ暟鎹棶棰� 鍏堢Щ闄わ紝鐒跺悗鍦ㄦ墽琛屽垱寤烘搷浣�
+            scheduler.deleteJob(getJobKey(jobId, jobGroup));
+        }
+
+        // 鍒ゆ柇浠诲姟鏄惁杩囨湡
+        if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression())))
+        {
+            // 鎵ц璋冨害浠诲姟
+            scheduler.scheduleJob(jobDetail, trigger);
+        }
+
+        // 鏆傚仠浠诲姟
+        if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
+        {
+            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+        }
+    }
+
+    /**
+     * 璁剧疆瀹氭椂浠诲姟绛栫暐
+     */
+    public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
+            throws TaskException
+    {
+        switch (job.getMisfirePolicy())
+        {
+            case ScheduleConstants.MISFIRE_DEFAULT:
+                return cb;
+            case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
+                return cb.withMisfireHandlingInstructionIgnoreMisfires();
+            case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
+                return cb.withMisfireHandlingInstructionFireAndProceed();
+            case ScheduleConstants.MISFIRE_DO_NOTHING:
+                return cb.withMisfireHandlingInstructionDoNothing();
+            default:
+                throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
+                        + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
+        }
+    }
+
+    /**
+     * 妫�鏌ュ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃�
+     * 
+     * @param invokeTarget 鐩爣瀛楃涓�
+     * @return 缁撴灉
+     */
+    public static boolean whiteList(String invokeTarget)
+    {
+        String packageName = StringUtils.substringBefore(invokeTarget, "(");
+        int count = StringUtils.countMatches(packageName, ".");
+        if (count > 1)
+        {
+            return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
+        }
+        Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
+        String beanPackageName = obj.getClass().getPackage().getName();
+        return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR)
+                && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR);
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/banner.txt b/ruoyi-modules/se-job/src/main/resources/banner.txt
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/resources/banner.txt
rename to ruoyi-modules/se-job/src/main/resources/banner.txt
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/se-job/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
rename to ruoyi-modules/se-job/src/main/resources/bootstrap.yml
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/logback.xml b/ruoyi-modules/se-job/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/resources/logback.xml
rename to ruoyi-modules/se-job/src/main/resources/logback.xml
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml b/ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobLogMapper.xml
rename to ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobLogMapper.xml
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml b/ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-job/src/main/resources/mapper/job/SysJobMapper.xml
rename to ruoyi-modules/se-job/src/main/resources/mapper/job/SysJobMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/se-system/pom.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/pom.xml
rename to ruoyi-modules/se-system/pom.xml
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java b/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java
new file mode 100644
index 0000000..ffd74f7
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/RuoYiSystemApplication.java
@@ -0,0 +1,25 @@
+package com.se.system;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import com.se.common.security.annotation.EnableCustomConfig;
+import com.se.common.security.annotation.EnableRyFeignClients;
+import com.se.common.swagger.annotation.EnableCustomSwagger2;
+
+/**
+ * 绯荤粺妯″潡
+ * 
+ * @author admin
+ */
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableRyFeignClients
+@SpringBootApplication
+public class RuoYiSystemApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(RuoYiSystemApplication.class, args);
+        System.out.println("    绯荤粺妯″潡鍚姩鎴愬姛    ");
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java
new file mode 100644
index 0000000..8f816b5
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysConfigController.java
@@ -0,0 +1,134 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.system.domain.SysConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.service.ISysConfigService;
+
+/**
+ * 鍙傛暟閰嶇疆 淇℃伅鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/config")
+public class SysConfigController extends BaseController
+{
+    @Autowired
+    private ISysConfigService configService;
+
+    /**
+     * 鑾峰彇鍙傛暟閰嶇疆鍒楄〃
+     */
+    @RequiresPermissions("system:config:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysConfig config)
+    {
+        startPage();
+        List<SysConfig> list = configService.selectConfigList(config);
+        return getDataTable(list);
+    }
+
+    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:config:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysConfig config)
+    {
+        List<SysConfig> list = configService.selectConfigList(config);
+        ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
+        util.exportExcel(response, list, "鍙傛暟鏁版嵁");
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @GetMapping(value = "/{configId}")
+    public AjaxResult getInfo(@PathVariable Long configId)
+    {
+        return success(configService.selectConfigById(configId));
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊�
+     */
+    @GetMapping(value = "/configKey/{configKey}")
+    public AjaxResult getConfigKey(@PathVariable String configKey)
+    {
+        return success(configService.selectConfigByKey(configKey));
+    }
+
+    /**
+     * 鏂板鍙傛暟閰嶇疆
+     */
+    @RequiresPermissions("system:config:add")
+    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysConfig config)
+    {
+        if (!configService.checkConfigKeyUnique(config))
+        {
+            return error("鏂板鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪");
+        }
+        config.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(configService.insertConfig(config));
+    }
+
+    /**
+     * 淇敼鍙傛暟閰嶇疆
+     */
+    @RequiresPermissions("system:config:edit")
+    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysConfig config)
+    {
+        if (!configService.checkConfigKeyUnique(config))
+        {
+            return error("淇敼鍙傛暟'" + config.getConfigName() + "'澶辫触锛屽弬鏁伴敭鍚嶅凡瀛樺湪");
+        }
+        config.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(configService.updateConfig(config));
+    }
+
+    /**
+     * 鍒犻櫎鍙傛暟閰嶇疆
+     */
+    @RequiresPermissions("system:config:remove")
+    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{configIds}")
+    public AjaxResult remove(@PathVariable Long[] configIds)
+    {
+        configService.deleteConfigByIds(configIds);
+        return success();
+    }
+
+    /**
+     * 鍒锋柊鍙傛暟缂撳瓨
+     */
+    @RequiresPermissions("system:config:remove")
+    @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.CLEAN)
+    @DeleteMapping("/refreshCache")
+    public AjaxResult refreshCache()
+    {
+        configService.resetConfigCache();
+        return success();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java
new file mode 100644
index 0000000..c722d52
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDeptController.java
@@ -0,0 +1,133 @@
+package com.se.system.controller;
+
+import java.util.List;
+import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDept;
+import com.se.system.service.ISysDeptService;
+
+/**
+ * 閮ㄩ棬淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/dept")
+public class SysDeptController extends BaseController
+{
+    @Autowired
+    private ISysDeptService deptService;
+
+    /**
+     * 鑾峰彇閮ㄩ棬鍒楄〃
+     */
+    @RequiresPermissions("system:dept:list")
+    @GetMapping("/list")
+    public AjaxResult list(SysDept dept)
+    {
+        List<SysDept> depts = deptService.selectDeptList(dept);
+        return success(depts);
+    }
+
+    /**
+     * 鏌ヨ閮ㄩ棬鍒楄〃锛堟帓闄よ妭鐐癸級
+     */
+    @RequiresPermissions("system:dept:list")
+    @GetMapping("/list/exclude/{deptId}")
+    public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
+    {
+        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
+        return success(depts);
+    }
+
+    /**
+     * 鏍规嵁閮ㄩ棬缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:dept:query")
+    @GetMapping(value = "/{deptId}")
+    public AjaxResult getInfo(@PathVariable Long deptId)
+    {
+        deptService.checkDeptDataScope(deptId);
+        return success(deptService.selectDeptById(deptId));
+    }
+
+    /**
+     * 鏂板閮ㄩ棬
+     */
+    @RequiresPermissions("system:dept:add")
+    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysDept dept)
+    {
+        if (!deptService.checkDeptNameUnique(dept))
+        {
+            return error("鏂板閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪");
+        }
+        dept.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(deptService.insertDept(dept));
+    }
+
+    /**
+     * 淇敼閮ㄩ棬
+     */
+    @RequiresPermissions("system:dept:edit")
+    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysDept dept)
+    {
+        Long deptId = dept.getDeptId();
+        deptService.checkDeptDataScope(deptId);
+        if (!deptService.checkDeptNameUnique(dept))
+        {
+            return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛岄儴闂ㄥ悕绉板凡瀛樺湪");
+        }
+        else if (dept.getParentId().equals(deptId))
+        {
+            return error("淇敼閮ㄩ棬'" + dept.getDeptName() + "'澶辫触锛屼笂绾ч儴闂ㄤ笉鑳芥槸鑷繁");
+        }
+        else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
+        {
+            return error("璇ラ儴闂ㄥ寘鍚湭鍋滅敤鐨勫瓙閮ㄩ棬锛�");
+        }
+        dept.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(deptService.updateDept(dept));
+    }
+
+    /**
+     * 鍒犻櫎閮ㄩ棬
+     */
+    @RequiresPermissions("system:dept:remove")
+    @Log(title = "閮ㄩ棬绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{deptId}")
+    public AjaxResult remove(@PathVariable Long deptId)
+    {
+        if (deptService.hasChildByDeptId(deptId))
+        {
+            return warn("瀛樺湪涓嬬骇閮ㄩ棬,涓嶅厑璁稿垹闄�");
+        }
+        if (deptService.checkDeptExistUser(deptId))
+        {
+            return warn("閮ㄩ棬瀛樺湪鐢ㄦ埛,涓嶅厑璁稿垹闄�");
+        }
+        deptService.checkDeptDataScope(deptId);
+        return toAjax(deptService.deleteDeptById(deptId));
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java
new file mode 100644
index 0000000..51be763
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictDataController.java
@@ -0,0 +1,122 @@
+package com.se.system.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDictData;
+import com.se.system.service.ISysDictDataService;
+import com.se.system.service.ISysDictTypeService;
+
+/**
+ * 鏁版嵁瀛楀吀淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/dict/data")
+public class SysDictDataController extends BaseController
+{
+    @Autowired
+    private ISysDictDataService dictDataService;
+    
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+    @RequiresPermissions("system:dict:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysDictData dictData)
+    {
+        startPage();
+        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+        return getDataTable(list);
+    }
+
+    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:dict:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysDictData dictData)
+    {
+        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+        ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
+        util.exportExcel(response, list, "瀛楀吀鏁版嵁");
+    }
+
+    /**
+     * 鏌ヨ瀛楀吀鏁版嵁璇︾粏
+     */
+    @RequiresPermissions("system:dict:query")
+    @GetMapping(value = "/{dictCode}")
+    public AjaxResult getInfo(@PathVariable Long dictCode)
+    {
+        return success(dictDataService.selectDictDataById(dictCode));
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁淇℃伅
+     */
+    @GetMapping(value = "/type/{dictType}")
+    public AjaxResult dictType(@PathVariable String dictType)
+    {
+        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
+        if (StringUtils.isNull(data))
+        {
+            data = new ArrayList<SysDictData>();
+        }
+        return success(data);
+    }
+
+    /**
+     * 鏂板瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:add")
+    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysDictData dict)
+    {
+        dict.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(dictDataService.insertDictData(dict));
+    }
+
+    /**
+     * 淇敼淇濆瓨瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:edit")
+    @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysDictData dict)
+    {
+        dict.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(dictDataService.updateDictData(dict));
+    }
+
+    /**
+     * 鍒犻櫎瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:remove")
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{dictCodes}")
+    public AjaxResult remove(@PathVariable Long[] dictCodes)
+    {
+        dictDataService.deleteDictDataByIds(dictCodes);
+        return success();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java
new file mode 100644
index 0000000..8762592
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysDictTypeController.java
@@ -0,0 +1,132 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDictType;
+import com.se.system.service.ISysDictTypeService;
+
+/**
+ * 鏁版嵁瀛楀吀淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/dict/type")
+public class SysDictTypeController extends BaseController
+{
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+    @RequiresPermissions("system:dict:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysDictType dictType)
+    {
+        startPage();
+        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
+        return getDataTable(list);
+    }
+
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:dict:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysDictType dictType)
+    {
+        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
+        ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
+        util.exportExcel(response, list, "瀛楀吀绫诲瀷");
+    }
+
+    /**
+     * 鏌ヨ瀛楀吀绫诲瀷璇︾粏
+     */
+    @RequiresPermissions("system:dict:query")
+    @GetMapping(value = "/{dictId}")
+    public AjaxResult getInfo(@PathVariable Long dictId)
+    {
+        return success(dictTypeService.selectDictTypeById(dictId));
+    }
+
+    /**
+     * 鏂板瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:add")
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysDictType dict)
+    {
+        if (!dictTypeService.checkDictTypeUnique(dict))
+        {
+            return error("鏂板瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪");
+        }
+        dict.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(dictTypeService.insertDictType(dict));
+    }
+
+    /**
+     * 淇敼瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:edit")
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysDictType dict)
+    {
+        if (!dictTypeService.checkDictTypeUnique(dict))
+        {
+            return error("淇敼瀛楀吀'" + dict.getDictName() + "'澶辫触锛屽瓧鍏哥被鍨嬪凡瀛樺湪");
+        }
+        dict.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(dictTypeService.updateDictType(dict));
+    }
+
+    /**
+     * 鍒犻櫎瀛楀吀绫诲瀷
+     */
+    @RequiresPermissions("system:dict:remove")
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{dictIds}")
+    public AjaxResult remove(@PathVariable Long[] dictIds)
+    {
+        dictTypeService.deleteDictTypeByIds(dictIds);
+        return success();
+    }
+
+    /**
+     * 鍒锋柊瀛楀吀缂撳瓨
+     */
+    @RequiresPermissions("system:dict:remove")
+    @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.CLEAN)
+    @DeleteMapping("/refreshCache")
+    public AjaxResult refreshCache()
+    {
+        dictTypeService.resetDictCache();
+        return success();
+    }
+
+    /**
+     * 鑾峰彇瀛楀吀閫夋嫨妗嗗垪琛�
+     */
+    @GetMapping("/optionselect")
+    public AjaxResult optionselect()
+    {
+        List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
+        return success(dictTypes);
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java
new file mode 100644
index 0000000..4f5092b
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysLogininforController.java
@@ -0,0 +1,92 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.redis.service.RedisService;
+import com.se.common.security.annotation.InnerAuth;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.system.api.domain.SysLogininfor;
+import com.se.system.service.ISysLogininforService;
+
+/**
+ * 绯荤粺璁块棶璁板綍
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/logininfor")
+public class SysLogininforController extends BaseController
+{
+    @Autowired
+    private ISysLogininforService logininforService;
+
+    @Autowired
+    private RedisService redisService;
+
+    @RequiresPermissions("system:logininfor:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysLogininfor logininfor)
+    {
+        startPage();
+        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
+        return getDataTable(list);
+    }
+
+    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:logininfor:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysLogininfor logininfor)
+    {
+        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
+        ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
+        util.exportExcel(response, list, "鐧诲綍鏃ュ織");
+    }
+
+    @RequiresPermissions("system:logininfor:remove")
+    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{infoIds}")
+    public AjaxResult remove(@PathVariable Long[] infoIds)
+    {
+        return toAjax(logininforService.deleteLogininforByIds(infoIds));
+    }
+
+    @RequiresPermissions("system:logininfor:remove")
+    @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.DELETE)
+    @DeleteMapping("/clean")
+    public AjaxResult clean()
+    {
+        logininforService.cleanLogininfor();
+        return success();
+    }
+
+    @RequiresPermissions("system:logininfor:unlock")
+    @Log(title = "璐︽埛瑙i攣", businessType = BusinessType.OTHER)
+    @GetMapping("/unlock/{userName}")
+    public AjaxResult unlock(@PathVariable("userName") String userName)
+    {
+        redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName);
+        return success();
+    }
+
+    @InnerAuth
+    @PostMapping
+    public AjaxResult add(@RequestBody SysLogininfor logininfor)
+    {
+        return toAjax(logininforService.insertLogininfor(logininfor));
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java
new file mode 100644
index 0000000..4b87041
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysMenuController.java
@@ -0,0 +1,160 @@
+package com.se.system.controller;
+
+import java.util.List;
+
+import com.se.system.domain.SysMenu;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.service.ISysMenuService;
+
+/**
+ * 鑿滃崟淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/menu")
+public class SysMenuController extends BaseController
+{
+    @Autowired
+    private ISysMenuService menuService;
+
+    /**
+     * 鑾峰彇鑿滃崟鍒楄〃
+     */
+    @RequiresPermissions("system:menu:list")
+    @GetMapping("/list")
+    public AjaxResult list(SysMenu menu)
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuList(menu, userId);
+        return success(menus);
+    }
+
+    /**
+     * 鏍规嵁鑿滃崟缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:menu:query")
+    @GetMapping(value = "/{menuId}")
+    public AjaxResult getInfo(@PathVariable Long menuId)
+    {
+        return success(menuService.selectMenuById(menuId));
+    }
+
+    /**
+     * 鑾峰彇鑿滃崟涓嬫媺鏍戝垪琛�
+     */
+    @GetMapping("/treeselect")
+    public AjaxResult treeselect(SysMenu menu)
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuList(menu, userId);
+        return success(menuService.buildMenuTreeSelect(menus));
+    }
+
+    /**
+     * 鍔犺浇瀵瑰簲瑙掕壊鑿滃崟鍒楄〃鏍�
+     */
+    @GetMapping(value = "/roleMenuTreeselect/{roleId}")
+    public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuList(userId);
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
+        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
+        return ajax;
+    }
+
+    /**
+     * 鏂板鑿滃崟
+     */
+    @RequiresPermissions("system:menu:add")
+    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysMenu menu)
+    {
+        if (!menuService.checkMenuNameUnique(menu))
+        {
+            return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪");
+        }
+        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
+        {
+            return error("鏂板鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�");
+        }
+        menu.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(menuService.insertMenu(menu));
+    }
+
+    /**
+     * 淇敼鑿滃崟
+     */
+    @RequiresPermissions("system:menu:edit")
+    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysMenu menu)
+    {
+        if (!menuService.checkMenuNameUnique(menu))
+        {
+            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛岃彍鍗曞悕绉板凡瀛樺湪");
+        }
+        else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
+        {
+            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屽湴鍧�蹇呴』浠ttp(s)://寮�澶�");
+        }
+        else if (menu.getMenuId().equals(menu.getParentId()))
+        {
+            return error("淇敼鑿滃崟'" + menu.getMenuName() + "'澶辫触锛屼笂绾ц彍鍗曚笉鑳介�夋嫨鑷繁");
+        }
+        menu.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(menuService.updateMenu(menu));
+    }
+
+    /**
+     * 鍒犻櫎鑿滃崟
+     */
+    @RequiresPermissions("system:menu:remove")
+    @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{menuId}")
+    public AjaxResult remove(@PathVariable("menuId") Long menuId)
+    {
+        if (menuService.hasChildByMenuId(menuId))
+        {
+            return warn("瀛樺湪瀛愯彍鍗�,涓嶅厑璁稿垹闄�");
+        }
+        if (menuService.checkMenuExistRole(menuId))
+        {
+            return warn("鑿滃崟宸插垎閰�,涓嶅厑璁稿垹闄�");
+        }
+        return toAjax(menuService.deleteMenuById(menuId));
+    }
+
+    /**
+     * 鑾峰彇璺敱淇℃伅
+     * 
+     * @return 璺敱淇℃伅
+     */
+    @GetMapping("getRouters")
+    public AjaxResult getRouters()
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
+        return success(menuService.buildMenus(menus));
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java
new file mode 100644
index 0000000..7b1f4a8
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysNoticeController.java
@@ -0,0 +1,93 @@
+package com.se.system.controller;
+
+import java.util.List;
+
+import com.se.system.domain.SysNotice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.service.ISysNoticeService;
+
+/**
+ * 鍏憡 淇℃伅鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/notice")
+public class SysNoticeController extends BaseController
+{
+    @Autowired
+    private ISysNoticeService noticeService;
+
+    /**
+     * 鑾峰彇閫氱煡鍏憡鍒楄〃
+     */
+    @RequiresPermissions("system:notice:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysNotice notice)
+    {
+        startPage();
+        List<SysNotice> list = noticeService.selectNoticeList(notice);
+        return getDataTable(list);
+    }
+
+    /**
+     * 鏍规嵁閫氱煡鍏憡缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:notice:query")
+    @GetMapping(value = "/{noticeId}")
+    public AjaxResult getInfo(@PathVariable Long noticeId)
+    {
+        return success(noticeService.selectNoticeById(noticeId));
+    }
+
+    /**
+     * 鏂板閫氱煡鍏憡
+     */
+    @RequiresPermissions("system:notice:add")
+    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysNotice notice)
+    {
+        notice.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(noticeService.insertNotice(notice));
+    }
+
+    /**
+     * 淇敼閫氱煡鍏憡
+     */
+    @RequiresPermissions("system:notice:edit")
+    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysNotice notice)
+    {
+        notice.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(noticeService.updateNotice(notice));
+    }
+
+    /**
+     * 鍒犻櫎閫氱煡鍏憡
+     */
+    @RequiresPermissions("system:notice:remove")
+    @Log(title = "閫氱煡鍏憡", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{noticeIds}")
+    public AjaxResult remove(@PathVariable Long[] noticeIds)
+    {
+        return toAjax(noticeService.deleteNoticeByIds(noticeIds));
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java
new file mode 100644
index 0000000..e07f9be
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysOperlogController.java
@@ -0,0 +1,78 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.InnerAuth;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.system.api.domain.SysOperLog;
+import com.se.system.service.ISysOperLogService;
+
+/**
+ * 鎿嶄綔鏃ュ織璁板綍
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/operlog")
+public class SysOperlogController extends BaseController
+{
+    @Autowired
+    private ISysOperLogService operLogService;
+
+    @RequiresPermissions("system:operlog:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysOperLog operLog)
+    {
+        startPage();
+        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
+        return getDataTable(list);
+    }
+
+    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:operlog:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysOperLog operLog)
+    {
+        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
+        ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
+        util.exportExcel(response, list, "鎿嶄綔鏃ュ織");
+    }
+
+    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.DELETE)
+    @RequiresPermissions("system:operlog:remove")
+    @DeleteMapping("/{operIds}")
+    public AjaxResult remove(@PathVariable Long[] operIds)
+    {
+        return toAjax(operLogService.deleteOperLogByIds(operIds));
+    }
+
+    @RequiresPermissions("system:operlog:remove")
+    @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.CLEAN)
+    @DeleteMapping("/clean")
+    public AjaxResult clean()
+    {
+        operLogService.cleanOperLog();
+        return success();
+    }
+
+    @InnerAuth
+    @PostMapping
+    public AjaxResult add(@RequestBody SysOperLog operLog)
+    {
+        return toAjax(operLogService.insertOperlog(operLog));
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java
new file mode 100644
index 0000000..b45bb70
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysPostController.java
@@ -0,0 +1,131 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.system.domain.SysPost;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.service.ISysPostService;
+
+/**
+ * 宀椾綅淇℃伅鎿嶄綔澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/post")
+public class SysPostController extends BaseController
+{
+    @Autowired
+    private ISysPostService postService;
+
+    /**
+     * 鑾峰彇宀椾綅鍒楄〃
+     */
+    @RequiresPermissions("system:post:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysPost post)
+    {
+        startPage();
+        List<SysPost> list = postService.selectPostList(post);
+        return getDataTable(list);
+    }
+
+    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:post:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysPost post)
+    {
+        List<SysPost> list = postService.selectPostList(post);
+        ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
+        util.exportExcel(response, list, "宀椾綅鏁版嵁");
+    }
+
+    /**
+     * 鏍规嵁宀椾綅缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:post:query")
+    @GetMapping(value = "/{postId}")
+    public AjaxResult getInfo(@PathVariable Long postId)
+    {
+        return success(postService.selectPostById(postId));
+    }
+
+    /**
+     * 鏂板宀椾綅
+     */
+    @RequiresPermissions("system:post:add")
+    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysPost post)
+    {
+        if (!postService.checkPostNameUnique(post))
+        {
+            return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪");
+        }
+        else if (!postService.checkPostCodeUnique(post))
+        {
+            return error("鏂板宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪");
+        }
+        post.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(postService.insertPost(post));
+    }
+
+    /**
+     * 淇敼宀椾綅
+     */
+    @RequiresPermissions("system:post:edit")
+    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysPost post)
+    {
+        if (!postService.checkPostNameUnique(post))
+        {
+            return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶅悕绉板凡瀛樺湪");
+        }
+        else if (!postService.checkPostCodeUnique(post))
+        {
+            return error("淇敼宀椾綅'" + post.getPostName() + "'澶辫触锛屽矖浣嶇紪鐮佸凡瀛樺湪");
+        }
+        post.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(postService.updatePost(post));
+    }
+
+    /**
+     * 鍒犻櫎宀椾綅
+     */
+    @RequiresPermissions("system:post:remove")
+    @Log(title = "宀椾綅绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{postIds}")
+    public AjaxResult remove(@PathVariable Long[] postIds)
+    {
+        return toAjax(postService.deletePostByIds(postIds));
+    }
+
+    /**
+     * 鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
+     */
+    @GetMapping("/optionselect")
+    public AjaxResult optionselect()
+    {
+        List<SysPost> posts = postService.selectPostAll();
+        return success(posts);
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java
new file mode 100644
index 0000000..2cfdc41
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysProfileController.java
@@ -0,0 +1,154 @@
+package com.se.system.controller;
+
+import java.util.Arrays;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import com.se.common.core.domain.R;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.file.FileTypeUtils;
+import com.se.common.core.utils.file.MimeTypeUtils;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.service.TokenService;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.RemoteFileService;
+import com.se.system.api.domain.SysFile;
+import com.se.system.api.domain.SysUser;
+import com.se.system.api.model.LoginUser;
+import com.se.system.service.ISysUserService;
+
+/**
+ * 涓汉淇℃伅 涓氬姟澶勭悊
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/user/profile")
+public class SysProfileController extends BaseController
+{
+    @Autowired
+    private ISysUserService userService;
+    
+    @Autowired
+    private TokenService tokenService;
+    
+    @Autowired
+    private RemoteFileService remoteFileService;
+
+    /**
+     * 涓汉淇℃伅
+     */
+    @GetMapping
+    public AjaxResult profile()
+    {
+        String username = SecurityUtils.getUsername();
+        SysUser user = userService.selectUserByUserName(username);
+        AjaxResult ajax = AjaxResult.success(user);
+        ajax.put("roleGroup", userService.selectUserRoleGroup(username));
+        ajax.put("postGroup", userService.selectUserPostGroup(username));
+        return ajax;
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛
+     */
+    @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
+    @PutMapping
+    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))
+        {
+            return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
+        }
+        if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
+        {
+            return error("淇敼鐢ㄦ埛'" + loginUser.getUsername() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
+        }
+        if (userService.updateUserProfile(currentUser))
+        {
+            // 鏇存柊缂撳瓨鐢ㄦ埛淇℃伅
+            tokenService.setLoginUser(loginUser);
+            return success();
+        }
+        return error("淇敼涓汉淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
+    }
+
+    /**
+     * 閲嶇疆瀵嗙爜
+     */
+    @Log(title = "涓汉淇℃伅", businessType = BusinessType.UPDATE)
+    @PutMapping("/updatePwd")
+    public AjaxResult updatePwd(String oldPassword, String newPassword)
+    {
+        String username = SecurityUtils.getUsername();
+        SysUser user = userService.selectUserByUserName(username);
+        String password = user.getPassword();
+        if (!SecurityUtils.matchesPassword(oldPassword, password))
+        {
+            return error("淇敼瀵嗙爜澶辫触锛屾棫瀵嗙爜閿欒");
+        }
+        if (SecurityUtils.matchesPassword(newPassword, password))
+        {
+            return error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
+        }
+        newPassword = SecurityUtils.encryptPassword(newPassword);
+        if (userService.resetUserPwd(username, newPassword) > 0)
+        {
+            // 鏇存柊缂撳瓨鐢ㄦ埛瀵嗙爜
+            LoginUser loginUser = SecurityUtils.getLoginUser();
+            loginUser.getSysUser().setPassword(newPassword);
+            tokenService.setLoginUser(loginUser);
+            return success();
+        }
+        return error("淇敼瀵嗙爜寮傚父锛岃鑱旂郴绠$悊鍛�");
+    }
+    
+    /**
+     * 澶村儚涓婁紶
+     */
+    @Log(title = "鐢ㄦ埛澶村儚", businessType = BusinessType.UPDATE)
+    @PostMapping("/avatar")
+    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))
+            {
+                return error("鏂囦欢鏍煎紡涓嶆纭紝璇蜂笂浼�" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "鏍煎紡");
+            }
+            R<SysFile> fileResult = remoteFileService.upload(file);
+            if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
+            {
+                return error("鏂囦欢鏈嶅姟寮傚父锛岃鑱旂郴绠$悊鍛�");
+            }
+            String url = fileResult.getData().getUrl();
+            if (userService.updateUserAvatar(loginUser.getUsername(), url))
+            {
+                AjaxResult ajax = AjaxResult.success();
+                ajax.put("imgUrl", url);
+                // 鏇存柊缂撳瓨鐢ㄦ埛澶村儚
+                loginUser.getSysUser().setAvatar(url);
+                tokenService.setLoginUser(loginUser);
+                return ajax;
+            }
+        }
+        return error("涓婁紶鍥剧墖寮傚父锛岃鑱旂郴绠$悊鍛�");
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java
new file mode 100644
index 0000000..5495969
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysRoleController.java
@@ -0,0 +1,240 @@
+package com.se.system.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.se.system.domain.SysUserRole;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDept;
+import com.se.system.api.domain.SysRole;
+import com.se.system.api.domain.SysUser;
+import com.se.system.service.ISysDeptService;
+import com.se.system.service.ISysRoleService;
+import com.se.system.service.ISysUserService;
+
+/**
+ * 瑙掕壊淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/role")
+public class SysRoleController extends BaseController
+{
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private ISysDeptService deptService;
+
+    @RequiresPermissions("system:role:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysRole role)
+    {
+        startPage();
+        List<SysRole> list = roleService.selectRoleList(role);
+        return getDataTable(list);
+    }
+
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:role:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysRole role)
+    {
+        List<SysRole> list = roleService.selectRoleList(role);
+        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
+        util.exportExcel(response, list, "瑙掕壊鏁版嵁");
+    }
+
+    /**
+     * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:role:query")
+    @GetMapping(value = "/{roleId}")
+    public AjaxResult getInfo(@PathVariable Long roleId)
+    {
+        roleService.checkRoleDataScope(roleId);
+        return success(roleService.selectRoleById(roleId));
+    }
+
+    /**
+     * 鏂板瑙掕壊
+     */
+    @RequiresPermissions("system:role:add")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysRole role)
+    {
+        if (!roleService.checkRoleNameUnique(role))
+        {
+            return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪");
+        }
+        else if (!roleService.checkRoleKeyUnique(role))
+        {
+            return error("鏂板瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪");
+        }
+        role.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(roleService.insertRole(role));
+
+    }
+
+    /**
+     * 淇敼淇濆瓨瑙掕壊
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Validated @RequestBody SysRole role)
+    {
+        roleService.checkRoleAllowed(role);
+        roleService.checkRoleDataScope(role.getRoleId());
+        if (!roleService.checkRoleNameUnique(role))
+        {
+            return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹插悕绉板凡瀛樺湪");
+        }
+        else if (!roleService.checkRoleKeyUnique(role))
+        {
+            return error("淇敼瑙掕壊'" + role.getRoleName() + "'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪");
+        }
+        role.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(roleService.updateRole(role));
+    }
+
+    /**
+     * 淇敼淇濆瓨鏁版嵁鏉冮檺
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/dataScope")
+    public AjaxResult dataScope(@RequestBody SysRole role)
+    {
+        roleService.checkRoleAllowed(role);
+        roleService.checkRoleDataScope(role.getRoleId());
+        return toAjax(roleService.authDataScope(role));
+    }
+
+    /**
+     * 鐘舵�佷慨鏀�
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public AjaxResult changeStatus(@RequestBody SysRole role)
+    {
+        roleService.checkRoleAllowed(role);
+        roleService.checkRoleDataScope(role.getRoleId());
+        role.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(roleService.updateRoleStatus(role));
+    }
+
+    /**
+     * 鍒犻櫎瑙掕壊
+     */
+    @RequiresPermissions("system:role:remove")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{roleIds}")
+    public AjaxResult remove(@PathVariable Long[] roleIds)
+    {
+        return toAjax(roleService.deleteRoleByIds(roleIds));
+    }
+
+    /**
+     * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
+     */
+    @RequiresPermissions("system:role:query")
+    @GetMapping("/optionselect")
+    public AjaxResult optionselect()
+    {
+        return success(roleService.selectRoleAll());
+    }
+    /**
+     * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
+     */
+    @RequiresPermissions("system:role:list")
+    @GetMapping("/authUser/allocatedList")
+    public TableDataInfo allocatedList(SysUser user)
+    {
+        startPage();
+        List<SysUser> list = userService.selectAllocatedList(user);
+        return getDataTable(list);
+    }
+
+    /**
+     * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
+     */
+    @RequiresPermissions("system:role:list")
+    @GetMapping("/authUser/unallocatedList")
+    public TableDataInfo unallocatedList(SysUser user)
+    {
+        startPage();
+        List<SysUser> list = userService.selectUnallocatedList(user);
+        return getDataTable(list);
+    }
+
+    /**
+     * 鍙栨秷鎺堟潈鐢ㄦ埛
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
+    @PutMapping("/authUser/cancel")
+    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole)
+    {
+        return toAjax(roleService.deleteAuthUser(userRole));
+    }
+
+    /**
+     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
+    @PutMapping("/authUser/cancelAll")
+    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds)
+    {
+        return toAjax(roleService.deleteAuthUsers(roleId, userIds));
+    }
+
+    /**
+     * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈
+     */
+    @RequiresPermissions("system:role:edit")
+    @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.GRANT)
+    @PutMapping("/authUser/selectAll")
+    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds)
+    {
+        roleService.checkRoleDataScope(roleId);
+        return toAjax(roleService.insertAuthUsers(roleId, userIds));
+    }
+
+    /**
+     * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛�
+     */
+    @RequiresPermissions("system:role:query")
+    @GetMapping(value = "/deptTree/{roleId}")
+    public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
+        ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
+        return ajax;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java
new file mode 100644
index 0000000..3b9d05d
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserController.java
@@ -0,0 +1,341 @@
+package com.se.system.controller;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import com.se.common.core.domain.R;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.poi.ExcelUtil;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.security.annotation.InnerAuth;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDept;
+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;
+
+/**
+ * 鐢ㄦ埛淇℃伅
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/user")
+public class SysUserController extends BaseController
+{
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Autowired
+    private ISysDeptService deptService;
+
+    @Autowired
+    private ISysPostService postService;
+
+    @Autowired
+    private ISysPermissionService permissionService;
+
+    @Autowired
+    private ISysConfigService configService;
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鍒楄〃
+     */
+    @RequiresPermissions("system:user:list")
+    @GetMapping("/list")
+    public TableDataInfo list(SysUser user)
+    {
+        startPage();
+        List<SysUser> list = userService.selectUserList(user);
+        return getDataTable(list);
+    }
+
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
+    @RequiresPermissions("system:user:export")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysUser user)
+    {
+        List<SysUser> list = userService.selectUserList(user);
+        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
+        util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁");
+    }
+
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT)
+    @RequiresPermissions("system:user:import")
+    @PostMapping("/importData")
+    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();
+        String message = userService.importUser(userList, updateSupport, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException
+    {
+        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
+        util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+     */
+    @InnerAuth
+    @GetMapping("/info/{username}")
+    public R<LoginUser> info(@PathVariable("username") String username)
+    {
+        SysUser sysUser = userService.selectUserByUserName(username);
+        if (StringUtils.isNull(sysUser))
+        {
+            return R.fail("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+        }
+        // 瑙掕壊闆嗗悎
+        Set<String> roles = permissionService.getRolePermission(sysUser);
+        // 鏉冮檺闆嗗悎
+        Set<String> permissions = permissionService.getMenuPermission(sysUser);
+        LoginUser sysUserVo = new LoginUser();
+        sysUserVo.setSysUser(sysUser);
+        sysUserVo.setRoles(roles);
+        sysUserVo.setPermissions(permissions);
+        return R.ok(sysUserVo);
+    }
+
+    /**
+     * 娉ㄥ唽鐢ㄦ埛淇℃伅
+     */
+    @InnerAuth
+    @PostMapping("/register")
+    public R<Boolean> register(@RequestBody SysUser sysUser)
+    {
+        String username = sysUser.getUserName();
+        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
+        {
+            return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚敞鍐屽姛鑳斤紒");
+        }
+        if (!userService.checkUserNameUnique(sysUser))
+        {
+            return R.fail("淇濆瓨鐢ㄦ埛'" + username + "'澶辫触锛屾敞鍐岃处鍙峰凡瀛樺湪");
+        }
+        return R.ok(userService.registerUser(sysUser));
+    }
+
+    /**
+     *璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂�
+     */
+    @InnerAuth
+    @PutMapping("/recordlogin")
+    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());
+        // 瑙掕壊闆嗗悎
+        Set<String> roles = permissionService.getRolePermission(user);
+        // 鏉冮檺闆嗗悎
+        Set<String> permissions = permissionService.getMenuPermission(user);
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("user", user);
+        ajax.put("roles", roles);
+        ajax.put("permissions", permissions);
+        return ajax;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅
+     */
+    @RequiresPermissions("system:user:query")
+    @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))
+        {
+            SysUser sysUser = userService.selectUserById(userId);
+            ajax.put(AjaxResult.DATA_TAG, sysUser);
+            ajax.put("postIds", postService.selectPostListByUserId(userId));
+            ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
+        }
+        return ajax;
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛
+     */
+    @RequiresPermissions("system:user:add")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@Validated @RequestBody SysUser user)
+    {
+        deptService.checkDeptDataScope(user.getDeptId());
+        roleService.checkRoleDataScope(user.getRoleIds());
+        if (!userService.checkUserNameUnique(user))
+        {
+            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
+        }
+        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        {
+            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
+        }
+        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
+        {
+            return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
+        }
+        user.setCreateBy(SecurityUtils.getUsername());
+        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        return toAjax(userService.insertUser(user));
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛
+     */
+    @RequiresPermissions("system:user:edit")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    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))
+        {
+            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
+        }
+        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+        {
+            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
+        }
+        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
+        {
+            return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
+        }
+        user.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(userService.updateUser(user));
+    }
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛
+     */
+    @RequiresPermissions("system:user:remove")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{userIds}")
+    public AjaxResult remove(@PathVariable Long[] userIds)
+    {
+        if (ArrayUtils.contains(userIds, SecurityUtils.getUserId()))
+        {
+            return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎");
+        }
+        return toAjax(userService.deleteUserByIds(userIds));
+    }
+
+    /**
+     * 閲嶇疆瀵嗙爜
+     */
+    @RequiresPermissions("system:user:edit")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/resetPwd")
+    public AjaxResult resetPwd(@RequestBody SysUser user)
+    {
+        userService.checkUserAllowed(user);
+        userService.checkUserDataScope(user.getUserId());
+        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        user.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(userService.resetPwd(user));
+    }
+
+    /**
+     * 鐘舵�佷慨鏀�
+     */
+    @RequiresPermissions("system:user:edit")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public AjaxResult changeStatus(@RequestBody SysUser user)
+    {
+        userService.checkUserAllowed(user);
+        userService.checkUserDataScope(user.getUserId());
+        user.setUpdateBy(SecurityUtils.getUsername());
+        return toAjax(userService.updateUserStatus(user));
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊
+     */
+    @RequiresPermissions("system:user:query")
+    @GetMapping("/authRole/{userId}")
+    public AjaxResult authRole(@PathVariable("userId") Long userId)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        SysUser user = userService.selectUserById(userId);
+        List<SysRole> roles = roleService.selectRolesByUserId(userId);
+        ajax.put("user", user);
+        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
+        return ajax;
+    }
+
+    /**
+     * 鐢ㄦ埛鎺堟潈瑙掕壊
+     */
+    @RequiresPermissions("system:user:edit")
+    @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT)
+    @PutMapping("/authRole")
+    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
+    {
+        userService.checkUserDataScope(userId);
+        roleService.checkRoleDataScope(roleIds);
+        userService.insertUserAuth(userId, roleIds);
+        return success();
+    }
+
+    /**
+     * 鑾峰彇閮ㄩ棬鏍戝垪琛�
+     */
+    @RequiresPermissions("system:user:list")
+    @GetMapping("/deptTree")
+    public AjaxResult deptTree(SysDept dept)
+    {
+        return success(deptService.selectDeptTreeList(dept));
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java
new file mode 100644
index 0000000..f5804b5
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/controller/SysUserOnlineController.java
@@ -0,0 +1,84 @@
+package com.se.system.controller;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import com.se.system.domain.SysUserOnline;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.web.controller.BaseController;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.core.web.page.TableDataInfo;
+import com.se.common.log.annotation.Log;
+import com.se.common.log.enums.BusinessType;
+import com.se.common.redis.service.RedisService;
+import com.se.common.security.annotation.RequiresPermissions;
+import com.se.system.api.model.LoginUser;
+import com.se.system.service.ISysUserOnlineService;
+
+/**
+ * 鍦ㄧ嚎鐢ㄦ埛鐩戞帶
+ * 
+ * @author admin
+ */
+@RestController
+@RequestMapping("/online")
+public class SysUserOnlineController extends BaseController
+{
+    @Autowired
+    private ISysUserOnlineService userOnlineService;
+
+    @Autowired
+    private RedisService redisService;
+
+    @RequiresPermissions("monitor:online:list")
+    @GetMapping("/list")
+    public TableDataInfo list(String ipaddr, String userName)
+    {
+        Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
+        List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
+        for (String key : keys)
+        {
+            LoginUser user = redisService.getCacheObject(key);
+            if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
+            {
+                userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
+            }
+            else if (StringUtils.isNotEmpty(ipaddr))
+            {
+                userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
+            }
+            else if (StringUtils.isNotEmpty(userName))
+            {
+                userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
+            }
+            else
+            {
+                userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
+            }
+        }
+        Collections.reverse(userOnlineList);
+        userOnlineList.removeAll(Collections.singleton(null));
+        return getDataTable(userOnlineList);
+    }
+
+    /**
+     * 寮洪��鐢ㄦ埛
+     */
+    @RequiresPermissions("monitor:online:forceLogout")
+    @Log(title = "鍦ㄧ嚎鐢ㄦ埛", businessType = BusinessType.FORCE)
+    @DeleteMapping("/{tokenId}")
+    public AjaxResult forceLogout(@PathVariable String tokenId)
+    {
+        redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
+        return success();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java
new file mode 100644
index 0000000..e4f1570
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysConfig.java
@@ -0,0 +1,111 @@
+package com.se.system.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.se.common.core.annotation.Excel;
+import com.se.common.core.annotation.Excel.ColumnType;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 鍙傛暟閰嶇疆琛� sys_config
+ * 
+ * @author admin
+ */
+public class SysConfig extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鍙傛暟涓婚敭 */
+    @Excel(name = "鍙傛暟涓婚敭", cellType = ColumnType.NUMERIC)
+    private Long configId;
+
+    /** 鍙傛暟鍚嶇О */
+    @Excel(name = "鍙傛暟鍚嶇О")
+    private String configName;
+
+    /** 鍙傛暟閿悕 */
+    @Excel(name = "鍙傛暟閿悕")
+    private String configKey;
+
+    /** 鍙傛暟閿�� */
+    @Excel(name = "鍙傛暟閿��")
+    private String configValue;
+
+    /** 绯荤粺鍐呯疆锛圷鏄� N鍚︼級 */
+    @Excel(name = "绯荤粺鍐呯疆", readConverterExp = "Y=鏄�,N=鍚�")
+    private String configType;
+
+    public Long getConfigId()
+    {
+        return configId;
+    }
+
+    public void setConfigId(Long configId)
+    {
+        this.configId = configId;
+    }
+
+    @NotBlank(message = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")
+    @Size(min = 0, max = 100, message = "鍙傛暟鍚嶇О涓嶈兘瓒呰繃100涓瓧绗�")
+    public String getConfigName()
+    {
+        return configName;
+    }
+
+    public void setConfigName(String configName)
+    {
+        this.configName = configName;
+    }
+
+    @NotBlank(message = "鍙傛暟閿悕闀垮害涓嶈兘涓虹┖")
+    @Size(min = 0, max = 100, message = "鍙傛暟閿悕闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
+    public String getConfigKey()
+    {
+        return configKey;
+    }
+
+    public void setConfigKey(String configKey)
+    {
+        this.configKey = configKey;
+    }
+
+    @NotBlank(message = "鍙傛暟閿�间笉鑳戒负绌�")
+    @Size(min = 0, max = 500, message = "鍙傛暟閿�奸暱搴︿笉鑳借秴杩�500涓瓧绗�")
+    public String getConfigValue()
+    {
+        return configValue;
+    }
+
+    public void setConfigValue(String configValue)
+    {
+        this.configValue = configValue;
+    }
+
+    public String getConfigType()
+    {
+        return configType;
+    }
+
+    public void setConfigType(String configType)
+    {
+        this.configType = configType;
+    }
+    
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("configId", getConfigId())
+            .append("configName", getConfigName())
+            .append("configKey", getConfigKey())
+            .append("configValue", getConfigValue())
+            .append("configType", getConfigType())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java
new file mode 100644
index 0000000..a22cecb
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysMenu.java
@@ -0,0 +1,274 @@
+package com.se.system.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 鑿滃崟鏉冮檺琛� sys_menu
+ * 
+ * @author admin
+ */
+public class SysMenu extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鑿滃崟ID */
+    private Long menuId;
+
+    /** 鑿滃崟鍚嶇О */
+    private String menuName;
+
+    /** 鐖惰彍鍗曞悕绉� */
+    private String parentName;
+
+    /** 鐖惰彍鍗旾D */
+    private Long parentId;
+
+    /** 鏄剧ず椤哄簭 */
+    private Integer orderNum;
+
+    /** 璺敱鍦板潃 */
+    private String path;
+
+    /** 缁勪欢璺緞 */
+    private String component;
+
+    /** 璺敱鍙傛暟 */
+    private String query;
+
+    /** 璺敱鍚嶇О锛岄粯璁ゅ拰璺敱鍦板潃鐩稿悓鐨勯┘宄版牸寮忥紙娉ㄦ剰锛氬洜涓簐ue3鐗堟湰鐨剅outer浼氬垹闄ゅ悕绉扮浉鍚岃矾鐢憋紝涓洪伩鍏嶅悕瀛楃殑鍐茬獊锛岀壒娈婃儏鍐靛彲浠ヨ嚜瀹氫箟锛� */
+    private String routeName;
+
+    /** 鏄惁涓哄閾撅紙0鏄� 1鍚︼級 */
+    private String isFrame;
+
+    /** 鏄惁缂撳瓨锛�0缂撳瓨 1涓嶇紦瀛橈級 */
+    private String isCache;
+
+    /** 绫诲瀷锛圡鐩綍 C鑿滃崟 F鎸夐挳锛� */
+    private String menuType;
+
+    /** 鏄剧ず鐘舵�侊紙0鏄剧ず 1闅愯棌锛� */
+    private String visible;
+    
+    /** 鑿滃崟鐘舵�侊紙0姝e父 1鍋滅敤锛� */
+    private String status;
+
+    /** 鏉冮檺瀛楃涓� */
+    private String perms;
+
+    /** 鑿滃崟鍥炬爣 */
+    private String icon;
+
+    /** 瀛愯彍鍗� */
+    private List<SysMenu> children = new ArrayList<SysMenu>();
+
+    public Long getMenuId()
+    {
+        return menuId;
+    }
+
+    public void setMenuId(Long menuId)
+    {
+        this.menuId = menuId;
+    }
+
+    @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖")
+    @Size(min = 0, max = 50, message = "鑿滃崟鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
+    public String getMenuName()
+    {
+        return menuName;
+    }
+
+    public void setMenuName(String menuName)
+    {
+        this.menuName = menuName;
+    }
+
+    public String getParentName()
+    {
+        return parentName;
+    }
+
+    public void setParentName(String parentName)
+    {
+        this.parentName = parentName;
+    }
+
+    public Long getParentId()
+    {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId)
+    {
+        this.parentId = parentId;
+    }
+
+    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
+    public Integer getOrderNum()
+    {
+        return orderNum;
+    }
+
+    public void setOrderNum(Integer orderNum)
+    {
+        this.orderNum = orderNum;
+    }
+
+    @Size(min = 0, max = 200, message = "璺敱鍦板潃涓嶈兘瓒呰繃200涓瓧绗�")
+    public String getPath()
+    {
+        return path;
+    }
+
+    public void setPath(String path)
+    {
+        this.path = path;
+    }
+
+    @Size(min = 0, max = 200, message = "缁勪欢璺緞涓嶈兘瓒呰繃255涓瓧绗�")
+    public String getComponent()
+    {
+        return component;
+    }
+
+    public void setComponent(String component)
+    {
+        this.component = component;
+    }
+
+    public String getQuery()
+    {
+        return query;
+    }
+
+    public void setQuery(String query)
+    {
+        this.query = query;
+    }
+
+    public String getRouteName()
+    {
+        return routeName;
+    }
+
+    public void setRouteName(String routeName)
+    {
+        this.routeName = routeName;
+    }
+
+    public String getIsFrame()
+    {
+        return isFrame;
+    }
+
+    public void setIsFrame(String isFrame)
+    {
+        this.isFrame = isFrame;
+    }
+
+    public String getIsCache()
+    {
+        return isCache;
+    }
+
+    public void setIsCache(String isCache)
+    {
+        this.isCache = isCache;
+    }
+
+    @NotBlank(message = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")
+    public String getMenuType()
+    {
+        return menuType;
+    }
+
+    public void setMenuType(String menuType)
+    {
+        this.menuType = menuType;
+    }
+
+    public String getVisible()
+    {
+        return visible;
+    }
+
+    public void setVisible(String visible)
+    {
+        this.visible = visible;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    @Size(min = 0, max = 100, message = "鏉冮檺鏍囪瘑闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
+    public String getPerms()
+    {
+        return perms;
+    }
+
+    public void setPerms(String perms)
+    {
+        this.perms = perms;
+    }
+
+    public String getIcon()
+    {
+        return icon;
+    }
+
+    public void setIcon(String icon)
+    {
+        this.icon = icon;
+    }
+
+    public List<SysMenu> getChildren()
+    {
+        return children;
+    }
+
+    public void setChildren(List<SysMenu> children)
+    {
+        this.children = children;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("menuId", getMenuId())
+            .append("menuName", getMenuName())
+            .append("parentId", getParentId())
+            .append("orderNum", getOrderNum())
+            .append("path", getPath())
+            .append("component", getComponent())
+            .append("query", getQuery())
+            .append("routeName", getRouteName())
+            .append("isFrame", getIsFrame())
+            .append("IsCache", getIsCache())
+            .append("menuType", getMenuType())
+            .append("visible", getVisible())
+            .append("status ", getStatus())
+            .append("perms", getPerms())
+            .append("icon", getIcon())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java
new file mode 100644
index 0000000..11c901a
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysNotice.java
@@ -0,0 +1,102 @@
+package com.se.system.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.se.common.core.web.domain.BaseEntity;
+import com.se.common.core.xss.Xss;
+
+/**
+ * 閫氱煡鍏憡琛� sys_notice
+ * 
+ * @author admin
+ */
+public class SysNotice extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鍏憡ID */
+    private Long noticeId;
+
+    /** 鍏憡鏍囬 */
+    private String noticeTitle;
+
+    /** 鍏憡绫诲瀷锛�1閫氱煡 2鍏憡锛� */
+    private String noticeType;
+
+    /** 鍏憡鍐呭 */
+    private String noticeContent;
+
+    /** 鍏憡鐘舵�侊紙0姝e父 1鍏抽棴锛� */
+    private String status;
+
+    public Long getNoticeId()
+    {
+        return noticeId;
+    }
+
+    public void setNoticeId(Long noticeId)
+    {
+        this.noticeId = noticeId;
+    }
+
+    public void setNoticeTitle(String noticeTitle)
+    {
+        this.noticeTitle = noticeTitle;
+    }
+
+    @Xss(message = "鍏憡鏍囬涓嶈兘鍖呭惈鑴氭湰瀛楃")
+    @NotBlank(message = "鍏憡鏍囬涓嶈兘涓虹┖")
+    @Size(min = 0, max = 50, message = "鍏憡鏍囬涓嶈兘瓒呰繃50涓瓧绗�")
+    public String getNoticeTitle()
+    {
+        return noticeTitle;
+    }
+
+    public void setNoticeType(String noticeType)
+    {
+        this.noticeType = noticeType;
+    }
+
+    public String getNoticeType()
+    {
+        return noticeType;
+    }
+
+    public void setNoticeContent(String noticeContent)
+    {
+        this.noticeContent = noticeContent;
+    }
+
+    public String getNoticeContent()
+    {
+        return noticeContent;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("noticeId", getNoticeId())
+            .append("noticeTitle", getNoticeTitle())
+            .append("noticeType", getNoticeType())
+            .append("noticeContent", getNoticeContent())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java
new file mode 100644
index 0000000..d134f39
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysPost.java
@@ -0,0 +1,124 @@
+package com.se.system.domain;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.se.common.core.annotation.Excel;
+import com.se.common.core.annotation.Excel.ColumnType;
+import com.se.common.core.web.domain.BaseEntity;
+
+/**
+ * 宀椾綅琛� sys_post
+ * 
+ * @author admin
+ */
+public class SysPost extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 宀椾綅搴忓彿 */
+    @Excel(name = "宀椾綅搴忓彿", cellType = ColumnType.NUMERIC)
+    private Long postId;
+
+    /** 宀椾綅缂栫爜 */
+    @Excel(name = "宀椾綅缂栫爜")
+    private String postCode;
+
+    /** 宀椾綅鍚嶇О */
+    @Excel(name = "宀椾綅鍚嶇О")
+    private String postName;
+
+    /** 宀椾綅鎺掑簭 */
+    @Excel(name = "宀椾綅鎺掑簭")
+    private Integer postSort;
+
+    /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */
+    @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
+    private String status;
+
+    /** 鐢ㄦ埛鏄惁瀛樺湪姝ゅ矖浣嶆爣璇� 榛樿涓嶅瓨鍦� */
+    private boolean flag = false;
+
+    public Long getPostId()
+    {
+        return postId;
+    }
+
+    public void setPostId(Long postId)
+    {
+        this.postId = postId;
+    }
+
+    @NotBlank(message = "宀椾綅缂栫爜涓嶈兘涓虹┖")
+    @Size(min = 0, max = 64, message = "宀椾綅缂栫爜闀垮害涓嶈兘瓒呰繃64涓瓧绗�")
+    public String getPostCode()
+    {
+        return postCode;
+    }
+
+    public void setPostCode(String postCode)
+    {
+        this.postCode = postCode;
+    }
+
+    @NotBlank(message = "宀椾綅鍚嶇О涓嶈兘涓虹┖")
+    @Size(min = 0, max = 50, message = "宀椾綅鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
+    public String getPostName()
+    {
+        return postName;
+    }
+
+    public void setPostName(String postName)
+    {
+        this.postName = postName;
+    }
+
+    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
+    public Integer getPostSort()
+    {
+        return postSort;
+    }
+
+    public void setPostSort(Integer postSort)
+    {
+        this.postSort = postSort;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public boolean isFlag()
+    {
+        return flag;
+    }
+
+    public void setFlag(boolean flag)
+    {
+        this.flag = flag;
+    }
+    
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("postId", getPostId())
+            .append("postCode", getPostCode())
+            .append("postName", getPostName())
+            .append("postSort", getPostSort())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java
new file mode 100644
index 0000000..cd6f339
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleDept.java
@@ -0,0 +1,46 @@
+package com.se.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 瑙掕壊鍜岄儴闂ㄥ叧鑱� sys_role_dept
+ * 
+ * @author admin
+ */
+public class SysRoleDept
+{
+    /** 瑙掕壊ID */
+    private Long roleId;
+    
+    /** 閮ㄩ棬ID */
+    private Long deptId;
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("roleId", getRoleId())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java
new file mode 100644
index 0000000..5deac01
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysRoleMenu.java
@@ -0,0 +1,46 @@
+package com.se.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 瑙掕壊鍜岃彍鍗曞叧鑱� sys_role_menu
+ * 
+ * @author admin
+ */
+public class SysRoleMenu
+{
+    /** 瑙掕壊ID */
+    private Long roleId;
+    
+    /** 鑿滃崟ID */
+    private Long menuId;
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public Long getMenuId()
+    {
+        return menuId;
+    }
+
+    public void setMenuId(Long menuId)
+    {
+        this.menuId = menuId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("roleId", getRoleId())
+            .append("menuId", getMenuId())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java
new file mode 100644
index 0000000..fa2d663
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserOnline.java
@@ -0,0 +1,100 @@
+package com.se.system.domain;
+
+/**
+ * 褰撳墠鍦ㄧ嚎浼氳瘽
+ * 
+ * @author admin
+ */
+public class SysUserOnline
+{
+    /** 浼氳瘽缂栧彿 */
+    private String tokenId;
+
+    /** 鐢ㄦ埛鍚嶇О */
+    private String userName;
+
+    /** 鐧诲綍IP鍦板潃 */
+    private String ipaddr;
+
+    /** 鐧诲綍鍦板潃 */
+    private String loginLocation;
+
+    /** 娴忚鍣ㄧ被鍨� */
+    private String browser;
+
+    /** 鎿嶄綔绯荤粺 */
+    private String os;
+
+    /** 鐧诲綍鏃堕棿 */
+    private Long loginTime;
+
+    public String getTokenId()
+    {
+        return tokenId;
+    }
+
+    public void setTokenId(String tokenId)
+    {
+        this.tokenId = tokenId;
+    }
+
+    public String getUserName()
+    {
+        return userName;
+    }
+
+    public void setUserName(String userName)
+    {
+        this.userName = userName;
+    }
+
+    public String getIpaddr()
+    {
+        return ipaddr;
+    }
+
+    public void setIpaddr(String ipaddr)
+    {
+        this.ipaddr = ipaddr;
+    }
+
+    public String getLoginLocation()
+    {
+        return loginLocation;
+    }
+
+    public void setLoginLocation(String loginLocation)
+    {
+        this.loginLocation = loginLocation;
+    }
+
+    public String getBrowser()
+    {
+        return browser;
+    }
+
+    public void setBrowser(String browser)
+    {
+        this.browser = browser;
+    }
+
+    public String getOs()
+    {
+        return os;
+    }
+
+    public void setOs(String os)
+    {
+        this.os = os;
+    }
+
+    public Long getLoginTime()
+    {
+        return loginTime;
+    }
+
+    public void setLoginTime(Long loginTime)
+    {
+        this.loginTime = loginTime;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java
new file mode 100644
index 0000000..76e0197
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserPost.java
@@ -0,0 +1,46 @@
+package com.se.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 鐢ㄦ埛鍜屽矖浣嶅叧鑱� sys_user_post
+ * 
+ * @author admin
+ */
+public class SysUserPost
+{
+    /** 鐢ㄦ埛ID */
+    private Long userId;
+    
+    /** 宀椾綅ID */
+    private Long postId;
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getPostId()
+    {
+        return postId;
+    }
+
+    public void setPostId(Long postId)
+    {
+        this.postId = postId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("userId", getUserId())
+            .append("postId", getPostId())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java
new file mode 100644
index 0000000..261f12b
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/SysUserRole.java
@@ -0,0 +1,46 @@
+package com.se.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 鐢ㄦ埛鍜岃鑹插叧鑱� sys_user_role
+ * 
+ * @author admin
+ */
+public class SysUserRole
+{
+    /** 鐢ㄦ埛ID */
+    private Long userId;
+    
+    /** 瑙掕壊ID */
+    private Long roleId;
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("userId", getUserId())
+            .append("roleId", getRoleId())
+            .toString();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java
new file mode 100644
index 0000000..b8e18a3
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/MetaVo.java
@@ -0,0 +1,106 @@
+package com.se.system.domain.vo;
+
+import com.se.common.core.utils.StringUtils;
+
+/**
+ * 璺敱鏄剧ず淇℃伅
+ * 
+ * @author admin
+ */
+public class MetaVo
+{
+    /**
+     * 璁剧疆璇ヨ矾鐢卞湪渚ц竟鏍忓拰闈㈠寘灞戜腑灞曠ず鐨勫悕瀛�
+     */
+    private String title;
+
+    /**
+     * 璁剧疆璇ヨ矾鐢辩殑鍥炬爣锛屽搴旇矾寰剆rc/assets/icons/svg
+     */
+    private String icon;
+
+    /**
+     * 璁剧疆涓簍rue锛屽垯涓嶄細琚� <keep-alive>缂撳瓨
+     */
+    private boolean noCache;
+
+    /**
+     * 鍐呴摼鍦板潃锛坔ttp(s)://寮�澶达級
+     */
+    private String link;
+
+    public MetaVo()
+    {
+    }
+
+    public MetaVo(String title, String icon)
+    {
+        this.title = title;
+        this.icon = icon;
+    }
+
+    public MetaVo(String title, String icon, boolean noCache)
+    {
+        this.title = title;
+        this.icon = icon;
+        this.noCache = noCache;
+    }
+
+    public MetaVo(String title, String icon, String link)
+    {
+        this.title = title;
+        this.icon = icon;
+        this.link = link;
+    }
+
+    public MetaVo(String title, String icon, boolean noCache, String link)
+    {
+        this.title = title;
+        this.icon = icon;
+        this.noCache = noCache;
+        if (StringUtils.ishttp(link))
+        {
+            this.link = link;
+        }
+    }
+
+    public boolean isNoCache()
+    {
+        return noCache;
+    }
+
+    public void setNoCache(boolean noCache)
+    {
+        this.noCache = noCache;
+    }
+
+    public String getTitle()
+    {
+        return title;
+    }
+
+    public void setTitle(String title)
+    {
+        this.title = title;
+    }
+
+    public String getIcon()
+    {
+        return icon;
+    }
+
+    public void setIcon(String icon)
+    {
+        this.icon = icon;
+    }
+
+    public String getLink()
+    {
+        return link;
+    }
+
+    public void setLink(String link)
+    {
+        this.link = link;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java
new file mode 100644
index 0000000..6752f59
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/RouterVo.java
@@ -0,0 +1,148 @@
+package com.se.system.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+/**
+ * 璺敱閰嶇疆淇℃伅
+ * 
+ * @author admin
+ */
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class RouterVo
+{
+    /**
+     * 璺敱鍚嶅瓧
+     */
+    private String name;
+
+    /**
+     * 璺敱鍦板潃
+     */
+    private String path;
+
+    /**
+     * 鏄惁闅愯棌璺敱锛屽綋璁剧疆 true 鐨勬椂鍊欒璺敱涓嶄細鍐嶄晶杈规爮鍑虹幇
+     */
+    private boolean hidden;
+
+    /**
+     * 閲嶅畾鍚戝湴鍧�锛屽綋璁剧疆 noRedirect 鐨勬椂鍊欒璺敱鍦ㄩ潰鍖呭睉瀵艰埅涓笉鍙鐐瑰嚮
+     */
+    private String redirect;
+
+    /**
+     * 缁勪欢鍦板潃
+     */
+    private String component;
+
+    /**
+     * 璺敱鍙傛暟锛氬 {"id": 1, "name": "ry"}
+     */
+    private String query;
+
+    /**
+     * 褰撲綘涓�涓矾鐢变笅闈㈢殑 children 澹版槑鐨勮矾鐢卞ぇ浜�1涓椂锛岃嚜鍔ㄤ細鍙樻垚宓屽鐨勬ā寮�--濡傜粍浠堕〉闈�
+     */
+    private Boolean alwaysShow;
+
+    /**
+     * 鍏朵粬鍏冪礌
+     */
+    private MetaVo meta;
+
+    /**
+     * 瀛愯矾鐢�
+     */
+    private List<RouterVo> children;
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getPath()
+    {
+        return path;
+    }
+
+    public void setPath(String path)
+    {
+        this.path = path;
+    }
+
+    public boolean getHidden()
+    {
+        return hidden;
+    }
+
+    public void setHidden(boolean hidden)
+    {
+        this.hidden = hidden;
+    }
+
+    public String getRedirect()
+    {
+        return redirect;
+    }
+
+    public void setRedirect(String redirect)
+    {
+        this.redirect = redirect;
+    }
+
+    public String getComponent()
+    {
+        return component;
+    }
+
+    public void setComponent(String component)
+    {
+        this.component = component;
+    }
+
+    public String getQuery()
+    {
+        return query;
+    }
+
+    public void setQuery(String query)
+    {
+        this.query = query;
+    }
+
+    public Boolean getAlwaysShow()
+    {
+        return alwaysShow;
+    }
+
+    public void setAlwaysShow(Boolean alwaysShow)
+    {
+        this.alwaysShow = alwaysShow;
+    }
+
+    public MetaVo getMeta()
+    {
+        return meta;
+    }
+
+    public void setMeta(MetaVo meta)
+    {
+        this.meta = meta;
+    }
+
+    public List<RouterVo> getChildren()
+    {
+        return children;
+    }
+
+    public void setChildren(List<RouterVo> children)
+    {
+        this.children = children;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java
new file mode 100644
index 0000000..3c9b631
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/domain/vo/TreeSelect.java
@@ -0,0 +1,77 @@
+package com.se.system.domain.vo;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.stream.Collectors;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.se.system.api.domain.SysDept;
+import com.se.system.domain.SysMenu;
+
+/**
+ * Treeselect鏍戠粨鏋勫疄浣撶被
+ * 
+ * @author admin
+ */
+public class TreeSelect implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鑺傜偣ID */
+    private Long id;
+
+    /** 鑺傜偣鍚嶇О */
+    private String label;
+
+    /** 瀛愯妭鐐� */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<TreeSelect> children;
+
+    public TreeSelect()
+    {
+
+    }
+
+    public TreeSelect(SysDept dept)
+    {
+        this.id = dept.getDeptId();
+        this.label = dept.getDeptName();
+        this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
+    public TreeSelect(SysMenu menu)
+    {
+        this.id = menu.getMenuId();
+        this.label = menu.getMenuName();
+        this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public String getLabel()
+    {
+        return label;
+    }
+
+    public void setLabel(String label)
+    {
+        this.label = label;
+    }
+
+    public List<TreeSelect> getChildren()
+    {
+        return children;
+    }
+
+    public void setChildren(List<TreeSelect> children)
+    {
+        this.children = children;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java
new file mode 100644
index 0000000..a354cee
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysConfigMapper.java
@@ -0,0 +1,76 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysConfig;
+
+/**
+ * 鍙傛暟閰嶇疆 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysConfigMapper
+{
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 鍙傛暟閰嶇疆淇℃伅
+     */
+    public SysConfig selectConfig(SysConfig config);
+
+    /**
+     * 閫氳繃ID鏌ヨ閰嶇疆
+     * 
+     * @param configId 鍙傛暟ID
+     * @return 鍙傛暟閰嶇疆淇℃伅
+     */
+    public SysConfig selectConfigById(Long configId);
+
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 鍙傛暟閰嶇疆闆嗗悎
+     */
+    public List<SysConfig> selectConfigList(SysConfig config);
+
+    /**
+     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param configKey 鍙傛暟閿悕
+     * @return 鍙傛暟閰嶇疆淇℃伅
+     */
+    public SysConfig checkConfigKeyUnique(String configKey);
+
+    /**
+     * 鏂板鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertConfig(SysConfig config);
+
+    /**
+     * 淇敼鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateConfig(SysConfig config);
+
+    /**
+     * 鍒犻櫎鍙傛暟閰嶇疆
+     * 
+     * @param configId 鍙傛暟ID
+     * @return 缁撴灉
+     */
+    public int deleteConfigById(Long configId);
+
+    /**
+     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
+     * 
+     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
+     * @return 缁撴灉
+     */
+    public int deleteConfigByIds(Long[] configIds);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java
new file mode 100644
index 0000000..fe5e015
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDeptMapper.java
@@ -0,0 +1,118 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import com.se.system.api.domain.SysDept;
+
+/**
+ * 閮ㄩ棬绠$悊 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysDeptMapper
+{
+    /**
+     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 閮ㄩ棬淇℃伅闆嗗悎
+     */
+    public List<SysDept> selectDeptList(SysDept dept);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
+     * @return 閫変腑閮ㄩ棬鍒楄〃
+     */
+    public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
+
+    /**
+     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬淇℃伅
+     */
+    public SysDept selectDeptById(Long deptId);
+
+    /**
+     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬鍒楄〃
+     */
+    public List<SysDept> selectChildrenDeptById(Long deptId);
+
+    /**
+     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 瀛愰儴闂ㄦ暟
+     */
+    public int selectNormalChildrenDeptById(Long deptId);
+
+    /**
+     * 鏄惁瀛樺湪瀛愯妭鐐�
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public int hasChildByDeptId(Long deptId);
+
+    /**
+     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public int checkDeptExistUser(Long deptId);
+
+    /**
+     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
+     * 
+     * @param deptName 閮ㄩ棬鍚嶇О
+     * @param parentId 鐖堕儴闂↖D
+     * @return 缁撴灉
+     */
+    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
+
+    /**
+     * 鏂板閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDept(SysDept dept);
+
+    /**
+     * 淇敼閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDept(SysDept dept);
+
+    /**
+     * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬�
+     * 
+     * @param deptIds 閮ㄩ棬ID缁�
+     */
+    public void updateDeptStatusNormal(Long[] deptIds);
+
+    /**
+     * 淇敼瀛愬厓绱犲叧绯�
+     * 
+     * @param depts 瀛愬厓绱�
+     * @return 缁撴灉
+     */
+    public int updateDeptChildren(@Param("depts") List<SysDept> depts);
+
+    /**
+     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public int deleteDeptById(Long deptId);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java
new file mode 100644
index 0000000..6b287b4
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictDataMapper.java
@@ -0,0 +1,95 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import com.se.system.api.domain.SysDictData;
+
+/**
+ * 瀛楀吀琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysDictDataMapper
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysDictData> selectDictDataList(SysDictData dictData);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysDictData> selectDictDataByType(String dictType);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @param dictValue 瀛楀吀閿��
+     * @return 瀛楀吀鏍囩
+     */
+    public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
+
+    /**
+     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
+     * 
+     * @param dictCode 瀛楀吀鏁版嵁ID
+     * @return 瀛楀吀鏁版嵁
+     */
+    public SysDictData selectDictDataById(Long dictCode);
+
+    /**
+     * 鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀鏁版嵁
+     */
+    public int countDictDataByType(String dictType);
+
+    /**
+     * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictCode 瀛楀吀鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteDictDataById(Long dictCode);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteDictDataByIds(Long[] dictCodes);
+
+    /**
+     * 鏂板瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDictData(SysDictData dictData);
+
+    /**
+     * 淇敼瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDictData(SysDictData dictData);
+
+    /**
+     * 鍚屾淇敼瀛楀吀绫诲瀷
+     * 
+     * @param oldDictType 鏃у瓧鍏哥被鍨�
+     * @param newDictType 鏂版棫瀛楀吀绫诲瀷
+     * @return 缁撴灉
+     */
+    public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java
new file mode 100644
index 0000000..463bc23
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysDictTypeMapper.java
@@ -0,0 +1,83 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.api.domain.SysDictType;
+
+/**
+ * 瀛楀吀琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysDictTypeMapper
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    public List<SysDictType> selectDictTypeList(SysDictType dictType);
+
+    /**
+     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
+     * 
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    public List<SysDictType> selectDictTypeAll();
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
+     * 
+     * @param dictId 瀛楀吀绫诲瀷ID
+     * @return 瀛楀吀绫诲瀷
+     */
+    public SysDictType selectDictTypeById(Long dictId);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀绫诲瀷
+     */
+    public SysDictType selectDictTypeByType(String dictType);
+
+    /**
+     * 閫氳繃瀛楀吀ID鍒犻櫎瀛楀吀淇℃伅
+     * 
+     * @param dictId 瀛楀吀ID
+     * @return 缁撴灉
+     */
+    public int deleteDictTypeById(Long dictId);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
+     * @return 缁撴灉
+     */
+    public int deleteDictTypeByIds(Long[] dictIds);
+
+    /**
+     * 鏂板瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDictType(SysDictType dictType);
+
+    /**
+     * 淇敼瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDictType(SysDictType dictType);
+
+    /**
+     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 缁撴灉
+     */
+    public SysDictType checkDictTypeUnique(String dictType);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java
new file mode 100644
index 0000000..10c060f
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysLogininforMapper.java
@@ -0,0 +1,42 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.api.domain.SysLogininfor;
+
+/**
+ * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysLogininforMapper
+{
+    /**
+     * 鏂板绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     */
+    public int insertLogininfor(SysLogininfor logininfor);
+
+    /**
+     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     * @return 鐧诲綍璁板綍闆嗗悎
+     */
+    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteLogininforByIds(Long[] infoIds);
+
+    /**
+     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @return 缁撴灉
+     */
+    public int cleanLogininfor();
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java
new file mode 100644
index 0000000..4df0242
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysMenuMapper.java
@@ -0,0 +1,126 @@
+package com.se.system.mapper;
+
+import java.util.List;
+
+import com.se.system.domain.SysMenu;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鑿滃崟琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysMenuMapper
+{
+    /**
+     * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuList(SysMenu menu);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄�
+     * 
+     * @return 鏉冮檺鍒楄〃
+     */
+    public List<String> selectMenuPerms();
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuListByUserId(SysMenu menu);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    public List<String> selectMenuPermsByRoleId(Long roleId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    public List<String> selectMenuPermsByUserId(Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
+     * 
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuTreeAll();
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuTreeByUserId(Long userId);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
+     * @return 閫変腑鑿滃崟鍒楄〃
+     */
+    public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
+
+    /**
+     * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 鑿滃崟淇℃伅
+     */
+    public SysMenu selectMenuById(Long menuId);
+
+    /**
+     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    public int hasChildByMenuId(Long menuId);
+
+    /**
+     * 鏂板鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertMenu(SysMenu menu);
+
+    /**
+     * 淇敼鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateMenu(SysMenu menu);
+
+    /**
+     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    public int deleteMenuById(Long menuId);
+
+    /**
+     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
+     * 
+     * @param menuName 鑿滃崟鍚嶇О
+     * @param parentId 鐖惰彍鍗旾D
+     * @return 缁撴灉
+     */
+    public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java
new file mode 100644
index 0000000..fa19fe8
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysNoticeMapper.java
@@ -0,0 +1,60 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysNotice;
+
+/**
+ * 閫氱煡鍏憡琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysNoticeMapper
+{
+    /**
+     * 鏌ヨ鍏憡淇℃伅
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 鍏憡淇℃伅
+     */
+    public SysNotice selectNoticeById(Long noticeId);
+
+    /**
+     * 鏌ヨ鍏憡鍒楄〃
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 鍏憡闆嗗悎
+     */
+    public List<SysNotice> selectNoticeList(SysNotice notice);
+
+    /**
+     * 鏂板鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertNotice(SysNotice notice);
+
+    /**
+     * 淇敼鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateNotice(SysNotice notice);
+
+    /**
+     * 鎵归噺鍒犻櫎鍏憡
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 缁撴灉
+     */
+    public int deleteNoticeById(Long noticeId);
+
+    /**
+     * 鎵归噺鍒犻櫎鍏憡淇℃伅
+     * 
+     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
+     * @return 缁撴灉
+     */
+    public int deleteNoticeByIds(Long[] noticeIds);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java
new file mode 100644
index 0000000..c0b255b
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysOperLogMapper.java
@@ -0,0 +1,48 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.api.domain.SysOperLog;
+
+/**
+ * 鎿嶄綔鏃ュ織 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysOperLogMapper
+{
+    /**
+     * 鏂板鎿嶄綔鏃ュ織
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     */
+    public int insertOperlog(SysOperLog operLog);
+
+    /**
+     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     * @return 鎿嶄綔鏃ュ織闆嗗悎
+     */
+    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
+     * 
+     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteOperLogByIds(Long[] operIds);
+
+    /**
+     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
+     * 
+     * @param operId 鎿嶄綔ID
+     * @return 鎿嶄綔鏃ュ織瀵硅薄
+     */
+    public SysOperLog selectOperLogById(Long operId);
+
+    /**
+     * 娓呯┖鎿嶄綔鏃ュ織
+     */
+    public void cleanOperLog();
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java
new file mode 100644
index 0000000..af2f0b9
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysPostMapper.java
@@ -0,0 +1,99 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysPost;
+
+/**
+ * 宀椾綅淇℃伅 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysPostMapper
+{
+    /**
+     * 鏌ヨ宀椾綅鏁版嵁闆嗗悎
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 宀椾綅鏁版嵁闆嗗悎
+     */
+    public List<SysPost> selectPostList(SysPost post);
+
+    /**
+     * 鏌ヨ鎵�鏈夊矖浣�
+     * 
+     * @return 宀椾綅鍒楄〃
+     */
+    public List<SysPost> selectPostAll();
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    public SysPost selectPostById(Long postId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑宀椾綅ID鍒楄〃
+     */
+    public List<Long> selectPostListByUserId(Long userId);
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 缁撴灉
+     */
+    public List<SysPost> selectPostsByUserName(String userName);
+
+    /**
+     * 鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int deletePostById(Long postId);
+
+    /**
+     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int deletePostByIds(Long[] postIds);
+
+    /**
+     * 淇敼宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public int updatePost(SysPost post);
+
+    /**
+     * 鏂板宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertPost(SysPost post);
+
+    /**
+     * 鏍¢獙宀椾綅鍚嶇О
+     * 
+     * @param postName 宀椾綅鍚嶇О
+     * @return 缁撴灉
+     */
+    public SysPost checkPostNameUnique(String postName);
+
+    /**
+     * 鏍¢獙宀椾綅缂栫爜
+     * 
+     * @param postCode 宀椾綅缂栫爜
+     * @return 缁撴灉
+     */
+    public SysPost checkPostCodeUnique(String postCode);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java
new file mode 100644
index 0000000..8004a5d
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleDeptMapper.java
@@ -0,0 +1,44 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysRoleDept;
+
+/**
+ * 瑙掕壊涓庨儴闂ㄥ叧鑱旇〃 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysRoleDeptMapper
+{
+    /**
+     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岄儴闂ㄥ叧鑱�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleDeptByRoleId(Long roleId);
+
+    /**
+     * 鎵归噺鍒犻櫎瑙掕壊閮ㄩ棬鍏宠仈淇℃伅
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleDept(Long[] ids);
+
+    /**
+     * 鏌ヨ閮ㄩ棬浣跨敤鏁伴噺
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public int selectCountRoleDeptByDeptId(Long deptId);
+
+    /**
+     * 鎵归噺鏂板瑙掕壊閮ㄩ棬淇℃伅
+     * 
+     * @param roleDeptList 瑙掕壊閮ㄩ棬鍒楄〃
+     * @return 缁撴灉
+     */
+    public int batchRoleDept(List<SysRoleDept> roleDeptList);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java
new file mode 100644
index 0000000..09bddc7
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMapper.java
@@ -0,0 +1,107 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.api.domain.SysRole;
+
+/**
+ * 瑙掕壊琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysRoleMapper
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysRole> selectRoleList(SysRole role);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 瑙掕壊鍒楄〃
+     */
+    public List<SysRole> selectRolePermissionByUserId(Long userId);
+
+    /**
+     * 鏌ヨ鎵�鏈夎鑹�
+     * 
+     * @return 瑙掕壊鍒楄〃
+     */
+    public List<SysRole> selectRoleAll();
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑瑙掕壊ID鍒楄〃
+     */
+    public List<Long> selectRoleListByUserId(Long userId);
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    public SysRole selectRoleById(Long roleId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 瑙掕壊鍒楄〃
+     */
+    public List<SysRole> selectRolesByUserName(String userName);
+
+    /**
+     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
+     * 
+     * @param roleName 瑙掕壊鍚嶇О
+     * @return 瑙掕壊淇℃伅
+     */
+    public SysRole checkRoleNameUnique(String roleName);
+
+    /**
+     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
+     * 
+     * @param roleKey 瑙掕壊鏉冮檺
+     * @return 瑙掕壊淇℃伅
+     */
+    public SysRole checkRoleKeyUnique(String roleKey);
+
+    /**
+     * 淇敼瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateRole(SysRole role);
+
+    /**
+     * 鏂板瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertRole(SysRole role);
+
+    /**
+     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleById(Long roleId);
+
+    /**
+     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
+     * 
+     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleByIds(Long[] roleIds);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java
new file mode 100644
index 0000000..22cbef8
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysRoleMenuMapper.java
@@ -0,0 +1,44 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysRoleMenu;
+
+/**
+ * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysRoleMenuMapper
+{
+    /**
+     * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    public int checkMenuExistRole(Long menuId);
+
+    /**
+     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岃彍鍗曞叧鑱�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleMenuByRoleId(Long roleId);
+
+    /**
+     * 鎵归噺鍒犻櫎瑙掕壊鑿滃崟鍏宠仈淇℃伅
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleMenu(Long[] ids);
+
+    /**
+     * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅
+     * 
+     * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃
+     * @return 缁撴灉
+     */
+    public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java
new file mode 100644
index 0000000..00a7aff
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserMapper.java
@@ -0,0 +1,127 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import com.se.system.api.domain.SysUser;
+
+/**
+ * 鐢ㄦ埛琛� 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysUserMapper
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
+     * 
+     * @param sysUser 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectUserList(SysUser sysUser);
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectAllocatedList(SysUser user);
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectUnallocatedList(SysUser user);
+
+    /**
+     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public SysUser selectUserByUserName(String userName);
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public SysUser selectUserById(Long userId);
+
+    /**
+     * 鏂板鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertUser(SysUser user);
+
+    /**
+     * 淇敼鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateUser(SysUser user);
+
+    /**
+     * 淇敼鐢ㄦ埛澶村儚
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param avatar 澶村儚鍦板潃
+     * @return 缁撴灉
+     */
+    public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
+
+    /**
+     * 閲嶇疆鐢ㄦ埛瀵嗙爜
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param password 瀵嗙爜
+     * @return 缁撴灉
+     */
+    public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserById(Long userId);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
+     * 
+     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserByIds(Long[] userIds);
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
+     * 
+     * @param userName 鐢ㄦ埛鍚嶇О
+     * @return 缁撴灉
+     */
+    public SysUser checkUserNameUnique(String userName);
+
+    /**
+     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
+     *
+     * @param phonenumber 鎵嬫満鍙风爜
+     * @return 缁撴灉
+     */
+    public SysUser checkPhoneUnique(String phonenumber);
+
+    /**
+     * 鏍¢獙email鏄惁鍞竴
+     *
+     * @param email 鐢ㄦ埛閭
+     * @return 缁撴灉
+     */
+    public SysUser checkEmailUnique(String email);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java
new file mode 100644
index 0000000..ebd6aaa
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserPostMapper.java
@@ -0,0 +1,44 @@
+package com.se.system.mapper;
+
+import java.util.List;
+import com.se.system.domain.SysUserPost;
+
+/**
+ * 鐢ㄦ埛涓庡矖浣嶅叧鑱旇〃 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysUserPostMapper
+{
+    /**
+     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserPostByUserId(Long userId);
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int countUserPostById(Long postId);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛鍜屽矖浣嶅叧鑱�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteUserPost(Long[] ids);
+
+    /**
+     * 鎵归噺鏂板鐢ㄦ埛宀椾綅淇℃伅
+     * 
+     * @param userPostList 鐢ㄦ埛宀椾綅鍒楄〃
+     * @return 缁撴灉
+     */
+    public int batchUserPost(List<SysUserPost> userPostList);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java
new file mode 100644
index 0000000..6903274
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/mapper/SysUserRoleMapper.java
@@ -0,0 +1,63 @@
+package com.se.system.mapper;
+
+import java.util.List;
+
+import com.se.system.domain.SysUserRole;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鐢ㄦ埛涓庤鑹插叧鑱旇〃 鏁版嵁灞�
+ * 
+ * @author admin
+ */
+public interface SysUserRoleMapper
+{
+    /**
+     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserRoleByUserId(Long userId);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteUserRole(Long[] ids);
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int countUserRoleByRoleId(Long roleId);
+
+    /**
+     * 鎵归噺鏂板鐢ㄦ埛瑙掕壊淇℃伅
+     * 
+     * @param userRoleList 鐢ㄦ埛瑙掕壊鍒楄〃
+     * @return 缁撴灉
+     */
+    public int batchUserRole(List<SysUserRole> userRoleList);
+
+    /**
+     * 鍒犻櫎鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
+     * 
+     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
+     * @return 缁撴灉
+     */
+    public int deleteUserRoleInfo(SysUserRole userRole);
+
+    /**
+     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java
new file mode 100644
index 0000000..0bf126e
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysConfigService.java
@@ -0,0 +1,82 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.domain.SysConfig;
+
+/**
+ * 鍙傛暟閰嶇疆 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysConfigService
+{
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param configId 鍙傛暟閰嶇疆ID
+     * @return 鍙傛暟閰嶇疆淇℃伅
+     */
+    public SysConfig selectConfigById(Long configId);
+
+    /**
+     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param configKey 鍙傛暟閿悕
+     * @return 鍙傛暟閿��
+     */
+    public String selectConfigByKey(String configKey);
+
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 鍙傛暟閰嶇疆闆嗗悎
+     */
+    public List<SysConfig> selectConfigList(SysConfig config);
+
+    /**
+     * 鏂板鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertConfig(SysConfig config);
+
+    /**
+     * 淇敼鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateConfig(SysConfig config);
+
+    /**
+     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
+     * 
+     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
+     */
+    public void deleteConfigByIds(Long[] configIds);
+
+    /**
+     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁
+     */
+    public void loadingConfigCache();
+
+    /**
+     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁
+     */
+    public void clearConfigCache();
+
+    /**
+     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁
+     */
+    public void resetConfigCache();
+
+    /**
+     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
+     * 
+     * @param config 鍙傛暟淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkConfigKeyUnique(SysConfig config);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java
new file mode 100644
index 0000000..29190a8
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDeptService.java
@@ -0,0 +1,124 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysDept;
+import com.se.system.domain.vo.TreeSelect;
+
+/**
+ * 閮ㄩ棬绠$悊 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysDeptService
+{
+    /**
+     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 閮ㄩ棬淇℃伅闆嗗悎
+     */
+    public List<SysDept> selectDeptList(SysDept dept);
+
+    /**
+     * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
+     */
+    public List<TreeSelect> selectDeptTreeList(SysDept dept);
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
+     * 
+     * @param depts 閮ㄩ棬鍒楄〃
+     * @return 鏍戠粨鏋勫垪琛�
+     */
+    public List<SysDept> buildDeptTree(List<SysDept> depts);
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
+     * 
+     * @param depts 閮ㄩ棬鍒楄〃
+     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
+     */
+    public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 閫変腑閮ㄩ棬鍒楄〃
+     */
+    public List<Long> selectDeptListByRoleId(Long roleId);
+
+    /**
+     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬淇℃伅
+     */
+    public SysDept selectDeptById(Long deptId);
+
+    /**
+     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 瀛愰儴闂ㄦ暟
+     */
+    public int selectNormalChildrenDeptById(Long deptId);
+
+    /**
+     * 鏄惁瀛樺湪閮ㄩ棬瀛愯妭鐐�
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public boolean hasChildByDeptId(Long deptId);
+
+    /**
+     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
+     */
+    public boolean checkDeptExistUser(Long deptId);
+
+    /**
+     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkDeptNameUnique(SysDept dept);
+
+    /**
+     * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
+     * 
+     * @param deptId 閮ㄩ棬id
+     */
+    public void checkDeptDataScope(Long deptId);
+
+    /**
+     * 鏂板淇濆瓨閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDept(SysDept dept);
+
+    /**
+     * 淇敼淇濆瓨閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDept(SysDept dept);
+
+    /**
+     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    public int deleteDeptById(Long deptId);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java
new file mode 100644
index 0000000..1d9b1e6
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictDataService.java
@@ -0,0 +1,60 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysDictData;
+
+/**
+ * 瀛楀吀 涓氬姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysDictDataService
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysDictData> selectDictDataList(SysDictData dictData);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @param dictValue 瀛楀吀閿��
+     * @return 瀛楀吀鏍囩
+     */
+    public String selectDictLabel(String dictType, String dictValue);
+
+    /**
+     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
+     * 
+     * @param dictCode 瀛楀吀鏁版嵁ID
+     * @return 瀛楀吀鏁版嵁
+     */
+    public SysDictData selectDictDataById(Long dictCode);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
+     */
+    public void deleteDictDataByIds(Long[] dictCodes);
+
+    /**
+     * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDictData(SysDictData dictData);
+
+    /**
+     * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDictData(SysDictData dictData);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java
new file mode 100644
index 0000000..2250161
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysDictTypeService.java
@@ -0,0 +1,98 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysDictData;
+import com.se.system.api.domain.SysDictType;
+
+/**
+ * 瀛楀吀 涓氬姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysDictTypeService
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    public List<SysDictType> selectDictTypeList(SysDictType dictType);
+
+    /**
+     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
+     * 
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    public List<SysDictType> selectDictTypeAll();
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysDictData> selectDictDataByType(String dictType);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
+     * 
+     * @param dictId 瀛楀吀绫诲瀷ID
+     * @return 瀛楀吀绫诲瀷
+     */
+    public SysDictType selectDictTypeById(Long dictId);
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀绫诲瀷
+     */
+    public SysDictType selectDictTypeByType(String dictType);
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀淇℃伅
+     * 
+     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
+     */
+    public void deleteDictTypeByIds(Long[] dictIds);
+
+    /**
+     * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁
+     */
+    public void loadingDictCache();
+
+    /**
+     * 娓呯┖瀛楀吀缂撳瓨鏁版嵁
+     */
+    public void clearDictCache();
+
+    /**
+     * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁
+     */
+    public void resetDictCache();
+
+    /**
+     * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertDictType(SysDictType dictType);
+
+    /**
+     * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateDictType(SysDictType dictType);
+
+    /**
+     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 缁撴灉
+     */
+    public boolean checkDictTypeUnique(SysDictType dictType);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java
new file mode 100644
index 0000000..2692266
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysLogininforService.java
@@ -0,0 +1,40 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysLogininfor;
+
+/**
+ * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysLogininforService
+{
+    /**
+     * 鏂板绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     */
+    public int insertLogininfor(SysLogininfor logininfor);
+
+    /**
+     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     * @return 鐧诲綍璁板綍闆嗗悎
+     */
+    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteLogininforByIds(Long[] infoIds);
+
+    /**
+     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
+     */
+    public void cleanLogininfor();
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java
new file mode 100644
index 0000000..61746b0
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysMenuService.java
@@ -0,0 +1,144 @@
+package com.se.system.service;
+
+import java.util.List;
+import java.util.Set;
+import com.se.system.domain.SysMenu;
+import com.se.system.domain.vo.RouterVo;
+import com.se.system.domain.vo.TreeSelect;
+
+/**
+ * 鑿滃崟 涓氬姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysMenuService
+{
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuList(Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    public Set<String> selectMenuPermsByUserId(Long userId);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    public Set<String> selectMenuPermsByRoleId(Long roleId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟鏍戜俊鎭�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuTreeByUserId(Long userId);
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 閫変腑鑿滃崟鍒楄〃
+     */
+    public List<Long> selectMenuListByRoleId(Long roleId);
+
+    /**
+     * 鏋勫缓鍓嶇璺敱鎵�闇�瑕佺殑鑿滃崟
+     * 
+     * @param menus 鑿滃崟鍒楄〃
+     * @return 璺敱鍒楄〃
+     */
+    public List<RouterVo> buildMenus(List<SysMenu> menus);
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
+     * 
+     * @param menus 鑿滃崟鍒楄〃
+     * @return 鏍戠粨鏋勫垪琛�
+     */
+    public List<SysMenu> buildMenuTree(List<SysMenu> menus);
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
+     * 
+     * @param menus 鑿滃崟鍒楄〃
+     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
+     */
+    public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
+
+    /**
+     * 鏍规嵁鑿滃崟ID鏌ヨ淇℃伅
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 鑿滃崟淇℃伅
+     */
+    public SysMenu selectMenuById(Long menuId);
+
+    /**
+     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
+     */
+    public boolean hasChildByMenuId(Long menuId);
+
+    /**
+     * 鏌ヨ鑿滃崟鏄惁瀛樺湪瑙掕壊
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
+     */
+    public boolean checkMenuExistRole(Long menuId);
+
+    /**
+     * 鏂板淇濆瓨鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertMenu(SysMenu menu);
+
+    /**
+     * 淇敼淇濆瓨鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateMenu(SysMenu menu);
+
+    /**
+     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    public int deleteMenuById(Long menuId);
+
+    /**
+     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkMenuNameUnique(SysMenu menu);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java
new file mode 100644
index 0000000..675ae95
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysNoticeService.java
@@ -0,0 +1,60 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.domain.SysNotice;
+
+/**
+ * 鍏憡 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysNoticeService
+{
+    /**
+     * 鏌ヨ鍏憡淇℃伅
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 鍏憡淇℃伅
+     */
+    public SysNotice selectNoticeById(Long noticeId);
+
+    /**
+     * 鏌ヨ鍏憡鍒楄〃
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 鍏憡闆嗗悎
+     */
+    public List<SysNotice> selectNoticeList(SysNotice notice);
+
+    /**
+     * 鏂板鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertNotice(SysNotice notice);
+
+    /**
+     * 淇敼鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateNotice(SysNotice notice);
+
+    /**
+     * 鍒犻櫎鍏憡淇℃伅
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 缁撴灉
+     */
+    public int deleteNoticeById(Long noticeId);
+    
+    /**
+     * 鎵归噺鍒犻櫎鍏憡淇℃伅
+     * 
+     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
+     * @return 缁撴灉
+     */
+    public int deleteNoticeByIds(Long[] noticeIds);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java
new file mode 100644
index 0000000..611f760
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysOperLogService.java
@@ -0,0 +1,49 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysOperLog;
+
+/**
+ * 鎿嶄綔鏃ュ織 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysOperLogService
+{
+    /**
+     * 鏂板鎿嶄綔鏃ュ織
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     * @return 缁撴灉
+     */
+    public int insertOperlog(SysOperLog operLog);
+
+    /**
+     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     * @return 鎿嶄綔鏃ュ織闆嗗悎
+     */
+    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
+     * 
+     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteOperLogByIds(Long[] operIds);
+
+    /**
+     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
+     * 
+     * @param operId 鎿嶄綔ID
+     * @return 鎿嶄綔鏃ュ織瀵硅薄
+     */
+    public SysOperLog selectOperLogById(Long operId);
+
+    /**
+     * 娓呯┖鎿嶄綔鏃ュ織
+     */
+    public void cleanOperLog();
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java
new file mode 100644
index 0000000..e2fe76f
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPermissionService.java
@@ -0,0 +1,29 @@
+package com.se.system.service;
+
+import java.util.Set;
+
+import com.se.system.api.domain.SysUser;
+
+/**
+ * 鏉冮檺淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysPermissionService
+{
+    /**
+     * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛Id
+     * @return 瑙掕壊鏉冮檺淇℃伅
+     */
+    public Set<String> getRolePermission(SysUser user);
+
+    /**
+     * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛Id
+     * @return 鑿滃崟鏉冮檺淇℃伅
+     */
+    public Set<String> getMenuPermission(SysUser user);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java
new file mode 100644
index 0000000..c513bf5
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysPostService.java
@@ -0,0 +1,99 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.domain.SysPost;
+
+/**
+ * 宀椾綅淇℃伅 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysPostService
+{
+    /**
+     * 鏌ヨ宀椾綅淇℃伅闆嗗悎
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 宀椾綅鍒楄〃
+     */
+    public List<SysPost> selectPostList(SysPost post);
+
+    /**
+     * 鏌ヨ鎵�鏈夊矖浣�
+     * 
+     * @return 宀椾綅鍒楄〃
+     */
+    public List<SysPost> selectPostAll();
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    public SysPost selectPostById(Long postId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑宀椾綅ID鍒楄〃
+     */
+    public List<Long> selectPostListByUserId(Long userId);
+
+    /**
+     * 鏍¢獙宀椾綅鍚嶇О
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkPostNameUnique(SysPost post);
+
+    /**
+     * 鏍¢獙宀椾綅缂栫爜
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkPostCodeUnique(SysPost post);
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int countUserPostById(Long postId);
+
+    /**
+     * 鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int deletePostById(Long postId);
+
+    /**
+     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
+     * @return 缁撴灉
+     */
+    public int deletePostByIds(Long[] postIds);
+
+    /**
+     * 鏂板淇濆瓨宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertPost(SysPost post);
+
+    /**
+     * 淇敼淇濆瓨宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    public int updatePost(SysPost post);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java
new file mode 100644
index 0000000..659ba56
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysRoleService.java
@@ -0,0 +1,173 @@
+package com.se.system.service;
+
+import java.util.List;
+import java.util.Set;
+import com.se.system.api.domain.SysRole;
+import com.se.system.domain.SysUserRole;
+
+/**
+ * 瑙掕壊涓氬姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysRoleService
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
+     */
+    public List<SysRole> selectRoleList(SysRole role);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 瑙掕壊鍒楄〃
+     */
+    public List<SysRole> selectRolesByUserId(Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    public Set<String> selectRolePermissionByUserId(Long userId);
+
+    /**
+     * 鏌ヨ鎵�鏈夎鑹�
+     * 
+     * @return 瑙掕壊鍒楄〃
+     */
+    public List<SysRole> selectRoleAll();
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑瑙掕壊ID鍒楄〃
+     */
+    public List<Long> selectRoleListByUserId(Long userId);
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    public SysRole selectRoleById(Long roleId);
+
+    /**
+     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkRoleNameUnique(SysRole role);
+
+    /**
+     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkRoleKeyUnique(SysRole role);
+
+    /**
+     * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔
+     * 
+     * @param role 瑙掕壊淇℃伅
+     */
+    public void checkRoleAllowed(SysRole role);
+
+    /**
+     * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄�
+     * 
+     * @param roleIds 瑙掕壊id
+     */
+    public void checkRoleDataScope(Long... roleIds);
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int countUserRoleByRoleId(Long roleId);
+
+    /**
+     * 鏂板淇濆瓨瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertRole(SysRole role);
+
+    /**
+     * 淇敼淇濆瓨瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateRole(SysRole role);
+
+    /**
+     * 淇敼瑙掕壊鐘舵��
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateRoleStatus(SysRole role);
+
+    /**
+     * 淇敼鏁版嵁鏉冮檺淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    public int authDataScope(SysRole role);
+
+    /**
+     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleById(Long roleId);
+
+    /**
+     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
+     * 
+     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
+     * @return 缁撴灉
+     */
+    public int deleteRoleByIds(Long[] roleIds);
+
+    /**
+     * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
+     * @return 缁撴灉
+     */
+    public int deleteAuthUser(SysUserRole userRole);
+
+    /**
+     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteAuthUsers(Long roleId, Long[] userIds);
+
+    /**
+     * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int insertAuthUsers(Long roleId, Long[] userIds);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java
new file mode 100644
index 0000000..6b0706a
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserOnlineService.java
@@ -0,0 +1,48 @@
+package com.se.system.service;
+
+import com.se.system.api.model.LoginUser;
+import com.se.system.domain.SysUserOnline;
+
+/**
+ * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysUserOnlineService
+{
+    /**
+     * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
+     * 
+     * @param ipaddr 鐧诲綍鍦板潃
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);
+
+    /**
+     * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
+     * 
+     * @param userName 鐢ㄦ埛鍚嶇О
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);
+
+    /**
+     * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
+     * 
+     * @param ipaddr 鐧诲綍鍦板潃
+     * @param userName 鐢ㄦ埛鍚嶇О
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);
+
+    /**
+     * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛
+     */
+    public SysUserOnline loginUserToUserOnline(LoginUser user);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java
new file mode 100644
index 0000000..1e54c8d
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/ISysUserService.java
@@ -0,0 +1,206 @@
+package com.se.system.service;
+
+import java.util.List;
+import com.se.system.api.domain.SysUser;
+
+/**
+ * 鐢ㄦ埛 涓氬姟灞�
+ * 
+ * @author admin
+ */
+public interface ISysUserService
+{
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectUserList(SysUser user);
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectAllocatedList(SysUser user);
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    public List<SysUser> selectUnallocatedList(SysUser user);
+
+    /**
+     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public SysUser selectUserByUserName(String userName);
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public SysUser selectUserById(Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 缁撴灉
+     */
+    public String selectUserRoleGroup(String userName);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 缁撴灉
+     */
+    public String selectUserPostGroup(String userName);
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkUserNameUnique(SysUser user);
+
+    /**
+     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
+     *
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkPhoneUnique(SysUser user);
+
+    /**
+     * 鏍¢獙email鏄惁鍞竴
+     *
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean checkEmailUnique(SysUser user);
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     */
+    public void checkUserAllowed(SysUser user);
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄�
+     * 
+     * @param userId 鐢ㄦ埛id
+     */
+    public void checkUserDataScope(Long userId);
+
+    /**
+     * 鏂板鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int insertUser(SysUser user);
+
+    /**
+     * 娉ㄥ唽鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean registerUser(SysUser user);
+
+    /**
+     * 淇敼鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateUser(SysUser user);
+
+    /**
+     * 鐢ㄦ埛鎺堟潈瑙掕壊
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @param roleIds 瑙掕壊缁�
+     */
+    public void insertUserAuth(Long userId, Long[] roleIds);
+
+    /**
+     * 淇敼鐢ㄦ埛鐘舵��
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int updateUserStatus(SysUser user);
+
+    /**
+     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean updateUserProfile(SysUser user);
+
+    /**
+     * 淇敼鐢ㄦ埛澶村儚
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param avatar 澶村儚鍦板潃
+     * @return 缁撴灉
+     */
+    public boolean updateUserAvatar(String userName, String avatar);
+
+    /**
+     * 閲嶇疆鐢ㄦ埛瀵嗙爜
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    public int resetPwd(SysUser user);
+
+    /**
+     * 閲嶇疆鐢ㄦ埛瀵嗙爜
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param password 瀵嗙爜
+     * @return 缁撴灉
+     */
+    public int resetUserPwd(String userName, String password);
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserById(Long userId);
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
+     * 
+     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    public int deleteUserByIds(Long[] userIds);
+
+    /**
+     * 瀵煎叆鐢ㄦ埛鏁版嵁
+     * 
+     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
+     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
+     * @param operName 鎿嶄綔鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java
new file mode 100644
index 0000000..a2d95e4
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysConfigServiceImpl.java
@@ -0,0 +1,214 @@
+package com.se.system.service.impl;
+
+import java.util.Collection;
+import java.util.List;
+import javax.annotation.PostConstruct;
+
+import com.se.system.domain.SysConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.text.Convert;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.redis.service.RedisService;
+import com.se.system.mapper.SysConfigMapper;
+import com.se.system.service.ISysConfigService;
+
+/**
+ * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜�
+ * 
+ * @author admin
+ */
+@Service
+public class SysConfigServiceImpl implements ISysConfigService
+{
+    @Autowired
+    private SysConfigMapper configMapper;
+
+    @Autowired
+    private RedisService redisService;
+
+    /**
+     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨
+     */
+    @PostConstruct
+    public void init()
+    {
+        loadingConfigCache();
+    }
+
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param configId 鍙傛暟閰嶇疆ID
+     * @return 鍙傛暟閰嶇疆淇℃伅
+     */
+    @Override
+    public SysConfig selectConfigById(Long configId)
+    {
+        SysConfig config = new SysConfig();
+        config.setConfigId(configId);
+        return configMapper.selectConfig(config);
+    }
+
+    /**
+     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
+     * 
+     * @param configKey 鍙傛暟key
+     * @return 鍙傛暟閿��
+     */
+    @Override
+    public String selectConfigByKey(String configKey)
+    {
+        String configValue = Convert.toStr(redisService.getCacheObject(getCacheKey(configKey)));
+        if (StringUtils.isNotEmpty(configValue))
+        {
+            return configValue;
+        }
+        SysConfig config = new SysConfig();
+        config.setConfigKey(configKey);
+        SysConfig retConfig = configMapper.selectConfig(config);
+        if (StringUtils.isNotNull(retConfig))
+        {
+            redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
+            return retConfig.getConfigValue();
+        }
+        return StringUtils.EMPTY;
+    }
+
+    /**
+     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 鍙傛暟閰嶇疆闆嗗悎
+     */
+    @Override
+    public List<SysConfig> selectConfigList(SysConfig config)
+    {
+        return configMapper.selectConfigList(config);
+    }
+
+    /**
+     * 鏂板鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertConfig(SysConfig config)
+    {
+        int row = configMapper.insertConfig(config);
+        if (row > 0)
+        {
+            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+        }
+        return row;
+    }
+
+    /**
+     * 淇敼鍙傛暟閰嶇疆
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateConfig(SysConfig config)
+    {
+        SysConfig temp = configMapper.selectConfigById(config.getConfigId());
+        if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey()))
+        {
+            redisService.deleteObject(getCacheKey(temp.getConfigKey()));
+        }
+
+        int row = configMapper.updateConfig(config);
+        if (row > 0)
+        {
+            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+        }
+        return row;
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
+     * 
+     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
+     */
+    @Override
+    public void deleteConfigByIds(Long[] configIds)
+    {
+        for (Long configId : configIds)
+        {
+            SysConfig config = selectConfigById(configId);
+            if (StringUtils.equals(UserConstants.YES, config.getConfigType()))
+            {
+                throw new ServiceException(String.format("鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� ", config.getConfigKey()));
+            }
+            configMapper.deleteConfigById(configId);
+            redisService.deleteObject(getCacheKey(config.getConfigKey()));
+        }
+    }
+
+    /**
+     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁
+     */
+    @Override
+    public void loadingConfigCache()
+    {
+        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
+        for (SysConfig config : configsList)
+        {
+            redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+        }
+    }
+
+    /**
+     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁
+     */
+    @Override
+    public void clearConfigCache()
+    {
+        Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*");
+        redisService.deleteObject(keys);
+    }
+
+    /**
+     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁
+     */
+    @Override
+    public void resetConfigCache()
+    {
+        clearConfigCache();
+        loadingConfigCache();
+    }
+
+    /**
+     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
+     * 
+     * @param config 鍙傛暟閰嶇疆淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkConfigKeyUnique(SysConfig config)
+    {
+        Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
+        SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());
+        if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 璁剧疆cache key
+     * 
+     * @param configKey 鍙傛暟閿�
+     * @return 缂撳瓨閿甼ey
+     */
+    private String getCacheKey(String configKey)
+    {
+        return CacheConstants.SYS_CONFIG_KEY + configKey;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java
new file mode 100644
index 0000000..03acb77
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDeptServiceImpl.java
@@ -0,0 +1,338 @@
+package com.se.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.text.Convert;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.datascope.annotation.DataScope;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysDept;
+import com.se.system.api.domain.SysRole;
+import com.se.system.api.domain.SysUser;
+import com.se.system.domain.vo.TreeSelect;
+import com.se.system.mapper.SysDeptMapper;
+import com.se.system.mapper.SysRoleMapper;
+import com.se.system.service.ISysDeptService;
+
+/**
+ * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇
+ * 
+ * @author admin
+ */
+@Service
+public class SysDeptServiceImpl implements ISysDeptService
+{
+    @Autowired
+    private SysDeptMapper deptMapper;
+
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    /**
+     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 閮ㄩ棬淇℃伅闆嗗悎
+     */
+    @Override
+    @DataScope(deptAlias = "d")
+    public List<SysDept> selectDeptList(SysDept dept)
+    {
+        return deptMapper.selectDeptList(dept);
+    }
+
+    /**
+     * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
+     */
+    @Override
+    public List<TreeSelect> selectDeptTreeList(SysDept dept)
+    {
+        List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
+        return buildDeptTreeSelect(depts);
+    }
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
+     * 
+     * @param depts 閮ㄩ棬鍒楄〃
+     * @return 鏍戠粨鏋勫垪琛�
+     */
+    @Override
+    public List<SysDept> buildDeptTree(List<SysDept> depts)
+    {
+        List<SysDept> returnList = new ArrayList<SysDept>();
+        List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
+        for (SysDept dept : depts)
+        {
+            // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
+            if (!tempList.contains(dept.getParentId()))
+            {
+                recursionFn(depts, dept);
+                returnList.add(dept);
+            }
+        }
+        if (returnList.isEmpty())
+        {
+            returnList = depts;
+        }
+        return returnList;
+    }
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
+     * 
+     * @param depts 閮ㄩ棬鍒楄〃
+     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
+     */
+    @Override
+    public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts)
+    {
+        List<SysDept> deptTrees = buildDeptTree(depts);
+        return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
+    }
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 閫変腑閮ㄩ棬鍒楄〃
+     */
+    @Override
+    public List<Long> selectDeptListByRoleId(Long roleId)
+    {
+        SysRole role = roleMapper.selectRoleById(roleId);
+        return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly());
+    }
+
+    /**
+     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 閮ㄩ棬淇℃伅
+     */
+    @Override
+    public SysDept selectDeptById(Long deptId)
+    {
+        return deptMapper.selectDeptById(deptId);
+    }
+
+    /**
+     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 瀛愰儴闂ㄦ暟
+     */
+    @Override
+    public int selectNormalChildrenDeptById(Long deptId)
+    {
+        return deptMapper.selectNormalChildrenDeptById(deptId);
+    }
+
+    /**
+     * 鏄惁瀛樺湪瀛愯妭鐐�
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean hasChildByDeptId(Long deptId)
+    {
+        int result = deptMapper.hasChildByDeptId(deptId);
+        return result > 0;
+    }
+
+    /**
+     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
+     */
+    @Override
+    public boolean checkDeptExistUser(Long deptId)
+    {
+        int result = deptMapper.checkDeptExistUser(deptId);
+        return result > 0;
+    }
+
+    /**
+     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkDeptNameUnique(SysDept dept)
+    {
+        Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
+        SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
+        if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
+     * 
+     * @param deptId 閮ㄩ棬id
+     */
+    @Override
+    public void checkDeptDataScope(Long deptId)
+    {
+        if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(deptId))
+        {
+            SysDept dept = new SysDept();
+            dept.setDeptId(deptId);
+            List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
+            if (StringUtils.isEmpty(depts))
+            {
+                throw new ServiceException("娌℃湁鏉冮檺璁块棶閮ㄩ棬鏁版嵁锛�");
+            }
+        }
+    }
+
+    /**
+     * 鏂板淇濆瓨閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDept(SysDept dept)
+    {
+        SysDept info = deptMapper.selectDeptById(dept.getParentId());
+        // 濡傛灉鐖惰妭鐐逛笉涓烘甯哥姸鎬�,鍒欎笉鍏佽鏂板瀛愯妭鐐�
+        if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
+        {
+            throw new ServiceException("閮ㄩ棬鍋滅敤锛屼笉鍏佽鏂板");
+        }
+        dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
+        return deptMapper.insertDept(dept);
+    }
+
+    /**
+     * 淇敼淇濆瓨閮ㄩ棬淇℃伅
+     * 
+     * @param dept 閮ㄩ棬淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDept(SysDept dept)
+    {
+        SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId());
+        SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId());
+        if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept))
+        {
+            String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
+            String oldAncestors = oldDept.getAncestors();
+            dept.setAncestors(newAncestors);
+            updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
+        }
+        int result = deptMapper.updateDept(dept);
+        if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
+                && !StringUtils.equals("0", dept.getAncestors()))
+        {
+            // 濡傛灉璇ラ儴闂ㄦ槸鍚敤鐘舵�侊紝鍒欏惎鐢ㄨ閮ㄩ棬鐨勬墍鏈変笂绾ч儴闂�
+            updateParentDeptStatusNormal(dept);
+        }
+        return result;
+    }
+
+    /**
+     * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵��
+     * 
+     * @param dept 褰撳墠閮ㄩ棬
+     */
+    private void updateParentDeptStatusNormal(SysDept dept)
+    {
+        String ancestors = dept.getAncestors();
+        Long[] deptIds = Convert.toLongArray(ancestors);
+        deptMapper.updateDeptStatusNormal(deptIds);
+    }
+
+    /**
+     * 淇敼瀛愬厓绱犲叧绯�
+     * 
+     * @param deptId 琚慨鏀圭殑閮ㄩ棬ID
+     * @param newAncestors 鏂扮殑鐖禝D闆嗗悎
+     * @param oldAncestors 鏃х殑鐖禝D闆嗗悎
+     */
+    public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors)
+    {
+        List<SysDept> children = deptMapper.selectChildrenDeptById(deptId);
+        for (SysDept child : children)
+        {
+            child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
+        }
+        if (children.size() > 0)
+        {
+            deptMapper.updateDeptChildren(children);
+        }
+    }
+
+    /**
+     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
+     * 
+     * @param deptId 閮ㄩ棬ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteDeptById(Long deptId)
+    {
+        return deptMapper.deleteDeptById(deptId);
+    }
+
+    /**
+     * 閫掑綊鍒楄〃
+     */
+    private void recursionFn(List<SysDept> list, SysDept t)
+    {
+        // 寰楀埌瀛愯妭鐐瑰垪琛�
+        List<SysDept> childList = getChildList(list, t);
+        t.setChildren(childList);
+        for (SysDept tChild : childList)
+        {
+            if (hasChild(list, tChild))
+            {
+                recursionFn(list, tChild);
+            }
+        }
+    }
+
+    /**
+     * 寰楀埌瀛愯妭鐐瑰垪琛�
+     */
+    private List<SysDept> getChildList(List<SysDept> list, SysDept t)
+    {
+        List<SysDept> tlist = new ArrayList<SysDept>();
+        Iterator<SysDept> it = list.iterator();
+        while (it.hasNext())
+        {
+            SysDept n = (SysDept) it.next();
+            if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue())
+            {
+                tlist.add(n);
+            }
+        }
+        return tlist;
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
+     */
+    private boolean hasChild(List<SysDept> list, SysDept t)
+    {
+        return getChildList(list, t).size() > 0 ? true : false;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java
new file mode 100644
index 0000000..68d61e5
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictDataServiceImpl.java
@@ -0,0 +1,111 @@
+package com.se.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.common.security.utils.DictUtils;
+import com.se.system.api.domain.SysDictData;
+import com.se.system.mapper.SysDictDataMapper;
+import com.se.system.service.ISysDictDataService;
+
+/**
+ * 瀛楀吀 涓氬姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysDictDataServiceImpl implements ISysDictDataService
+{
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictData 瀛楀吀鏁版嵁淇℃伅
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    @Override
+    public List<SysDictData> selectDictDataList(SysDictData dictData)
+    {
+        return dictDataMapper.selectDictDataList(dictData);
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @param dictValue 瀛楀吀閿��
+     * @return 瀛楀吀鏍囩
+     */
+    @Override
+    public String selectDictLabel(String dictType, String dictValue)
+    {
+        return dictDataMapper.selectDictLabel(dictType, dictValue);
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
+     * 
+     * @param dictCode 瀛楀吀鏁版嵁ID
+     * @return 瀛楀吀鏁版嵁
+     */
+    @Override
+    public SysDictData selectDictDataById(Long dictCode)
+    {
+        return dictDataMapper.selectDictDataById(dictCode);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
+     */
+    @Override
+    public void deleteDictDataByIds(Long[] dictCodes)
+    {
+        for (Long dictCode : dictCodes)
+        {
+            SysDictData data = selectDictDataById(dictCode);
+            dictDataMapper.deleteDictDataById(dictCode);
+            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
+            DictUtils.setDictCache(data.getDictType(), dictDatas);
+        }
+    }
+
+    /**
+     * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param data 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDictData(SysDictData data)
+    {
+        int row = dictDataMapper.insertDictData(data);
+        if (row > 0)
+        {
+            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
+            DictUtils.setDictCache(data.getDictType(), dictDatas);
+        }
+        return row;
+    }
+
+    /**
+     * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
+     * 
+     * @param data 瀛楀吀鏁版嵁淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateDictData(SysDictData data)
+    {
+        int row = dictDataMapper.updateDictData(data);
+        if (row > 0)
+        {
+            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
+            DictUtils.setDictCache(data.getDictType(), dictDatas);
+        }
+        return row;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java
new file mode 100644
index 0000000..127192d
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysDictTypeServiceImpl.java
@@ -0,0 +1,223 @@
+package com.se.system.service.impl;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import javax.annotation.PostConstruct;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.security.utils.DictUtils;
+import com.se.system.api.domain.SysDictData;
+import com.se.system.api.domain.SysDictType;
+import com.se.system.mapper.SysDictDataMapper;
+import com.se.system.mapper.SysDictTypeMapper;
+import com.se.system.service.ISysDictTypeService;
+
+/**
+ * 瀛楀吀 涓氬姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysDictTypeServiceImpl implements ISysDictTypeService
+{
+    @Autowired
+    private SysDictTypeMapper dictTypeMapper;
+
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    /**
+     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨
+     */
+    @PostConstruct
+    public void init()
+    {
+        loadingDictCache();
+    }
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+     * 
+     * @param dictType 瀛楀吀绫诲瀷淇℃伅
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    @Override
+    public List<SysDictType> selectDictTypeList(SysDictType dictType)
+    {
+        return dictTypeMapper.selectDictTypeList(dictType);
+    }
+
+    /**
+     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
+     * 
+     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+     */
+    @Override
+    public List<SysDictType> selectDictTypeAll()
+    {
+        return dictTypeMapper.selectDictTypeAll();
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+     */
+    @Override
+    public List<SysDictData> selectDictDataByType(String dictType)
+    {
+        List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
+        if (StringUtils.isNotEmpty(dictDatas))
+        {
+            return dictDatas;
+        }
+        dictDatas = dictDataMapper.selectDictDataByType(dictType);
+        if (StringUtils.isNotEmpty(dictDatas))
+        {
+            DictUtils.setDictCache(dictType, dictDatas);
+            return dictDatas;
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
+     * 
+     * @param dictId 瀛楀吀绫诲瀷ID
+     * @return 瀛楀吀绫诲瀷
+     */
+    @Override
+    public SysDictType selectDictTypeById(Long dictId)
+    {
+        return dictTypeMapper.selectDictTypeById(dictId);
+    }
+
+    /**
+     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
+     * 
+     * @param dictType 瀛楀吀绫诲瀷
+     * @return 瀛楀吀绫诲瀷
+     */
+    @Override
+    public SysDictType selectDictTypeByType(String dictType)
+    {
+        return dictTypeMapper.selectDictTypeByType(dictType);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
+     */
+    @Override
+    public void deleteDictTypeByIds(Long[] dictIds)
+    {
+        for (Long dictId : dictIds)
+        {
+            SysDictType dictType = selectDictTypeById(dictId);
+            if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0)
+            {
+                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", dictType.getDictName()));
+            }
+            dictTypeMapper.deleteDictTypeById(dictId);
+            DictUtils.removeDictCache(dictType.getDictType());
+        }
+    }
+
+    /**
+     * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁
+     */
+    @Override
+    public void loadingDictCache()
+    {
+        SysDictData dictData = new SysDictData();
+        dictData.setStatus("0");
+        Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType));
+        for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet())
+        {
+            DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList()));
+        }
+    }
+
+    /**
+     * 娓呯┖瀛楀吀缂撳瓨鏁版嵁
+     */
+    @Override
+    public void clearDictCache()
+    {
+        DictUtils.clearDictCache();
+    }
+
+    /**
+     * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁
+     */
+    @Override
+    public void resetDictCache()
+    {
+        clearDictCache();
+        loadingDictCache();
+    }
+
+    /**
+     * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dict 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertDictType(SysDictType dict)
+    {
+        int row = dictTypeMapper.insertDictType(dict);
+        if (row > 0)
+        {
+            DictUtils.setDictCache(dict.getDictType(), null);
+        }
+        return row;
+    }
+
+    /**
+     * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
+     * 
+     * @param dict 瀛楀吀绫诲瀷淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateDictType(SysDictType dict)
+    {
+        SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
+        dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType());
+        int row = dictTypeMapper.updateDictType(dict);
+        if (row > 0)
+        {
+            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
+            DictUtils.setDictCache(dict.getDictType(), dictDatas);
+        }
+        return row;
+    }
+
+    /**
+     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
+     * 
+     * @param dict 瀛楀吀绫诲瀷
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkDictTypeUnique(SysDictType dict)
+    {
+        Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
+        SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType());
+        if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java
new file mode 100644
index 0000000..19a6e57
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysLogininforServiceImpl.java
@@ -0,0 +1,65 @@
+package com.se.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.system.api.domain.SysLogininfor;
+import com.se.system.mapper.SysLogininforMapper;
+import com.se.system.service.ISysLogininforService;
+
+/**
+ * 绯荤粺璁块棶鏃ュ織鎯呭喌淇℃伅 鏈嶅姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysLogininforServiceImpl implements ISysLogininforService
+{
+
+    @Autowired
+    private SysLogininforMapper logininforMapper;
+
+    /**
+     * 鏂板绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     */
+    @Override
+    public int insertLogininfor(SysLogininfor logininfor)
+    {
+        return logininforMapper.insertLogininfor(logininfor);
+    }
+
+    /**
+     * 鏌ヨ绯荤粺鐧诲綍鏃ュ織闆嗗悎
+     * 
+     * @param logininfor 璁块棶鏃ュ織瀵硅薄
+     * @return 鐧诲綍璁板綍闆嗗悎
+     */
+    @Override
+    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor)
+    {
+        return logininforMapper.selectLogininforList(logininfor);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鐧诲綍鏃ュ織
+     * 
+     * @param infoIds 闇�瑕佸垹闄ょ殑鐧诲綍鏃ュ織ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteLogininforByIds(Long[] infoIds)
+    {
+        return logininforMapper.deleteLogininforByIds(infoIds);
+    }
+
+    /**
+     * 娓呯┖绯荤粺鐧诲綍鏃ュ織
+     */
+    @Override
+    public void cleanLogininfor()
+    {
+        logininforMapper.cleanLogininfor();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java
new file mode 100644
index 0000000..6dcb451
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysMenuServiceImpl.java
@@ -0,0 +1,544 @@
+package com.se.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+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;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.utils.StringUtils;
+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.mapper.SysMenuMapper;
+import com.se.system.mapper.SysRoleMapper;
+import com.se.system.mapper.SysRoleMenuMapper;
+import com.se.system.service.ISysMenuService;
+
+/**
+ * 鑿滃崟 涓氬姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysMenuServiceImpl implements ISysMenuService
+{
+    public static final String PREMISSION_STRING = "perms[\"{0}\"]";
+
+    @Autowired
+    private SysMenuMapper menuMapper;
+
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    @Autowired
+    private SysRoleMenuMapper roleMenuMapper;
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    @Override
+    public List<SysMenu> selectMenuList(Long userId)
+    {
+        return selectMenuList(new SysMenu(), userId);
+    }
+
+    /**
+     * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 鑿滃崟鍒楄〃
+     */
+    @Override
+    public List<SysMenu> selectMenuList(SysMenu menu, Long userId)
+    {
+        List<SysMenu> menuList = null;
+        // 绠$悊鍛樻樉绀烘墍鏈夎彍鍗曚俊鎭�
+        if (SysUser.isAdmin(userId))
+        {
+            menuList = menuMapper.selectMenuList(menu);
+        }
+        else
+        {
+            menu.getParams().put("userId", userId);
+            menuList = menuMapper.selectMenuListByUserId(menu);
+        }
+        return menuList;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    @Override
+    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))
+            {
+                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
+            }
+        }
+        return permsSet;
+    }
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    @Override
+    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))
+            {
+                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
+            }
+        }
+        return permsSet;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
+     * 
+     * @param userId 鐢ㄦ埛鍚嶇О
+     * @return 鑿滃崟鍒楄〃
+     */
+    @Override
+    public List<SysMenu> selectMenuTreeByUserId(Long userId)
+    {
+        List<SysMenu> menus = null;
+        if (SecurityUtils.isAdmin(userId))
+        {
+            menus = menuMapper.selectMenuTreeAll();
+        }
+        else
+        {
+            menus = menuMapper.selectMenuTreeByUserId(userId);
+        }
+        return getChildPerms(menus, 0);
+    }
+
+    /**
+     * 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 閫変腑鑿滃崟鍒楄〃
+     */
+    @Override
+    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)
+    {
+        List<RouterVo> routers = new LinkedList<RouterVo>();
+        for (SysMenu menu : menus)
+        {
+            RouterVo router = new RouterVo();
+            router.setHidden("1".equals(menu.getVisible()));
+            router.setName(getRouteName(menu));
+            router.setPath(getRouterPath(menu));
+            router.setComponent(getComponent(menu));
+            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()))
+            {
+                router.setAlwaysShow(true);
+                router.setRedirect("noRedirect");
+                router.setChildren(buildMenus(cMenus));
+            }
+            else if (isMenuFrame(menu))
+            {
+                router.setMeta(null);
+                List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                RouterVo children = new RouterVo();
+                children.setPath(menu.getPath());
+                children.setComponent(menu.getComponent());
+                children.setName(getRouteName(menu.getRouteName(), menu.getPath()));
+                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
+                children.setQuery(menu.getQuery());
+                childrenList.add(children);
+                router.setChildren(childrenList);
+            }
+            else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
+            {
+                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
+                router.setPath("/");
+                List<RouterVo> childrenList = new ArrayList<RouterVo>();
+                RouterVo children = new RouterVo();
+                String routerPath = innerLinkReplaceEach(menu.getPath());
+                children.setPath(routerPath);
+                children.setComponent(UserConstants.INNER_LINK);
+                children.setName(getRouteName(menu.getRouteName(), routerPath));
+                children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
+                childrenList.add(children);
+                router.setChildren(childrenList);
+            }
+            routers.add(router);
+        }
+        return routers;
+    }
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
+     * 
+     * @param menus 鑿滃崟鍒楄〃
+     * @return 鏍戠粨鏋勫垪琛�
+     */
+    @Override
+    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();)
+        {
+            SysMenu menu = (SysMenu) iterator.next();
+            // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
+            if (!tempList.contains(menu.getParentId()))
+            {
+                recursionFn(menus, menu);
+                returnList.add(menu);
+            }
+        }
+        if (returnList.isEmpty())
+        {
+            returnList = menus;
+        }
+        return returnList;
+    }
+
+    /**
+     * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
+     * 
+     * @param menus 鑿滃崟鍒楄〃
+     * @return 涓嬫媺鏍戠粨鏋勫垪琛�
+     */
+    @Override
+    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)
+    {
+        return menuMapper.selectMenuById(menuId);
+    }
+
+    /**
+     * 鏄惁瀛樺湪鑿滃崟瀛愯妭鐐�
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean hasChildByMenuId(Long menuId)
+    {
+        int result = menuMapper.hasChildByMenuId(menuId);
+        return result > 0;
+    }
+
+    /**
+     * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkMenuExistRole(Long menuId)
+    {
+        int result = roleMenuMapper.checkMenuExistRole(menuId);
+        return result > 0;
+    }
+
+    /**
+     * 鏂板淇濆瓨鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertMenu(SysMenu menu)
+    {
+        return menuMapper.insertMenu(menu);
+    }
+
+    /**
+     * 淇敼淇濆瓨鑿滃崟淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateMenu(SysMenu menu)
+    {
+        return menuMapper.updateMenu(menu);
+    }
+
+    /**
+     * 鍒犻櫎鑿滃崟绠$悊淇℃伅
+     * 
+     * @param menuId 鑿滃崟ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteMenuById(Long menuId)
+    {
+        return menuMapper.deleteMenuById(menuId);
+    }
+
+    /**
+     * 鏍¢獙鑿滃崟鍚嶇О鏄惁鍞竴
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    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())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鑾峰彇璺敱鍚嶇О
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 璺敱鍚嶇О
+     */
+    public String getRouteName(SysMenu menu)
+    {
+        // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級
+        if (isMenuFrame(menu))
+        {
+            return StringUtils.EMPTY;
+        }
+        return getRouteName(menu.getRouteName(), menu.getPath());
+    }
+
+    /**
+     * 鑾峰彇璺敱鍚嶇О锛屽娌℃湁閰嶇疆璺敱鍚嶇О鍒欏彇璺敱鍦板潃
+     * 
+     * @param routerName 璺敱鍚嶇О
+     * @param path 璺敱鍦板潃
+     * @return 璺敱鍚嶇О锛堥┘宄版牸寮忥級
+     */
+    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)
+    {
+        String routerPath = menu.getPath();
+        // 鍐呴摼鎵撳紑澶栫綉鏂瑰紡
+        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()))
+        {
+            routerPath = "/" + menu.getPath();
+        }
+        // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級
+        else if (isMenuFrame(menu))
+        {
+            routerPath = "/";
+        }
+        return routerPath;
+    }
+
+    /**
+     * 鑾峰彇缁勪欢淇℃伅
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁勪欢淇℃伅
+     */
+    public String getComponent(SysMenu menu)
+    {
+        String component = UserConstants.LAYOUT;
+        if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu))
+        {
+            component = menu.getComponent();
+        }
+        else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu))
+        {
+            component = UserConstants.INNER_LINK;
+        }
+        else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu))
+        {
+            component = UserConstants.PARENT_VIEW;
+        }
+        return component;
+    }
+
+    /**
+     * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞�
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    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)
+    {
+        return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
+    }
+
+    /**
+     * 鏄惁涓簆arent_view缁勪欢
+     * 
+     * @param menu 鑿滃崟淇℃伅
+     * @return 缁撴灉
+     */
+    public boolean isParentView(SysMenu menu)
+    {
+        return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
+    }
+
+    /**
+     * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣
+     * 
+     * @param list 鍒嗙被琛�
+     * @param parentId 浼犲叆鐨勭埗鑺傜偣ID
+     * @return String
+     */
+    public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId)
+    {
+        List<SysMenu> returnList = new ArrayList<SysMenu>();
+        for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();)
+        {
+            SysMenu t = (SysMenu) iterator.next();
+            // 涓�銆佹牴鎹紶鍏ョ殑鏌愪釜鐖惰妭鐐笽D,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣
+            if (t.getParentId() == parentId)
+            {
+                recursionFn(list, t);
+                returnList.add(t);
+            }
+        }
+        return returnList;
+    }
+
+    /**
+     * 閫掑綊鍒楄〃
+     * 
+     * @param list 鍒嗙被琛�
+     * @param 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))
+            {
+                recursionFn(list, tChild);
+            }
+        }
+    }
+
+    /**
+     * 寰楀埌瀛愯妭鐐瑰垪琛�
+     */
+    private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t)
+    {
+        List<SysMenu> tlist = new ArrayList<SysMenu>();
+        Iterator<SysMenu> it = list.iterator();
+        while (it.hasNext())
+        {
+            SysMenu n = (SysMenu) it.next();
+            if (n.getParentId().longValue() == t.getMenuId().longValue())
+            {
+                tlist.add(n);
+            }
+        }
+        return tlist;
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣
+     */
+    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[] { "", "", "", "/", "/" });
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java
new file mode 100644
index 0000000..cd0d37b
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysNoticeServiceImpl.java
@@ -0,0 +1,93 @@
+package com.se.system.service.impl;
+
+import java.util.List;
+
+import com.se.system.domain.SysNotice;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.system.mapper.SysNoticeMapper;
+import com.se.system.service.ISysNoticeService;
+
+/**
+ * 鍏憡 鏈嶅姟灞傚疄鐜�
+ * 
+ * @author admin
+ */
+@Service
+public class SysNoticeServiceImpl implements ISysNoticeService
+{
+    @Autowired
+    private SysNoticeMapper noticeMapper;
+
+    /**
+     * 鏌ヨ鍏憡淇℃伅
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 鍏憡淇℃伅
+     */
+    @Override
+    public SysNotice selectNoticeById(Long noticeId)
+    {
+        return noticeMapper.selectNoticeById(noticeId);
+    }
+
+    /**
+     * 鏌ヨ鍏憡鍒楄〃
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 鍏憡闆嗗悎
+     */
+    @Override
+    public List<SysNotice> selectNoticeList(SysNotice notice)
+    {
+        return noticeMapper.selectNoticeList(notice);
+    }
+
+    /**
+     * 鏂板鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertNotice(SysNotice notice)
+    {
+        return noticeMapper.insertNotice(notice);
+    }
+
+    /**
+     * 淇敼鍏憡
+     * 
+     * @param notice 鍏憡淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateNotice(SysNotice notice)
+    {
+        return noticeMapper.updateNotice(notice);
+    }
+
+    /**
+     * 鍒犻櫎鍏憡瀵硅薄
+     * 
+     * @param noticeId 鍏憡ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteNoticeById(Long noticeId)
+    {
+        return noticeMapper.deleteNoticeById(noticeId);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鍏憡淇℃伅
+     * 
+     * @param noticeIds 闇�瑕佸垹闄ょ殑鍏憡ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteNoticeByIds(Long[] noticeIds)
+    {
+        return noticeMapper.deleteNoticeByIds(noticeIds);
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java
new file mode 100644
index 0000000..cbc296f
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysOperLogServiceImpl.java
@@ -0,0 +1,77 @@
+package com.se.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.system.api.domain.SysOperLog;
+import com.se.system.mapper.SysOperLogMapper;
+import com.se.system.service.ISysOperLogService;
+
+/**
+ * 鎿嶄綔鏃ュ織 鏈嶅姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysOperLogServiceImpl implements ISysOperLogService
+{
+    @Autowired
+    private SysOperLogMapper operLogMapper;
+
+    /**
+     * 鏂板鎿嶄綔鏃ュ織
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertOperlog(SysOperLog operLog)
+    {
+        return operLogMapper.insertOperlog(operLog);
+    }
+
+    /**
+     * 鏌ヨ绯荤粺鎿嶄綔鏃ュ織闆嗗悎
+     * 
+     * @param operLog 鎿嶄綔鏃ュ織瀵硅薄
+     * @return 鎿嶄綔鏃ュ織闆嗗悎
+     */
+    @Override
+    public List<SysOperLog> selectOperLogList(SysOperLog operLog)
+    {
+        return operLogMapper.selectOperLogList(operLog);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎绯荤粺鎿嶄綔鏃ュ織
+     * 
+     * @param operIds 闇�瑕佸垹闄ょ殑鎿嶄綔鏃ュ織ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteOperLogByIds(Long[] operIds)
+    {
+        return operLogMapper.deleteOperLogByIds(operIds);
+    }
+
+    /**
+     * 鏌ヨ鎿嶄綔鏃ュ織璇︾粏
+     * 
+     * @param operId 鎿嶄綔ID
+     * @return 鎿嶄綔鏃ュ織瀵硅薄
+     */
+    @Override
+    public SysOperLog selectOperLogById(Long operId)
+    {
+        return operLogMapper.selectOperLogById(operId);
+    }
+
+    /**
+     * 娓呯┖鎿嶄綔鏃ュ織
+     */
+    @Override
+    public void cleanOperLog()
+    {
+        operLogMapper.cleanOperLog();
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java
new file mode 100644
index 0000000..3950578
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPermissionServiceImpl.java
@@ -0,0 +1,86 @@
+package com.se.system.service.impl;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import com.se.system.api.domain.SysRole;
+import com.se.system.api.domain.SysUser;
+import com.se.system.service.ISysMenuService;
+import com.se.system.service.ISysPermissionService;
+import com.se.system.service.ISysRoleService;
+
+/**
+ * 鐢ㄦ埛鏉冮檺澶勭悊
+ * 
+ * @author admin
+ */
+@Service
+public class SysPermissionServiceImpl implements ISysPermissionService
+{
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Autowired
+    private ISysMenuService menuService;
+
+    /**
+     * 鑾峰彇瑙掕壊鏁版嵁鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛Id
+     * @return 瑙掕壊鏉冮檺淇℃伅
+     */
+    @Override
+    public Set<String> getRolePermission(SysUser user)
+    {
+        Set<String> roles = new HashSet<String>();
+        // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄�
+        if (user.isAdmin())
+        {
+            roles.add("admin");
+        }
+        else
+        {
+            roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
+        }
+        return roles;
+    }
+
+    /**
+     * 鑾峰彇鑿滃崟鏁版嵁鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛Id
+     * @return 鑿滃崟鏉冮檺淇℃伅
+     */
+    @Override
+    public Set<String> getMenuPermission(SysUser user)
+    {
+        Set<String> perms = new HashSet<String>();
+        // 绠$悊鍛樻嫢鏈夋墍鏈夋潈闄�
+        if (user.isAdmin())
+        {
+            perms.add("*:*:*");
+        }
+        else
+        {
+            List<SysRole> roles = user.getRoles();
+            if (!CollectionUtils.isEmpty(roles))
+            {
+                // 澶氳鑹茶缃畃ermissions灞炴�э紝浠ヤ究鏁版嵁鏉冮檺鍖归厤鏉冮檺
+                for (SysRole role : roles)
+                {
+                    Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
+                    role.setPermissions(rolePerms);
+                    perms.addAll(rolePerms);
+                }
+            }
+            else
+            {
+                perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
+            }
+        }
+        return perms;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java
new file mode 100644
index 0000000..1a5d310
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysPostServiceImpl.java
@@ -0,0 +1,179 @@
+package com.se.system.service.impl;
+
+import java.util.List;
+
+import com.se.system.domain.SysPost;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.utils.StringUtils;
+import com.se.system.mapper.SysPostMapper;
+import com.se.system.mapper.SysUserPostMapper;
+import com.se.system.service.ISysPostService;
+
+/**
+ * 宀椾綅淇℃伅 鏈嶅姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysPostServiceImpl implements ISysPostService
+{
+    @Autowired
+    private SysPostMapper postMapper;
+
+    @Autowired
+    private SysUserPostMapper userPostMapper;
+
+    /**
+     * 鏌ヨ宀椾綅淇℃伅闆嗗悎
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 宀椾綅淇℃伅闆嗗悎
+     */
+    @Override
+    public List<SysPost> selectPostList(SysPost post)
+    {
+        return postMapper.selectPostList(post);
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夊矖浣�
+     * 
+     * @return 宀椾綅鍒楄〃
+     */
+    @Override
+    public List<SysPost> selectPostAll()
+    {
+        return postMapper.selectPostAll();
+    }
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    @Override
+    public SysPost selectPostById(Long postId)
+    {
+        return postMapper.selectPostById(postId);
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑宀椾綅ID鍒楄〃
+     */
+    @Override
+    public List<Long> selectPostListByUserId(Long userId)
+    {
+        return postMapper.selectPostListByUserId(userId);
+    }
+
+    /**
+     * 鏍¢獙宀椾綅鍚嶇О鏄惁鍞竴
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkPostNameUnique(SysPost post)
+    {
+        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
+        SysPost info = postMapper.checkPostNameUnique(post.getPostName());
+        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙宀椾綅缂栫爜鏄惁鍞竴
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkPostCodeUnique(SysPost post)
+    {
+        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
+        SysPost info = postMapper.checkPostCodeUnique(post.getPostCode());
+        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 閫氳繃宀椾綅ID鏌ヨ宀椾綅浣跨敤鏁伴噺
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int countUserPostById(Long postId)
+    {
+        return userPostMapper.countUserPostById(postId);
+    }
+
+    /**
+     * 鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postId 宀椾綅ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePostById(Long postId)
+    {
+        return postMapper.deletePostById(postId);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎宀椾綅淇℃伅
+     * 
+     * @param postIds 闇�瑕佸垹闄ょ殑宀椾綅ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePostByIds(Long[] postIds)
+    {
+        for (Long postId : postIds)
+        {
+            SysPost post = selectPostById(postId);
+            if (countUserPostById(postId) > 0)
+            {
+                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", post.getPostName()));
+            }
+        }
+        return postMapper.deletePostByIds(postIds);
+    }
+
+    /**
+     * 鏂板淇濆瓨宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertPost(SysPost post)
+    {
+        return postMapper.insertPost(post);
+    }
+
+    /**
+     * 淇敼淇濆瓨宀椾綅淇℃伅
+     * 
+     * @param post 宀椾綅淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updatePost(SysPost post)
+    {
+        return postMapper.updatePost(post);
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java
new file mode 100644
index 0000000..f27fb07
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysRoleServiceImpl.java
@@ -0,0 +1,428 @@
+package com.se.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.se.system.domain.SysRoleDept;
+import com.se.system.domain.SysRoleMenu;
+import com.se.system.domain.SysUserRole;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.datascope.annotation.DataScope;
+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.mapper.SysRoleDeptMapper;
+import com.se.system.mapper.SysRoleMapper;
+import com.se.system.mapper.SysRoleMenuMapper;
+import com.se.system.mapper.SysUserRoleMapper;
+import com.se.system.service.ISysRoleService;
+
+/**
+ * 瑙掕壊 涓氬姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysRoleServiceImpl implements ISysRoleService
+{
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    @Autowired
+    private SysRoleMenuMapper roleMenuMapper;
+
+    @Autowired
+    private SysUserRoleMapper userRoleMapper;
+
+    @Autowired
+    private SysRoleDeptMapper roleDeptMapper;
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 瑙掕壊鏁版嵁闆嗗悎淇℃伅
+     */
+    @Override
+    @DataScope(deptAlias = "d")
+    public List<SysRole> selectRoleList(SysRole role)
+    {
+        return roleMapper.selectRoleList(role);
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 瑙掕壊鍒楄〃
+     */
+    @Override
+    public List<SysRole> selectRolesByUserId(Long userId)
+    {
+        List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
+        List<SysRole> roles = selectRoleAll();
+        for (SysRole role : roles)
+        {
+            for (SysRole userRole : userRoles)
+            {
+                if (role.getRoleId().longValue() == userRole.getRoleId().longValue())
+                {
+                    role.setFlag(true);
+                    break;
+                }
+            }
+        }
+        return roles;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鏉冮檺鍒楄〃
+     */
+    @Override
+    public Set<String> selectRolePermissionByUserId(Long userId)
+    {
+        List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
+        Set<String> permsSet = new HashSet<>();
+        for (SysRole perm : perms)
+        {
+            if (StringUtils.isNotNull(perm))
+            {
+                permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
+            }
+        }
+        return permsSet;
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夎鑹�
+     * 
+     * @return 瑙掕壊鍒楄〃
+     */
+    @Override
+    public List<SysRole> selectRoleAll()
+    {
+        return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛�
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 閫変腑瑙掕壊ID鍒楄〃
+     */
+    @Override
+    public List<Long> selectRoleListByUserId(Long userId)
+    {
+        return roleMapper.selectRoleListByUserId(userId);
+    }
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 瑙掕壊瀵硅薄淇℃伅
+     */
+    @Override
+    public SysRole selectRoleById(Long roleId)
+    {
+        return roleMapper.selectRoleById(roleId);
+    }
+
+    /**
+     * 鏍¢獙瑙掕壊鍚嶇О鏄惁鍞竴
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkRoleNameUnique(SysRole role)
+    {
+        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+        SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
+        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙瑙掕壊鏉冮檺鏄惁鍞竴
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean checkRoleKeyUnique(SysRole role)
+    {
+        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+        SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
+        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙瑙掕壊鏄惁鍏佽鎿嶄綔
+     * 
+     * @param role 瑙掕壊淇℃伅
+     */
+    @Override
+    public void checkRoleAllowed(SysRole role)
+    {
+        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
+        {
+            throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳瑙掕壊");
+        }
+    }
+
+    /**
+     * 鏍¢獙瑙掕壊鏄惁鏈夋暟鎹潈闄�
+     * 
+     * @param roleIds 瑙掕壊id
+     */
+    @Override
+    public void checkRoleDataScope(Long... roleIds)
+    {
+        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
+        {
+            for (Long roleId : roleIds)
+            {
+                SysRole role = new SysRole();
+                role.setRoleId(roleId);
+                List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
+                if (StringUtils.isEmpty(roles))
+                {
+                    throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鏁版嵁锛�");
+                }
+            }
+        }
+    }
+
+    /**
+     * 閫氳繃瑙掕壊ID鏌ヨ瑙掕壊浣跨敤鏁伴噺
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int countUserRoleByRoleId(Long roleId)
+    {
+        return userRoleMapper.countUserRoleByRoleId(roleId);
+    }
+
+    /**
+     * 鏂板淇濆瓨瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertRole(SysRole role)
+    {
+        // 鏂板瑙掕壊淇℃伅
+        roleMapper.insertRole(role);
+        return insertRoleMenu(role);
+    }
+
+    /**
+     * 淇敼淇濆瓨瑙掕壊淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateRole(SysRole role)
+    {
+        // 淇敼瑙掕壊淇℃伅
+        roleMapper.updateRole(role);
+        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
+        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
+        return insertRoleMenu(role);
+    }
+
+    /**
+     * 淇敼瑙掕壊鐘舵��
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateRoleStatus(SysRole role)
+    {
+        return roleMapper.updateRole(role);
+    }
+
+    /**
+     * 淇敼鏁版嵁鏉冮檺淇℃伅
+     * 
+     * @param role 瑙掕壊淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int authDataScope(SysRole role)
+    {
+        // 淇敼瑙掕壊淇℃伅
+        roleMapper.updateRole(role);
+        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
+        roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
+        // 鏂板瑙掕壊鍜岄儴闂ㄤ俊鎭紙鏁版嵁鏉冮檺锛�
+        return insertRoleDept(role);
+    }
+
+    /**
+     * 鏂板瑙掕壊鑿滃崟淇℃伅
+     * 
+     * @param role 瑙掕壊瀵硅薄
+     */
+    public int insertRoleMenu(SysRole role)
+    {
+        int rows = 1;
+        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
+        List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
+        for (Long menuId : role.getMenuIds())
+        {
+            SysRoleMenu rm = new SysRoleMenu();
+            rm.setRoleId(role.getRoleId());
+            rm.setMenuId(menuId);
+            list.add(rm);
+        }
+        if (list.size() > 0)
+        {
+            rows = roleMenuMapper.batchRoleMenu(list);
+        }
+        return rows;
+    }
+
+    /**
+     * 鏂板瑙掕壊閮ㄩ棬淇℃伅(鏁版嵁鏉冮檺)
+     *
+     * @param role 瑙掕壊瀵硅薄
+     */
+    public int insertRoleDept(SysRole role)
+    {
+        int rows = 1;
+        // 鏂板瑙掕壊涓庨儴闂紙鏁版嵁鏉冮檺锛夌鐞�
+        List<SysRoleDept> list = new ArrayList<SysRoleDept>();
+        for (Long deptId : role.getDeptIds())
+        {
+            SysRoleDept rd = new SysRoleDept();
+            rd.setRoleId(role.getRoleId());
+            rd.setDeptId(deptId);
+            list.add(rd);
+        }
+        if (list.size() > 0)
+        {
+            rows = roleDeptMapper.batchRoleDept(list);
+        }
+        return rows;
+    }
+
+    /**
+     * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteRoleById(Long roleId)
+    {
+        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
+        roleMenuMapper.deleteRoleMenuByRoleId(roleId);
+        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
+        roleDeptMapper.deleteRoleDeptByRoleId(roleId);
+        return roleMapper.deleteRoleById(roleId);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瑙掕壊淇℃伅
+     * 
+     * @param roleIds 闇�瑕佸垹闄ょ殑瑙掕壊ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteRoleByIds(Long[] roleIds)
+    {
+        for (Long roleId : roleIds)
+        {
+            checkRoleAllowed(new SysRole(roleId));
+            checkRoleDataScope(roleId);
+            SysRole role = selectRoleById(roleId);
+            if (countUserRoleByRoleId(roleId) > 0)
+            {
+                throw new ServiceException(String.format("%1$s宸插垎閰�,涓嶈兘鍒犻櫎", role.getRoleName()));
+            }
+        }
+        // 鍒犻櫎瑙掕壊涓庤彍鍗曞叧鑱�
+        roleMenuMapper.deleteRoleMenu(roleIds);
+        // 鍒犻櫎瑙掕壊涓庨儴闂ㄥ叧鑱�
+        roleDeptMapper.deleteRoleDept(roleIds);
+        return roleMapper.deleteRoleByIds(roleIds);
+    }
+
+    /**
+     * 鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param userRole 鐢ㄦ埛鍜岃鑹插叧鑱斾俊鎭�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteAuthUser(SysUserRole userRole)
+    {
+        return userRoleMapper.deleteUserRoleInfo(userRole);
+    }
+
+    /**
+     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param userIds 闇�瑕佸彇娑堟巿鏉冪殑鐢ㄦ埛鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteAuthUsers(Long roleId, Long[] userIds)
+    {
+        return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
+    }
+
+    /**
+     * 鎵归噺閫夋嫨鎺堟潈鐢ㄦ埛瑙掕壊
+     * 
+     * @param roleId 瑙掕壊ID
+     * @param userIds 闇�瑕佹巿鏉冪殑鐢ㄦ埛鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertAuthUsers(Long roleId, Long[] userIds)
+    {
+        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
+        List<SysUserRole> list = new ArrayList<SysUserRole>();
+        for (Long userId : userIds)
+        {
+            SysUserRole ur = new SysUserRole();
+            ur.setUserId(userId);
+            ur.setRoleId(roleId);
+            list.add(ur);
+        }
+        return userRoleMapper.batchUserRole(list);
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java
new file mode 100644
index 0000000..ad66af2
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserOnlineServiceImpl.java
@@ -0,0 +1,89 @@
+package com.se.system.service.impl;
+
+import com.se.system.domain.SysUserOnline;
+import org.springframework.stereotype.Service;
+import com.se.common.core.utils.StringUtils;
+import com.se.system.api.model.LoginUser;
+import com.se.system.service.ISysUserOnlineService;
+
+/**
+ * 鍦ㄧ嚎鐢ㄦ埛 鏈嶅姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysUserOnlineServiceImpl implements ISysUserOnlineService
+{
+    /**
+     * 閫氳繃鐧诲綍鍦板潃鏌ヨ淇℃伅
+     * 
+     * @param ipaddr 鐧诲綍鍦板潃
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    @Override
+    public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user)
+    {
+        if (StringUtils.equals(ipaddr, user.getIpaddr()))
+        {
+            return loginUserToUserOnline(user);
+        }
+        return null;
+    }
+
+    /**
+     * 閫氳繃鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
+     * 
+     * @param userName 鐢ㄦ埛鍚嶇О
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    @Override
+    public SysUserOnline selectOnlineByUserName(String userName, LoginUser user)
+    {
+        if (StringUtils.equals(userName, user.getUsername()))
+        {
+            return loginUserToUserOnline(user);
+        }
+        return null;
+    }
+
+    /**
+     * 閫氳繃鐧诲綍鍦板潃/鐢ㄦ埛鍚嶇О鏌ヨ淇℃伅
+     * 
+     * @param ipaddr 鐧诲綍鍦板潃
+     * @param userName 鐢ㄦ埛鍚嶇О
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     */
+    @Override
+    public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user)
+    {
+        if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
+        {
+            return loginUserToUserOnline(user);
+        }
+        return null;
+    }
+
+    /**
+     * 璁剧疆鍦ㄧ嚎鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鍦ㄧ嚎鐢ㄦ埛
+     */
+    @Override
+    public SysUserOnline loginUserToUserOnline(LoginUser user)
+    {
+        if (StringUtils.isNull(user))
+        {
+            return null;
+        }
+        SysUserOnline sysUserOnline = new SysUserOnline();
+        sysUserOnline.setTokenId(user.getToken());
+        sysUserOnline.setUserName(user.getUsername());
+        sysUserOnline.setIpaddr(user.getIpaddr());
+        sysUserOnline.setLoginTime(user.getLoginTime());
+        return sysUserOnline;
+    }
+}
diff --git a/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java
new file mode 100644
index 0000000..54fc967
--- /dev/null
+++ b/ruoyi-modules/se-system/src/main/java/com/se/system/service/impl/SysUserServiceImpl.java
@@ -0,0 +1,552 @@
+package com.se.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.validation.Validator;
+
+import com.se.system.domain.SysPost;
+import com.se.system.domain.SysUserPost;
+import com.se.system.domain.SysUserRole;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.utils.SpringUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.bean.BeanValidators;
+import com.se.common.datascope.annotation.DataScope;
+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.mapper.SysPostMapper;
+import com.se.system.mapper.SysRoleMapper;
+import com.se.system.mapper.SysUserMapper;
+import com.se.system.mapper.SysUserPostMapper;
+import com.se.system.mapper.SysUserRoleMapper;
+import com.se.system.service.ISysConfigService;
+import com.se.system.service.ISysDeptService;
+import com.se.system.service.ISysUserService;
+
+/**
+ * 鐢ㄦ埛 涓氬姟灞傚鐞�
+ * 
+ * @author admin
+ */
+@Service
+public class SysUserServiceImpl implements ISysUserService
+{
+    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
+
+    @Autowired
+    private SysUserMapper userMapper;
+
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    @Autowired
+    private SysPostMapper postMapper;
+
+    @Autowired
+    private SysUserRoleMapper userRoleMapper;
+
+    @Autowired
+    private SysUserPostMapper userPostMapper;
+
+    @Autowired
+    private ISysConfigService configService;
+
+    @Autowired
+    private ISysDeptService deptService;
+
+    @Autowired
+    protected Validator validator;
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    @Override
+    @DataScope(deptAlias = "d", userAlias = "u")
+    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)
+    {
+        return userMapper.selectAllocatedList(user);
+    }
+
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
+     */
+    @Override
+    @DataScope(deptAlias = "d", userAlias = "u")
+    public List<SysUser> selectUnallocatedList(SysUser user)
+    {
+        return userMapper.selectUnallocatedList(user);
+    }
+
+    /**
+     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    @Override
+    public SysUser selectUserByUserName(String userName)
+    {
+        return userMapper.selectUserByUserName(userName);
+    }
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    @Override
+    public SysUser selectUserById(Long userId)
+    {
+        return userMapper.selectUserById(userId);
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 缁撴灉
+     */
+    @Override
+    public String selectUserRoleGroup(String userName)
+    {
+        List<SysRole> list = roleMapper.selectRolesByUserName(userName);
+        if (CollectionUtils.isEmpty(list))
+        {
+            return StringUtils.EMPTY;
+        }
+        return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @return 缁撴灉
+     */
+    @Override
+    public String selectUserPostGroup(String userName)
+    {
+        List<SysPost> list = postMapper.selectPostsByUserName(userName);
+        if (CollectionUtils.isEmpty(list))
+        {
+            return StringUtils.EMPTY;
+        }
+        return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
+    }
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    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())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴
+     *
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return
+     */
+    @Override
+    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())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙email鏄惁鍞竴
+     *
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return
+     */
+    @Override
+    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())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
+    }
+
+    /**
+     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     */
+    @Override
+    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()))
+        {
+            SysUser user = new SysUser();
+            user.setUserId(userId);
+            List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
+            if (StringUtils.isEmpty(users))
+            {
+                throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
+            }
+        }
+    }
+
+    /**
+     * 鏂板淇濆瓨鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertUser(SysUser user)
+    {
+        // 鏂板鐢ㄦ埛淇℃伅
+        int rows = userMapper.insertUser(user);
+        // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
+        insertUserPost(user);
+        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
+        insertUserRole(user);
+        return rows;
+    }
+
+    /**
+     * 娉ㄥ唽鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean registerUser(SysUser user)
+    {
+        return userMapper.insertUser(user) > 0;
+    }
+
+    /**
+     * 淇敼淇濆瓨鐢ㄦ埛淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int updateUser(SysUser user)
+    {
+        Long userId = user.getUserId();
+        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
+        userRoleMapper.deleteUserRoleByUserId(userId);
+        // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
+        insertUserRole(user);
+        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
+        userPostMapper.deleteUserPostByUserId(userId);
+        // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
+        insertUserPost(user);
+        return userMapper.updateUser(user);
+    }
+
+    /**
+     * 鐢ㄦ埛鎺堟潈瑙掕壊
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @param roleIds 瑙掕壊缁�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    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);
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean updateUserProfile(SysUser user)
+    {
+        return userMapper.updateUser(user) > 0;
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛澶村儚
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param avatar 澶村儚鍦板潃
+     * @return 缁撴灉
+     */
+    @Override
+    public boolean updateUserAvatar(String userName, String avatar)
+    {
+        return userMapper.updateUserAvatar(userName, avatar) > 0;
+    }
+
+    /**
+     * 閲嶇疆鐢ㄦ埛瀵嗙爜
+     * 
+     * @param user 鐢ㄦ埛淇℃伅
+     * @return 缁撴灉
+     */
+    @Override
+    public int resetPwd(SysUser user)
+    {
+        return userMapper.updateUser(user);
+    }
+
+    /**
+     * 閲嶇疆鐢ㄦ埛瀵嗙爜
+     * 
+     * @param userName 鐢ㄦ埛鍚�
+     * @param password 瀵嗙爜
+     * @return 缁撴灉
+     */
+    @Override
+    public int resetUserPwd(String userName, String password)
+    {
+        return userMapper.resetUserPwd(userName, password);
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
+     * 
+     * @param user 鐢ㄦ埛瀵硅薄
+     */
+    public void insertUserRole(SysUser user)
+    {
+        this.insertUserRole(user.getUserId(), user.getRoleIds());
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛宀椾綅淇℃伅
+     * 
+     * @param user 鐢ㄦ埛瀵硅薄
+     */
+    public void insertUserPost(SysUser user)
+    {
+        Long[] posts = user.getPostIds();
+        if (StringUtils.isNotEmpty(posts))
+        {
+            // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
+            List<SysUserPost> list = new ArrayList<SysUserPost>();
+            for (Long postId : posts)
+            {
+                SysUserPost up = new SysUserPost();
+                up.setUserId(user.getUserId());
+                up.setPostId(postId);
+                list.add(up);
+            }
+            userPostMapper.batchUserPost(list);
+        }
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @param roleIds 瑙掕壊缁�
+     */
+    public void insertUserRole(Long userId, Long[] roleIds)
+    {
+        if (StringUtils.isNotEmpty(roleIds))
+        {
+            // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
+            List<SysUserRole> list = new ArrayList<SysUserRole>();
+            for (Long roleId : roleIds)
+            {
+                SysUserRole ur = new SysUserRole();
+                ur.setUserId(userId);
+                ur.setRoleId(roleId);
+                list.add(ur);
+            }
+            userRoleMapper.batchUserRole(list);
+        }
+    }
+
+    /**
+     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteUserById(Long userId)
+    {
+        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
+        userRoleMapper.deleteUserRoleByUserId(userId);
+        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
+        userPostMapper.deleteUserPostByUserId(userId);
+        return userMapper.deleteUserById(userId);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
+     * 
+     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteUserByIds(Long[] userIds)
+    {
+        for (Long userId : userIds)
+        {
+            checkUserAllowed(new SysUser(userId));
+            checkUserDataScope(userId);
+        }
+        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
+        userRoleMapper.deleteUserRole(userIds);
+        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
+        userPostMapper.deleteUserPost(userIds);
+        return userMapper.deleteUserByIds(userIds);
+    }
+
+    /**
+     * 瀵煎叆鐢ㄦ埛鏁版嵁
+     * 
+     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
+     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
+     * @param operName 鎿嶄綔鐢ㄦ埛
+     * @return 缁撴灉
+     */
+    @Override
+    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;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (SysUser user : userList)
+        {
+            try
+            {
+                // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛
+                SysUser u = userMapper.selectUserByUserName(user.getUserName());
+                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);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛");
+                }
+                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);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛");
+                }
+                else
+                {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�");
+                }
+            }
+            catch (Exception e)
+            {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0)
+        {
+            failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
+            throw new ServiceException(failureMsg.toString());
+        }
+        else
+        {
+            successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
+        }
+        return successMsg.toString();
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/banner.txt b/ruoyi-modules/se-system/src/main/resources/banner.txt
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/banner.txt
rename to ruoyi-modules/se-system/src/main/resources/banner.txt
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/se-system/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
rename to ruoyi-modules/se-system/src/main/resources/bootstrap.yml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/logback.xml b/ruoyi-modules/se-system/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/logback.xml
rename to ruoyi-modules/se-system/src/main/resources/logback.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysConfigMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDeptMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictDataMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysLogininforMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysMenuMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysNoticeMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysOperLogMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysPostMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserPostMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
rename to ruoyi-modules/se-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
diff --git a/se-api/ruoyi-api-system/pom.xml b/se-api/ruoyi-api-system/pom.xml
deleted file mode 100644
index 9fd70d6..0000000
--- a/se-api/ruoyi-api-system/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-api</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-api-system</artifactId>
-
-    <description>
-        ruoyi-api-system绯荤粺鎺ュ彛妯″潡
-    </description>
-
-    <dependencies>
-		
-        <!-- RuoYi Common Core-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-core</artifactId>
-        </dependency>
-        
-    </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java
deleted file mode 100644
index ed49e2c..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.ruoyi.system.api;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestPart;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.core.constant.ServiceNameConstants;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.domain.SysFile;
-import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
-
-/**
- * 鏂囦欢鏈嶅姟
- * 
- * @author ruoyi
- */
-@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
-public interface RemoteFileService
-{
-    /**
-     * 涓婁紶鏂囦欢
-     *
-     * @param file 鏂囦欢淇℃伅
-     * @return 缁撴灉
-     */
-    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
deleted file mode 100644
index 525eda3..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ruoyi.system.api;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.constant.ServiceNameConstants;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.domain.SysLogininfor;
-import com.ruoyi.system.api.domain.SysOperLog;
-import com.ruoyi.system.api.factory.RemoteLogFallbackFactory;
-
-/**
- * 鏃ュ織鏈嶅姟
- * 
- * @author ruoyi
- */
-@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
-public interface RemoteLogService
-{
-    /**
-     * 淇濆瓨绯荤粺鏃ュ織
-     *
-     * @param sysOperLog 鏃ュ織瀹炰綋
-     * @param source 璇锋眰鏉ユ簮
-     * @return 缁撴灉
-     */
-    @PostMapping("/operlog")
-    public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
-
-    /**
-     * 淇濆瓨璁块棶璁板綍
-     *
-     * @param sysLogininfor 璁块棶瀹炰綋
-     * @param source 璇锋眰鏉ユ簮
-     * @return 缁撴灉
-     */
-    @PostMapping("/logininfor")
-    public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
deleted file mode 100644
index 95cb91d..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ruoyi.system.api;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.constant.ServiceNameConstants;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
-import com.ruoyi.system.api.model.LoginUser;
-
-/**
- * 鐢ㄦ埛鏈嶅姟
- * 
- * @author ruoyi
- */
-@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
-public interface RemoteUserService
-{
-    /**
-     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴蜂俊鎭�
-     *
-     * @param username 鐢ㄦ埛鍚�
-     * @param source 璇锋眰鏉ユ簮
-     * @return 缁撴灉
-     */
-    @GetMapping("/user/info/{username}")
-    public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
-
-    /**
-     * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     *
-     * @param sysUser 鐢ㄦ埛淇℃伅
-     * @param source 璇锋眰鏉ユ簮
-     * @return 缁撴灉
-     */
-    @PostMapping("/user/register")
-    public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
-
-    /**
-     * 璁板綍鐢ㄦ埛鐧诲綍IP鍦板潃鍜岀櫥褰曟椂闂�
-     *
-     * @param sysUser 鐢ㄦ埛淇℃伅
-     * @param source 璇锋眰鏉ユ簮
-     * @return 缁撴灉
-     */
-    @PutMapping("/user/recordlogin")
-    public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
deleted file mode 100644
index 91173f0..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 閮ㄩ棬琛� sys_dept
- * 
- * @author ruoyi
- */
-public class SysDept extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 閮ㄩ棬ID */
-    private Long deptId;
-
-    /** 鐖堕儴闂↖D */
-    private Long parentId;
-
-    /** 绁栫骇鍒楄〃 */
-    private String ancestors;
-
-    /** 閮ㄩ棬鍚嶇О */
-    private String deptName;
-
-    /** 鏄剧ず椤哄簭 */
-    private Integer orderNum;
-
-    /** 璐熻矗浜� */
-    private String leader;
-
-    /** 鑱旂郴鐢佃瘽 */
-    private String phone;
-
-    /** 閭 */
-    private String email;
-
-    /** 閮ㄩ棬鐘舵��:0姝e父,1鍋滅敤 */
-    private String status;
-
-    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
-    private String delFlag;
-
-    /** 鐖堕儴闂ㄥ悕绉� */
-    private String parentName;
-    
-    /** 瀛愰儴闂� */
-    private List<SysDept> children = new ArrayList<SysDept>();
-
-    public Long getDeptId()
-    {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId)
-    {
-        this.deptId = deptId;
-    }
-
-    public Long getParentId()
-    {
-        return parentId;
-    }
-
-    public void setParentId(Long parentId)
-    {
-        this.parentId = parentId;
-    }
-
-    public String getAncestors()
-    {
-        return ancestors;
-    }
-
-    public void setAncestors(String ancestors)
-    {
-        this.ancestors = ancestors;
-    }
-
-    @NotBlank(message = "閮ㄩ棬鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 30, message = "閮ㄩ棬鍚嶇О闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getDeptName()
-    {
-        return deptName;
-    }
-
-    public void setDeptName(String deptName)
-    {
-        this.deptName = deptName;
-    }
-
-    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
-    public Integer getOrderNum()
-    {
-        return orderNum;
-    }
-
-    public void setOrderNum(Integer orderNum)
-    {
-        this.orderNum = orderNum;
-    }
-
-    public String getLeader()
-    {
-        return leader;
-    }
-
-    public void setLeader(String leader)
-    {
-        this.leader = leader;
-    }
-
-    @Size(min = 0, max = 11, message = "鑱旂郴鐢佃瘽闀垮害涓嶈兘瓒呰繃11涓瓧绗�")
-    public String getPhone()
-    {
-        return phone;
-    }
-
-    public void setPhone(String phone)
-    {
-        this.phone = phone;
-    }
-
-    @Email(message = "閭鏍煎紡涓嶆纭�")
-    @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getDelFlag()
-    {
-        return delFlag;
-    }
-
-    public void setDelFlag(String delFlag)
-    {
-        this.delFlag = delFlag;
-    }
-
-    public String getParentName()
-    {
-        return parentName;
-    }
-
-    public void setParentName(String parentName)
-    {
-        this.parentName = parentName;
-    }
-
-    public List<SysDept> getChildren()
-    {
-        return children;
-    }
-
-    public void setChildren(List<SysDept> children)
-    {
-        this.children = children;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("deptId", getDeptId())
-            .append("parentId", getParentId())
-            .append("ancestors", getAncestors())
-            .append("deptName", getDeptName())
-            .append("orderNum", getOrderNum())
-            .append("leader", getLeader())
-            .append("phone", getPhone())
-            .append("email", getEmail())
-            .append("status", getStatus())
-            .append("delFlag", getDelFlag())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
deleted file mode 100644
index e0c4a17..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.constant.UserConstants;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 瀛楀吀鏁版嵁琛� sys_dict_data
- * 
- * @author ruoyi
- */
-public class SysDictData extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 瀛楀吀缂栫爜 */
-    @Excel(name = "瀛楀吀缂栫爜", cellType = ColumnType.NUMERIC)
-    private Long dictCode;
-
-    /** 瀛楀吀鎺掑簭 */
-    @Excel(name = "瀛楀吀鎺掑簭", cellType = ColumnType.NUMERIC)
-    private Long dictSort;
-
-    /** 瀛楀吀鏍囩 */
-    @Excel(name = "瀛楀吀鏍囩")
-    private String dictLabel;
-
-    /** 瀛楀吀閿�� */
-    @Excel(name = "瀛楀吀閿��")
-    private String dictValue;
-
-    /** 瀛楀吀绫诲瀷 */
-    @Excel(name = "瀛楀吀绫诲瀷")
-    private String dictType;
-
-    /** 鏍峰紡灞炴�э紙鍏朵粬鏍峰紡鎵╁睍锛� */
-    private String cssClass;
-
-    /** 琛ㄦ牸瀛楀吀鏍峰紡 */
-    private String listClass;
-
-    /** 鏄惁榛樿锛圷鏄� N鍚︼級 */
-    @Excel(name = "鏄惁榛樿", readConverterExp = "Y=鏄�,N=鍚�")
-    private String isDefault;
-
-    /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
-    private String status;
-
-    public Long getDictCode()
-    {
-        return dictCode;
-    }
-
-    public void setDictCode(Long dictCode)
-    {
-        this.dictCode = dictCode;
-    }
-
-    public Long getDictSort()
-    {
-        return dictSort;
-    }
-
-    public void setDictSort(Long dictSort)
-    {
-        this.dictSort = dictSort;
-    }
-
-    @NotBlank(message = "瀛楀吀鏍囩涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "瀛楀吀鏍囩闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getDictLabel()
-    {
-        return dictLabel;
-    }
-
-    public void setDictLabel(String dictLabel)
-    {
-        this.dictLabel = dictLabel;
-    }
-
-    @NotBlank(message = "瀛楀吀閿�间笉鑳戒负绌�")
-    @Size(min = 0, max = 100, message = "瀛楀吀閿�奸暱搴︿笉鑳借秴杩�100涓瓧绗�")
-    public String getDictValue()
-    {
-        return dictValue;
-    }
-
-    public void setDictValue(String dictValue)
-    {
-        this.dictValue = dictValue;
-    }
-
-    @NotBlank(message = "瀛楀吀绫诲瀷涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getDictType()
-    {
-        return dictType;
-    }
-
-    public void setDictType(String dictType)
-    {
-        this.dictType = dictType;
-    }
-
-    @Size(min = 0, max = 100, message = "鏍峰紡灞炴�ч暱搴︿笉鑳借秴杩�100涓瓧绗�")
-    public String getCssClass()
-    {
-        return cssClass;
-    }
-
-    public void setCssClass(String cssClass)
-    {
-        this.cssClass = cssClass;
-    }
-
-    public String getListClass()
-    {
-        return listClass;
-    }
-
-    public void setListClass(String listClass)
-    {
-        this.listClass = listClass;
-    }
-
-    public boolean getDefault()
-    {
-        return UserConstants.YES.equals(this.isDefault);
-    }
-
-    public String getIsDefault()
-    {
-        return isDefault;
-    }
-
-    public void setIsDefault(String isDefault)
-    {
-        this.isDefault = isDefault;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-    
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("dictCode", getDictCode())
-            .append("dictSort", getDictSort())
-            .append("dictLabel", getDictLabel())
-            .append("dictValue", getDictValue())
-            .append("dictType", getDictType())
-            .append("cssClass", getCssClass())
-            .append("listClass", getListClass())
-            .append("isDefault", getIsDefault())
-            .append("status", getStatus())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
deleted file mode 100644
index c51a48d..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 瀛楀吀绫诲瀷琛� sys_dict_type
- * 
- * @author ruoyi
- */
-public class SysDictType extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 瀛楀吀涓婚敭 */
-    @Excel(name = "瀛楀吀涓婚敭", cellType = ColumnType.NUMERIC)
-    private Long dictId;
-
-    /** 瀛楀吀鍚嶇О */
-    @Excel(name = "瀛楀吀鍚嶇О")
-    private String dictName;
-
-    /** 瀛楀吀绫诲瀷 */
-    @Excel(name = "瀛楀吀绫诲瀷")
-    private String dictType;
-
-    /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
-    private String status;
-
-    public Long getDictId()
-    {
-        return dictId;
-    }
-
-    public void setDictId(Long dictId)
-    {
-        this.dictId = dictId;
-    }
-
-    @NotBlank(message = "瀛楀吀鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getDictName()
-    {
-        return dictName;
-    }
-
-    public void setDictName(String dictName)
-    {
-        this.dictName = dictName;
-    }
-
-    @NotBlank(message = "瀛楀吀绫诲瀷涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "瀛楀吀绫诲瀷绫诲瀷闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "瀛楀吀绫诲瀷蹇呴』浠ュ瓧姣嶅紑澶达紝涓斿彧鑳戒负锛堝皬鍐欏瓧姣嶏紝鏁板瓧锛屼笅婊戠嚎锛�")
-    public String getDictType()
-    {
-        return dictType;
-    }
-
-    public void setDictType(String dictType)
-    {
-        this.dictType = dictType;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-    
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("dictId", getDictId())
-            .append("dictName", getDictName())
-            .append("dictType", getDictType())
-            .append("status", getStatus())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java
deleted file mode 100644
index c953b19..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 鏂囦欢淇℃伅
- * 
- * @author ruoyi
- */
-public class SysFile
-{
-    /**
-     * 鏂囦欢鍚嶇О
-     */
-    private String name;
-
-    /**
-     * 鏂囦欢鍦板潃
-     */
-    private String url;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public String getUrl()
-    {
-        return url;
-    }
-
-    public void setUrl(String url)
-    {
-        this.url = url;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("name", getName())
-            .append("url", getUrl())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java
deleted file mode 100644
index cd3be58..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 绯荤粺璁块棶璁板綍琛� sys_logininfor
- * 
- * @author ruoyi
- */
-public class SysLogininfor extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** ID */
-    @Excel(name = "搴忓彿", cellType = ColumnType.NUMERIC)
-    private Long infoId;
-
-    /** 鐢ㄦ埛璐﹀彿 */
-    @Excel(name = "鐢ㄦ埛璐﹀彿")
-    private String userName;
-
-    /** 鐘舵�� 0鎴愬姛 1澶辫触 */
-    @Excel(name = "鐘舵��", readConverterExp = "0=鎴愬姛,1=澶辫触")
-    private String status;
-
-    /** 鍦板潃 */
-    @Excel(name = "鍦板潃")
-    private String ipaddr;
-
-    /** 鎻忚堪 */
-    @Excel(name = "鎻忚堪")
-    private String msg;
-
-    /** 璁块棶鏃堕棿 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "璁块棶鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
-    private Date accessTime;
-
-    public Long getInfoId()
-    {
-        return infoId;
-    }
-
-    public void setInfoId(Long infoId)
-    {
-        this.infoId = infoId;
-    }
-
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getIpaddr()
-    {
-        return ipaddr;
-    }
-
-    public void setIpaddr(String ipaddr)
-    {
-        this.ipaddr = ipaddr;
-    }
-
-    public String getMsg()
-    {
-        return msg;
-    }
-
-    public void setMsg(String msg)
-    {
-        this.msg = msg;
-    }
-
-    public Date getAccessTime()
-    {
-        return accessTime;
-    }
-
-    public void setAccessTime(Date accessTime)
-    {
-        this.accessTime = accessTime;
-    }
-}
\ No newline at end of file
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
deleted file mode 100644
index a3c350f..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 鎿嶄綔鏃ュ織璁板綍琛� oper_log
- * 
- * @author ruoyi
- */
-public class SysOperLog extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鏃ュ織涓婚敭 */
-    @Excel(name = "鎿嶄綔搴忓彿", cellType = ColumnType.NUMERIC)
-    private Long operId;
-
-    /** 鎿嶄綔妯″潡 */
-    @Excel(name = "鎿嶄綔妯″潡")
-    private String title;
-
-    /** 涓氬姟绫诲瀷锛�0鍏跺畠 1鏂板 2淇敼 3鍒犻櫎锛� */
-    @Excel(name = "涓氬姟绫诲瀷", readConverterExp = "0=鍏跺畠,1=鏂板,2=淇敼,3=鍒犻櫎,4=鎺堟潈,5=瀵煎嚭,6=瀵煎叆,7=寮洪��,8=鐢熸垚浠g爜,9=娓呯┖鏁版嵁")
-    private Integer businessType;
-
-    /** 涓氬姟绫诲瀷鏁扮粍 */
-    private Integer[] businessTypes;
-
-    /** 璇锋眰鏂规硶 */
-    @Excel(name = "璇锋眰鏂规硶")
-    private String method;
-
-    /** 璇锋眰鏂瑰紡 */
-    @Excel(name = "璇锋眰鏂瑰紡")
-    private String requestMethod;
-
-    /** 鎿嶄綔绫诲埆锛�0鍏跺畠 1鍚庡彴鐢ㄦ埛 2鎵嬫満绔敤鎴凤級 */
-    @Excel(name = "鎿嶄綔绫诲埆", readConverterExp = "0=鍏跺畠,1=鍚庡彴鐢ㄦ埛,2=鎵嬫満绔敤鎴�")
-    private Integer operatorType;
-
-    /** 鎿嶄綔浜哄憳 */
-    @Excel(name = "鎿嶄綔浜哄憳")
-    private String operName;
-
-    /** 閮ㄩ棬鍚嶇О */
-    @Excel(name = "閮ㄩ棬鍚嶇О")
-    private String deptName;
-
-    /** 璇锋眰url */
-    @Excel(name = "璇锋眰鍦板潃")
-    private String operUrl;
-
-    /** 鎿嶄綔鍦板潃 */
-    @Excel(name = "鎿嶄綔鍦板潃")
-    private String operIp;
-
-    /** 璇锋眰鍙傛暟 */
-    @Excel(name = "璇锋眰鍙傛暟")
-    private String operParam;
-
-    /** 杩斿洖鍙傛暟 */
-    @Excel(name = "杩斿洖鍙傛暟")
-    private String jsonResult;
-
-    /** 鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛� */
-    @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=寮傚父")
-    private Integer status;
-
-    /** 閿欒娑堟伅 */
-    @Excel(name = "閿欒娑堟伅")
-    private String errorMsg;
-
-    /** 鎿嶄綔鏃堕棿 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "鎿嶄綔鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
-    private Date operTime;
-
-    /** 娑堣�楁椂闂� */
-    @Excel(name = "娑堣�楁椂闂�", suffix = "姣")
-    private Long costTime;
-
-    public Long getOperId()
-    {
-        return operId;
-    }
-
-    public void setOperId(Long operId)
-    {
-        this.operId = operId;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-    public Integer getBusinessType()
-    {
-        return businessType;
-    }
-
-    public void setBusinessType(Integer businessType)
-    {
-        this.businessType = businessType;
-    }
-
-    public Integer[] getBusinessTypes()
-    {
-        return businessTypes;
-    }
-
-    public void setBusinessTypes(Integer[] businessTypes)
-    {
-        this.businessTypes = businessTypes;
-    }
-
-    public String getMethod()
-    {
-        return method;
-    }
-
-    public void setMethod(String method)
-    {
-        this.method = method;
-    }
-
-    public String getRequestMethod()
-    {
-        return requestMethod;
-    }
-
-    public void setRequestMethod(String requestMethod)
-    {
-        this.requestMethod = requestMethod;
-    }
-
-    public Integer getOperatorType()
-    {
-        return operatorType;
-    }
-
-    public void setOperatorType(Integer operatorType)
-    {
-        this.operatorType = operatorType;
-    }
-
-    public String getOperName()
-    {
-        return operName;
-    }
-
-    public void setOperName(String operName)
-    {
-        this.operName = operName;
-    }
-
-    public String getDeptName()
-    {
-        return deptName;
-    }
-
-    public void setDeptName(String deptName)
-    {
-        this.deptName = deptName;
-    }
-
-    public String getOperUrl()
-    {
-        return operUrl;
-    }
-
-    public void setOperUrl(String operUrl)
-    {
-        this.operUrl = operUrl;
-    }
-
-    public String getOperIp()
-    {
-        return operIp;
-    }
-
-    public void setOperIp(String operIp)
-    {
-        this.operIp = operIp;
-    }
-
-    public String getOperParam()
-    {
-        return operParam;
-    }
-
-    public void setOperParam(String operParam)
-    {
-        this.operParam = operParam;
-    }
-
-    public String getJsonResult()
-    {
-        return jsonResult;
-    }
-
-    public void setJsonResult(String jsonResult)
-    {
-        this.jsonResult = jsonResult;
-    }
-
-    public Integer getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(Integer status)
-    {
-        this.status = status;
-    }
-
-    public String getErrorMsg()
-    {
-        return errorMsg;
-    }
-
-    public void setErrorMsg(String errorMsg)
-    {
-        this.errorMsg = errorMsg;
-    }
-
-    public Date getOperTime()
-    {
-        return operTime;
-    }
-
-    public void setOperTime(Date operTime)
-    {
-        this.operTime = operTime;
-    }
-
-    public Long getCostTime()
-    {
-        return costTime;
-    }
-
-    public void setCostTime(Long costTime)
-    {
-        this.costTime = costTime;
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
deleted file mode 100644
index 62df8b5..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import java.util.Set;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-
-/**
- * 瑙掕壊琛� sys_role
- * 
- * @author ruoyi
- */
-public class SysRole extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 瑙掕壊ID */
-    @Excel(name = "瑙掕壊搴忓彿", cellType = ColumnType.NUMERIC)
-    private Long roleId;
-
-    /** 瑙掕壊鍚嶇О */
-    @Excel(name = "瑙掕壊鍚嶇О")
-    private String roleName;
-
-    /** 瑙掕壊鏉冮檺 */
-    @Excel(name = "瑙掕壊鏉冮檺")
-    private String roleKey;
-
-    /** 瑙掕壊鎺掑簭 */
-    @Excel(name = "瑙掕壊鎺掑簭")
-    private Integer roleSort;
-
-    /** 鏁版嵁鑼冨洿锛�1锛氭墍鏈夋暟鎹潈闄愶紱2锛氳嚜瀹氫箟鏁版嵁鏉冮檺锛�3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺锛�4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶紱5锛氫粎鏈汉鏁版嵁鏉冮檺锛� */
-    @Excel(name = "鏁版嵁鑼冨洿", readConverterExp = "1=鎵�鏈夋暟鎹潈闄�,2=鑷畾涔夋暟鎹潈闄�,3=鏈儴闂ㄦ暟鎹潈闄�,4=鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺,5=浠呮湰浜烘暟鎹潈闄�")
-    private String dataScope;
-
-    /** 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙 0锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず 1锛氱埗瀛愪簰鐩稿叧鑱旀樉绀猴級 */
-    private boolean menuCheckStrictly;
-
-    /** 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙0锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず 1锛氱埗瀛愪簰鐩稿叧鑱旀樉绀� 锛� */
-    private boolean deptCheckStrictly;
-
-    /** 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    @Excel(name = "瑙掕壊鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
-    private String status;
-
-    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
-    private String delFlag;
-
-    /** 鐢ㄦ埛鏄惁瀛樺湪姝よ鑹叉爣璇� 榛樿涓嶅瓨鍦� */
-    private boolean flag = false;
-
-    /** 鑿滃崟缁� */
-    private Long[] menuIds;
-
-    /** 閮ㄩ棬缁勶紙鏁版嵁鏉冮檺锛� */
-    private Long[] deptIds;
-
-    /** 瑙掕壊鑿滃崟鏉冮檺 */
-    private Set<String> permissions;
-
-    public SysRole()
-    {
-
-    }
-
-    public SysRole(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-
-    public Long getRoleId()
-    {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-
-    public boolean isAdmin()
-    {
-        return isAdmin(this.roleId);
-    }
-
-    public static boolean isAdmin(Long roleId)
-    {
-        return roleId != null && 1L == roleId;
-    }
-
-    @NotBlank(message = "瑙掕壊鍚嶇О涓嶈兘涓虹┖")
-    @Size(min = 0, max = 30, message = "瑙掕壊鍚嶇О闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getRoleName()
-    {
-        return roleName;
-    }
-
-    public void setRoleName(String roleName)
-    {
-        this.roleName = roleName;
-    }
-
-    @NotBlank(message = "鏉冮檺瀛楃涓嶈兘涓虹┖")
-    @Size(min = 0, max = 100, message = "鏉冮檺瀛楃闀垮害涓嶈兘瓒呰繃100涓瓧绗�")
-    public String getRoleKey()
-    {
-        return roleKey;
-    }
-
-    public void setRoleKey(String roleKey)
-    {
-        this.roleKey = roleKey;
-    }
-
-    @NotNull(message = "鏄剧ず椤哄簭涓嶈兘涓虹┖")
-    public Integer getRoleSort()
-    {
-        return roleSort;
-    }
-
-    public void setRoleSort(Integer roleSort)
-    {
-        this.roleSort = roleSort;
-    }
-
-    public String getDataScope()
-    {
-        return dataScope;
-    }
-
-    public void setDataScope(String dataScope)
-    {
-        this.dataScope = dataScope;
-    }
-
-    public boolean isMenuCheckStrictly()
-    {
-        return menuCheckStrictly;
-    }
-
-    public void setMenuCheckStrictly(boolean menuCheckStrictly)
-    {
-        this.menuCheckStrictly = menuCheckStrictly;
-    }
-
-    public boolean isDeptCheckStrictly()
-    {
-        return deptCheckStrictly;
-    }
-
-    public void setDeptCheckStrictly(boolean deptCheckStrictly)
-    {
-        this.deptCheckStrictly = deptCheckStrictly;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getDelFlag()
-    {
-        return delFlag;
-    }
-
-    public void setDelFlag(String delFlag)
-    {
-        this.delFlag = delFlag;
-    }
-
-    public boolean isFlag()
-    {
-        return flag;
-    }
-
-    public void setFlag(boolean flag)
-    {
-        this.flag = flag;
-    }
-
-    public Long[] getMenuIds()
-    {
-        return menuIds;
-    }
-
-    public void setMenuIds(Long[] menuIds)
-    {
-        this.menuIds = menuIds;
-    }
-
-    public Long[] getDeptIds()
-    {
-        return deptIds;
-    }
-
-    public void setDeptIds(Long[] deptIds)
-    {
-        this.deptIds = deptIds;
-    }
-
-    public Set<String> getPermissions()
-    {
-        return permissions;
-    }
-
-    public void setPermissions(Set<String> permissions)
-    {
-        this.permissions = permissions;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("roleId", getRoleId())
-            .append("roleName", getRoleName())
-            .append("roleKey", getRoleKey())
-            .append("roleSort", getRoleSort())
-            .append("dataScope", getDataScope())
-            .append("menuCheckStrictly", isMenuCheckStrictly())
-            .append("deptCheckStrictly", isDeptCheckStrictly())
-            .append("status", getStatus())
-            .append("delFlag", getDelFlag())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
deleted file mode 100644
index 43625ea..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ /dev/null
@@ -1,323 +0,0 @@
-package com.ruoyi.system.api.domain;
-
-import java.util.Date;
-import java.util.List;
-import javax.validation.constraints.*;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.annotation.Excel.ColumnType;
-import com.ruoyi.common.core.annotation.Excel.Type;
-import com.ruoyi.common.core.annotation.Excels;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-import com.ruoyi.common.core.xss.Xss;
-
-/**
- * 鐢ㄦ埛瀵硅薄 sys_user
- * 
- * @author ruoyi
- */
-public class SysUser extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鐢ㄦ埛ID */
-    @Excel(name = "鐢ㄦ埛搴忓彿", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "鐢ㄦ埛缂栧彿")
-    private Long userId;
-
-    /** 閮ㄩ棬ID */
-    @Excel(name = "閮ㄩ棬缂栧彿", type = Type.IMPORT)
-    private Long deptId;
-
-    /** 鐢ㄦ埛璐﹀彿 */
-    @Excel(name = "鐧诲綍鍚嶇О")
-    private String userName;
-
-    /** 鐢ㄦ埛鏄电О */
-    @Excel(name = "鐢ㄦ埛鍚嶇О")
-    private String nickName;
-
-    /** 鐢ㄦ埛閭 */
-    @Excel(name = "鐢ㄦ埛閭")
-    private String email;
-
-    /** 鎵嬫満鍙风爜 */
-    @Excel(name = "鎵嬫満鍙风爜", cellType = ColumnType.TEXT)
-    private String phonenumber;
-
-    /** 鐢ㄦ埛鎬у埆 */
-    @Excel(name = "鐢ㄦ埛鎬у埆", readConverterExp = "0=鐢�,1=濂�,2=鏈煡")
-    private String sex;
-
-    /** 鐢ㄦ埛澶村儚 */
-    private String avatar;
-
-    /** 瀵嗙爜 */
-    private String password;
-
-    /** 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� */
-    @Excel(name = "甯愬彿鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
-    private String status;
-
-    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
-    private String delFlag;
-
-    /** 鏈�鍚庣櫥褰旾P */
-    @Excel(name = "鏈�鍚庣櫥褰旾P", type = Type.EXPORT)
-    private String loginIp;
-
-    /** 鏈�鍚庣櫥褰曟椂闂� */
-    @Excel(name = "鏈�鍚庣櫥褰曟椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
-    private Date loginDate;
-
-    /** 閮ㄩ棬瀵硅薄 */
-    @Excels({
-        @Excel(name = "閮ㄩ棬鍚嶇О", targetAttr = "deptName", type = Type.EXPORT),
-        @Excel(name = "閮ㄩ棬璐熻矗浜�", targetAttr = "leader", type = Type.EXPORT)
-    })
-    private SysDept dept;
-
-    /** 瑙掕壊瀵硅薄 */
-    private List<SysRole> roles;
-
-    /** 瑙掕壊缁� */
-    private Long[] roleIds;
-
-    /** 宀椾綅缁� */
-    private Long[] postIds;
-
-    /** 瑙掕壊ID */
-    private Long roleId;
-
-    public SysUser()
-    {
-
-    }
-
-    public SysUser(Long userId)
-    {
-        this.userId = userId;
-    }
-
-    public Long getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(Long userId)
-    {
-        this.userId = userId;
-    }
-
-    public boolean isAdmin()
-    {
-        return isAdmin(this.userId);
-    }
-
-    public static boolean isAdmin(Long userId)
-    {
-        return userId != null && 1L == userId;
-    }
-
-    public Long getDeptId()
-    {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId)
-    {
-        this.deptId = deptId;
-    }
-
-    @Xss(message = "鐢ㄦ埛鏄电О涓嶈兘鍖呭惈鑴氭湰瀛楃")
-    @Size(min = 0, max = 30, message = "鐢ㄦ埛鏄电О闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getNickName()
-    {
-        return nickName;
-    }
-
-    public void setNickName(String nickName)
-    {
-        this.nickName = nickName;
-    }
-
-    @Xss(message = "鐢ㄦ埛璐﹀彿涓嶈兘鍖呭惈鑴氭湰瀛楃")
-    @NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖")
-    @Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-    @Email(message = "閭鏍煎紡涓嶆纭�")
-    @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    @Size(min = 0, max = 11, message = "鎵嬫満鍙风爜闀垮害涓嶈兘瓒呰繃11涓瓧绗�")
-    public String getPhonenumber()
-    {
-        return phonenumber;
-    }
-
-    public void setPhonenumber(String phonenumber)
-    {
-        this.phonenumber = phonenumber;
-    }
-
-    public String getSex()
-    {
-        return sex;
-    }
-
-    public void setSex(String sex)
-    {
-        this.sex = sex;
-    }
-
-    public String getAvatar()
-    {
-        return avatar;
-    }
-
-    public void setAvatar(String avatar)
-    {
-        this.avatar = avatar;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public String getDelFlag()
-    {
-        return delFlag;
-    }
-
-    public void setDelFlag(String delFlag)
-    {
-        this.delFlag = delFlag;
-    }
-
-    public String getLoginIp()
-    {
-        return loginIp;
-    }
-
-    public void setLoginIp(String loginIp)
-    {
-        this.loginIp = loginIp;
-    }
-
-    public Date getLoginDate()
-    {
-        return loginDate;
-    }
-
-    public void setLoginDate(Date loginDate)
-    {
-        this.loginDate = loginDate;
-    }
-
-    public SysDept getDept()
-    {
-        return dept;
-    }
-
-    public void setDept(SysDept dept)
-    {
-        this.dept = dept;
-    }
-
-    public List<SysRole> getRoles()
-    {
-        return roles;
-    }
-
-    public void setRoles(List<SysRole> roles)
-    {
-        this.roles = roles;
-    }
-
-    public Long[] getRoleIds()
-    {
-        return roleIds;
-    }
-
-    public void setRoleIds(Long[] roleIds)
-    {
-        this.roleIds = roleIds;
-    }
-
-    public Long[] getPostIds()
-    {
-        return postIds;
-    }
-
-    public void setPostIds(Long[] postIds)
-    {
-        this.postIds = postIds;
-    }
-
-    public Long getRoleId()
-    {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId)
-    {
-        this.roleId = roleId;
-    }
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("userId", getUserId())
-            .append("deptId", getDeptId())
-            .append("userName", getUserName())
-            .append("nickName", getNickName())
-            .append("email", getEmail())
-            .append("phonenumber", getPhonenumber())
-            .append("sex", getSex())
-            .append("avatar", getAvatar())
-            .append("password", getPassword())
-            .append("status", getStatus())
-            .append("delFlag", getDelFlag())
-            .append("loginIp", getLoginIp())
-            .append("loginDate", getLoginDate())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .append("dept", getDept())
-            .toString();
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
deleted file mode 100644
index 41def87..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ruoyi.system.api.factory;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.cloud.openfeign.FallbackFactory;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.RemoteFileService;
-import com.ruoyi.system.api.domain.SysFile;
-
-/**
- * 鏂囦欢鏈嶅姟闄嶇骇澶勭悊
- * 
- * @author ruoyi
- */
-@Component
-public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
-{
-    private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
-
-    @Override
-    public RemoteFileService create(Throwable throwable)
-    {
-        log.error("鏂囦欢鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage());
-        return new RemoteFileService()
-        {
-            @Override
-            public R<SysFile> upload(MultipartFile file)
-            {
-                return R.fail("涓婁紶鏂囦欢澶辫触:" + throwable.getMessage());
-            }
-        };
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
deleted file mode 100644
index f2c0422..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.system.api.factory;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.cloud.openfeign.FallbackFactory;
-import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.RemoteLogService;
-import com.ruoyi.system.api.domain.SysLogininfor;
-import com.ruoyi.system.api.domain.SysOperLog;
-
-/**
- * 鏃ュ織鏈嶅姟闄嶇骇澶勭悊
- * 
- * @author ruoyi
- */
-@Component
-public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService>
-{
-    private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
-
-    @Override
-    public RemoteLogService create(Throwable throwable)
-    {
-        log.error("鏃ュ織鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage());
-        return new RemoteLogService()
-        {
-            @Override
-            public R<Boolean> saveLog(SysOperLog sysOperLog, String source)
-            {
-                return R.fail("淇濆瓨鎿嶄綔鏃ュ織澶辫触:" + throwable.getMessage());
-            }
-
-            @Override
-            public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source)
-            {
-                return R.fail("淇濆瓨鐧诲綍鏃ュ織澶辫触:" + throwable.getMessage());
-            }
-        };
-
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
deleted file mode 100644
index 5972b3f..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.ruoyi.system.api.factory;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.cloud.openfeign.FallbackFactory;
-import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.api.RemoteUserService;
-import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.model.LoginUser;
-
-/**
- * 鐢ㄦ埛鏈嶅姟闄嶇骇澶勭悊
- * 
- * @author ruoyi
- */
-@Component
-public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
-{
-    private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
-
-    @Override
-    public RemoteUserService create(Throwable throwable)
-    {
-        log.error("鐢ㄦ埛鏈嶅姟璋冪敤澶辫触:{}", throwable.getMessage());
-        return new RemoteUserService()
-        {
-            @Override
-            public R<LoginUser> getUserInfo(String username, String source)
-            {
-                return R.fail("鑾峰彇鐢ㄦ埛澶辫触:" + throwable.getMessage());
-            }
-
-            @Override
-            public R<Boolean> registerUserInfo(SysUser sysUser, String source)
-            {
-                return R.fail("娉ㄥ唽鐢ㄦ埛澶辫触:" + throwable.getMessage());
-            }
-
-            @Override
-            public R<Boolean> recordUserLogin(SysUser sysUser, String source)
-            {
-                return R.fail("璁板綍鐢ㄦ埛鐧诲綍淇℃伅澶辫触:" + throwable.getMessage());
-            }
-        };
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java b/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
deleted file mode 100644
index ef266a0..0000000
--- a/se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package com.ruoyi.system.api.model;
-
-import java.io.Serializable;
-import java.util.Set;
-import com.ruoyi.system.api.domain.SysUser;
-
-/**
- * 鐢ㄦ埛淇℃伅
- *
- * @author ruoyi
- */
-public class LoginUser implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 鐢ㄦ埛鍞竴鏍囪瘑
-     */
-    private String token;
-
-    /**
-     * 鐢ㄦ埛鍚峣d
-     */
-    private Long userid;
-
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    private String username;
-
-    /**
-     * 鐧诲綍鏃堕棿
-     */
-    private Long loginTime;
-
-    /**
-     * 杩囨湡鏃堕棿
-     */
-    private Long expireTime;
-
-    /**
-     * 鐧诲綍IP鍦板潃
-     */
-    private String ipaddr;
-
-    /**
-     * 鏉冮檺鍒楄〃
-     */
-    private Set<String> permissions;
-
-    /**
-     * 瑙掕壊鍒楄〃
-     */
-    private Set<String> roles;
-
-    /**
-     * 鐢ㄦ埛淇℃伅
-     */
-    private SysUser sysUser;
-
-    public String getToken()
-    {
-        return token;
-    }
-
-    public void setToken(String token)
-    {
-        this.token = token;
-    }
-
-    public Long getUserid()
-    {
-        return userid;
-    }
-
-    public void setUserid(Long userid)
-    {
-        this.userid = userid;
-    }
-
-    public String getUsername()
-    {
-        return username;
-    }
-
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    public Long getLoginTime()
-    {
-        return loginTime;
-    }
-
-    public void setLoginTime(Long loginTime)
-    {
-        this.loginTime = loginTime;
-    }
-
-    public Long getExpireTime()
-    {
-        return expireTime;
-    }
-
-    public void setExpireTime(Long expireTime)
-    {
-        this.expireTime = expireTime;
-    }
-
-    public String getIpaddr()
-    {
-        return ipaddr;
-    }
-
-    public void setIpaddr(String ipaddr)
-    {
-        this.ipaddr = ipaddr;
-    }
-
-    public Set<String> getPermissions()
-    {
-        return permissions;
-    }
-
-    public void setPermissions(Set<String> permissions)
-    {
-        this.permissions = permissions;
-    }
-
-    public Set<String> getRoles()
-    {
-        return roles;
-    }
-
-    public void setRoles(Set<String> roles)
-    {
-        this.roles = roles;
-    }
-
-    public SysUser getSysUser()
-    {
-        return sysUser;
-    }
-
-    public void setSysUser(SysUser sysUser)
-    {
-        this.sysUser = sysUser;
-    }
-}
diff --git a/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 0a60da5..0000000
--- a/se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,3 +0,0 @@
-com.ruoyi.system.api.factory.RemoteUserFallbackFactory
-com.ruoyi.system.api.factory.RemoteLogFallbackFactory
-com.ruoyi.system.api.factory.RemoteFileFallbackFactory
diff --git a/ruoyi-auth/pom.xml b/se-auth/pom.xml
similarity index 100%
rename from ruoyi-auth/pom.xml
rename to se-auth/pom.xml
diff --git a/se-auth/src/main/java/com/se/auth/SeAuthApplication.java b/se-auth/src/main/java/com/se/auth/SeAuthApplication.java
new file mode 100644
index 0000000..a584b9f
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/SeAuthApplication.java
@@ -0,0 +1,22 @@
+package com.se.auth;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import com.se.common.security.annotation.EnableRyFeignClients;
+
+/**
+ * 璁よ瘉鎺堟潈涓績
+ * 
+ * @author admin
+ */
+@EnableRyFeignClients
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
+public class SeAuthApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeAuthApplication.class, args);
+        System.out.println("    鎺堟潈涓績鍚姩鎴愬姛    ");
+    }
+}
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
new file mode 100644
index 0000000..843cd7e
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/controller/TokenController.java
@@ -0,0 +1,79 @@
+package com.se.auth.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.se.auth.form.LoginBody;
+import com.se.auth.form.RegisterBody;
+import com.se.auth.service.SysLoginService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import com.se.common.core.domain.R;
+import com.se.common.core.utils.JwtUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.security.auth.AuthUtil;
+import com.se.common.security.service.TokenService;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.model.LoginUser;
+
+/**
+ * token 鎺у埗
+ * 
+ * @author admin
+ */
+@RestController
+public class TokenController
+{
+    @Autowired
+    private TokenService tokenService;
+
+    @Autowired
+    private SysLoginService sysLoginService;
+
+    @PostMapping("login")
+    public R<?> login(@RequestBody LoginBody form)
+    {
+        // 鐢ㄦ埛鐧诲綍
+        LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
+        // 鑾峰彇鐧诲綍token
+        return R.ok(tokenService.createToken(userInfo));
+    }
+
+    @DeleteMapping("logout")
+    public R<?> logout(HttpServletRequest request)
+    {
+        String token = SecurityUtils.getToken(request);
+        if (StringUtils.isNotEmpty(token))
+        {
+            String username = JwtUtils.getUserName(token);
+            // 鍒犻櫎鐢ㄦ埛缂撳瓨璁板綍
+            AuthUtil.logoutByToken(token);
+            // 璁板綍鐢ㄦ埛閫�鍑烘棩蹇�
+            sysLoginService.logout(username);
+        }
+        return R.ok();
+    }
+
+    @PostMapping("refresh")
+    public R<?> refresh(HttpServletRequest request)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        if (StringUtils.isNotNull(loginUser))
+        {
+            // 鍒锋柊浠ょ墝鏈夋晥鏈�
+            tokenService.refreshToken(loginUser);
+            return R.ok();
+        }
+        return R.ok();
+    }
+
+    @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/form/LoginBody.java b/se-auth/src/main/java/com/se/auth/form/LoginBody.java
new file mode 100644
index 0000000..e94dd82
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/form/LoginBody.java
@@ -0,0 +1,39 @@
+package com.se.auth.form;
+
+/**
+ * 鐢ㄦ埛鐧诲綍瀵硅薄
+ * 
+ * @author admin
+ */
+public class LoginBody
+{
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String username;
+
+    /**
+     * 鐢ㄦ埛瀵嗙爜
+     */
+    private String password;
+
+    public String getUsername()
+    {
+        return username;
+    }
+
+    public void setUsername(String username)
+    {
+        this.username = username;
+    }
+
+    public String getPassword()
+    {
+        return password;
+    }
+
+    public void setPassword(String password)
+    {
+        this.password = password;
+    }
+}
diff --git a/se-auth/src/main/java/com/se/auth/form/RegisterBody.java b/se-auth/src/main/java/com/se/auth/form/RegisterBody.java
new file mode 100644
index 0000000..b0cdbe1
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/form/RegisterBody.java
@@ -0,0 +1,11 @@
+package com.se.auth.form;
+
+/**
+ * 鐢ㄦ埛娉ㄥ唽瀵硅薄
+ * 
+ * @author admin
+ */
+public class RegisterBody extends LoginBody
+{
+
+}
diff --git a/se-auth/src/main/java/com/se/auth/service/SysLoginService.java b/se-auth/src/main/java/com/se/auth/service/SysLoginService.java
new file mode 100644
index 0000000..e053531
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/service/SysLoginService.java
@@ -0,0 +1,161 @@
+package com.se.auth.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.constant.SecurityConstants;
+import com.se.common.core.constant.UserConstants;
+import com.se.common.core.domain.R;
+import com.se.common.core.enums.UserStatus;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.core.text.Convert;
+import com.se.common.core.utils.DateUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.ip.IpUtils;
+import com.se.common.redis.service.RedisService;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.RemoteUserService;
+import com.se.system.api.domain.SysUser;
+import com.se.system.api.model.LoginUser;
+
+/**
+ * 鐧诲綍鏍¢獙鏂规硶
+ * 
+ * @author admin
+ */
+@Component
+public class SysLoginService
+{
+    @Autowired
+    private RemoteUserService remoteUserService;
+
+    @Autowired
+    private SysPasswordService passwordService;
+
+    @Autowired
+    private SysRecordLogService recordLogService;
+
+    @Autowired
+    private RedisService redisService;
+
+    /**
+     * 鐧诲綍
+     */
+    public LoginUser login(String username, String password)
+    {
+        // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒
+        if (StringUtils.isAnyBlank(username, password))
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
+            throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
+        }
+        // 瀵嗙爜濡傛灉涓嶅湪鎸囧畾鑼冨洿鍐� 閿欒
+        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
+                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿");
+            throw new ServiceException("鐢ㄦ埛瀵嗙爜涓嶅湪鎸囧畾鑼冨洿");
+        }
+        // 鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥村唴 閿欒
+        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�");
+            throw new ServiceException("鐢ㄦ埛鍚嶄笉鍦ㄦ寚瀹氳寖鍥�");
+        }
+        // IP榛戝悕鍗曟牎楠�
+        String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
+        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�");
+            throw new ServiceException("寰堥仐鎲撅紝璁块棶IP宸茶鍒楀叆绯荤粺榛戝悕鍗�");
+        }
+        // 鏌ヨ鐢ㄦ埛淇℃伅
+        R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
+
+        if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐧诲綍鐢ㄦ埛涓嶅瓨鍦�");
+            throw new ServiceException("鐧诲綍鐢ㄦ埛锛�" + username + " 涓嶅瓨鍦�");
+        }
+
+        if (R.FAIL == userResult.getCode())
+        {
+            throw new ServiceException(userResult.getMsg());
+        }
+        
+        LoginUser userInfo = userResult.getData();
+        SysUser user = userResult.getData().getSysUser();
+        if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿宸茶鍒犻櫎");
+            throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸茶鍒犻櫎");
+        }
+        if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
+        {
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "鐢ㄦ埛宸插仠鐢紝璇疯仈绯荤鐞嗗憳");
+            throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + username + " 宸插仠鐢�");
+        }
+        passwordService.validate(user, password);
+        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "鐧诲綍鎴愬姛");
+        recordLoginInfo(user.getUserId());
+        return userInfo;
+    }
+
+    /**
+     * 璁板綍鐧诲綍淇℃伅
+     *
+     * @param userId 鐢ㄦ埛ID
+     */
+    public void recordLoginInfo(Long userId)
+    {
+        SysUser sysUser = new SysUser();
+        sysUser.setUserId(userId);
+        // 鏇存柊鐢ㄦ埛鐧诲綍IP
+        sysUser.setLoginIp(IpUtils.getIpAddr());
+        // 鏇存柊鐢ㄦ埛鐧诲綍鏃堕棿
+        sysUser.setLoginDate(DateUtils.getNowDate());
+        remoteUserService.recordUserLogin(sysUser, SecurityConstants.INNER);
+    }
+
+    public void logout(String loginName)
+    {
+        recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "閫�鍑烘垚鍔�");
+    }
+
+    /**
+     * 娉ㄥ唽
+     */
+    public void register(String username, String password)
+    {
+        // 鐢ㄦ埛鍚嶆垨瀵嗙爜涓虹┖ 閿欒
+        if (StringUtils.isAnyBlank(username, password))
+        {
+            throw new ServiceException("鐢ㄦ埛/瀵嗙爜蹇呴』濉啓");
+        }
+        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+        {
+            throw new ServiceException("璐︽埛闀垮害蹇呴』鍦�2鍒�20涓瓧绗︿箣闂�");
+        }
+        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
+                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
+        {
+            throw new ServiceException("瀵嗙爜闀垮害蹇呴』鍦�5鍒�20涓瓧绗︿箣闂�");
+        }
+
+        // 娉ㄥ唽鐢ㄦ埛淇℃伅
+        SysUser sysUser = new SysUser();
+        sysUser.setUserName(username);
+        sysUser.setNickName(username);
+        sysUser.setPassword(SecurityUtils.encryptPassword(password));
+        R<?> registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER);
+
+        if (R.FAIL == registerResult.getCode())
+        {
+            throw new ServiceException(registerResult.getMsg());
+        }
+        recordLogService.recordLogininfor(username, Constants.REGISTER, "娉ㄥ唽鎴愬姛");
+    }
+}
diff --git a/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java b/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java
new file mode 100644
index 0000000..fbd3d8d
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/service/SysPasswordService.java
@@ -0,0 +1,85 @@
+package com.se.auth.service;
+
+import java.util.concurrent.TimeUnit;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.exception.ServiceException;
+import com.se.common.redis.service.RedisService;
+import com.se.common.security.utils.SecurityUtils;
+import com.se.system.api.domain.SysUser;
+
+/**
+ * 鐧诲綍瀵嗙爜鏂规硶
+ * 
+ * @author admin
+ */
+@Component
+public class SysPasswordService
+{
+    @Autowired
+    private RedisService redisService;
+
+    private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT;
+
+    private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME;
+
+    @Autowired
+    private SysRecordLogService recordLogService;
+
+    /**
+     * 鐧诲綍璐︽埛瀵嗙爜閿欒娆℃暟缂撳瓨閿悕
+     * 
+     * @param username 鐢ㄦ埛鍚�
+     * @return 缂撳瓨閿甼ey
+     */
+    private String getCacheKey(String username)
+    {
+        return CacheConstants.PWD_ERR_CNT_KEY + username;
+    }
+
+    public void validate(SysUser user, String password)
+    {
+        String username = user.getUserName();
+
+        Integer retryCount = redisService.getCacheObject(getCacheKey(username));
+
+        if (retryCount == null)
+        {
+            retryCount = 0;
+        }
+
+        if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
+        {
+            String errMsg = String.format("瀵嗙爜杈撳叆閿欒%s娆★紝甯愭埛閿佸畾%s鍒嗛挓", maxRetryCount, lockTime);
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
+            throw new ServiceException(errMsg);
+        }
+
+        if (!matches(user, password))
+        {
+            retryCount = retryCount + 1;
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("瀵嗙爜杈撳叆閿欒%s娆�", retryCount));
+            redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
+            throw new ServiceException("鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒");
+        }
+        else
+        {
+            clearLoginRecordCache(username);
+        }
+    }
+
+    public boolean matches(SysUser user, String rawPassword)
+    {
+        return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
+    }
+
+    public void clearLoginRecordCache(String loginName)
+    {
+        if (redisService.hasKey(getCacheKey(loginName)))
+        {
+            redisService.deleteObject(getCacheKey(loginName));
+        }
+    }
+}
diff --git a/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java b/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java
new file mode 100644
index 0000000..51c1893
--- /dev/null
+++ b/se-auth/src/main/java/com/se/auth/service/SysRecordLogService.java
@@ -0,0 +1,48 @@
+package com.se.auth.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.constant.SecurityConstants;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.ip.IpUtils;
+import com.se.system.api.RemoteLogService;
+import com.se.system.api.domain.SysLogininfor;
+
+/**
+ * 璁板綍鏃ュ織鏂规硶
+ * 
+ * @author admin
+ */
+@Component
+public class SysRecordLogService
+{
+    @Autowired
+    private RemoteLogService remoteLogService;
+
+    /**
+     * 璁板綍鐧诲綍淇℃伅
+     * 
+     * @param username 鐢ㄦ埛鍚�
+     * @param status 鐘舵��
+     * @param message 娑堟伅鍐呭
+     * @return
+     */
+    public void recordLogininfor(String username, String status, String message)
+    {
+        SysLogininfor logininfor = new SysLogininfor();
+        logininfor.setUserName(username);
+        logininfor.setIpaddr(IpUtils.getIpAddr());
+        logininfor.setMsg(message);
+        // 鏃ュ織鐘舵��
+        if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER))
+        {
+            logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
+        }
+        else if (Constants.LOGIN_FAIL.equals(status))
+        {
+            logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
+        }
+        remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER);
+    }
+}
diff --git a/se-auth/src/main/resources/banner.txt b/se-auth/src/main/resources/banner.txt
new file mode 100644
index 0000000..269848e
--- /dev/null
+++ b/se-auth/src/main/resources/banner.txt
@@ -0,0 +1,3 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+SeAuthApplication锛屽凡缁忓惎鍔�
\ No newline at end of file
diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/se-auth/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-auth/src/main/resources/bootstrap.yml
rename to se-auth/src/main/resources/bootstrap.yml
diff --git a/ruoyi-auth/src/main/resources/logback.xml b/se-auth/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-auth/src/main/resources/logback.xml
rename to se-auth/src/main/resources/logback.xml
diff --git a/se-common/ruoyi-common-core/pom.xml b/se-common/ruoyi-common-core/pom.xml
deleted file mode 100644
index b04ce3e..0000000
--- a/se-common/ruoyi-common-core/pom.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-common-core</artifactId>
-    
-    <description>
-        ruoyi-common-core鏍稿績妯″潡
-    </description>
-
-    <dependencies>
-
-        <!-- SpringCloud Openfeign -->
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-openfeign</artifactId>
-        </dependency>
-        
-        <!-- SpringCloud Loadbalancer -->
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
-        </dependency>
-
-        <!-- Spring Context Support -->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context-support</artifactId>
-        </dependency>
-
-        <!-- Spring Web -->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-        </dependency>
-
-        <!-- Transmittable ThreadLocal -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>transmittable-thread-local</artifactId>
-        </dependency>
-
-        <!-- Pagehelper -->
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-        </dependency>
-
-        <!-- Hibernate Validator -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
-
-        <!-- Jackson -->
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <!-- Alibaba Fastjson -->
-        <dependency>
-            <groupId>com.alibaba.fastjson2</groupId>
-            <artifactId>fastjson2</artifactId>
-        </dependency>
-
-        <!-- Jwt -->
-        <dependency>
-            <groupId>io.jsonwebtoken</groupId>
-            <artifactId>jjwt</artifactId>
-        </dependency>
-
-        <!-- Jaxb -->
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-        </dependency>
-
-        <!-- Apache Lang3 -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-
-        <!-- Commons Io -->
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-
-        <!-- excel宸ュ叿 -->
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-
-        <!-- Java Servlet -->
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-        </dependency>
-
-        <!-- Swagger -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
deleted file mode 100644
index 3909a30..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package com.ruoyi.common.core.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.math.BigDecimal;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.IndexedColors;
-import com.ruoyi.common.core.utils.poi.ExcelHandlerAdapter;
-
-/**
- * 鑷畾涔夊鍑篍xcel鏁版嵁娉ㄨВ
- * 
- * @author admin
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface Excel
-{
-    /**
-     * 瀵煎嚭鏃跺湪excel涓帓搴�
-     */
-    public int sort() default Integer.MAX_VALUE;
-
-    /**
-     * 瀵煎嚭鍒癊xcel涓殑鍚嶅瓧.
-     */
-    public String name() default "";
-
-    /**
-     * 鏃ユ湡鏍煎紡, 濡�: yyyy-MM-dd
-     */
-    public String dateFormat() default "";
-
-    /**
-     * 璇诲彇鍐呭杞〃杈惧紡 (濡�: 0=鐢�,1=濂�,2=鏈煡)
-     */
-    public String readConverterExp() default "";
-
-    /**
-     * 鍒嗛殧绗︼紝璇诲彇瀛楃涓茬粍鍐呭
-     */
-    public String separator() default ",";
-
-    /**
-     * BigDecimal 绮惧害 榛樿:-1(榛樿涓嶅紑鍚疊igDecimal鏍煎紡鍖�)
-     */
-    public int scale() default -1;
-
-    /**
-     * BigDecimal 鑸嶅叆瑙勫垯 榛樿:BigDecimal.ROUND_HALF_EVEN
-     */
-    public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
-
-    /**
-     * 瀵煎嚭鏃跺湪excel涓瘡涓垪鐨勯珮搴�
-     */
-    public double height() default 14;
-
-    /**
-     * 瀵煎嚭鏃跺湪excel涓瘡涓垪鐨勫搴�
-     */
-    public double width() default 16;
-
-    /**
-     * 鏂囧瓧鍚庣紑,濡�% 90 鍙樻垚90%
-     */
-    public String suffix() default "";
-
-    /**
-     * 褰撳�间负绌烘椂,瀛楁鐨勯粯璁ゅ��
-     */
-    public String defaultValue() default "";
-
-    /**
-     * 鎻愮ず淇℃伅
-     */
-    public String prompt() default "";
-
-    /**
-     * 璁剧疆鍙兘閫夋嫨涓嶈兘杈撳叆鐨勫垪鍐呭.
-     */
-    public String[] combo() default {};
-
-    /**
-     * 鏄惁闇�瑕佺旱鍚戝悎骞跺崟鍏冩牸,搴斿闇�姹�:鍚湁list闆嗗悎鍗曞厓鏍�)
-     */
-    public boolean needMerge() default false;
-
-    /**
-     * 鏄惁瀵煎嚭鏁版嵁,搴斿闇�姹�:鏈夋椂鎴戜滑闇�瑕佸鍑轰竴浠芥ā鏉�,杩欐槸鏍囬闇�瑕佷絾鍐呭闇�瑕佺敤鎴锋墜宸ュ~鍐�.
-     */
-    public boolean isExport() default true;
-
-    /**
-     * 鍙︿竴涓被涓殑灞炴�у悕绉�,鏀寔澶氱骇鑾峰彇,浠ュ皬鏁扮偣闅斿紑
-     */
-    public String targetAttr() default "";
-
-    /**
-     * 鏄惁鑷姩缁熻鏁版嵁,鍦ㄦ渶鍚庤拷鍔犱竴琛岀粺璁℃暟鎹�诲拰
-     */
-    public boolean isStatistics() default false;
-
-    /**
-     * 瀵煎嚭绫诲瀷锛�0鏁板瓧 1瀛楃涓诧級
-     */
-    public ColumnType cellType() default ColumnType.STRING;
-
-    /**
-     * 瀵煎嚭鍒楀ご鑳屾櫙棰滆壊
-     */
-    public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT;
-
-    /**
-     * 瀵煎嚭鍒楀ご瀛椾綋棰滆壊
-     */
-    public IndexedColors headerColor() default IndexedColors.WHITE;
-
-    /**
-     * 瀵煎嚭鍗曞厓鏍艰儗鏅鑹�
-     */
-    public IndexedColors backgroundColor() default IndexedColors.WHITE;
-
-    /**
-     * 瀵煎嚭鍗曞厓鏍煎瓧浣撻鑹�
-     */
-    public IndexedColors color() default IndexedColors.BLACK;
-
-    /**
-     * 瀵煎嚭瀛楁瀵归綈鏂瑰紡
-     */
-    public HorizontalAlignment align() default HorizontalAlignment.CENTER;
-
-    /**
-     * 鑷畾涔夋暟鎹鐞嗗櫒
-     */
-    public Class<?> handler() default ExcelHandlerAdapter.class;
-
-    /**
-     * 鑷畾涔夋暟鎹鐞嗗櫒鍙傛暟
-     */
-    public String[] args() default {};
-
-    /**
-     * 瀛楁绫诲瀷锛�0锛氬鍑哄鍏ワ紱1锛氫粎瀵煎嚭锛�2锛氫粎瀵煎叆锛�
-     */
-    Type type() default Type.ALL;
-
-    public enum Type
-    {
-        ALL(0), EXPORT(1), IMPORT(2);
-        private final int value;
-
-        Type(int value)
-        {
-            this.value = value;
-        }
-
-        public int value()
-        {
-            return this.value;
-        }
-    }
-
-    public enum ColumnType
-    {
-        NUMERIC(0), STRING(1), IMAGE(2), TEXT(3);
-        private final int value;
-
-        ColumnType(int value)
-        {
-            this.value = value;
-        }
-
-        public int value()
-        {
-            return this.value;
-        }
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java
deleted file mode 100644
index 03f017a..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excels.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.common.core.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Excel娉ㄨВ闆�
- * 
- * @author admin
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Excels
-{
-    Excel[] value();
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
deleted file mode 100644
index aeeed91..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.ruoyi.common.core.constant;
-
-/**
- * 閫氱敤甯搁噺淇℃伅
- * 
- * @author admin
- */
-public class Constants
-{
-    /**
-     * UTF-8 瀛楃闆�
-     */
-    public static final String UTF8 = "UTF-8";
-
-    /**
-     * GBK 瀛楃闆�
-     */
-    public static final String GBK = "GBK";
-
-    /**
-     * www涓诲煙
-     */
-    public static final String WWW = "www.";
-
-    /**
-     * RMI 杩滅▼鏂规硶璋冪敤
-     */
-    public static final String LOOKUP_RMI = "rmi:";
-
-    /**
-     * LDAP 杩滅▼鏂规硶璋冪敤
-     */
-    public static final String LOOKUP_LDAP = "ldap:";
-
-    /**
-     * LDAPS 杩滅▼鏂规硶璋冪敤
-     */
-    public static final String LOOKUP_LDAPS = "ldaps:";
-
-    /**
-     * http璇锋眰
-     */
-    public static final String HTTP = "http://";
-
-    /**
-     * https璇锋眰
-     */
-    public static final String HTTPS = "https://";
-
-    /**
-     * 鎴愬姛鏍囪
-     */
-    public static final Integer SUCCESS = 200;
-
-    /**
-     * 澶辫触鏍囪
-     */
-    public static final Integer FAIL = 500;
-
-    /**
-     * 鐧诲綍鎴愬姛鐘舵��
-     */
-    public static final String LOGIN_SUCCESS_STATUS = "0";
-
-    /**
-     * 鐧诲綍澶辫触鐘舵��
-     */
-    public static final String LOGIN_FAIL_STATUS = "1";
-
-    /**
-     * 鐧诲綍鎴愬姛
-     */
-    public static final String LOGIN_SUCCESS = "Success";
-
-    /**
-     * 娉ㄩ攢
-     */
-    public static final String LOGOUT = "Logout";
-
-    /**
-     * 娉ㄥ唽
-     */
-    public static final String REGISTER = "Register";
-
-    /**
-     * 鐧诲綍澶辫触
-     */
-    public static final String LOGIN_FAIL = "Error";
-
-    /**
-     * 褰撳墠璁板綍璧峰绱㈠紩
-     */
-    public static final String PAGE_NUM = "pageNum";
-
-    /**
-     * 姣忛〉鏄剧ず璁板綍鏁�
-     */
-    public static final String PAGE_SIZE = "pageSize";
-
-    /**
-     * 鎺掑簭鍒�
-     */
-    public static final String ORDER_BY_COLUMN = "orderByColumn";
-
-    /**
-     * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc".
-     */
-    public static final String IS_ASC = "isAsc";
-
-    /**
-     * 楠岃瘉鐮佹湁鏁堟湡锛堝垎閽燂級
-     */
-    public static final long CAPTCHA_EXPIRATION = 2;
-
-    /**
-     * 璧勬簮鏄犲皠璺緞 鍓嶇紑
-     */
-    public static final String RESOURCE_PREFIX = "/profile";
-
-    /**
-     * 鑷姩璇嗗埆json瀵硅薄鐧藉悕鍗曢厤缃紙浠呭厑璁歌В鏋愮殑鍖呭悕锛岃寖鍥磋秺灏忚秺瀹夊叏锛�
-     */
-    public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" };
-
-    /**
-     * 瀹氭椂浠诲姟鐧藉悕鍗曢厤缃紙浠呭厑璁歌闂殑鍖呭悕锛屽鍏朵粬闇�瑕佸彲浠ヨ嚜琛屾坊鍔狅級
-     */
-    public static final String[] JOB_WHITELIST_STR = { "com.ruoyi.job.task" };
-
-    /**
-     * 瀹氭椂浠诲姟杩濊鐨勫瓧绗�
-     */
-    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
-            "org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" };
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
deleted file mode 100644
index cb713db..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ruoyi.common.core.constant;
-
-/**
- * 鏉冮檺鐩稿叧閫氱敤甯搁噺
- * 
- * @author admin
- */
-public class SecurityConstants
-{
-    /**
-     * 鐢ㄦ埛ID瀛楁
-     */
-    public static final String DETAILS_USER_ID = "user_id";
-
-    /**
-     * 鐢ㄦ埛鍚嶅瓧娈�
-     */
-    public static final String DETAILS_USERNAME = "username";
-
-    /**
-     * 鎺堟潈淇℃伅瀛楁
-     */
-    public static final String AUTHORIZATION_HEADER = "authorization";
-
-    /**
-     * 璇锋眰鏉ユ簮
-     */
-    public static final String FROM_SOURCE = "from-source";
-
-    /**
-     * 鍐呴儴璇锋眰
-     */
-    public static final String INNER = "inner";
-
-    /**
-     * 鐢ㄦ埛鏍囪瘑
-     */
-    public static final String USER_KEY = "user_key";
-
-    /**
-     * 鐧诲綍鐢ㄦ埛
-     */
-    public static final String LOGIN_USER = "login_user";
-
-    /**
-     * 瑙掕壊鏉冮檺
-     */
-    public static final String ROLE_PERMISSION = "role_permission";
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
deleted file mode 100644
index 1e3a7c0..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.common.core.constant;
-
-/**
- * 鏈嶅姟鍚嶇О
- * 
- * @author admin
- */
-public class ServiceNameConstants
-{
-    /**
-     * 璁よ瘉鏈嶅姟鐨剆erviceid
-     */
-    public static final String AUTH_SERVICE = "ruoyi-auth";
-
-    /**
-     * 绯荤粺妯″潡鐨剆erviceid
-     */
-    public static final String SYSTEM_SERVICE = "ruoyi-system";
-
-    /**
-     * 鏂囦欢鏈嶅姟鐨剆erviceid
-     */
-    public static final String FILE_SERVICE = "ruoyi-file";
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java
deleted file mode 100644
index b19b8b4..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.ruoyi.common.core.constant;
-
-/**
- * 鐢ㄦ埛甯搁噺淇℃伅
- * 
- * @author admin
- */
-public class UserConstants
-{
-    /**
-     * 骞冲彴鍐呯郴缁熺敤鎴风殑鍞竴鏍囧織
-     */
-    public static final String SYS_USER = "SYS_USER";
-
-    /** 姝e父鐘舵�� */
-    public static final String NORMAL = "0";
-
-    /** 寮傚父鐘舵�� */
-    public static final String EXCEPTION = "1";
-
-    /** 鐢ㄦ埛灏佺鐘舵�� */
-    public static final String USER_DISABLE = "1";
-
-    /** 瑙掕壊灏佺鐘舵�� */
-    public static final String ROLE_DISABLE = "1";
-
-    /** 閮ㄩ棬姝e父鐘舵�� */
-    public static final String DEPT_NORMAL = "0";
-
-    /** 閮ㄩ棬鍋滅敤鐘舵�� */
-    public static final String DEPT_DISABLE = "1";
-
-    /** 瀛楀吀姝e父鐘舵�� */
-    public static final String DICT_NORMAL = "0";
-
-    /** 鏄惁涓虹郴缁熼粯璁わ紙鏄級 */
-    public static final String YES = "Y";
-
-    /** 鏄惁鑿滃崟澶栭摼锛堟槸锛� */
-    public static final String YES_FRAME = "0";
-
-    /** 鏄惁鑿滃崟澶栭摼锛堝惁锛� */
-    public static final String NO_FRAME = "1";
-
-    /** 鑿滃崟绫诲瀷锛堢洰褰曪級 */
-    public static final String TYPE_DIR = "M";
-
-    /** 鑿滃崟绫诲瀷锛堣彍鍗曪級 */
-    public static final String TYPE_MENU = "C";
-
-    /** 鑿滃崟绫诲瀷锛堟寜閽級 */
-    public static final String TYPE_BUTTON = "F";
-
-    /** Layout缁勪欢鏍囪瘑 */
-    public final static String LAYOUT = "Layout";
-
-    /** ParentView缁勪欢鏍囪瘑 */
-    public final static String PARENT_VIEW = "ParentView";
-
-    /** InnerLink缁勪欢鏍囪瘑 */
-    public final static String INNER_LINK = "InnerLink";
-
-    /** 鏍¢獙鏄惁鍞竴鐨勮繑鍥炴爣璇� */
-    public final static boolean UNIQUE = true;
-    public final static boolean NOT_UNIQUE = false;
-
-    /**
-     * 鐢ㄦ埛鍚嶉暱搴﹂檺鍒�
-     */
-    public static final int USERNAME_MIN_LENGTH = 2;
-
-    public static final int USERNAME_MAX_LENGTH = 20;
-
-    /**
-     * 瀵嗙爜闀垮害闄愬埗
-     */
-    public static final int PASSWORD_MIN_LENGTH = 5;
-
-    public static final int PASSWORD_MAX_LENGTH = 20;
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java
deleted file mode 100644
index 9359e2a..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/domain/R.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.ruoyi.common.core.domain;
-
-import java.io.Serializable;
-import com.ruoyi.common.core.constant.Constants;
-
-/**
- * 鍝嶅簲淇℃伅涓讳綋
- *
- * @author admin
- */
-public class R<T> implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鎴愬姛 */
-    public static final int SUCCESS = Constants.SUCCESS;
-
-    /** 澶辫触 */
-    public static final int FAIL = Constants.FAIL;
-
-    private int code;
-
-    private String msg;
-
-    private T data;
-
-    public static <T> R<T> ok()
-    {
-        return restResult(null, SUCCESS, null);
-    }
-
-    public static <T> R<T> ok(T data)
-    {
-        return restResult(data, SUCCESS, null);
-    }
-
-    public static <T> R<T> ok(T data, String msg)
-    {
-        return restResult(data, SUCCESS, msg);
-    }
-
-    public static <T> R<T> fail()
-    {
-        return restResult(null, FAIL, null);
-    }
-
-    public static <T> R<T> fail(String msg)
-    {
-        return restResult(null, FAIL, msg);
-    }
-
-    public static <T> R<T> fail(T data)
-    {
-        return restResult(data, FAIL, null);
-    }
-
-    public static <T> R<T> fail(T data, String msg)
-    {
-        return restResult(data, FAIL, msg);
-    }
-
-    public static <T> R<T> fail(int code, String msg)
-    {
-        return restResult(null, code, msg);
-    }
-
-    private static <T> R<T> restResult(T data, int code, String msg)
-    {
-        R<T> apiResult = new R<>();
-        apiResult.setCode(code);
-        apiResult.setData(data);
-        apiResult.setMsg(msg);
-        return apiResult;
-    }
-
-    public int getCode()
-    {
-        return code;
-    }
-
-    public void setCode(int code)
-    {
-        this.code = code;
-    }
-
-    public String getMsg()
-    {
-        return msg;
-    }
-
-    public void setMsg(String msg)
-    {
-        this.msg = msg;
-    }
-
-    public T getData()
-    {
-        return data;
-    }
-
-    public void setData(T data)
-    {
-        this.data = data;
-    }
-
-    public static <T> Boolean isError(R<T> ret)
-    {
-        return !isSuccess(ret);
-    }
-
-    public static <T> Boolean isSuccess(R<T> ret)
-    {
-        return R.SUCCESS == ret.getCode();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java
deleted file mode 100644
index 1ae37ec..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.ruoyi.common.core.enums;
-
-/**
- * 鐢ㄦ埛鐘舵��
- * 
- * @author admin
- */
-public enum UserStatus
-{
-    OK("0", "姝e父"), DISABLE("1", "鍋滅敤"), DELETED("2", "鍒犻櫎");
-
-    private final String code;
-    private final String info;
-
-    UserStatus(String code, String info)
-    {
-        this.code = code;
-        this.info = info;
-    }
-
-    public String getCode()
-    {
-        return code;
-    }
-
-    public String getInfo()
-    {
-        return info;
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java
deleted file mode 100644
index ecc2771..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.common.core.exception;
-
-/**
- * 楠岃瘉鐮侀敊璇紓甯哥被
- * 
- * @author admin
- */
-public class CaptchaException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    public CaptchaException(String msg)
-    {
-        super(msg);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java
deleted file mode 100644
index 5fe5c4b..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.common.core.exception;
-
-/**
- * 妫�鏌ュ紓甯�
- * 
- * @author admin
- */
-public class CheckedException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    public CheckedException(String message)
-    {
-        super(message);
-    }
-
-    public CheckedException(Throwable cause)
-    {
-        super(cause);
-    }
-
-    public CheckedException(String message, Throwable cause)
-    {
-        super(message, cause);
-    }
-
-    public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
-    {
-        super(message, cause, enableSuppression, writableStackTrace);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
deleted file mode 100644
index 7a725fa..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.ruoyi.common.core.exception;
-
-/**
- * 鍏ㄥ眬寮傚父
- * 
- * @author admin
- */
-public class GlobalException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 閿欒鎻愮ず
-     */
-    private String message;
-
-    /**
-     * 閿欒鏄庣粏锛屽唴閮ㄨ皟璇曢敊璇�
-     *
-     * 鍜� {@link CommonResult#getDetailMessage()} 涓�鑷寸殑璁捐
-     */
-    private String detailMessage;
-
-    /**
-     * 绌烘瀯閫犳柟娉曪紝閬垮厤鍙嶅簭鍒楀寲闂
-     */
-    public GlobalException()
-    {
-    }
-
-    public GlobalException(String message)
-    {
-        this.message = message;
-    }
-
-    public String getDetailMessage()
-    {
-        return detailMessage;
-    }
-
-    public GlobalException setDetailMessage(String detailMessage)
-    {
-        this.detailMessage = detailMessage;
-        return this;
-    }
-
-    @Override
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public GlobalException setMessage(String message)
-    {
-        this.message = message;
-        return this;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
deleted file mode 100644
index 43fdedb..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.ruoyi.common.core.exception;
-
-/**
- * 涓氬姟寮傚父
- * 
- * @author admin
- */
-public final class ServiceException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 閿欒鐮�
-     */
-    private Integer code;
-
-    /**
-     * 閿欒鎻愮ず
-     */
-    private String message;
-
-    /**
-     * 閿欒鏄庣粏锛屽唴閮ㄨ皟璇曢敊璇�
-     *
-     * 鍜� {@link CommonResult#getDetailMessage()} 涓�鑷寸殑璁捐
-     */
-    private String detailMessage;
-
-    /**
-     * 绌烘瀯閫犳柟娉曪紝閬垮厤鍙嶅簭鍒楀寲闂
-     */
-    public ServiceException()
-    {
-    }
-
-    public ServiceException(String message)
-    {
-        this.message = message;
-    }
-
-    public ServiceException(String message, Integer code)
-    {
-        this.message = message;
-        this.code = code;
-    }
-
-    public String getDetailMessage()
-    {
-        return detailMessage;
-    }
-
-    @Override
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public Integer getCode()
-    {
-        return code;
-    }
-
-    public ServiceException setMessage(String message)
-    {
-        this.message = message;
-        return this;
-    }
-
-    public ServiceException setDetailMessage(String detailMessage)
-    {
-        this.detailMessage = detailMessage;
-        return this;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java
deleted file mode 100644
index 9fc871f..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.common.core.exception.auth;
-
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * 鏈兘閫氳繃鐨勬潈闄愯璇佸紓甯�
- * 
- * @author admin
- */
-public class NotPermissionException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    public NotPermissionException(String permission)
-    {
-        super(permission);
-    }
-
-    public NotPermissionException(String[] permissions)
-    {
-        super(StringUtils.join(permissions, ","));
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java
deleted file mode 100644
index 10f45ad..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.common.core.exception.auth;
-
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * 鏈兘閫氳繃鐨勮鑹茶璇佸紓甯�
- * 
- * @author admin
- */
-public class NotRoleException extends RuntimeException
-{
-    private static final long serialVersionUID = 1L;
-
-    public NotRoleException(String role)
-    {
-        super(role);
-    }
-
-    public NotRoleException(String[] roles)
-    {
-        super(StringUtils.join(roles, ","));
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java
deleted file mode 100644
index 325ab0a..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.common.core.exception.file;
-
-/**
- * 鏂囦欢鍚嶇О瓒呴暱闄愬埗寮傚父绫�
- * 
- * @author admin
- */
-public class FileNameLengthLimitExceededException extends FileException
-{
-    private static final long serialVersionUID = 1L;
-
-    public FileNameLengthLimitExceededException(int defaultFileNameLength)
-    {
-        super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }, "the filename is too long");
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java
deleted file mode 100644
index d172bd2..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.common.core.exception.file;
-
-/**
- * 鏂囦欢鍚嶅ぇ灏忛檺鍒跺紓甯哥被
- * 
- * @author admin
- */
-public class FileSizeLimitExceededException extends FileException
-{
-    private static final long serialVersionUID = 1L;
-
-    public FileSizeLimitExceededException(long defaultMaxSize)
-    {
-        super("upload.exceed.maxSize", new Object[] { defaultMaxSize }, "the filesize is too large");
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java
deleted file mode 100644
index 668cd4d..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.ruoyi.common.core.exception.file;
-
-import java.util.Arrays;
-
-/**
- * 鏂囦欢涓婁紶 璇紓甯哥被
- * 
- * @author admin
- */
-public class InvalidExtensionException extends FileUploadException
-{
-    private static final long serialVersionUID = 1L;
-
-    private String[] allowedExtension;
-    private String extension;
-    private String filename;
-
-    public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
-    {
-        super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
-        this.allowedExtension = allowedExtension;
-        this.extension = extension;
-        this.filename = filename;
-    }
-
-    public String[] getAllowedExtension()
-    {
-        return allowedExtension;
-    }
-
-    public String getExtension()
-    {
-        return extension;
-    }
-
-    public String getFilename()
-    {
-        return filename;
-    }
-
-    public static class InvalidImageExtensionException extends InvalidExtensionException
-    {
-        private static final long serialVersionUID = 1L;
-
-        public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
-        {
-            super(allowedExtension, extension, filename);
-        }
-    }
-
-    public static class InvalidFlashExtensionException extends InvalidExtensionException
-    {
-        private static final long serialVersionUID = 1L;
-
-        public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
-        {
-            super(allowedExtension, extension, filename);
-        }
-    }
-
-    public static class InvalidMediaExtensionException extends InvalidExtensionException
-    {
-        private static final long serialVersionUID = 1L;
-
-        public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
-        {
-            super(allowedExtension, extension, filename);
-        }
-    }
-    
-    public static class InvalidVideoExtensionException extends InvalidExtensionException
-    {
-        private static final long serialVersionUID = 1L;
-
-        public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
-        {
-            super(allowedExtension, extension, filename);
-        }
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java
deleted file mode 100644
index fd3b7e1..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.common.core.exception.user;
-
-/**
- * 楠岃瘉鐮佸け鏁堝紓甯哥被
- * 
- * @author admin
- */
-public class CaptchaExpireException extends UserException
-{
-    private static final long serialVersionUID = 1L;
-
-    public CaptchaExpireException()
-    {
-        super("user.jcaptcha.expire", null);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
deleted file mode 100644
index 220a761..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
+++ /dev/null
@@ -1,1016 +0,0 @@
-package com.ruoyi.common.core.text;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.RoundingMode;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.text.NumberFormat;
-import java.util.Set;
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 绫诲瀷杞崲鍣�
- * 
- * @author admin
- */
-public class Convert
-{
-    /**
-     * 杞崲涓哄瓧绗︿覆<br>
-     * 濡傛灉缁欏畾鐨勫�间负null锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static String toStr(Object value, String defaultValue)
-    {
-        if (null == value)
-        {
-            return defaultValue;
-        }
-        if (value instanceof String)
-        {
-            return (String) value;
-        }
-        return value.toString();
-    }
-
-    /**
-     * 杞崲涓哄瓧绗︿覆<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static String toStr(Object value)
-    {
-        return toStr(value, null);
-    }
-
-    /**
-     * 杞崲涓哄瓧绗�<br>
-     * 濡傛灉缁欏畾鐨勫�间负null锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Character toChar(Object value, Character defaultValue)
-    {
-        if (null == value)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Character)
-        {
-            return (Character) value;
-        }
-
-        final String valueStr = toStr(value, null);
-        return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0);
-    }
-
-    /**
-     * 杞崲涓哄瓧绗�<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Character toChar(Object value)
-    {
-        return toChar(value, null);
-    }
-
-    /**
-     * 杞崲涓篵yte<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Byte toByte(Object value, Byte defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Byte)
-        {
-            return (Byte) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).byteValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return Byte.parseByte(valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篵yte<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Byte toByte(Object value)
-    {
-        return toByte(value, null);
-    }
-
-    /**
-     * 杞崲涓篠hort<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Short toShort(Object value, Short defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Short)
-        {
-            return (Short) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).shortValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return Short.parseShort(valueStr.trim());
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篠hort<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Short toShort(Object value)
-    {
-        return toShort(value, null);
-    }
-
-    /**
-     * 杞崲涓篘umber<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Number toNumber(Object value, Number defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Number)
-        {
-            return (Number) value;
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return NumberFormat.getInstance().parse(valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篘umber<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Number toNumber(Object value)
-    {
-        return toNumber(value, null);
-    }
-
-    /**
-     * 杞崲涓篿nt<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Integer toInt(Object value, Integer defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Integer)
-        {
-            return (Integer) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).intValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return Integer.parseInt(valueStr.trim());
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篿nt<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Integer toInt(Object value)
-    {
-        return toInt(value, null);
-    }
-
-    /**
-     * 杞崲涓篒nteger鏁扮粍<br>
-     * 
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Integer[] toIntArray(String str)
-    {
-        return toIntArray(",", str);
-    }
-
-    /**
-     * 杞崲涓篖ong鏁扮粍<br>
-     * 
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Long[] toLongArray(String str)
-    {
-        return toLongArray(",", str);
-    }
-
-    /**
-     * 杞崲涓篒nteger鏁扮粍<br>
-     * 
-     * @param split 鍒嗛殧绗�
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Integer[] toIntArray(String split, String str)
-    {
-        if (StringUtils.isEmpty(str))
-        {
-            return new Integer[] {};
-        }
-        String[] arr = str.split(split);
-        final Integer[] ints = new Integer[arr.length];
-        for (int i = 0; i < arr.length; i++)
-        {
-            final Integer v = toInt(arr[i], 0);
-            ints[i] = v;
-        }
-        return ints;
-    }
-
-    /**
-     * 杞崲涓篖ong鏁扮粍<br>
-     * 
-     * @param split 鍒嗛殧绗�
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Long[] toLongArray(String split, String str)
-    {
-        if (StringUtils.isEmpty(str))
-        {
-            return new Long[] {};
-        }
-        String[] arr = str.split(split);
-        final Long[] longs = new Long[arr.length];
-        for (int i = 0; i < arr.length; i++)
-        {
-            final Long v = toLong(arr[i], null);
-            longs[i] = v;
-        }
-        return longs;
-    }
-
-    /**
-     * 杞崲涓篠tring鏁扮粍<br>
-     * 
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static String[] toStrArray(String str)
-    {
-        if (StringUtils.isEmpty(str))
-        {
-            return new String[] {};
-        }
-        return toStrArray(",", str);
-    }
-
-    /**
-     * 杞崲涓篠tring鏁扮粍<br>
-     * 
-     * @param split 鍒嗛殧绗�
-     * @param str 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static String[] toStrArray(String split, String str)
-    {
-        return str.split(split);
-    }
-
-    /**
-     * 杞崲涓簂ong<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Long toLong(Object value, Long defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Long)
-        {
-            return (Long) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).longValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            // 鏀寔绉戝璁℃暟娉�
-            return new BigDecimal(valueStr.trim()).longValue();
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓簂ong<br>
-     * 濡傛灉缁欏畾鐨勫�间负<code>null</code>锛屾垨鑰呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Long toLong(Object value)
-    {
-        return toLong(value, null);
-    }
-
-    /**
-     * 杞崲涓篸ouble<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Double toDouble(Object value, Double defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Double)
-        {
-            return (Double) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).doubleValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            // 鏀寔绉戝璁℃暟娉�
-            return new BigDecimal(valueStr.trim()).doubleValue();
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篸ouble<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Double toDouble(Object value)
-    {
-        return toDouble(value, null);
-    }
-
-    /**
-     * 杞崲涓篎loat<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Float toFloat(Object value, Float defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Float)
-        {
-            return (Float) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).floatValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return Float.parseFloat(valueStr.trim());
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篎loat<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Float toFloat(Object value)
-    {
-        return toFloat(value, null);
-    }
-
-    /**
-     * 杞崲涓篵oolean<br>
-     * String鏀寔鐨勫�间负锛歵rue銆乫alse銆亂es銆乷k銆乶o锛�1,0 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static Boolean toBool(Object value, Boolean defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Boolean)
-        {
-            return (Boolean) value;
-        }
-        String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        valueStr = valueStr.trim().toLowerCase();
-        switch (valueStr)
-        {
-            case "true":
-            case "yes":
-            case "ok":
-            case "1":
-                return true;
-            case "false":
-            case "no":
-            case "0":
-                return false;
-            default:
-                return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篵oolean<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static Boolean toBool(Object value)
-    {
-        return toBool(value, null);
-    }
-
-    /**
-     * 杞崲涓篍num瀵硅薄<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 
-     * @param clazz Enum鐨凜lass
-     * @param value 鍊�
-     * @param defaultValue 榛樿鍊�
-     * @return Enum
-     */
-    public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (clazz.isAssignableFrom(value.getClass()))
-        {
-            @SuppressWarnings("unchecked")
-            E myE = (E) value;
-            return myE;
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return Enum.valueOf(clazz, valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓篍num瀵硅薄<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 
-     * @param clazz Enum鐨凜lass
-     * @param value 鍊�
-     * @return Enum
-     */
-    public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value)
-    {
-        return toEnum(clazz, value, null);
-    }
-
-    /**
-     * 杞崲涓築igInteger<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static BigInteger toBigInteger(Object value, BigInteger defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof BigInteger)
-        {
-            return (BigInteger) value;
-        }
-        if (value instanceof Long)
-        {
-            return BigInteger.valueOf((Long) value);
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return new BigInteger(valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓築igInteger<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<code>null</code><br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static BigInteger toBigInteger(Object value)
-    {
-        return toBigInteger(value, null);
-    }
-
-    /**
-     * 杞崲涓築igDecimal<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @param defaultValue 杞崲閿欒鏃剁殑榛樿鍊�
-     * @return 缁撴灉
-     */
-    public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof BigDecimal)
-        {
-            return (BigDecimal) value;
-        }
-        if (value instanceof Long)
-        {
-            return new BigDecimal((Long) value);
-        }
-        if (value instanceof Double)
-        {
-            return BigDecimal.valueOf((Double) value);
-        }
-        if (value instanceof Integer)
-        {
-            return new BigDecimal((Integer) value);
-        }
-        final String valueStr = toStr(value, null);
-        if (StringUtils.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return new BigDecimal(valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-
-    /**
-     * 杞崲涓築igDecimal<br>
-     * 濡傛灉缁欏畾鐨勫�间负绌猴紝鎴栬�呰浆鎹㈠け璐ワ紝杩斿洖榛樿鍊�<br>
-     * 杞崲澶辫触涓嶄細鎶ラ敊
-     * 
-     * @param value 琚浆鎹㈢殑鍊�
-     * @return 缁撴灉
-     */
-    public static BigDecimal toBigDecimal(Object value)
-    {
-        return toBigDecimal(value, null);
-    }
-
-    /**
-     * 灏嗗璞¤浆涓哄瓧绗︿覆<br>
-     * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶
-     * 
-     * @param obj 瀵硅薄
-     * @return 瀛楃涓�
-     */
-    public static String utf8Str(Object obj)
-    {
-        return str(obj, CharsetKit.CHARSET_UTF_8);
-    }
-
-    /**
-     * 灏嗗璞¤浆涓哄瓧绗︿覆<br>
-     * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶
-     * 
-     * @param obj 瀵硅薄
-     * @param charsetName 瀛楃闆�
-     * @return 瀛楃涓�
-     */
-    public static String str(Object obj, String charsetName)
-    {
-        return str(obj, Charset.forName(charsetName));
-    }
-
-    /**
-     * 灏嗗璞¤浆涓哄瓧绗︿覆<br>
-     * 1銆丅yte鏁扮粍鍜孊yteBuffer浼氳杞崲涓哄搴斿瓧绗︿覆鐨勬暟缁� 2銆佸璞℃暟缁勪細璋冪敤Arrays.toString鏂规硶
-     * 
-     * @param obj 瀵硅薄
-     * @param charset 瀛楃闆�
-     * @return 瀛楃涓�
-     */
-    public static String str(Object obj, Charset charset)
-    {
-        if (null == obj)
-        {
-            return null;
-        }
-
-        if (obj instanceof String)
-        {
-            return (String) obj;
-        }
-        else if (obj instanceof byte[] || obj instanceof Byte[])
-        {
-            if (obj instanceof byte[])
-            {
-                return str((byte[]) obj, charset);
-            }
-            else
-            {
-                Byte[] bytes = (Byte[]) obj;
-                int length = bytes.length;
-                byte[] dest = new byte[length];
-                for (int i = 0; i < length; i++)
-                {
-                    dest[i] = bytes[i];
-                }
-                return str(dest, charset);
-            }
-        }
-        else if (obj instanceof ByteBuffer)
-        {
-            return str((ByteBuffer) obj, charset);
-        }
-        return obj.toString();
-    }
-
-    /**
-     * 灏哹yte鏁扮粍杞负瀛楃涓�
-     * 
-     * @param bytes byte鏁扮粍
-     * @param charset 瀛楃闆�
-     * @return 瀛楃涓�
-     */
-    public static String str(byte[] bytes, String charset)
-    {
-        return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
-    }
-
-    /**
-     * 瑙g爜瀛楄妭鐮�
-     * 
-     * @param data 瀛楃涓�
-     * @param charset 瀛楃闆嗭紝濡傛灉姝ゅ瓧娈典负绌猴紝鍒欒В鐮佺殑缁撴灉鍙栧喅浜庡钩鍙�
-     * @return 瑙g爜鍚庣殑瀛楃涓�
-     */
-    public static String str(byte[] data, Charset charset)
-    {
-        if (data == null)
-        {
-            return null;
-        }
-
-        if (null == charset)
-        {
-            return new String(data);
-        }
-        return new String(data, charset);
-    }
-
-    /**
-     * 灏嗙紪鐮佺殑byteBuffer鏁版嵁杞崲涓哄瓧绗︿覆
-     * 
-     * @param data 鏁版嵁
-     * @param charset 瀛楃闆嗭紝濡傛灉涓虹┖浣跨敤褰撳墠绯荤粺瀛楃闆�
-     * @return 瀛楃涓�
-     */
-    public static String str(ByteBuffer data, String charset)
-    {
-        if (data == null)
-        {
-            return null;
-        }
-
-        return str(data, Charset.forName(charset));
-    }
-
-    /**
-     * 灏嗙紪鐮佺殑byteBuffer鏁版嵁杞崲涓哄瓧绗︿覆
-     * 
-     * @param data 鏁版嵁
-     * @param charset 瀛楃闆嗭紝濡傛灉涓虹┖浣跨敤褰撳墠绯荤粺瀛楃闆�
-     * @return 瀛楃涓�
-     */
-    public static String str(ByteBuffer data, Charset charset)
-    {
-        if (null == charset)
-        {
-            charset = Charset.defaultCharset();
-        }
-        return charset.decode(data).toString();
-    }
-
-    // ----------------------------------------------------------------------- 鍏ㄨ鍗婅杞崲
-    /**
-     * 鍗婅杞叏瑙�
-     * 
-     * @param input String.
-     * @return 鍏ㄨ瀛楃涓�.
-     */
-    public static String toSBC(String input)
-    {
-        return toSBC(input, null);
-    }
-
-    /**
-     * 鍗婅杞叏瑙�
-     * 
-     * @param input String
-     * @param notConvertSet 涓嶆浛鎹㈢殑瀛楃闆嗗悎
-     * @return 鍏ㄨ瀛楃涓�.
-     */
-    public static String toSBC(String input, Set<Character> notConvertSet)
-    {
-        char[] c = input.toCharArray();
-        for (int i = 0; i < c.length; i++)
-        {
-            if (null != notConvertSet && notConvertSet.contains(c[i]))
-            {
-                // 璺宠繃涓嶆浛鎹㈢殑瀛楃
-                continue;
-            }
-
-            if (c[i] == ' ')
-            {
-                c[i] = '\u3000';
-            }
-            else if (c[i] < '\177')
-            {
-                c[i] = (char) (c[i] + 65248);
-
-            }
-        }
-        return new String(c);
-    }
-
-    /**
-     * 鍏ㄨ杞崐瑙�
-     * 
-     * @param input String.
-     * @return 鍗婅瀛楃涓�
-     */
-    public static String toDBC(String input)
-    {
-        return toDBC(input, null);
-    }
-
-    /**
-     * 鏇挎崲鍏ㄨ涓哄崐瑙�
-     * 
-     * @param text 鏂囨湰
-     * @param notConvertSet 涓嶆浛鎹㈢殑瀛楃闆嗗悎
-     * @return 鏇挎崲鍚庣殑瀛楃
-     */
-    public static String toDBC(String text, Set<Character> notConvertSet)
-    {
-        char[] c = text.toCharArray();
-        for (int i = 0; i < c.length; i++)
-        {
-            if (null != notConvertSet && notConvertSet.contains(c[i]))
-            {
-                // 璺宠繃涓嶆浛鎹㈢殑瀛楃
-                continue;
-            }
-
-            if (c[i] == '\u3000')
-            {
-                c[i] = ' ';
-            }
-            else if (c[i] > '\uFF00' && c[i] < '\uFF5F')
-            {
-                c[i] = (char) (c[i] - 65248);
-            }
-        }
-        return new String(c);
-    }
-
-    /**
-     * 鏁板瓧閲戦澶у啓杞崲 鍏堝啓涓畬鏁寸殑鐒跺悗灏嗗闆舵嬀鏇挎崲鎴愰浂
-     * 
-     * @param n 鏁板瓧
-     * @return 涓枃澶у啓鏁板瓧
-     */
-    public static String digitUppercase(double n)
-    {
-        String[] fraction = { "瑙�", "鍒�" };
-        String[] digit = { "闆�", "澹�", "璐�", "鍙�", "鑲�", "浼�", "闄�", "鏌�", "鎹�", "鐜�" };
-        String[][] unit = { { "鍏�", "涓�", "浜�" }, { "", "鎷�", "浣�", "浠�" } };
-
-        String head = n < 0 ? "璐�" : "";
-        n = Math.abs(n);
-
-        String s = "";
-        for (int i = 0; i < fraction.length; i++)
-        {
-            // 浼樺寲double璁$畻绮惧害涓㈠け闂
-            BigDecimal nNum = new BigDecimal(n);
-            BigDecimal decimal = new BigDecimal(10);
-            BigDecimal scale = nNum.multiply(decimal).setScale(2, RoundingMode.HALF_EVEN);
-            double d = scale.doubleValue();
-            s += (digit[(int) (Math.floor(d * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(闆�.)+", "");
-        }
-        if (s.length() < 1)
-        {
-            s = "鏁�";
-        }
-        int integerPart = (int) Math.floor(n);
-
-        for (int i = 0; i < unit[0].length && integerPart > 0; i++)
-        {
-            String p = "";
-            for (int j = 0; j < unit[1].length && n > 0; j++)
-            {
-                p = digit[integerPart % 10] + unit[1][j] + p;
-                integerPart = integerPart / 10;
-            }
-            s = p.replaceAll("(闆�.)*闆�$", "").replaceAll("^$", "闆�") + unit[0][i] + s;
-        }
-        return head + s.replaceAll("(闆�.)*闆跺厓", "鍏�").replaceFirst("(闆�.)+", "").replaceAll("(闆�.)+", "闆�").replaceAll("^鏁�$", "闆跺厓鏁�");
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
deleted file mode 100644
index 24a83c5..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ruoyi.common.core.text;
-
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 瀛楃涓叉牸寮忓寲
- * 
- * @author admin
- */
-public class StrFormatter
-{
-    public static final String EMPTY_JSON = "{}";
-    public static final char C_BACKSLASH = '\\';
-    public static final char C_DELIM_START = '{';
-    public static final char C_DELIM_END = '}';
-
-    /**
-     * 鏍煎紡鍖栧瓧绗︿覆<br>
-     * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br>
-     * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br>
-     * 渚嬶細<br>
-     * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br>
-     * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
-     * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
-     * 
-     * @param strPattern 瀛楃涓叉ā鏉�
-     * @param argArray 鍙傛暟鍒楄〃
-     * @return 缁撴灉
-     */
-    public static String format(final String strPattern, final Object... argArray)
-    {
-        if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
-        {
-            return strPattern;
-        }
-        final int strPatternLength = strPattern.length();
-
-        // 鍒濆鍖栧畾涔夊ソ鐨勯暱搴︿互鑾峰緱鏇村ソ鐨勬�ц兘
-        StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
-
-        int handledPosition = 0;
-        int delimIndex;// 鍗犱綅绗︽墍鍦ㄤ綅缃�
-        for (int argIndex = 0; argIndex < argArray.length; argIndex++)
-        {
-            delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
-            if (delimIndex == -1)
-            {
-                if (handledPosition == 0)
-                {
-                    return strPattern;
-                }
-                else
-                { // 瀛楃涓叉ā鏉垮墿浣欓儴鍒嗕笉鍐嶅寘鍚崰浣嶇锛屽姞鍏ュ墿浣欓儴鍒嗗悗杩斿洖缁撴灉
-                    sbuf.append(strPattern, handledPosition, strPatternLength);
-                    return sbuf.toString();
-                }
-            }
-            else
-            {
-                if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
-                {
-                    if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
-                    {
-                        // 杞箟绗︿箣鍓嶈繕鏈変竴涓浆涔夌锛屽崰浣嶇渚濇棫鏈夋晥
-                        sbuf.append(strPattern, handledPosition, delimIndex - 1);
-                        sbuf.append(Convert.utf8Str(argArray[argIndex]));
-                        handledPosition = delimIndex + 2;
-                    }
-                    else
-                    {
-                        // 鍗犱綅绗﹁杞箟
-                        argIndex--;
-                        sbuf.append(strPattern, handledPosition, delimIndex - 1);
-                        sbuf.append(C_DELIM_START);
-                        handledPosition = delimIndex + 1;
-                    }
-                }
-                else
-                {
-                    // 姝e父鍗犱綅绗�
-                    sbuf.append(strPattern, handledPosition, delimIndex);
-                    sbuf.append(Convert.utf8Str(argArray[argIndex]));
-                    handledPosition = delimIndex + 2;
-                }
-            }
-        }
-        // 鍔犲叆鏈�鍚庝竴涓崰浣嶇鍚庢墍鏈夌殑瀛楃
-        sbuf.append(strPattern, handledPosition, strPattern.length());
-
-        return sbuf.toString();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
deleted file mode 100644
index e0967f9..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import java.lang.management.ManagementFactory;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.Date;
-import org.apache.commons.lang3.time.DateFormatUtils;
-
-/**
- * 鏃堕棿宸ュ叿绫�
- *
- * @author admin
- */
-public class DateUtils extends org.apache.commons.lang3.time.DateUtils
-{
-    public static String YYYY = "yyyy";
-
-    public static String YYYY_MM = "yyyy-MM";
-
-    public static String YYYY_MM_DD = "yyyy-MM-dd";
-
-    public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
-
-    public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
-
-    private static String[] parsePatterns = {
-            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
-            "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
-            "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
-
-    /**
-     * 鑾峰彇褰撳墠Date鍨嬫棩鏈�
-     *
-     * @return Date() 褰撳墠鏃ユ湡
-     */
-    public static Date getNowDate()
-    {
-        return new Date();
-    }
-
-    /**
-     * 鑾峰彇褰撳墠鏃ユ湡, 榛樿鏍煎紡涓簓yyy-MM-dd
-     *
-     * @return String
-     */
-    public static String getDate()
-    {
-        return dateTimeNow(YYYY_MM_DD);
-    }
-
-    public static final String getTime()
-    {
-        return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
-    }
-
-    public static final String dateTimeNow()
-    {
-        return dateTimeNow(YYYYMMDDHHMMSS);
-    }
-
-    public static final String dateTimeNow(final String format)
-    {
-        return parseDateToStr(format, new Date());
-    }
-
-    public static final String dateTime(final Date date)
-    {
-        return parseDateToStr(YYYY_MM_DD, date);
-    }
-
-    public static final String parseDateToStr(final String format, final Date date)
-    {
-        return new SimpleDateFormat(format).format(date);
-    }
-
-    public static final Date dateTime(final String format, final String ts)
-    {
-        try
-        {
-            return new SimpleDateFormat(format).parse(ts);
-        }
-        catch (ParseException e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�2018/08/08
-     */
-    public static final String datePath()
-    {
-        Date now = new Date();
-        return DateFormatUtils.format(now, "yyyy/MM/dd");
-    }
-
-    /**
-     * 鏃ユ湡璺緞 鍗冲勾/鏈�/鏃� 濡�20180808
-     */
-    public static final String dateTime()
-    {
-        Date now = new Date();
-        return DateFormatUtils.format(now, "yyyyMMdd");
-    }
-
-    /**
-     * 鏃ユ湡鍨嬪瓧绗︿覆杞寲涓烘棩鏈� 鏍煎紡
-     */
-    public static Date parseDate(Object str)
-    {
-        if (str == null)
-        {
-            return null;
-        }
-        try
-        {
-            return parseDate(str.toString(), parsePatterns);
-        }
-        catch (ParseException e)
-        {
-            return null;
-        }
-    }
-
-    /**
-     * 鑾峰彇鏈嶅姟鍣ㄥ惎鍔ㄦ椂闂�
-     */
-    public static Date getServerStartDate()
-    {
-        long time = ManagementFactory.getRuntimeMXBean().getStartTime();
-        return new Date(time);
-    }
-
-    /**
-     * 璁$畻鏃堕棿宸�
-     *
-     * @param endDate 鏈�鍚庢椂闂�
-     * @param startTime 寮�濮嬫椂闂�
-     * @return 鏃堕棿宸紙澶�/灏忔椂/鍒嗛挓锛�
-     */
-    public static String timeDistance(Date endDate, Date startTime)
-    {
-        long nd = 1000 * 24 * 60 * 60;
-        long nh = 1000 * 60 * 60;
-        long nm = 1000 * 60;
-        // long ns = 1000;
-        // 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮�
-        long diff = endDate.getTime() - startTime.getTime();
-        // 璁$畻宸灏戝ぉ
-        long day = diff / nd;
-        // 璁$畻宸灏戝皬鏃�
-        long hour = diff % nd / nh;
-        // 璁$畻宸灏戝垎閽�
-        long min = diff % nd % nh / nm;
-        // 璁$畻宸灏戠//杈撳嚭缁撴灉
-        // long sec = diff % nd % nh % nm / ns;
-        return day + "澶�" + hour + "灏忔椂" + min + "鍒嗛挓";
-    }
-
-    /**
-     * 澧炲姞 LocalDateTime ==> Date
-     */
-    public static Date toDate(LocalDateTime temporalAccessor)
-    {
-        ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
-        return Date.from(zdt.toInstant());
-    }
-
-    /**
-     * 澧炲姞 LocalDate ==> Date
-     */
-    public static Date toDate(LocalDate temporalAccessor)
-    {
-        LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
-        ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
-        return Date.from(zdt.toInstant());
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
deleted file mode 100644
index 2fe9e92..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import org.apache.commons.lang3.exception.ExceptionUtils;
-
-/**
- * 閿欒淇℃伅澶勭悊绫汇��
- *
- * @author admin
- */
-public class ExceptionUtil
-{
-    /**
-     * 鑾峰彇exception鐨勮缁嗛敊璇俊鎭��
-     */
-    public static String getExceptionMessage(Throwable e)
-    {
-        StringWriter sw = new StringWriter();
-        e.printStackTrace(new PrintWriter(sw, true));
-        return sw.toString();
-    }
-
-    public static String getRootErrorMessage(Exception e)
-    {
-        Throwable root = ExceptionUtils.getRootCause(e);
-        root = (root == null ? e : root);
-        if (root == null)
-        {
-            return "";
-        }
-        String msg = root.getMessage();
-        if (msg == null)
-        {
-            return "null";
-        }
-        return StringUtils.defaultString(msg);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
deleted file mode 100644
index 13dafbe..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import com.github.pagehelper.PageHelper;
-import com.ruoyi.common.core.utils.sql.SqlUtil;
-import com.ruoyi.common.core.web.page.PageDomain;
-import com.ruoyi.common.core.web.page.TableSupport;
-
-/**
- * 鍒嗛〉宸ュ叿绫�
- * 
- * @author admin
- */
-public class PageUtils extends PageHelper
-{
-    /**
-     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁
-     */
-    public static void startPage()
-    {
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        Integer pageNum = pageDomain.getPageNum();
-        Integer pageSize = pageDomain.getPageSize();
-        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
-        Boolean reasonable = pageDomain.getReasonable();
-        PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
-    }
-
-    /**
-     * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲�
-     */
-    public static void clearPage()
-    {
-        PageHelper.clearPage();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
deleted file mode 100644
index d29d260..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import org.springframework.core.io.buffer.DataBuffer;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.util.LinkedCaseInsensitiveMap;
-import org.springframework.web.context.request.RequestAttributes;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import com.alibaba.fastjson2.JSON;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.text.Convert;
-import reactor.core.publisher.Mono;
-
-/**
- * 瀹㈡埛绔伐鍏风被
- * 
- * @author admin
- */
-public class ServletUtils
-{
-    /**
-     * 鑾峰彇String鍙傛暟
-     */
-    public static String getParameter(String name)
-    {
-        return getRequest().getParameter(name);
-    }
-
-    /**
-     * 鑾峰彇String鍙傛暟
-     */
-    public static String getParameter(String name, String defaultValue)
-    {
-        return Convert.toStr(getRequest().getParameter(name), defaultValue);
-    }
-
-    /**
-     * 鑾峰彇Integer鍙傛暟
-     */
-    public static Integer getParameterToInt(String name)
-    {
-        return Convert.toInt(getRequest().getParameter(name));
-    }
-
-    /**
-     * 鑾峰彇Integer鍙傛暟
-     */
-    public static Integer getParameterToInt(String name, Integer defaultValue)
-    {
-        return Convert.toInt(getRequest().getParameter(name), defaultValue);
-    }
-
-    /**
-     * 鑾峰彇Boolean鍙傛暟
-     */
-    public static Boolean getParameterToBool(String name)
-    {
-        return Convert.toBool(getRequest().getParameter(name));
-    }
-
-    /**
-     * 鑾峰彇Boolean鍙傛暟
-     */
-    public static Boolean getParameterToBool(String name, Boolean defaultValue)
-    {
-        return Convert.toBool(getRequest().getParameter(name), defaultValue);
-    }
-
-    /**
-     * 鑾峰緱鎵�鏈夎姹傚弬鏁�
-     *
-     * @param request 璇锋眰瀵硅薄{@link ServletRequest}
-     * @return Map
-     */
-    public static Map<String, String[]> getParams(ServletRequest request)
-    {
-        final Map<String, String[]> map = request.getParameterMap();
-        return Collections.unmodifiableMap(map);
-    }
-
-    /**
-     * 鑾峰緱鎵�鏈夎姹傚弬鏁�
-     *
-     * @param request 璇锋眰瀵硅薄{@link ServletRequest}
-     * @return Map
-     */
-    public static Map<String, String> getParamMap(ServletRequest request)
-    {
-        Map<String, String> params = new HashMap<>();
-        for (Map.Entry<String, String[]> entry : getParams(request).entrySet())
-        {
-            params.put(entry.getKey(), StringUtils.join(entry.getValue(), ","));
-        }
-        return params;
-    }
-
-    /**
-     * 鑾峰彇request
-     */
-    public static HttpServletRequest getRequest()
-    {
-        try
-        {
-            return getRequestAttributes().getRequest();
-        }
-        catch (Exception e)
-        {
-            return null;
-        }
-    }
-
-    /**
-     * 鑾峰彇response
-     */
-    public static HttpServletResponse getResponse()
-    {
-        try
-        {
-            return getRequestAttributes().getResponse();
-        }
-        catch (Exception e)
-        {
-            return null;
-        }
-    }
-
-    /**
-     * 鑾峰彇session
-     */
-    public static HttpSession getSession()
-    {
-        return getRequest().getSession();
-    }
-
-    public static ServletRequestAttributes getRequestAttributes()
-    {
-        try
-        {
-            RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
-            return (ServletRequestAttributes) attributes;
-        }
-        catch (Exception e)
-        {
-            return null;
-        }
-    }
-
-    public static String getHeader(HttpServletRequest request, String name)
-    {
-        String value = request.getHeader(name);
-        if (StringUtils.isEmpty(value))
-        {
-            return StringUtils.EMPTY;
-        }
-        return urlDecode(value);
-    }
-
-    public static Map<String, String> getHeaders(HttpServletRequest request)
-    {
-        Map<String, String> map = new LinkedCaseInsensitiveMap<>();
-        Enumeration<String> enumeration = request.getHeaderNames();
-        if (enumeration != null)
-        {
-            while (enumeration.hasMoreElements())
-            {
-                String key = enumeration.nextElement();
-                String value = request.getHeader(key);
-                map.put(key, value);
-            }
-        }
-        return map;
-    }
-
-    /**
-     * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风
-     * 
-     * @param response 娓叉煋瀵硅薄
-     * @param string 寰呮覆鏌撶殑瀛楃涓�
-     */
-    public static void renderString(HttpServletResponse response, String string)
-    {
-        try
-        {
-            response.setStatus(200);
-            response.setContentType("application/json");
-            response.setCharacterEncoding("utf-8");
-            response.getWriter().print(string);
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鏄惁鏄疉jax寮傛璇锋眰
-     * 
-     * @param request
-     */
-    public static boolean isAjaxRequest(HttpServletRequest request)
-    {
-        String accept = request.getHeader("accept");
-        if (accept != null && accept.contains("application/json"))
-        {
-            return true;
-        }
-
-        String xRequestedWith = request.getHeader("X-Requested-With");
-        if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest"))
-        {
-            return true;
-        }
-
-        String uri = request.getRequestURI();
-        if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
-        {
-            return true;
-        }
-
-        String ajax = request.getParameter("__ajax");
-        return StringUtils.inStringIgnoreCase(ajax, "json", "xml");
-    }
-
-    /**
-     * 鍐呭缂栫爜
-     * 
-     * @param str 鍐呭
-     * @return 缂栫爜鍚庣殑鍐呭
-     */
-    public static String urlEncode(String str)
-    {
-        try
-        {
-            return URLEncoder.encode(str, Constants.UTF8);
-        }
-        catch (UnsupportedEncodingException e)
-        {
-            return StringUtils.EMPTY;
-        }
-    }
-
-    /**
-     * 鍐呭瑙g爜
-     * 
-     * @param str 鍐呭
-     * @return 瑙g爜鍚庣殑鍐呭
-     */
-    public static String urlDecode(String str)
-    {
-        try
-        {
-            return URLDecoder.decode(str, Constants.UTF8);
-        }
-        catch (UnsupportedEncodingException e)
-        {
-            return StringUtils.EMPTY;
-        }
-    }
-
-    /**
-     * 璁剧疆webflux妯″瀷鍝嶅簲
-     *
-     * @param response ServerHttpResponse
-     * @param value 鍝嶅簲鍐呭
-     * @return Mono<Void>
-     */
-    public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value)
-    {
-        return webFluxResponseWriter(response, HttpStatus.OK, value, R.FAIL);
-    }
-
-    /**
-     * 璁剧疆webflux妯″瀷鍝嶅簲
-     *
-     * @param response ServerHttpResponse
-     * @param code 鍝嶅簲鐘舵�佺爜
-     * @param value 鍝嶅簲鍐呭
-     * @return Mono<Void>
-     */
-    public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code)
-    {
-        return webFluxResponseWriter(response, HttpStatus.OK, value, code);
-    }
-
-    /**
-     * 璁剧疆webflux妯″瀷鍝嶅簲
-     *
-     * @param response ServerHttpResponse
-     * @param status http鐘舵�佺爜
-     * @param code 鍝嶅簲鐘舵�佺爜
-     * @param value 鍝嶅簲鍐呭
-     * @return Mono<Void>
-     */
-    public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code)
-    {
-        return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code);
-    }
-
-    /**
-     * 璁剧疆webflux妯″瀷鍝嶅簲
-     *
-     * @param response ServerHttpResponse
-     * @param contentType content-type
-     * @param status http鐘舵�佺爜
-     * @param code 鍝嶅簲鐘舵�佺爜
-     * @param value 鍝嶅簲鍐呭
-     * @return Mono<Void>
-     */
-    public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code)
-    {
-        response.setStatusCode(status);
-        response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType);
-        R<?> result = R.fail(code, value.toString());
-        DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes());
-        return response.writeWith(Mono.just(dataBuffer));
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java
deleted file mode 100644
index 35a8950..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import org.springframework.aop.framework.AopContext;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * spring宸ュ叿绫� 鏂逛究鍦ㄩ潪spring绠$悊鐜涓幏鍙朾ean
- * 
- * @author admin
- */
-@Component
-public final class SpringUtils implements BeanFactoryPostProcessor
-{
-    /** Spring搴旂敤涓婁笅鏂囩幆澧� */
-    private static ConfigurableListableBeanFactory beanFactory;
-
-    @Override
-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
-    {
-        SpringUtils.beanFactory = beanFactory;
-    }
-
-    /**
-     * 鑾峰彇瀵硅薄
-     *
-     * @param name
-     * @return Object 涓�涓互鎵�缁欏悕瀛楁敞鍐岀殑bean鐨勫疄渚�
-     * @throws org.springframework.beans.BeansException
-     *
-     */
-    @SuppressWarnings("unchecked")
-    public static <T> T getBean(String name) throws BeansException
-    {
-        return (T) beanFactory.getBean(name);
-    }
-
-    /**
-     * 鑾峰彇绫诲瀷涓簉equiredType鐨勫璞�
-     *
-     * @param clz
-     * @return
-     * @throws org.springframework.beans.BeansException
-     *
-     */
-    public static <T> T getBean(Class<T> clz) throws BeansException
-    {
-        T result = (T) beanFactory.getBean(clz);
-        return result;
-    }
-
-    /**
-     * 濡傛灉BeanFactory鍖呭惈涓�涓笌鎵�缁欏悕绉板尮閰嶇殑bean瀹氫箟锛屽垯杩斿洖true
-     *
-     * @param name
-     * @return boolean
-     */
-    public static boolean containsBean(String name)
-    {
-        return beanFactory.containsBean(name);
-    }
-
-    /**
-     * 鍒ゆ柇浠ョ粰瀹氬悕瀛楁敞鍐岀殑bean瀹氫箟鏄竴涓猻ingleton杩樻槸涓�涓猵rototype銆� 濡傛灉涓庣粰瀹氬悕瀛楃浉搴旂殑bean瀹氫箟娌℃湁琚壘鍒帮紝灏嗕細鎶涘嚭涓�涓紓甯革紙NoSuchBeanDefinitionException锛�
-     *
-     * @param name
-     * @return boolean
-     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
-     *
-     */
-    public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
-    {
-        return beanFactory.isSingleton(name);
-    }
-
-    /**
-     * @param name
-     * @return Class 娉ㄥ唽瀵硅薄鐨勭被鍨�
-     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
-     *
-     */
-    public static Class<?> getType(String name) throws NoSuchBeanDefinitionException
-    {
-        return beanFactory.getType(name);
-    }
-
-    /**
-     * 濡傛灉缁欏畾鐨刡ean鍚嶅瓧鍦╞ean瀹氫箟涓湁鍒悕锛屽垯杩斿洖杩欎簺鍒悕
-     *
-     * @param name
-     * @return
-     * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
-     *
-     */
-    public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
-    {
-        return beanFactory.getAliases(name);
-    }
-
-    /**
-     * 鑾峰彇aop浠g悊瀵硅薄
-     * 
-     * @param invoker
-     * @return
-     */
-    @SuppressWarnings("unchecked")
-    public static <T> T getAopProxy(T invoker)
-    {
-        return (T) AopContext.currentProxy();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
deleted file mode 100644
index 0f39ac6..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
+++ /dev/null
@@ -1,607 +0,0 @@
-package com.ruoyi.common.core.utils;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import org.springframework.util.AntPathMatcher;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.text.StrFormatter;
-
-/**
- * 瀛楃涓插伐鍏风被
- * 
- * @author admin
- */
-public class StringUtils extends org.apache.commons.lang3.StringUtils
-{
-    /** 绌哄瓧绗︿覆 */
-    private static final String NULLSTR = "";
-
-    /** 涓嬪垝绾� */
-    private static final char SEPARATOR = '_';
-
-    /** 鏄熷彿 */
-    private static final char ASTERISK = '*';
-
-    /**
-     * 鑾峰彇鍙傛暟涓嶄负绌哄��
-     * 
-     * @param value defaultValue 瑕佸垽鏂殑value
-     * @return value 杩斿洖鍊�
-     */
-    public static <T> T nvl(T value, T defaultValue)
-    {
-        return value != null ? value : defaultValue;
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓狢ollection鏄惁涓虹┖锛� 鍖呭惈List锛孲et锛孮ueue
-     * 
-     * @param coll 瑕佸垽鏂殑Collection
-     * @return true锛氫负绌� false锛氶潪绌�
-     */
-    public static boolean isEmpty(Collection<?> coll)
-    {
-        return isNull(coll) || coll.isEmpty();
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓狢ollection鏄惁闈炵┖锛屽寘鍚獿ist锛孲et锛孮ueue
-     * 
-     * @param coll 瑕佸垽鏂殑Collection
-     * @return true锛氶潪绌� false锛氱┖
-     */
-    public static boolean isNotEmpty(Collection<?> coll)
-    {
-        return !isEmpty(coll);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚︿负绌�
-     * 
-     * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
-     ** @return true锛氫负绌� false锛氶潪绌�
-     */
-    public static boolean isEmpty(Object[] objects)
-    {
-        return isNull(objects) || (objects.length == 0);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚﹂潪绌�
-     * 
-     * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
-     * @return true锛氶潪绌� false锛氱┖
-     */
-    public static boolean isNotEmpty(Object[] objects)
-    {
-        return !isEmpty(objects);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
-     * 
-     * @param map 瑕佸垽鏂殑Map
-     * @return true锛氫负绌� false锛氶潪绌�
-     */
-    public static boolean isEmpty(Map<?, ?> map)
-    {
-        return isNull(map) || map.isEmpty();
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
-     * 
-     * @param map 瑕佸垽鏂殑Map
-     * @return true锛氶潪绌� false锛氱┖
-     */
-    public static boolean isNotEmpty(Map<?, ?> map)
-    {
-        return !isEmpty(map);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓虹┖涓�
-     * 
-     * @param str String
-     * @return true锛氫负绌� false锛氶潪绌�
-     */
-    public static boolean isEmpty(String str)
-    {
-        return isNull(str) || NULLSTR.equals(str.trim());
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓洪潪绌轰覆
-     * 
-     * @param str String
-     * @return true锛氶潪绌轰覆 false锛氱┖涓�
-     */
-    public static boolean isNotEmpty(String str)
-    {
-        return !isEmpty(str);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓璞℃槸鍚︿负绌�
-     * 
-     * @param object Object
-     * @return true锛氫负绌� false锛氶潪绌�
-     */
-    public static boolean isNull(Object object)
-    {
-        return object == null;
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓璞℃槸鍚﹂潪绌�
-     * 
-     * @param object Object
-     * @return true锛氶潪绌� false锛氱┖
-     */
-    public static boolean isNotNull(Object object)
-    {
-        return !isNull(object);
-    }
-
-    /**
-     * * 鍒ゆ柇涓�涓璞℃槸鍚︽槸鏁扮粍绫诲瀷锛圝ava鍩烘湰鍨嬪埆鐨勬暟缁勶級
-     * 
-     * @param object 瀵硅薄
-     * @return true锛氭槸鏁扮粍 false锛氫笉鏄暟缁�
-     */
-    public static boolean isArray(Object object)
-    {
-        return isNotNull(object) && object.getClass().isArray();
-    }
-
-    /**
-     * 鍘荤┖鏍�
-     */
-    public static String trim(String str)
-    {
-        return (str == null ? "" : str.trim());
-    }
-
-    /**
-     * 鏇挎崲鎸囧畾瀛楃涓茬殑鎸囧畾鍖洪棿鍐呭瓧绗︿负"*"
-     *
-     * @param str 瀛楃涓�
-     * @param startInclude 寮�濮嬩綅缃紙鍖呭惈锛�
-     * @param endExclude 缁撴潫浣嶇疆锛堜笉鍖呭惈锛�
-     * @return 鏇挎崲鍚庣殑瀛楃涓�
-     */
-    public static String hide(CharSequence str, int startInclude, int endExclude)
-    {
-        if (isEmpty(str))
-        {
-            return NULLSTR;
-        }
-        final int strLength = str.length();
-        if (startInclude > strLength)
-        {
-            return NULLSTR;
-        }
-        if (endExclude > strLength)
-        {
-            endExclude = strLength;
-        }
-        if (startInclude > endExclude)
-        {
-            // 濡傛灉璧峰浣嶇疆澶т簬缁撴潫浣嶇疆锛屼笉鏇挎崲
-            return NULLSTR;
-        }
-        final char[] chars = new char[strLength];
-        for (int i = 0; i < strLength; i++)
-        {
-            if (i >= startInclude && i < endExclude)
-            {
-                chars[i] = ASTERISK;
-            }
-            else
-            {
-                chars[i] = str.charAt(i);
-            }
-        }
-        return new String(chars);
-    }
-
-    /**
-     * 鎴彇瀛楃涓�
-     * 
-     * @param str 瀛楃涓�
-     * @param start 寮�濮�
-     * @return 缁撴灉
-     */
-    public static String substring(final String str, int start)
-    {
-        if (str == null)
-        {
-            return NULLSTR;
-        }
-
-        if (start < 0)
-        {
-            start = str.length() + start;
-        }
-
-        if (start < 0)
-        {
-            start = 0;
-        }
-        if (start > str.length())
-        {
-            return NULLSTR;
-        }
-
-        return str.substring(start);
-    }
-
-    /**
-     * 鎴彇瀛楃涓�
-     * 
-     * @param str 瀛楃涓�
-     * @param start 寮�濮�
-     * @param end 缁撴潫
-     * @return 缁撴灉
-     */
-    public static String substring(final String str, int start, int end)
-    {
-        if (str == null)
-        {
-            return NULLSTR;
-        }
-
-        if (end < 0)
-        {
-            end = str.length() + end;
-        }
-        if (start < 0)
-        {
-            start = str.length() + start;
-        }
-
-        if (end > str.length())
-        {
-            end = str.length();
-        }
-
-        if (start > end)
-        {
-            return NULLSTR;
-        }
-
-        if (start < 0)
-        {
-            start = 0;
-        }
-        if (end < 0)
-        {
-            end = 0;
-        }
-
-        return str.substring(start, end);
-    }
-
-    /**
-     * 鍒ゆ柇鏄惁涓虹┖锛屽苟涓斾笉鏄┖鐧藉瓧绗�
-     * 
-     * @param str 瑕佸垽鏂殑value
-     * @return 缁撴灉
-     */
-    public static boolean hasText(String str)
-    {
-        return (str != null && !str.isEmpty() && containsText(str));
-    }
-
-    private static boolean containsText(CharSequence str)
-    {
-        int strLen = str.length();
-        for (int i = 0; i < strLen; i++)
-        {
-            if (!Character.isWhitespace(str.charAt(i)))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 鏍煎紡鍖栨枃鏈�, {} 琛ㄧず鍗犱綅绗�<br>
-     * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br>
-     * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br>
-     * 渚嬶細<br>
-     * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br>
-     * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
-     * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
-     * 
-     * @param template 鏂囨湰妯℃澘锛岃鏇挎崲鐨勯儴鍒嗙敤 {} 琛ㄧず
-     * @param params 鍙傛暟鍊�
-     * @return 鏍煎紡鍖栧悗鐨勬枃鏈�
-     */
-    public static String format(String template, Object... params)
-    {
-        if (isEmpty(params) || isEmpty(template))
-        {
-            return template;
-        }
-        return StrFormatter.format(template, params);
-    }
-
-    /**
-     * 鏄惁涓篽ttp(s)://寮�澶�
-     * 
-     * @param link 閾炬帴
-     * @return 缁撴灉
-     */
-    public static boolean ishttp(String link)
-    {
-        return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS);
-    }
-
-    /**
-     * 鍒ゆ柇缁欏畾鐨刢ollection鍒楄〃涓槸鍚﹀寘鍚暟缁刟rray 鍒ゆ柇缁欏畾鐨勬暟缁刟rray涓槸鍚﹀寘鍚粰瀹氱殑鍏冪礌value
-     *
-     * @param collection 缁欏畾鐨勯泦鍚�
-     * @param array 缁欏畾鐨勬暟缁�
-     * @return boolean 缁撴灉
-     */
-    public static boolean containsAny(Collection<String> collection, String... array)
-    {
-        if (isEmpty(collection) || isEmpty(array))
-        {
-            return false;
-        }
-        else
-        {
-            for (String str : array)
-            {
-                if (collection.contains(str))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-    }
-
-    /**
-     * 椹煎嘲杞笅鍒掔嚎鍛藉悕
-     */
-    public static String toUnderScoreCase(String str)
-    {
-        if (str == null)
-        {
-            return null;
-        }
-        StringBuilder sb = new StringBuilder();
-        // 鍓嶇疆瀛楃鏄惁澶у啓
-        boolean preCharIsUpperCase = true;
-        // 褰撳墠瀛楃鏄惁澶у啓
-        boolean curreCharIsUpperCase = true;
-        // 涓嬩竴瀛楃鏄惁澶у啓
-        boolean nexteCharIsUpperCase = true;
-        for (int i = 0; i < str.length(); i++)
-        {
-            char c = str.charAt(i);
-            if (i > 0)
-            {
-                preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
-            }
-            else
-            {
-                preCharIsUpperCase = false;
-            }
-
-            curreCharIsUpperCase = Character.isUpperCase(c);
-
-            if (i < (str.length() - 1))
-            {
-                nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
-            }
-
-            if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
-            {
-                sb.append(SEPARATOR);
-            }
-            else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
-            {
-                sb.append(SEPARATOR);
-            }
-            sb.append(Character.toLowerCase(c));
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * 鏄惁鍖呭惈瀛楃涓�
-     * 
-     * @param str 楠岃瘉瀛楃涓�
-     * @param strs 瀛楃涓茬粍
-     * @return 鍖呭惈杩斿洖true
-     */
-    public static boolean inStringIgnoreCase(String str, String... strs)
-    {
-        if (str != null && strs != null)
-        {
-            for (String s : strs)
-            {
-                if (str.equalsIgnoreCase(trim(s)))
-                {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆傚鏋滆浆鎹㈠墠鐨勪笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆涓虹┖锛屽垯杩斿洖绌哄瓧绗︿覆銆� 渚嬪锛欻ELLO_WORLD->HelloWorld
-     * 
-     * @param name 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓�
-     * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓�
-     */
-    public static String convertToCamelCase(String name)
-    {
-        StringBuilder result = new StringBuilder();
-        // 蹇�熸鏌�
-        if (name == null || name.isEmpty())
-        {
-            // 娌″繀瑕佽浆鎹�
-            return "";
-        }
-        else if (!name.contains("_"))
-        {
-            // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅ぇ鍐�
-            return name.substring(0, 1).toUpperCase() + name.substring(1);
-        }
-        // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊
-        String[] camels = name.split("_");
-        for (String camel : camels)
-        {
-            // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾�
-            if (camel.isEmpty())
-            {
-                continue;
-            }
-            // 棣栧瓧姣嶅ぇ鍐�
-            result.append(camel.substring(0, 1).toUpperCase());
-            result.append(camel.substring(1).toLowerCase());
-        }
-        return result.toString();
-    }
-
-    /**
-     * 椹煎嘲寮忓懡鍚嶆硶
-     * 渚嬪锛歶ser_name->userName
-     */
-    public static String toCamelCase(String s)
-    {
-        if (s == null)
-        {
-            return null;
-        }
-        if (s.indexOf(SEPARATOR) == -1)
-        {
-            return s;
-        }
-        s = s.toLowerCase();
-        StringBuilder sb = new StringBuilder(s.length());
-        boolean upperCase = false;
-        for (int i = 0; i < s.length(); i++)
-        {
-            char c = s.charAt(i);
-
-            if (c == SEPARATOR)
-            {
-                upperCase = true;
-            }
-            else if (upperCase)
-            {
-                sb.append(Character.toUpperCase(c));
-                upperCase = false;
-            }
-            else
-            {
-                sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * 鏌ユ壘鎸囧畾瀛楃涓叉槸鍚﹀尮閰嶆寚瀹氬瓧绗︿覆鍒楄〃涓殑浠绘剰涓�涓瓧绗︿覆
-     * 
-     * @param str 鎸囧畾瀛楃涓�
-     * @param strs 闇�瑕佹鏌ョ殑瀛楃涓叉暟缁�
-     * @return 鏄惁鍖归厤
-     */
-    public static boolean matches(String str, List<String> strs)
-    {
-        if (isEmpty(str) || isEmpty(strs))
-        {
-            return false;
-        }
-        for (String pattern : strs)
-        {
-            if (isMatch(pattern, str))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 鍒ゆ柇url鏄惁涓庤鍒欓厤缃�: 
-     * ? 琛ㄧず鍗曚釜瀛楃; 
-     * * 琛ㄧず涓�灞傝矾寰勫唴鐨勪换鎰忓瓧绗︿覆锛屼笉鍙法灞傜骇; 
-     * ** 琛ㄧず浠绘剰灞傝矾寰�;
-     * 
-     * @param pattern 鍖归厤瑙勫垯
-     * @param url 闇�瑕佸尮閰嶇殑url
-     * @return
-     */
-    public static boolean isMatch(String pattern, String url)
-    {
-        AntPathMatcher matcher = new AntPathMatcher();
-        return matcher.match(pattern, url);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> T cast(Object obj)
-    {
-        return (T) obj;
-    }
-
-    /**
-     * 鏁板瓧宸﹁竟琛ラ綈0锛屼娇涔嬭揪鍒版寚瀹氶暱搴︺�傛敞鎰忥紝濡傛灉鏁板瓧杞崲涓哄瓧绗︿覆鍚庯紝闀垮害澶т簬size锛屽垯鍙繚鐣� 鏈�鍚巗ize涓瓧绗︺��
-     * 
-     * @param num 鏁板瓧瀵硅薄
-     * @param size 瀛楃涓叉寚瀹氶暱搴�
-     * @return 杩斿洖鏁板瓧鐨勫瓧绗︿覆鏍煎紡锛岃瀛楃涓蹭负鎸囧畾闀垮害銆�
-     */
-    public static final String padl(final Number num, final int size)
-    {
-        return padl(num.toString(), size, '0');
-    }
-
-    /**
-     * 瀛楃涓插乏琛ラ綈銆傚鏋滃師濮嬪瓧绗︿覆s闀垮害澶т簬size锛屽垯鍙繚鐣欐渶鍚巗ize涓瓧绗︺��
-     * 
-     * @param s 鍘熷瀛楃涓�
-     * @param size 瀛楃涓叉寚瀹氶暱搴�
-     * @param c 鐢ㄤ簬琛ラ綈鐨勫瓧绗�
-     * @return 杩斿洖鎸囧畾闀垮害鐨勫瓧绗︿覆锛岀敱鍘熷瓧绗︿覆宸﹁ˉ榻愭垨鎴彇寰楀埌銆�
-     */
-    public static final String padl(final String s, final int size, final char c)
-    {
-        final StringBuilder sb = new StringBuilder(size);
-        if (s != null)
-        {
-            final int len = s.length();
-            if (s.length() <= size)
-            {
-                for (int i = size - len; i > 0; i--)
-                {
-                    sb.append(c);
-                }
-                sb.append(s);
-            }
-            else
-            {
-                return s.substring(len - size, len);
-            }
-        }
-        else
-        {
-            for (int i = size; i > 0; i--)
-            {
-                sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java
deleted file mode 100644
index 31e0499..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.ruoyi.common.core.utils.bean;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Bean 宸ュ叿绫�
- * 
- * @author admin
- */
-public class BeanUtils extends org.springframework.beans.BeanUtils
-{
-    /** Bean鏂规硶鍚嶄腑灞炴�у悕寮�濮嬬殑涓嬫爣 */
-    private static final int BEAN_METHOD_PROP_INDEX = 3;
-
-    /** * 鍖归厤getter鏂规硶鐨勬鍒欒〃杈惧紡 */
-    private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
-
-    /** * 鍖归厤setter鏂规硶鐨勬鍒欒〃杈惧紡 */
-    private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
-
-    /**
-     * Bean灞炴�у鍒跺伐鍏锋柟娉曘��
-     * 
-     * @param dest 鐩爣瀵硅薄
-     * @param src 婧愬璞�
-     */
-    public static void copyBeanProp(Object dest, Object src)
-    {
-        try
-        {
-            copyProperties(src, dest);
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 鑾峰彇瀵硅薄鐨剆etter鏂规硶銆�
-     * 
-     * @param obj 瀵硅薄
-     * @return 瀵硅薄鐨剆etter鏂规硶鍒楄〃
-     */
-    public static List<Method> getSetterMethods(Object obj)
-    {
-        // setter鏂规硶鍒楄〃
-        List<Method> setterMethods = new ArrayList<Method>();
-
-        // 鑾峰彇鎵�鏈夋柟娉�
-        Method[] methods = obj.getClass().getMethods();
-
-        // 鏌ユ壘setter鏂规硶
-
-        for (Method method : methods)
-        {
-            Matcher m = SET_PATTERN.matcher(method.getName());
-            if (m.matches() && (method.getParameterTypes().length == 1))
-            {
-                setterMethods.add(method);
-            }
-        }
-        // 杩斿洖setter鏂规硶鍒楄〃
-        return setterMethods;
-    }
-
-    /**
-     * 鑾峰彇瀵硅薄鐨刧etter鏂规硶銆�
-     * 
-     * @param obj 瀵硅薄
-     * @return 瀵硅薄鐨刧etter鏂规硶鍒楄〃
-     */
-
-    public static List<Method> getGetterMethods(Object obj)
-    {
-        // getter鏂规硶鍒楄〃
-        List<Method> getterMethods = new ArrayList<Method>();
-        // 鑾峰彇鎵�鏈夋柟娉�
-        Method[] methods = obj.getClass().getMethods();
-        // 鏌ユ壘getter鏂规硶
-        for (Method method : methods)
-        {
-            Matcher m = GET_PATTERN.matcher(method.getName());
-            if (m.matches() && (method.getParameterTypes().length == 0))
-            {
-                getterMethods.add(method);
-            }
-        }
-        // 杩斿洖getter鏂规硶鍒楄〃
-        return getterMethods;
-    }
-
-    /**
-     * 妫�鏌ean鏂规硶鍚嶄腑鐨勫睘鎬у悕鏄惁鐩哥瓑銆�<br>
-     * 濡俫etName()鍜宻etName()灞炴�у悕涓�鏍凤紝getName()鍜宻etAge()灞炴�у悕涓嶄竴鏍枫��
-     * 
-     * @param m1 鏂规硶鍚�1
-     * @param m2 鏂规硶鍚�2
-     * @return 灞炴�у悕涓�鏍疯繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse
-     */
-
-    public static boolean isMethodPropEquals(String m1, String m2)
-    {
-        return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java
deleted file mode 100644
index 6e2636b..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.ruoyi.common.core.utils.file;
-
-import java.io.File;
-import java.util.Objects;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * 鏂囦欢绫诲瀷宸ュ叿绫�
- *
- * @author admin
- */
-public class FileTypeUtils
-{
-    /**
-     * 鑾峰彇鏂囦欢绫诲瀷
-     * <p>
-     * 渚嬪: ruoyi.txt, 杩斿洖: txt
-     * 
-     * @param file 鏂囦欢鍚�
-     * @return 鍚庣紑锛堜笉鍚�".")
-     */
-    public static String getFileType(File file)
-    {
-        if (null == file)
-        {
-            return StringUtils.EMPTY;
-        }
-        return getFileType(file.getName());
-    }
-
-    /**
-     * 鑾峰彇鏂囦欢绫诲瀷
-     * <p>
-     * 渚嬪: ruoyi.txt, 杩斿洖: txt
-     *
-     * @param fileName 鏂囦欢鍚�
-     * @return 鍚庣紑锛堜笉鍚�".")
-     */
-    public static String getFileType(String fileName)
-    {
-        int separatorIndex = fileName.lastIndexOf(".");
-        if (separatorIndex < 0)
-        {
-            return "";
-        }
-        return fileName.substring(separatorIndex + 1).toLowerCase();
-    }
-
-    /**
-     * 鑾峰彇鏂囦欢鍚嶇殑鍚庣紑
-     * 
-     * @param file 琛ㄥ崟鏂囦欢
-     * @return 鍚庣紑鍚�
-     */
-    public static final String getExtension(MultipartFile file)
-    {
-        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
-        if (StringUtils.isEmpty(extension))
-        {
-            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
-        }
-        return extension;
-    }
-
-    /**
-     * 鑾峰彇鏂囦欢绫诲瀷
-     * 
-     * @param photoByte 鏂囦欢瀛楄妭鐮�
-     * @return 鍚庣紑锛堜笉鍚�".")
-     */
-    public static String getFileExtendName(byte[] photoByte)
-    {
-        String strFileExtendName = "JPG";
-        if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
-                && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
-        {
-            strFileExtendName = "GIF";
-        }
-        else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
-        {
-            strFileExtendName = "JPG";
-        }
-        else if ((photoByte[0] == 66) && (photoByte[1] == 77))
-        {
-            strFileExtendName = "BMP";
-        }
-        else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
-        {
-            strFileExtendName = "PNG";
-        }
-        return strFileExtendName;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
deleted file mode 100644
index 24193f1..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package com.ruoyi.common.core.utils.file;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.ArrayUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 鏂囦欢澶勭悊宸ュ叿绫�
- * 
- * @author admin
- */
-public class FileUtils
-{
-    /** 瀛楃甯搁噺锛氭枩鏉� {@code '/'} */
-    public static final char SLASH = '/';
-
-    /** 瀛楃甯搁噺锛氬弽鏂滄潬 {@code '\\'} */
-    public static final char BACKSLASH = '\\';
-
-    public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
-
-    /**
-     * 杈撳嚭鎸囧畾鏂囦欢鐨刡yte鏁扮粍
-     * 
-     * @param filePath 鏂囦欢璺緞
-     * @param os 杈撳嚭娴�
-     * @return
-     */
-    public static void writeBytes(String filePath, OutputStream os) throws IOException
-    {
-        FileInputStream fis = null;
-        try
-        {
-            File file = new File(filePath);
-            if (!file.exists())
-            {
-                throw new FileNotFoundException(filePath);
-            }
-            fis = new FileInputStream(file);
-            byte[] b = new byte[1024];
-            int length;
-            while ((length = fis.read(b)) > 0)
-            {
-                os.write(b, 0, length);
-            }
-        }
-        catch (IOException e)
-        {
-            throw e;
-        }
-        finally
-        {
-            if (os != null)
-            {
-                try
-                {
-                    os.close();
-                }
-                catch (IOException e1)
-                {
-                    e1.printStackTrace();
-                }
-            }
-            if (fis != null)
-            {
-                try
-                {
-                    fis.close();
-                }
-                catch (IOException e1)
-                {
-                    e1.printStackTrace();
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍒犻櫎鏂囦欢
-     * 
-     * @param filePath 鏂囦欢
-     * @return
-     */
-    public static boolean deleteFile(String filePath)
-    {
-        boolean flag = false;
-        File file = new File(filePath);
-        // 璺緞涓烘枃浠朵笖涓嶄负绌哄垯杩涜鍒犻櫎
-        if (file.isFile() && file.exists())
-        {
-            flag = file.delete();
-        }
-        return flag;
-    }
-
-    /**
-     * 鏂囦欢鍚嶇О楠岃瘉
-     * 
-     * @param filename 鏂囦欢鍚嶇О
-     * @return true 姝e父 false 闈炴硶
-     */
-    public static boolean isValidFilename(String filename)
-    {
-        return filename.matches(FILENAME_PATTERN);
-    }
-
-    /**
-     * 妫�鏌ユ枃浠舵槸鍚﹀彲涓嬭浇
-     * 
-     * @param resource 闇�瑕佷笅杞界殑鏂囦欢
-     * @return true 姝e父 false 闈炴硶
-     */
-    public static boolean checkAllowDownload(String resource)
-    {
-        // 绂佹鐩綍涓婅烦绾у埆
-        if (StringUtils.contains(resource, ".."))
-        {
-            return false;
-        }
-        // 鍒ゆ柇鏄惁鍦ㄥ厑璁镐笅杞界殑鏂囦欢瑙勫垯鍐�
-        return ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource));
-    }
-
-    /**
-     * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮�
-     * 
-     * @param request 璇锋眰瀵硅薄
-     * @param fileName 鏂囦欢鍚�
-     * @return 缂栫爜鍚庣殑鏂囦欢鍚�
-     */
-    public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
-    {
-        final String agent = request.getHeader("USER-AGENT");
-        String filename = fileName;
-        if (agent.contains("MSIE"))
-        {
-            // IE娴忚鍣�
-            filename = URLEncoder.encode(filename, "utf-8");
-            filename = filename.replace("+", " ");
-        }
-        else if (agent.contains("Firefox"))
-        {
-            // 鐏嫄娴忚鍣�
-            filename = new String(fileName.getBytes(), "ISO8859-1");
-        }
-        else if (agent.contains("Chrome"))
-        {
-            // google娴忚鍣�
-            filename = URLEncoder.encode(filename, "utf-8");
-        }
-        else
-        {
-            // 鍏跺畠娴忚鍣�
-            filename = URLEncoder.encode(filename, "utf-8");
-        }
-        return filename;
-    }
-
-    /**
-     * 杩斿洖鏂囦欢鍚�
-     *
-     * @param filePath 鏂囦欢
-     * @return 鏂囦欢鍚�
-     */
-    public static String getName(String filePath)
-    {
-        if (null == filePath)
-        {
-            return null;
-        }
-        int len = filePath.length();
-        if (0 == len)
-        {
-            return filePath;
-        }
-        if (isFileSeparator(filePath.charAt(len - 1)))
-        {
-            // 浠ュ垎闅旂缁撳熬鐨勫幓鎺夌粨灏惧垎闅旂
-            len--;
-        }
-
-        int begin = 0;
-        char c;
-        for (int i = len - 1; i > -1; i--)
-        {
-            c = filePath.charAt(i);
-            if (isFileSeparator(c))
-            {
-                // 鏌ユ壘鏈�鍚庝竴涓矾寰勫垎闅旂锛�/鎴栬�匼锛�
-                begin = i + 1;
-                break;
-            }
-        }
-
-        return filePath.substring(begin, len);
-    }
-
-    /**
-     * 鏄惁涓篧indows鎴栬�匧inux锛圲nix锛夋枃浠跺垎闅旂<br>
-     * Windows骞冲彴涓嬪垎闅旂涓篭锛孡inux锛圲nix锛変负/
-     *
-     * @param c 瀛楃
-     * @return 鏄惁涓篧indows鎴栬�匧inux锛圲nix锛夋枃浠跺垎闅旂
-     */
-    public static boolean isFileSeparator(char c)
-    {
-        return SLASH == c || BACKSLASH == c;
-    }
-
-    /**
-     * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮�
-     *
-     * @param response 鍝嶅簲瀵硅薄
-     * @param realFileName 鐪熷疄鏂囦欢鍚�
-     * @return
-     */
-    public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
-    {
-        String percentEncodedFileName = percentEncode(realFileName);
-
-        StringBuilder contentDispositionValue = new StringBuilder();
-        contentDispositionValue.append("attachment; filename=")
-                .append(percentEncodedFileName)
-                .append(";")
-                .append("filename*=")
-                .append("utf-8''")
-                .append(percentEncodedFileName);
-
-        response.setHeader("Content-disposition", contentDispositionValue.toString());
-        response.setHeader("download-filename", percentEncodedFileName);
-    }
-
-    /**
-     * 鐧惧垎鍙风紪鐮佸伐鍏锋柟娉�
-     *
-     * @param s 闇�瑕佺櫨鍒嗗彿缂栫爜鐨勫瓧绗︿覆
-     * @return 鐧惧垎鍙风紪鐮佸悗鐨勫瓧绗︿覆
-     */
-    public static String percentEncode(String s) throws UnsupportedEncodingException
-    {
-        String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
-        return encode.replaceAll("\\+", "%20");
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
deleted file mode 100644
index a1e92ad..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.ruoyi.common.core.utils.file;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Arrays;
-import org.apache.poi.util.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * 鍥剧墖澶勭悊宸ュ叿绫�
- *
- * @author admin
- */
-public class ImageUtils
-{
-    private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
-
-    public static byte[] getImage(String imagePath)
-    {
-        InputStream is = getFile(imagePath);
-        try
-        {
-            return IOUtils.toByteArray(is);
-        }
-        catch (Exception e)
-        {
-            log.error("鍥剧墖鍔犺浇寮傚父 {}", e);
-            return null;
-        }
-        finally
-        {
-            IOUtils.closeQuietly(is);
-        }
-    }
-
-    public static InputStream getFile(String imagePath)
-    {
-        try
-        {
-            byte[] result = readFile(imagePath);
-            result = Arrays.copyOf(result, result.length);
-            return new ByteArrayInputStream(result);
-        }
-        catch (Exception e)
-        {
-            log.error("鑾峰彇鍥剧墖寮傚父 {}", e);
-        }
-        return null;
-    }
-
-    /**
-     * 璇诲彇鏂囦欢涓哄瓧鑺傛暟鎹�
-     * 
-     * @param url 鍦板潃
-     * @return 瀛楄妭鏁版嵁
-     */
-    public static byte[] readFile(String url)
-    {
-        InputStream in = null;
-        try
-        {
-            // 缃戠粶鍦板潃
-            URL urlObj = new URL(url);
-            URLConnection urlConnection = urlObj.openConnection();
-            urlConnection.setConnectTimeout(30 * 1000);
-            urlConnection.setReadTimeout(60 * 1000);
-            urlConnection.setDoInput(true);
-            in = urlConnection.getInputStream();
-            return IOUtils.toByteArray(in);
-        }
-        catch (Exception e)
-        {
-            log.error("璁块棶鏂囦欢寮傚父 {}", e);
-            return null;
-        }
-        finally
-        {
-            IOUtils.closeQuietly(in);
-        }
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java
deleted file mode 100644
index ee89d2f..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package com.ruoyi.common.core.utils.html;
-
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 杞箟鍜屽弽杞箟宸ュ叿绫�
- * 
- * @author admin
- */
-public class EscapeUtil
-{
-    public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)";
-
-    private static final char[][] TEXT = new char[64][];
-
-    static
-    {
-        for (int i = 0; i < 64; i++)
-        {
-            TEXT[i] = new char[] { (char) i };
-        }
-
-        // special HTML characters
-        TEXT['\''] = "&#039;".toCharArray(); // 鍗曞紩鍙�
-        TEXT['"'] = "&#34;".toCharArray(); // 鍙屽紩鍙�
-        TEXT['&'] = "&#38;".toCharArray(); // &绗�
-        TEXT['<'] = "&#60;".toCharArray(); // 灏忎簬鍙�
-        TEXT['>'] = "&#62;".toCharArray(); // 澶т簬鍙�
-    }
-
-    /**
-     * 杞箟鏂囨湰涓殑HTML瀛楃涓哄畨鍏ㄧ殑瀛楃
-     * 
-     * @param text 琚浆涔夌殑鏂囨湰
-     * @return 杞箟鍚庣殑鏂囨湰
-     */
-    public static String escape(String text)
-    {
-        return encode(text);
-    }
-
-    /**
-     * 杩樺師琚浆涔夌殑HTML鐗规畩瀛楃
-     * 
-     * @param content 鍖呭惈杞箟绗︾殑HTML鍐呭
-     * @return 杞崲鍚庣殑瀛楃涓�
-     */
-    public static String unescape(String content)
-    {
-        return decode(content);
-    }
-
-    /**
-     * 娓呴櫎鎵�鏈塇TML鏍囩锛屼絾鏄笉鍒犻櫎鏍囩鍐呯殑鍐呭
-     * 
-     * @param content 鏂囨湰
-     * @return 娓呴櫎鏍囩鍚庣殑鏂囨湰
-     */
-    public static String clean(String content)
-    {
-        return new HTMLFilter().filter(content);
-    }
-
-    /**
-     * Escape缂栫爜
-     * 
-     * @param text 琚紪鐮佺殑鏂囨湰
-     * @return 缂栫爜鍚庣殑瀛楃
-     */
-    private static String encode(String text)
-    {
-        if (StringUtils.isEmpty(text))
-        {
-            return StringUtils.EMPTY;
-        }
-
-        final StringBuilder tmp = new StringBuilder(text.length() * 6);
-        char c;
-        for (int i = 0; i < text.length(); i++)
-        {
-            c = text.charAt(i);
-            if (c < 256)
-            {
-                tmp.append("%");
-                if (c < 16)
-                {
-                    tmp.append("0");
-                }
-                tmp.append(Integer.toString(c, 16));
-            }
-            else
-            {
-                tmp.append("%u");
-                if (c <= 0xfff)
-                {
-                    // issue#I49JU8@Gitee
-                    tmp.append("0");
-                }
-                tmp.append(Integer.toString(c, 16));
-            }
-        }
-        return tmp.toString();
-    }
-
-    /**
-     * Escape瑙g爜
-     * 
-     * @param content 琚浆涔夌殑鍐呭
-     * @return 瑙g爜鍚庣殑瀛楃涓�
-     */
-    public static String decode(String content)
-    {
-        if (StringUtils.isEmpty(content))
-        {
-            return content;
-        }
-
-        StringBuilder tmp = new StringBuilder(content.length());
-        int lastPos = 0, pos = 0;
-        char ch;
-        while (lastPos < content.length())
-        {
-            pos = content.indexOf("%", lastPos);
-            if (pos == lastPos)
-            {
-                if (content.charAt(pos + 1) == 'u')
-                {
-                    ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16);
-                    tmp.append(ch);
-                    lastPos = pos + 6;
-                }
-                else
-                {
-                    ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16);
-                    tmp.append(ch);
-                    lastPos = pos + 3;
-                }
-            }
-            else
-            {
-                if (pos == -1)
-                {
-                    tmp.append(content.substring(lastPos));
-                    lastPos = content.length();
-                }
-                else
-                {
-                    tmp.append(content.substring(lastPos, pos));
-                    lastPos = pos;
-                }
-            }
-        }
-        return tmp.toString();
-    }
-
-    public static void main(String[] args)
-    {
-        String html = "<script>alert(1);</script>";
-        String escape = EscapeUtil.escape(html);
-        // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>";
-        // String html = "<123";
-        // String html = "123>";
-        System.out.println("clean: " + EscapeUtil.clean(html));
-        System.out.println("escape: " + escape);
-        System.out.println("unescape: " + EscapeUtil.unescape(escape));
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java
deleted file mode 100644
index 136eea0..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java
+++ /dev/null
@@ -1,570 +0,0 @@
-package com.ruoyi.common.core.utils.html;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * HTML杩囨护鍣紝鐢ㄤ簬鍘婚櫎XSS婕忔礊闅愭偅銆�
- *
- * @author admin
- */
-public final class HTMLFilter
-{
-    /**
-     * regex flag union representing /si modifiers in php
-     **/
-    private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL;
-    private static final Pattern P_COMMENTS = Pattern.compile("<!--(.*?)-->", Pattern.DOTALL);
-    private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI);
-    private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL);
-    private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI);
-    private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI);
-    private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI);
-    private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI);
-    private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI);
-    private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?");
-    private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?");
-    private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?");
-    private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))");
-    private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL);
-    private static final Pattern P_END_ARROW = Pattern.compile("^>");
-    private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)");
-    private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)");
-    private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)");
-    private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)");
-    private static final Pattern P_AMP = Pattern.compile("&");
-    private static final Pattern P_QUOTE = Pattern.compile("\"");
-    private static final Pattern P_LEFT_ARROW = Pattern.compile("<");
-    private static final Pattern P_RIGHT_ARROW = Pattern.compile(">");
-    private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>");
-
-    // @xxx could grow large... maybe use sesat's ReferenceMap
-    private static final ConcurrentMap<String, Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>();
-    private static final ConcurrentMap<String, Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>();
-
-    /**
-     * set of allowed html elements, along with allowed attributes for each element
-     **/
-    private final Map<String, List<String>> vAllowed;
-    /**
-     * counts of open tags for each (allowable) html element
-     **/
-    private final Map<String, Integer> vTagCounts = new HashMap<>();
-
-    /**
-     * html elements which must always be self-closing (e.g. "<img />")
-     **/
-    private final String[] vSelfClosingTags;
-    /**
-     * html elements which must always have separate opening and closing tags (e.g. "<b></b>")
-     **/
-    private final String[] vNeedClosingTags;
-    /**
-     * set of disallowed html elements
-     **/
-    private final String[] vDisallowed;
-    /**
-     * attributes which should be checked for valid protocols
-     **/
-    private final String[] vProtocolAtts;
-    /**
-     * allowed protocols
-     **/
-    private final String[] vAllowedProtocols;
-    /**
-     * tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />")
-     **/
-    private final String[] vRemoveBlanks;
-    /**
-     * entities allowed within html markup
-     **/
-    private final String[] vAllowedEntities;
-    /**
-     * flag determining whether comments are allowed in input String.
-     */
-    private final boolean stripComment;
-    private final boolean encodeQuotes;
-    /**
-     * flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "<b text </b>"
-     * becomes "<b> text </b>"). If set to false, unbalanced angle brackets will be html escaped.
-     */
-    private final boolean alwaysMakeTags;
-
-    /**
-     * Default constructor.
-     */
-    public HTMLFilter()
-    {
-        vAllowed = new HashMap<>();
-
-        final ArrayList<String> a_atts = new ArrayList<>();
-        a_atts.add("href");
-        a_atts.add("target");
-        vAllowed.put("a", a_atts);
-
-        final ArrayList<String> img_atts = new ArrayList<>();
-        img_atts.add("src");
-        img_atts.add("width");
-        img_atts.add("height");
-        img_atts.add("alt");
-        vAllowed.put("img", img_atts);
-
-        final ArrayList<String> no_atts = new ArrayList<>();
-        vAllowed.put("b", no_atts);
-        vAllowed.put("strong", no_atts);
-        vAllowed.put("i", no_atts);
-        vAllowed.put("em", no_atts);
-
-        vSelfClosingTags = new String[] { "img" };
-        vNeedClosingTags = new String[] { "a", "b", "strong", "i", "em" };
-        vDisallowed = new String[] {};
-        vAllowedProtocols = new String[] { "http", "mailto", "https" }; // no ftp.
-        vProtocolAtts = new String[] { "src", "href" };
-        vRemoveBlanks = new String[] { "a", "b", "strong", "i", "em" };
-        vAllowedEntities = new String[] { "amp", "gt", "lt", "quot" };
-        stripComment = true;
-        encodeQuotes = true;
-        alwaysMakeTags = false;
-    }
-
-    /**
-     * Map-parameter configurable constructor.
-     *
-     * @param conf map containing configuration. keys match field names.
-     */
-    @SuppressWarnings("unchecked")
-    public HTMLFilter(final Map<String, Object> conf)
-    {
-
-        assert conf.containsKey("vAllowed") : "configuration requires vAllowed";
-        assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags";
-        assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags";
-        assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed";
-        assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols";
-        assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts";
-        assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks";
-        assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities";
-
-        vAllowed = Collections.unmodifiableMap((HashMap<String, List<String>>) conf.get("vAllowed"));
-        vSelfClosingTags = (String[]) conf.get("vSelfClosingTags");
-        vNeedClosingTags = (String[]) conf.get("vNeedClosingTags");
-        vDisallowed = (String[]) conf.get("vDisallowed");
-        vAllowedProtocols = (String[]) conf.get("vAllowedProtocols");
-        vProtocolAtts = (String[]) conf.get("vProtocolAtts");
-        vRemoveBlanks = (String[]) conf.get("vRemoveBlanks");
-        vAllowedEntities = (String[]) conf.get("vAllowedEntities");
-        stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true;
-        encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true;
-        alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true;
-    }
-
-    private void reset()
-    {
-        vTagCounts.clear();
-    }
-
-    // ---------------------------------------------------------------
-    // my versions of some PHP library functions
-    public static String chr(final int decimal)
-    {
-        return String.valueOf((char) decimal);
-    }
-
-    public static String htmlSpecialChars(final String s)
-    {
-        String result = s;
-        result = regexReplace(P_AMP, "&amp;", result);
-        result = regexReplace(P_QUOTE, "&quot;", result);
-        result = regexReplace(P_LEFT_ARROW, "&lt;", result);
-        result = regexReplace(P_RIGHT_ARROW, "&gt;", result);
-        return result;
-    }
-
-    // ---------------------------------------------------------------
-
-    /**
-     * given a user submitted input String, filter out any invalid or restricted html.
-     *
-     * @param input text (i.e. submitted by a user) than may contain html
-     * @return "clean" version of input, with only valid, whitelisted html elements allowed
-     */
-    public String filter(final String input)
-    {
-        reset();
-        String s = input;
-
-        s = escapeComments(s);
-
-        s = balanceHTML(s);
-
-        s = checkTags(s);
-
-        s = processRemoveBlanks(s);
-
-        // s = validateEntities(s);
-
-        return s;
-    }
-
-    public boolean isAlwaysMakeTags()
-    {
-        return alwaysMakeTags;
-    }
-
-    public boolean isStripComments()
-    {
-        return stripComment;
-    }
-
-    private String escapeComments(final String s)
-    {
-        final Matcher m = P_COMMENTS.matcher(s);
-        final StringBuffer buf = new StringBuffer();
-        if (m.find())
-        {
-            final String match = m.group(1); // (.*?)
-            m.appendReplacement(buf, Matcher.quoteReplacement("<!--" + htmlSpecialChars(match) + "-->"));
-        }
-        m.appendTail(buf);
-
-        return buf.toString();
-    }
-
-    private String balanceHTML(String s)
-    {
-        if (alwaysMakeTags)
-        {
-            //
-            // try and form html
-            //
-            s = regexReplace(P_END_ARROW, "", s);
-            // 涓嶈拷鍔犵粨鏉熸爣绛�
-            s = regexReplace(P_BODY_TO_END, "<$1>", s);
-            s = regexReplace(P_XML_CONTENT, "$1<$2", s);
-
-        }
-        else
-        {
-            //
-            // escape stray brackets
-            //
-            s = regexReplace(P_STRAY_LEFT_ARROW, "&lt;$1", s);
-            s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2&gt;<", s);
-
-            //
-            // the last regexp causes '<>' entities to appear
-            // (we need to do a lookahead assertion so that the last bracket can
-            // be used in the next pass of the regexp)
-            //
-            s = regexReplace(P_BOTH_ARROWS, "", s);
-        }
-
-        return s;
-    }
-
-    private String checkTags(String s)
-    {
-        Matcher m = P_TAGS.matcher(s);
-
-        final StringBuffer buf = new StringBuffer();
-        while (m.find())
-        {
-            String replaceStr = m.group(1);
-            replaceStr = processTag(replaceStr);
-            m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr));
-        }
-        m.appendTail(buf);
-
-        // these get tallied in processTag
-        // (remember to reset before subsequent calls to filter method)
-        final StringBuilder sBuilder = new StringBuilder(buf.toString());
-        for (String key : vTagCounts.keySet())
-        {
-            for (int ii = 0; ii < vTagCounts.get(key); ii++)
-            {
-                sBuilder.append("</").append(key).append(">");
-            }
-        }
-        s = sBuilder.toString();
-
-        return s;
-    }
-
-    private String processRemoveBlanks(final String s)
-    {
-        String result = s;
-        for (String tag : vRemoveBlanks)
-        {
-            if (!P_REMOVE_PAIR_BLANKS.containsKey(tag))
-            {
-                P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?></" + tag + ">"));
-            }
-            result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result);
-            if (!P_REMOVE_SELF_BLANKS.containsKey(tag))
-            {
-                P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>"));
-            }
-            result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result);
-        }
-
-        return result;
-    }
-
-    private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s)
-    {
-        Matcher m = regex_pattern.matcher(s);
-        return m.replaceAll(replacement);
-    }
-
-    private String processTag(final String s)
-    {
-        // ending tags
-        Matcher m = P_END_TAG.matcher(s);
-        if (m.find())
-        {
-            final String name = m.group(1).toLowerCase();
-            if (allowed(name))
-            {
-                if (!inArray(name, vSelfClosingTags))
-                {
-                    if (vTagCounts.containsKey(name))
-                    {
-                        vTagCounts.put(name, vTagCounts.get(name) - 1);
-                        return "</" + name + ">";
-                    }
-                }
-            }
-        }
-
-        // starting tags
-        m = P_START_TAG.matcher(s);
-        if (m.find())
-        {
-            final String name = m.group(1).toLowerCase();
-            final String body = m.group(2);
-            String ending = m.group(3);
-
-            // debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" );
-            if (allowed(name))
-            {
-                final StringBuilder params = new StringBuilder();
-
-                final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body);
-                final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body);
-                final List<String> paramNames = new ArrayList<>();
-                final List<String> paramValues = new ArrayList<>();
-                while (m2.find())
-                {
-                    paramNames.add(m2.group(1)); // ([a-z0-9]+)
-                    paramValues.add(m2.group(3)); // (.*?)
-                }
-                while (m3.find())
-                {
-                    paramNames.add(m3.group(1)); // ([a-z0-9]+)
-                    paramValues.add(m3.group(3)); // ([^\"\\s']+)
-                }
-
-                String paramName, paramValue;
-                for (int ii = 0; ii < paramNames.size(); ii++)
-                {
-                    paramName = paramNames.get(ii).toLowerCase();
-                    paramValue = paramValues.get(ii);
-
-                    // debug( "paramName='" + paramName + "'" );
-                    // debug( "paramValue='" + paramValue + "'" );
-                    // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) );
-
-                    if (allowedAttribute(name, paramName))
-                    {
-                        if (inArray(paramName, vProtocolAtts))
-                        {
-                            paramValue = processParamProtocol(paramValue);
-                        }
-                        params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\\\"");
-                    }
-                }
-
-                if (inArray(name, vSelfClosingTags))
-                {
-                    ending = " /";
-                }
-
-                if (inArray(name, vNeedClosingTags))
-                {
-                    ending = "";
-                }
-
-                if (ending == null || ending.length() < 1)
-                {
-                    if (vTagCounts.containsKey(name))
-                    {
-                        vTagCounts.put(name, vTagCounts.get(name) + 1);
-                    }
-                    else
-                    {
-                        vTagCounts.put(name, 1);
-                    }
-                }
-                else
-                {
-                    ending = " /";
-                }
-                return "<" + name + params + ending + ">";
-            }
-            else
-            {
-                return "";
-            }
-        }
-
-        // comments
-        m = P_COMMENT.matcher(s);
-        if (!stripComment && m.find())
-        {
-            return "<" + m.group() + ">";
-        }
-
-        return "";
-    }
-
-    private String processParamProtocol(String s)
-    {
-        s = decodeEntities(s);
-        final Matcher m = P_PROTOCOL.matcher(s);
-        if (m.find())
-        {
-            final String protocol = m.group(1);
-            if (!inArray(protocol, vAllowedProtocols))
-            {
-                // bad protocol, turn into local anchor link instead
-                s = "#" + s.substring(protocol.length() + 1);
-                if (s.startsWith("#//"))
-                {
-                    s = "#" + s.substring(3);
-                }
-            }
-        }
-
-        return s;
-    }
-
-    private String decodeEntities(String s)
-    {
-        StringBuffer buf = new StringBuffer();
-
-        Matcher m = P_ENTITY.matcher(s);
-        while (m.find())
-        {
-            final String match = m.group(1);
-            final int decimal = Integer.decode(match).intValue();
-            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
-        }
-        m.appendTail(buf);
-        s = buf.toString();
-
-        buf = new StringBuffer();
-        m = P_ENTITY_UNICODE.matcher(s);
-        while (m.find())
-        {
-            final String match = m.group(1);
-            final int decimal = Integer.valueOf(match, 16).intValue();
-            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
-        }
-        m.appendTail(buf);
-        s = buf.toString();
-
-        buf = new StringBuffer();
-        m = P_ENCODE.matcher(s);
-        while (m.find())
-        {
-            final String match = m.group(1);
-            final int decimal = Integer.valueOf(match, 16).intValue();
-            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
-        }
-        m.appendTail(buf);
-        s = buf.toString();
-
-        s = validateEntities(s);
-        return s;
-    }
-
-    private String validateEntities(final String s)
-    {
-        StringBuffer buf = new StringBuffer();
-
-        // validate entities throughout the string
-        Matcher m = P_VALID_ENTITIES.matcher(s);
-        while (m.find())
-        {
-            final String one = m.group(1); // ([^&;]*)
-            final String two = m.group(2); // (?=(;|&|$))
-            m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two)));
-        }
-        m.appendTail(buf);
-
-        return encodeQuotes(buf.toString());
-    }
-
-    private String encodeQuotes(final String s)
-    {
-        if (encodeQuotes)
-        {
-            StringBuffer buf = new StringBuffer();
-            Matcher m = P_VALID_QUOTES.matcher(s);
-            while (m.find())
-            {
-                final String one = m.group(1); // (>|^)
-                final String two = m.group(2); // ([^<]+?)
-                final String three = m.group(3); // (<|$)
-                // 涓嶆浛鎹㈠弻寮曞彿涓�&quot;锛岄槻姝son鏍煎紡鏃犳晥 regexReplace(P_QUOTE, "&quot;", two)
-                m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three));
-            }
-            m.appendTail(buf);
-            return buf.toString();
-        }
-        else
-        {
-            return s;
-        }
-    }
-
-    private String checkEntity(final String preamble, final String term)
-    {
-
-        return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&amp;" + preamble;
-    }
-
-    private boolean isValidEntity(final String entity)
-    {
-        return inArray(entity, vAllowedEntities);
-    }
-
-    private static boolean inArray(final String s, final String[] array)
-    {
-        for (String item : array)
-        {
-            if (item != null && item.equals(s))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean allowed(final String name)
-    {
-        return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed);
-    }
-
-    private boolean allowedAttribute(final String name, final String paramName)
-    {
-        return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName));
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
deleted file mode 100644
index 966e306..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
+++ /dev/null
@@ -1,382 +0,0 @@
-package com.ruoyi.common.core.utils.ip;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 鑾峰彇IP鏂规硶
- * 
- * @author admin
- */
-public class IpUtils
-{
-    public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)";
-    // 鍖归厤 ip
-    public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")";
-    public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))";
-    // 鍖归厤缃戞
-    public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")";
-
-    /**
-     * 鑾峰彇瀹㈡埛绔疘P
-     * 
-     * @return IP鍦板潃
-     */
-    public static String getIpAddr()
-    {
-        return getIpAddr(ServletUtils.getRequest());
-    }
-
-    /**
-     * 鑾峰彇瀹㈡埛绔疘P
-     * 
-     * @param request 璇锋眰瀵硅薄
-     * @return IP鍦板潃
-     */
-    public static String getIpAddr(HttpServletRequest request)
-    {
-        if (request == null)
-        {
-            return "unknown";
-        }
-        String ip = request.getHeader("x-forwarded-for");
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
-        {
-            ip = request.getHeader("Proxy-Client-IP");
-        }
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
-        {
-            ip = request.getHeader("X-Forwarded-For");
-        }
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
-        {
-            ip = request.getHeader("WL-Proxy-Client-IP");
-        }
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
-        {
-            ip = request.getHeader("X-Real-IP");
-        }
-
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
-        {
-            ip = request.getRemoteAddr();
-        }
-
-        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip);
-    }
-
-    /**
-     * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃
-     * 
-     * @param ip IP鍦板潃
-     * @return 缁撴灉
-     */
-    public static boolean internalIp(String ip)
-    {
-        byte[] addr = textToNumericFormatV4(ip);
-        return internalIp(addr) || "127.0.0.1".equals(ip);
-    }
-
-    /**
-     * 妫�鏌ユ槸鍚︿负鍐呴儴IP鍦板潃
-     * 
-     * @param addr byte鍦板潃
-     * @return 缁撴灉
-     */
-    private static boolean internalIp(byte[] addr)
-    {
-        if (StringUtils.isNull(addr) || addr.length < 2)
-        {
-            return true;
-        }
-        final byte b0 = addr[0];
-        final byte b1 = addr[1];
-        // 10.x.x.x/8
-        final byte SECTION_1 = 0x0A;
-        // 172.16.x.x/12
-        final byte SECTION_2 = (byte) 0xAC;
-        final byte SECTION_3 = (byte) 0x10;
-        final byte SECTION_4 = (byte) 0x1F;
-        // 192.168.x.x/16
-        final byte SECTION_5 = (byte) 0xC0;
-        final byte SECTION_6 = (byte) 0xA8;
-        switch (b0)
-        {
-            case SECTION_1:
-                return true;
-            case SECTION_2:
-                if (b1 >= SECTION_3 && b1 <= SECTION_4)
-                {
-                    return true;
-                }
-            case SECTION_5:
-                switch (b1)
-                {
-                    case SECTION_6:
-                        return true;
-                }
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * 灏咺Pv4鍦板潃杞崲鎴愬瓧鑺�
-     * 
-     * @param text IPv4鍦板潃
-     * @return byte 瀛楄妭
-     */
-    public static byte[] textToNumericFormatV4(String text)
-    {
-        if (text.length() == 0)
-        {
-            return null;
-        }
-
-        byte[] bytes = new byte[4];
-        String[] elements = text.split("\\.", -1);
-        try
-        {
-            long l;
-            int i;
-            switch (elements.length)
-            {
-                case 1:
-                    l = Long.parseLong(elements[0]);
-                    if ((l < 0L) || (l > 4294967295L))
-                    {
-                        return null;
-                    }
-                    bytes[0] = (byte) (int) (l >> 24 & 0xFF);
-                    bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF);
-                    bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
-                    bytes[3] = (byte) (int) (l & 0xFF);
-                    break;
-                case 2:
-                    l = Integer.parseInt(elements[0]);
-                    if ((l < 0L) || (l > 255L))
-                    {
-                        return null;
-                    }
-                    bytes[0] = (byte) (int) (l & 0xFF);
-                    l = Integer.parseInt(elements[1]);
-                    if ((l < 0L) || (l > 16777215L))
-                    {
-                        return null;
-                    }
-                    bytes[1] = (byte) (int) (l >> 16 & 0xFF);
-                    bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
-                    bytes[3] = (byte) (int) (l & 0xFF);
-                    break;
-                case 3:
-                    for (i = 0; i < 2; ++i)
-                    {
-                        l = Integer.parseInt(elements[i]);
-                        if ((l < 0L) || (l > 255L))
-                        {
-                            return null;
-                        }
-                        bytes[i] = (byte) (int) (l & 0xFF);
-                    }
-                    l = Integer.parseInt(elements[2]);
-                    if ((l < 0L) || (l > 65535L))
-                    {
-                        return null;
-                    }
-                    bytes[2] = (byte) (int) (l >> 8 & 0xFF);
-                    bytes[3] = (byte) (int) (l & 0xFF);
-                    break;
-                case 4:
-                    for (i = 0; i < 4; ++i)
-                    {
-                        l = Integer.parseInt(elements[i]);
-                        if ((l < 0L) || (l > 255L))
-                        {
-                            return null;
-                        }
-                        bytes[i] = (byte) (int) (l & 0xFF);
-                    }
-                    break;
-                default:
-                    return null;
-            }
-        }
-        catch (NumberFormatException e)
-        {
-            return null;
-        }
-        return bytes;
-    }
-
-    /**
-     * 鑾峰彇IP鍦板潃
-     * 
-     * @return 鏈湴IP鍦板潃
-     */
-    public static String getHostIp()
-    {
-        try
-        {
-            return InetAddress.getLocalHost().getHostAddress();
-        }
-        catch (UnknownHostException e)
-        {
-        }
-        return "127.0.0.1";
-    }
-
-    /**
-     * 鑾峰彇涓绘満鍚�
-     * 
-     * @return 鏈湴涓绘満鍚�
-     */
-    public static String getHostName()
-    {
-        try
-        {
-            return InetAddress.getLocalHost().getHostName();
-        }
-        catch (UnknownHostException e)
-        {
-        }
-        return "鏈煡";
-    }
-
-    /**
-     * 浠庡绾у弽鍚戜唬鐞嗕腑鑾峰緱绗竴涓潪unknown IP鍦板潃
-     *
-     * @param ip 鑾峰緱鐨処P鍦板潃
-     * @return 绗竴涓潪unknown IP鍦板潃
-     */
-    public static String getMultistageReverseProxyIp(String ip)
-    {
-        // 澶氱骇鍙嶅悜浠g悊妫�娴�
-        if (ip != null && ip.indexOf(",") > 0)
-        {
-            final String[] ips = ip.trim().split(",");
-            for (String subIp : ips)
-            {
-                if (false == isUnknown(subIp))
-                {
-                    ip = subIp;
-                    break;
-                }
-            }
-        }
-        return StringUtils.substring(ip, 0, 255);
-    }
-
-    /**
-     * 妫�娴嬬粰瀹氬瓧绗︿覆鏄惁涓烘湭鐭ワ紝澶氱敤浜庢娴婬TTP璇锋眰鐩稿叧
-     *
-     * @param checkString 琚娴嬬殑瀛楃涓�
-     * @return 鏄惁鏈煡
-     */
-    public static boolean isUnknown(String checkString)
-    {
-        return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString);
-    }
-
-    /**
-     * 鏄惁涓篒P
-     */
-    public static boolean isIP(String ip)
-    {
-        return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP);
-    }
-
-    /**
-     * 鏄惁涓篒P锛屾垨 *涓洪棿闅旂殑閫氶厤绗﹀湴鍧�
-     */
-    public static boolean isIpWildCard(String ip)
-    {
-        return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD);
-    }
-
-    /**
-     * 妫�娴嬪弬鏁版槸鍚﹀湪ip閫氶厤绗﹂噷
-     */
-    public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip)
-    {
-        String[] s1 = ipWildCard.split("\\.");
-        String[] s2 = ip.split("\\.");
-        boolean isMatchedSeg = true;
-        for (int i = 0; i < s1.length && !s1[i].equals("*"); i++)
-        {
-            if (!s1[i].equals(s2[i]))
-            {
-                isMatchedSeg = false;
-                break;
-            }
-        }
-        return isMatchedSeg;
-    }
-
-    /**
-     * 鏄惁涓虹壒瀹氭牸寮忓:鈥�10.10.10.1-10.10.10.99鈥濈殑ip娈靛瓧绗︿覆
-     */
-    public static boolean isIPSegment(String ipSeg)
-    {
-        return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG);
-    }
-
-    /**
-     * 鍒ゆ柇ip鏄惁鍦ㄦ寚瀹氱綉娈典腑
-     */
-    public static boolean ipIsInNetNoCheck(String iparea, String ip)
-    {
-        int idx = iparea.indexOf('-');
-        String[] sips = iparea.substring(0, idx).split("\\.");
-        String[] sipe = iparea.substring(idx + 1).split("\\.");
-        String[] sipt = ip.split("\\.");
-        long ips = 0L, ipe = 0L, ipt = 0L;
-        for (int i = 0; i < 4; ++i)
-        {
-            ips = ips << 8 | Integer.parseInt(sips[i]);
-            ipe = ipe << 8 | Integer.parseInt(sipe[i]);
-            ipt = ipt << 8 | Integer.parseInt(sipt[i]);
-        }
-        if (ips > ipe)
-        {
-            long t = ips;
-            ips = ipe;
-            ipe = t;
-        }
-        return ips <= ipt && ipt <= ipe;
-    }
-
-    /**
-     * 鏍¢獙ip鏄惁绗﹀悎杩囨护涓茶鍒�
-     * 
-     * @param filter 杩囨护IP鍒楄〃,鏀寔鍚庣紑'*'閫氶厤,鏀寔缃戞濡�:`10.10.10.1-10.10.10.99`
-     * @param ip 鏍¢獙IP鍦板潃
-     * @return boolean 缁撴灉
-     */
-    public static boolean isMatchedIp(String filter, String ip)
-    {
-        if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip))
-        {
-            return false;
-        }
-        String[] ips = filter.split(";");
-        for (String iStr : ips)
-        {
-            if (isIP(iStr) && iStr.equals(ip))
-            {
-                return true;
-            }
-            else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip))
-            {
-                return true;
-            }
-            else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java
deleted file mode 100644
index 58573fe..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.common.core.utils.poi;
-
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Workbook;
-
-/**
- * Excel鏁版嵁鏍煎紡澶勭悊閫傞厤鍣�
- * 
- * @author admin
- */
-public interface ExcelHandlerAdapter
-{
-    /**
-     * 鏍煎紡鍖�
-     * 
-     * @param value 鍗曞厓鏍兼暟鎹��
-     * @param args excel娉ㄨВargs鍙傛暟缁�
-     * @param cell 鍗曞厓鏍煎璞�
-     * @param wb 宸ヤ綔绨垮璞�
-     *
-     * @return 澶勭悊鍚庣殑鍊�
-     */
-    Object format(Object value, String[] args, Cell cell, Workbook wb);
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java
deleted file mode 100644
index e8238a5..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/IdUtils.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ruoyi.common.core.utils.uuid;
-
-/**
- * ID鐢熸垚鍣ㄥ伐鍏风被
- * 
- * @author admin
- */
-public class IdUtils
-{
-    /**
-     * 鑾峰彇闅忔満UUID
-     * 
-     * @return 闅忔満UUID
-     */
-    public static String randomUUID()
-    {
-        return UUID.randomUUID().toString();
-    }
-
-    /**
-     * 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎
-     * 
-     * @return 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎
-     */
-    public static String simpleUUID()
-    {
-        return UUID.randomUUID().toString(true);
-    }
-
-    /**
-     * 鑾峰彇闅忔満UUID锛屼娇鐢ㄦ�ц兘鏇村ソ鐨凾hreadLocalRandom鐢熸垚UUID
-     * 
-     * @return 闅忔満UUID
-     */
-    public static String fastUUID()
-    {
-        return UUID.fastUUID().toString();
-    }
-
-    /**
-     * 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎锛屼娇鐢ㄦ�ц兘鏇村ソ鐨凾hreadLocalRandom鐢熸垚UUID
-     * 
-     * @return 绠�鍖栫殑UUID锛屽幓鎺変簡妯嚎
-     */
-    public static String fastSimpleUUID()
-    {
-        return UUID.fastUUID().toString(true);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java
deleted file mode 100644
index 3cb9245..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/Seq.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.ruoyi.common.core.utils.uuid;
-
-import java.util.concurrent.atomic.AtomicInteger;
-import com.ruoyi.common.core.utils.DateUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * @author admin 搴忓垪鐢熸垚绫�
- */
-public class Seq
-{
-    // 閫氱敤搴忓垪绫诲瀷
-    public static final String commSeqType = "COMMON";
-
-    // 涓婁紶搴忓垪绫诲瀷
-    public static final String uploadSeqType = "UPLOAD";
-
-    // 閫氱敤鎺ュ彛搴忓垪鏁�
-    private static AtomicInteger commSeq = new AtomicInteger(1);
-
-    // 涓婁紶鎺ュ彛搴忓垪鏁�
-    private static AtomicInteger uploadSeq = new AtomicInteger(1);
-
-    // 鏈哄櫒鏍囪瘑
-    private static final String machineCode = "A";
-
-    /**
-     * 鑾峰彇閫氱敤搴忓垪鍙�
-     * 
-     * @return 搴忓垪鍊�
-     */
-    public static String getId()
-    {
-        return getId(commSeqType);
-    }
-    
-    /**
-     * 榛樿16浣嶅簭鍒楀彿 yyMMddHHmmss + 涓�浣嶆満鍣ㄦ爣璇� + 3闀垮害寰幆閫掑瀛楃涓�
-     * 
-     * @return 搴忓垪鍊�
-     */
-    public static String getId(String type)
-    {
-        AtomicInteger atomicInt = commSeq;
-        if (uploadSeqType.equals(type))
-        {
-            atomicInt = uploadSeq;
-        }
-        return getId(atomicInt, 3);
-    }
-
-    /**
-     * 閫氱敤鎺ュ彛搴忓垪鍙� yyMMddHHmmss + 涓�浣嶆満鍣ㄦ爣璇� + length闀垮害寰幆閫掑瀛楃涓�
-     * 
-     * @param atomicInt 搴忓垪鏁�
-     * @param length 鏁板�奸暱搴�
-     * @return 搴忓垪鍊�
-     */
-    public static String getId(AtomicInteger atomicInt, int length)
-    {
-        String result = DateUtils.dateTimeNow();
-        result += machineCode;
-        result += getSeq(atomicInt, length);
-        return result;
-    }
-
-    /**
-     * 搴忓垪寰幆閫掑瀛楃涓瞇1, 10 鐨� (length)骞傛鏂�), 鐢�0宸﹁ˉ榻恖ength浣嶆暟
-     * 
-     * @return 搴忓垪鍊�
-     */
-    private synchronized static String getSeq(AtomicInteger atomicInt, int length)
-    {
-        // 鍏堝彇鍊煎啀+1
-        int value = atomicInt.getAndIncrement();
-
-        // 濡傛灉鏇存柊鍚庡��>=10 鐨� (length)骞傛鏂瑰垯閲嶇疆涓�1
-        int maxSeq = (int) Math.pow(10, length);
-        if (atomicInt.get() >= maxSeq)
-        {
-            atomicInt.set(1);
-        }
-        // 杞瓧绗︿覆锛岀敤0宸﹁ˉ榻�
-        return StringUtils.padl(value, length);
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java
deleted file mode 100644
index 1eb4f62..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/UUID.java
+++ /dev/null
@@ -1,484 +0,0 @@
-package com.ruoyi.common.core.utils.uuid;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.Random;
-import java.util.concurrent.ThreadLocalRandom;
-import com.ruoyi.common.core.exception.UtilException;
-
-/**
- * 鎻愪緵閫氱敤鍞竴璇嗗埆鐮侊紙universally unique identifier锛夛紙UUID锛夊疄鐜�
- *
- * @author admin
- */
-public final class UUID implements java.io.Serializable, Comparable<UUID>
-{
-    private static final long serialVersionUID = -1185015143654744140L;
-
-    /**
-     * SecureRandom 鐨勫崟渚�
-     *
-     */
-    private static class Holder
-    {
-        static final SecureRandom numberGenerator = getSecureRandom();
-    }
-
-    /** 姝UID鐨勬渶楂�64鏈夋晥浣� */
-    private final long mostSigBits;
-
-    /** 姝UID鐨勬渶浣�64鏈夋晥浣� */
-    private final long leastSigBits;
-
-    /**
-     * 绉佹湁鏋勯��
-     * 
-     * @param data 鏁版嵁
-     */
-    private UUID(byte[] data)
-    {
-        long msb = 0;
-        long lsb = 0;
-        assert data.length == 16 : "data must be 16 bytes in length";
-        for (int i = 0; i < 8; i++)
-        {
-            msb = (msb << 8) | (data[i] & 0xff);
-        }
-        for (int i = 8; i < 16; i++)
-        {
-            lsb = (lsb << 8) | (data[i] & 0xff);
-        }
-        this.mostSigBits = msb;
-        this.leastSigBits = lsb;
-    }
-
-    /**
-     * 浣跨敤鎸囧畾鐨勬暟鎹瀯閫犳柊鐨� UUID銆�
-     *
-     * @param mostSigBits 鐢ㄤ簬 {@code UUID} 鐨勬渶楂樻湁鏁� 64 浣�
-     * @param leastSigBits 鐢ㄤ簬 {@code UUID} 鐨勬渶浣庢湁鏁� 64 浣�
-     */
-    public UUID(long mostSigBits, long leastSigBits)
-    {
-        this.mostSigBits = mostSigBits;
-        this.leastSigBits = leastSigBits;
-    }
-
-    /**
-     * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� 
-     * 
-     * @return 闅忔満鐢熸垚鐨� {@code UUID}
-     */
-    public static UUID fastUUID()
-    {
-        return randomUUID(false);
-    }
-
-    /**
-     * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� 浣跨敤鍔犲瘑鐨勫己浼殢鏈烘暟鐢熸垚鍣ㄧ敓鎴愯 UUID銆�
-     * 
-     * @return 闅忔満鐢熸垚鐨� {@code UUID}
-     */
-    public static UUID randomUUID()
-    {
-        return randomUUID(true);
-    }
-
-    /**
-     * 鑾峰彇绫诲瀷 4锛堜吉闅忔満鐢熸垚鐨勶級UUID 鐨勯潤鎬佸伐鍘傘�� 浣跨敤鍔犲瘑鐨勫己浼殢鏈烘暟鐢熸垚鍣ㄧ敓鎴愯 UUID銆�
-     * 
-     * @param isSecure 鏄惁浣跨敤{@link SecureRandom}濡傛灉鏄彲浠ヨ幏寰楁洿瀹夊叏鐨勯殢鏈虹爜锛屽惁鍒欏彲浠ュ緱鍒版洿濂界殑鎬ц兘
-     * @return 闅忔満鐢熸垚鐨� {@code UUID}
-     */
-    public static UUID randomUUID(boolean isSecure)
-    {
-        final Random ng = isSecure ? Holder.numberGenerator : getRandom();
-
-        byte[] randomBytes = new byte[16];
-        ng.nextBytes(randomBytes);
-        randomBytes[6] &= 0x0f; /* clear version */
-        randomBytes[6] |= 0x40; /* set to version 4 */
-        randomBytes[8] &= 0x3f; /* clear variant */
-        randomBytes[8] |= 0x80; /* set to IETF variant */
-        return new UUID(randomBytes);
-    }
-
-    /**
-     * 鏍规嵁鎸囧畾鐨勫瓧鑺傛暟缁勮幏鍙栫被鍨� 3锛堝熀浜庡悕绉扮殑锛塙UID 鐨勯潤鎬佸伐鍘傘��
-     *
-     * @param name 鐢ㄤ簬鏋勯�� UUID 鐨勫瓧鑺傛暟缁勩��
-     *
-     * @return 鏍规嵁鎸囧畾鏁扮粍鐢熸垚鐨� {@code UUID}
-     */
-    public static UUID nameUUIDFromBytes(byte[] name)
-    {
-        MessageDigest md;
-        try
-        {
-            md = MessageDigest.getInstance("MD5");
-        }
-        catch (NoSuchAlgorithmException nsae)
-        {
-            throw new InternalError("MD5 not supported");
-        }
-        byte[] md5Bytes = md.digest(name);
-        md5Bytes[6] &= 0x0f; /* clear version */
-        md5Bytes[6] |= 0x30; /* set to version 3 */
-        md5Bytes[8] &= 0x3f; /* clear variant */
-        md5Bytes[8] |= 0x80; /* set to IETF variant */
-        return new UUID(md5Bytes);
-    }
-
-    /**
-     * 鏍规嵁 {@link #toString()} 鏂规硶涓弿杩扮殑瀛楃涓叉爣鍑嗚〃绀哄舰寮忓垱寤簕@code UUID}銆�
-     *
-     * @param name 鎸囧畾 {@code UUID} 瀛楃涓�
-     * @return 鍏锋湁鎸囧畾鍊肩殑 {@code UUID}
-     * @throws IllegalArgumentException 濡傛灉 name 涓� {@link #toString} 涓弿杩扮殑瀛楃涓茶〃绀哄舰寮忎笉绗︽姏鍑烘寮傚父
-     *
-     */
-    public static UUID fromString(String name)
-    {
-        String[] components = name.split("-");
-        if (components.length != 5)
-        {
-            throw new IllegalArgumentException("Invalid UUID string: " + name);
-        }
-        for (int i = 0; i < 5; i++)
-        {
-            components[i] = "0x" + components[i];
-        }
-
-        long mostSigBits = Long.decode(components[0]).longValue();
-        mostSigBits <<= 16;
-        mostSigBits |= Long.decode(components[1]).longValue();
-        mostSigBits <<= 16;
-        mostSigBits |= Long.decode(components[2]).longValue();
-
-        long leastSigBits = Long.decode(components[3]).longValue();
-        leastSigBits <<= 48;
-        leastSigBits |= Long.decode(components[4]).longValue();
-
-        return new UUID(mostSigBits, leastSigBits);
-    }
-
-    /**
-     * 杩斿洖姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶浣庢湁鏁� 64 浣嶃��
-     *
-     * @return 姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶浣庢湁鏁� 64 浣嶃��
-     */
-    public long getLeastSignificantBits()
-    {
-        return leastSigBits;
-    }
-
-    /**
-     * 杩斿洖姝� UUID 鐨� 128 浣嶅�间腑鐨勬渶楂樻湁鏁� 64 浣嶃��
-     *
-     * @return 姝� UUID 鐨� 128 浣嶅�间腑鏈�楂樻湁鏁� 64 浣嶃��
-     */
-    public long getMostSignificantBits()
-    {
-        return mostSigBits;
-    }
-
-    /**
-     * 涓庢 {@code UUID} 鐩稿叧鑱旂殑鐗堟湰鍙�. 鐗堟湰鍙锋弿杩版 {@code UUID} 鏄浣曠敓鎴愮殑銆�
-     * <p>
-     * 鐗堟湰鍙峰叿鏈変互涓嬪惈鎰�:
-     * <ul>
-     * <li>1 鍩轰簬鏃堕棿鐨� UUID
-     * <li>2 DCE 瀹夊叏 UUID
-     * <li>3 鍩轰簬鍚嶇О鐨� UUID
-     * <li>4 闅忔満鐢熸垚鐨� UUID
-     * </ul>
-     *
-     * @return 姝� {@code UUID} 鐨勭増鏈彿
-     */
-    public int version()
-    {
-        // Version is bits masked by 0x000000000000F000 in MS long
-        return (int) ((mostSigBits >> 12) & 0x0f);
-    }
-
-    /**
-     * 涓庢 {@code UUID} 鐩稿叧鑱旂殑鍙樹綋鍙枫�傚彉浣撳彿鎻忚堪 {@code UUID} 鐨勫竷灞�銆�
-     * <p>
-     * 鍙樹綋鍙峰叿鏈変互涓嬪惈鎰忥細
-     * <ul>
-     * <li>0 涓� NCS 鍚戝悗鍏煎淇濈暀
-     * <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF&nbsp;RFC&nbsp;4122</a>(Leach-Salz), 鐢ㄤ簬姝ょ被
-     * <li>6 淇濈暀锛屽井杞悜鍚庡吋瀹�
-     * <li>7 淇濈暀渚涗互鍚庡畾涔変娇鐢�
-     * </ul>
-     *
-     * @return 姝� {@code UUID} 鐩稿叧鑱旂殑鍙樹綋鍙�
-     */
-    public int variant()
-    {
-        // This field is composed of a varying number of bits.
-        // 0 - - Reserved for NCS backward compatibility
-        // 1 0 - The IETF aka Leach-Salz variant (used by this class)
-        // 1 1 0 Reserved, Microsoft backward compatibility
-        // 1 1 1 Reserved for future definition.
-        return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63));
-    }
-
-    /**
-     * 涓庢 UUID 鐩稿叧鑱旂殑鏃堕棿鎴冲�笺��
-     *
-     * <p>
-     * 60 浣嶇殑鏃堕棿鎴冲�兼牴鎹 {@code UUID} 鐨� time_low銆乼ime_mid 鍜� time_hi 瀛楁鏋勯�犮��<br>
-     * 鎵�寰楀埌鐨勬椂闂存埑浠� 100 姣井绉掍负鍗曚綅锛屼粠 UTC锛堥�氱敤鍗忚皟鏃堕棿锛� 1582 骞� 10 鏈� 15 鏃ラ浂鏃跺紑濮嬨��
-     *
-     * <p>
-     * 鏃堕棿鎴冲�间粎鍦ㄥ湪鍩轰簬鏃堕棿鐨� UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆�<br>
-     * 濡傛灉姝� {@code UUID} 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑� UnsupportedOperationException銆�
-     *
-     * @throws UnsupportedOperationException 濡傛灉姝� {@code UUID} 涓嶆槸 version 涓� 1 鐨� UUID銆�
-     */
-    public long timestamp() throws UnsupportedOperationException
-    {
-        checkTimeBase();
-        return (mostSigBits & 0x0FFFL) << 48//
-                | ((mostSigBits >> 16) & 0x0FFFFL) << 32//
-                | mostSigBits >>> 32;
-    }
-
-    /**
-     * 涓庢 UUID 鐩稿叧鑱旂殑鏃堕挓搴忓垪鍊笺��
-     *
-     * <p>
-     * 14 浣嶇殑鏃堕挓搴忓垪鍊兼牴鎹 UUID 鐨� clock_seq 瀛楁鏋勯�犮�俢lock_seq 瀛楁鐢ㄤ簬淇濊瘉鍦ㄥ熀浜庢椂闂寸殑 UUID 涓殑鏃堕棿鍞竴鎬с��
-     * <p>
-     * {@code clockSequence} 鍊间粎鍦ㄥ熀浜庢椂闂寸殑 UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆� 濡傛灉姝� UUID 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑�
-     * UnsupportedOperationException銆�
-     *
-     * @return 姝� {@code UUID} 鐨勬椂閽熷簭鍒�
-     *
-     * @throws UnsupportedOperationException 濡傛灉姝� UUID 鐨� version 涓嶄负 1
-     */
-    public int clockSequence() throws UnsupportedOperationException
-    {
-        checkTimeBase();
-        return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48);
-    }
-
-    /**
-     * 涓庢 UUID 鐩稿叧鐨勮妭鐐瑰�笺��
-     *
-     * <p>
-     * 48 浣嶇殑鑺傜偣鍊兼牴鎹 UUID 鐨� node 瀛楁鏋勯�犮�傛瀛楁鏃ㄥ湪鐢ㄤ簬淇濆瓨鏈哄櫒鐨� IEEE 802 鍦板潃锛岃鍦板潃鐢ㄤ簬鐢熸垚姝� UUID 浠ヤ繚璇佺┖闂村敮涓�鎬с��
-     * <p>
-     * 鑺傜偣鍊间粎鍦ㄥ熀浜庢椂闂寸殑 UUID锛堝叾 version 绫诲瀷涓� 1锛変腑鎵嶆湁鎰忎箟銆�<br>
-     * 濡傛灉姝� UUID 涓嶆槸鍩轰簬鏃堕棿鐨� UUID锛屽垯姝ゆ柟娉曟姏鍑� UnsupportedOperationException銆�
-     *
-     * @return 姝� {@code UUID} 鐨勮妭鐐瑰��
-     *
-     * @throws UnsupportedOperationException 濡傛灉姝� UUID 鐨� version 涓嶄负 1
-     */
-    public long node() throws UnsupportedOperationException
-    {
-        checkTimeBase();
-        return leastSigBits & 0x0000FFFFFFFFFFFFL;
-    }
-
-    /**
-     * 杩斿洖姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡銆�
-     *
-     * <p>
-     * UUID 鐨勫瓧绗︿覆琛ㄧず褰㈠紡鐢辨 BNF 鎻忚堪锛�
-     * 
-     * <pre>
-     * {@code
-     * UUID                   = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node>
-     * time_low               = 4*<hexOctet>
-     * time_mid               = 2*<hexOctet>
-     * time_high_and_version  = 2*<hexOctet>
-     * variant_and_sequence   = 2*<hexOctet>
-     * node                   = 6*<hexOctet>
-     * hexOctet               = <hexDigit><hexDigit>
-     * hexDigit               = [0-9a-fA-F]
-     * }
-     * </pre>
-     * 
-     * </blockquote>
-     *
-     * @return 姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡
-     * @see #toString(boolean)
-     */
-    @Override
-    public String toString()
-    {
-        return toString(false);
-    }
-
-    /**
-     * 杩斿洖姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡銆�
-     *
-     * <p>
-     * UUID 鐨勫瓧绗︿覆琛ㄧず褰㈠紡鐢辨 BNF 鎻忚堪锛�
-     * 
-     * <pre>
-     * {@code
-     * UUID                   = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node>
-     * time_low               = 4*<hexOctet>
-     * time_mid               = 2*<hexOctet>
-     * time_high_and_version  = 2*<hexOctet>
-     * variant_and_sequence   = 2*<hexOctet>
-     * node                   = 6*<hexOctet>
-     * hexOctet               = <hexDigit><hexDigit>
-     * hexDigit               = [0-9a-fA-F]
-     * }
-     * </pre>
-     * 
-     * </blockquote>
-     *
-     * @param isSimple 鏄惁绠�鍗曟ā寮忥紝绠�鍗曟ā寮忎负涓嶅甫'-'鐨刄UID瀛楃涓�
-     * @return 姝@code UUID} 鐨勫瓧绗︿覆琛ㄧ幇褰㈠紡
-     */
-    public String toString(boolean isSimple)
-    {
-        final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
-        // time_low
-        builder.append(digits(mostSigBits >> 32, 8));
-        if (false == isSimple)
-        {
-            builder.append('-');
-        }
-        // time_mid
-        builder.append(digits(mostSigBits >> 16, 4));
-        if (false == isSimple)
-        {
-            builder.append('-');
-        }
-        // time_high_and_version
-        builder.append(digits(mostSigBits, 4));
-        if (false == isSimple)
-        {
-            builder.append('-');
-        }
-        // variant_and_sequence
-        builder.append(digits(leastSigBits >> 48, 4));
-        if (false == isSimple)
-        {
-            builder.append('-');
-        }
-        // node
-        builder.append(digits(leastSigBits, 12));
-
-        return builder.toString();
-    }
-
-    /**
-     * 杩斿洖姝� UUID 鐨勫搱甯岀爜銆�
-     *
-     * @return UUID 鐨勫搱甯岀爜鍊笺��
-     */
-    @Override
-    public int hashCode()
-    {
-        long hilo = mostSigBits ^ leastSigBits;
-        return ((int) (hilo >> 32)) ^ (int) hilo;
-    }
-
-    /**
-     * 灏嗘瀵硅薄涓庢寚瀹氬璞℃瘮杈冦��
-     * <p>
-     * 褰撲笖浠呭綋鍙傛暟涓嶄负 {@code null}銆佽�屾槸涓�涓� UUID 瀵硅薄銆佸叿鏈変笌姝� UUID 鐩稿悓鐨� varriant銆佸寘鍚浉鍚岀殑鍊硷紙姣忎竴浣嶅潎鐩稿悓锛夋椂锛岀粨鏋滄墠涓� {@code true}銆�
-     *
-     * @param obj 瑕佷笌涔嬫瘮杈冪殑瀵硅薄
-     *
-     * @return 濡傛灉瀵硅薄鐩稿悓锛屽垯杩斿洖 {@code true}锛涘惁鍒欒繑鍥� {@code false}
-     */
-    @Override
-    public boolean equals(Object obj)
-    {
-        if ((null == obj) || (obj.getClass() != UUID.class))
-        {
-            return false;
-        }
-        UUID id = (UUID) obj;
-        return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits);
-    }
-
-    // Comparison Operations
-
-    /**
-     * 灏嗘 UUID 涓庢寚瀹氱殑 UUID 姣旇緝銆�
-     *
-     * <p>
-     * 濡傛灉涓や釜 UUID 涓嶅悓锛屼笖绗竴涓� UUID 鐨勬渶楂樻湁鏁堝瓧娈靛ぇ浜庣浜屼釜 UUID 鐨勫搴斿瓧娈碉紝鍒欑涓�涓� UUID 澶т簬绗簩涓� UUID銆�
-     *
-     * @param val 涓庢 UUID 姣旇緝鐨� UUID
-     *
-     * @return 鍦ㄦ UUID 灏忎簬銆佺瓑浜庢垨澶т簬 val 鏃讹紝鍒嗗埆杩斿洖 -1銆�0 鎴� 1銆�
-     *
-     */
-    @Override
-    public int compareTo(UUID val)
-    {
-        // The ordering is intentionally set up so that the UUIDs
-        // can simply be numerically compared as two numbers
-        return (this.mostSigBits < val.mostSigBits ? -1 : //
-                (this.mostSigBits > val.mostSigBits ? 1 : //
-                        (this.leastSigBits < val.leastSigBits ? -1 : //
-                                (this.leastSigBits > val.leastSigBits ? 1 : //
-                                        0))));
-    }
-
-    // -------------------------------------------------------------------------------------------------------------------
-    // Private method start
-    /**
-     * 杩斿洖鎸囧畾鏁板瓧瀵瑰簲鐨刪ex鍊�
-     * 
-     * @param val 鍊�
-     * @param digits 浣�
-     * @return 鍊�
-     */
-    private static String digits(long val, int digits)
-    {
-        long hi = 1L << (digits * 4);
-        return Long.toHexString(hi | (val & (hi - 1))).substring(1);
-    }
-
-    /**
-     * 妫�鏌ユ槸鍚︿负time-based鐗堟湰UUID
-     */
-    private void checkTimeBase()
-    {
-        if (version() != 1)
-        {
-            throw new UnsupportedOperationException("Not a time-based UUID");
-        }
-    }
-
-    /**
-     * 鑾峰彇{@link SecureRandom}锛岀被鎻愪緵鍔犲瘑鐨勫己闅忔満鏁扮敓鎴愬櫒 (RNG)
-     * 
-     * @return {@link SecureRandom}
-     */
-    public static SecureRandom getSecureRandom()
-    {
-        try
-        {
-            return SecureRandom.getInstance("SHA1PRNG");
-        }
-        catch (NoSuchAlgorithmException e)
-        {
-            throw new UtilException(e);
-        }
-    }
-
-    /**
-     * 鑾峰彇闅忔満鏁扮敓鎴愬櫒瀵硅薄<br>
-     * ThreadLocalRandom鏄疛DK 7涔嬪悗鎻愪緵骞跺彂浜х敓闅忔満鏁帮紝鑳藉瑙e喅澶氫釜绾跨▼鍙戠敓鐨勭珵浜変簤澶恒��
-     * 
-     * @return {@link ThreadLocalRandom}
-     */
-    public static ThreadLocalRandom getRandom()
-    {
-        return ThreadLocalRandom.current();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
deleted file mode 100644
index 04dedb0..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/controller/BaseController.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.ruoyi.common.core.web.controller;
-
-import java.beans.PropertyEditorSupport;
-import java.util.Date;
-import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.InitBinder;
-import com.github.pagehelper.PageInfo;
-import com.ruoyi.common.core.constant.HttpStatus;
-import com.ruoyi.common.core.utils.DateUtils;
-import com.ruoyi.common.core.utils.PageUtils;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.web.page.TableDataInfo;
-
-/**
- * web灞傞�氱敤鏁版嵁澶勭悊
- * 
- * @author admin
- */
-public class BaseController
-{
-    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    /**
-     * 灏嗗墠鍙颁紶閫掕繃鏉ョ殑鏃ユ湡鏍煎紡鐨勫瓧绗︿覆锛岃嚜鍔ㄨ浆鍖栦负Date绫诲瀷
-     */
-    @InitBinder
-    public void initBinder(WebDataBinder binder)
-    {
-        // Date 绫诲瀷杞崲
-        binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
-        {
-            @Override
-            public void setAsText(String text)
-            {
-                setValue(DateUtils.parseDate(text));
-            }
-        });
-    }
-
-    /**
-     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁
-     */
-    protected void startPage()
-    {
-        PageUtils.startPage();
-    }
-
-    /**
-     * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲�
-     */
-    protected void clearPage()
-    {
-        PageUtils.clearPage();
-    }
-
-    /**
-     * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁
-     */
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    protected TableDataInfo getDataTable(List<?> list)
-    {
-        TableDataInfo rspData = new TableDataInfo();
-        rspData.setCode(HttpStatus.SUCCESS);
-        rspData.setRows(list);
-        rspData.setMsg("鏌ヨ鎴愬姛");
-        rspData.setTotal(new PageInfo(list).getTotal());
-        return rspData;
-    }
-
-    /**
-     * 杩斿洖鎴愬姛
-     */
-    public AjaxResult success()
-    {
-        return AjaxResult.success();
-    }
-
-    /**
-     * 杩斿洖鎴愬姛娑堟伅
-     */
-    public AjaxResult success(String message)
-    {
-        return AjaxResult.success(message);
-    }
-
-    /**
-     * 杩斿洖鎴愬姛娑堟伅
-     */
-    public AjaxResult success(Object data)
-    {
-        return AjaxResult.success(data);
-    }
-
-    /**
-     * 杩斿洖澶辫触娑堟伅
-     */
-    public AjaxResult error()
-    {
-        return AjaxResult.error();
-    }
-
-    /**
-     * 杩斿洖澶辫触娑堟伅
-     */
-    public AjaxResult error(String message)
-    {
-        return AjaxResult.error(message);
-    }
-
-    /**
-     * 杩斿洖璀﹀憡娑堟伅
-     */
-    public AjaxResult warn(String message)
-    {
-        return AjaxResult.warn(message);
-    }
-
-    /**
-     * 鍝嶅簲杩斿洖缁撴灉
-     * 
-     * @param rows 褰卞搷琛屾暟
-     * @return 鎿嶄綔缁撴灉
-     */
-    protected AjaxResult toAjax(int rows)
-    {
-        return rows > 0 ? AjaxResult.success() : AjaxResult.error();
-    }
-
-    /**
-     * 鍝嶅簲杩斿洖缁撴灉
-     * 
-     * @param result 缁撴灉
-     * @return 鎿嶄綔缁撴灉
-     */
-    protected AjaxResult toAjax(boolean result)
-    {
-        return result ? success() : error();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java
deleted file mode 100644
index f2a11ca..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/AjaxResult.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package com.ruoyi.common.core.web.domain;
-
-import java.util.HashMap;
-import java.util.Objects;
-import com.ruoyi.common.core.constant.HttpStatus;
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 鎿嶄綔娑堟伅鎻愰啋
- * 
- * @author admin
- */
-public class AjaxResult extends HashMap<String, Object>
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鐘舵�佺爜 */
-    public static final String CODE_TAG = "code";
-
-    /** 杩斿洖鍐呭 */
-    public static final String MSG_TAG = "msg";
-
-    /** 鏁版嵁瀵硅薄 */
-    public static final String DATA_TAG = "data";
-
-    /**
-     * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄锛屼娇鍏惰〃绀轰竴涓┖娑堟伅銆�
-     */
-    public AjaxResult()
-    {
-    }
-
-    /**
-     * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄
-     * 
-     * @param code 鐘舵�佺爜
-     * @param msg 杩斿洖鍐呭
-     */
-    public AjaxResult(int code, String msg)
-    {
-        super.put(CODE_TAG, code);
-        super.put(MSG_TAG, msg);
-    }
-
-    /**
-     * 鍒濆鍖栦竴涓柊鍒涘缓鐨� AjaxResult 瀵硅薄
-     * 
-     * @param code 鐘舵�佺爜
-     * @param msg 杩斿洖鍐呭
-     * @param data 鏁版嵁瀵硅薄
-     */
-    public AjaxResult(int code, String msg, Object data)
-    {
-        super.put(CODE_TAG, code);
-        super.put(MSG_TAG, msg);
-        if (StringUtils.isNotNull(data))
-        {
-            super.put(DATA_TAG, data);
-        }
-    }
-
-    /**
-     * 杩斿洖鎴愬姛娑堟伅
-     * 
-     * @return 鎴愬姛娑堟伅
-     */
-    public static AjaxResult success()
-    {
-        return AjaxResult.success("鎿嶄綔鎴愬姛");
-    }
-
-    /**
-     * 杩斿洖鎴愬姛鏁版嵁
-     * 
-     * @return 鎴愬姛娑堟伅
-     */
-    public static AjaxResult success(Object data)
-    {
-        return AjaxResult.success("鎿嶄綔鎴愬姛", data);
-    }
-
-    /**
-     * 杩斿洖鎴愬姛娑堟伅
-     * 
-     * @param msg 杩斿洖鍐呭
-     * @return 鎴愬姛娑堟伅
-     */
-    public static AjaxResult success(String msg)
-    {
-        return AjaxResult.success(msg, null);
-    }
-
-    /**
-     * 杩斿洖鎴愬姛娑堟伅
-     * 
-     * @param msg 杩斿洖鍐呭
-     * @param data 鏁版嵁瀵硅薄
-     * @return 鎴愬姛娑堟伅
-     */
-    public static AjaxResult success(String msg, Object data)
-    {
-        return new AjaxResult(HttpStatus.SUCCESS, msg, data);
-    }
-
-    /**
-     * 杩斿洖璀﹀憡娑堟伅
-     *
-     * @param msg 杩斿洖鍐呭
-     * @return 璀﹀憡娑堟伅
-     */
-    public static AjaxResult warn(String msg)
-    {
-        return AjaxResult.warn(msg, null);
-    }
-
-    /**
-     * 杩斿洖璀﹀憡娑堟伅
-     *
-     * @param msg 杩斿洖鍐呭
-     * @param data 鏁版嵁瀵硅薄
-     * @return 璀﹀憡娑堟伅
-     */
-    public static AjaxResult warn(String msg, Object data)
-    {
-        return new AjaxResult(HttpStatus.WARN, msg, data);
-    }
-
-    /**
-     * 杩斿洖閿欒娑堟伅
-     * 
-     * @return 閿欒娑堟伅
-     */
-    public static AjaxResult error()
-    {
-        return AjaxResult.error("鎿嶄綔澶辫触");
-    }
-
-    /**
-     * 杩斿洖閿欒娑堟伅
-     * 
-     * @param msg 杩斿洖鍐呭
-     * @return 閿欒娑堟伅
-     */
-    public static AjaxResult error(String msg)
-    {
-        return AjaxResult.error(msg, null);
-    }
-
-    /**
-     * 杩斿洖閿欒娑堟伅
-     * 
-     * @param msg 杩斿洖鍐呭
-     * @param data 鏁版嵁瀵硅薄
-     * @return 閿欒娑堟伅
-     */
-    public static AjaxResult error(String msg, Object data)
-    {
-        return new AjaxResult(HttpStatus.ERROR, msg, data);
-    }
-
-    /**
-     * 杩斿洖閿欒娑堟伅
-     * 
-     * @param code 鐘舵�佺爜
-     * @param msg 杩斿洖鍐呭
-     * @return 閿欒娑堟伅
-     */
-    public static AjaxResult error(int code, String msg)
-    {
-        return new AjaxResult(code, msg, null);
-    }
-
-    /**
-     * 鏄惁涓烘垚鍔熸秷鎭�
-     *
-     * @return 缁撴灉
-     */
-    public boolean isSuccess()
-    {
-        return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG));
-    }
-
-    /**
-     * 鏄惁涓鸿鍛婃秷鎭�
-     *
-     * @return 缁撴灉
-     */
-    public boolean isWarn()
-    {
-        return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG));
-    }
-
-    /**
-     * 鏄惁涓洪敊璇秷鎭�
-     *
-     * @return 缁撴灉
-     */
-    public boolean isError()
-    {
-        return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG));
-    }
-
-    /**
-     * 鏂逛究閾惧紡璋冪敤
-     *
-     * @param key
-     * @param value
-     * @return
-     */
-    @Override
-    public AjaxResult put(String key, Object value)
-    {
-        super.put(key, value);
-        return this;
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
deleted file mode 100644
index b6b74a3..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.ruoyi.common.core.web.domain;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-/**
- * Entity鍩虹被
- * 
- * @author admin
- */
-public class BaseEntity implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鎼滅储鍊� */
-    @JsonIgnore
-    private String searchValue;
-
-    /** 鍒涘缓鑰� */
-    private String createBy;
-
-    /** 鍒涘缓鏃堕棿 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    /** 鏇存柊鑰� */
-    private String updateBy;
-
-    /** 鏇存柊鏃堕棿 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date updateTime;
-
-    /** 澶囨敞 */
-    private String remark;
-
-    /** 璇锋眰鍙傛暟 */
-    @JsonInclude(JsonInclude.Include.NON_EMPTY)
-    private Map<String, Object> params;
-
-    public String getSearchValue()
-    {
-        return searchValue;
-    }
-
-    public void setSearchValue(String searchValue)
-    {
-        this.searchValue = searchValue;
-    }
-
-    public String getCreateBy()
-    {
-        return createBy;
-    }
-
-    public void setCreateBy(String createBy)
-    {
-        this.createBy = createBy;
-    }
-
-    public Date getCreateTime()
-    {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime)
-    {
-        this.createTime = createTime;
-    }
-
-    public String getUpdateBy()
-    {
-        return updateBy;
-    }
-
-    public void setUpdateBy(String updateBy)
-    {
-        this.updateBy = updateBy;
-    }
-
-    public Date getUpdateTime()
-    {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime)
-    {
-        this.updateTime = updateTime;
-    }
-
-    public String getRemark()
-    {
-        return remark;
-    }
-
-    public void setRemark(String remark)
-    {
-        this.remark = remark;
-    }
-
-    public Map<String, Object> getParams()
-    {
-        if (params == null)
-        {
-            params = new HashMap<>();
-        }
-        return params;
-    }
-
-    public void setParams(Map<String, Object> params)
-    {
-        this.params = params;
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java
deleted file mode 100644
index 6539e9d..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/TreeEntity.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.ruoyi.common.core.web.domain;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tree鍩虹被
- * 
- * @author admin
- */
-public class TreeEntity extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鐖惰彍鍗曞悕绉� */
-    private String parentName;
-
-    /** 鐖惰彍鍗旾D */
-    private Long parentId;
-
-    /** 鏄剧ず椤哄簭 */
-    private Integer orderNum;
-
-    /** 绁栫骇鍒楄〃 */
-    private String ancestors;
-
-    /** 瀛愰儴闂� */
-    private List<?> children = new ArrayList<>();
-
-    public String getParentName()
-    {
-        return parentName;
-    }
-
-    public void setParentName(String parentName)
-    {
-        this.parentName = parentName;
-    }
-
-    public Long getParentId()
-    {
-        return parentId;
-    }
-
-    public void setParentId(Long parentId)
-    {
-        this.parentId = parentId;
-    }
-
-    public Integer getOrderNum()
-    {
-        return orderNum;
-    }
-
-    public void setOrderNum(Integer orderNum)
-    {
-        this.orderNum = orderNum;
-    }
-
-    public String getAncestors()
-    {
-        return ancestors;
-    }
-
-    public void setAncestors(String ancestors)
-    {
-        this.ancestors = ancestors;
-    }
-
-    public List<?> getChildren()
-    {
-        return children;
-    }
-
-    public void setChildren(List<?> children)
-    {
-        this.children = children;
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java
deleted file mode 100644
index d6074f5..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/PageDomain.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.ruoyi.common.core.web.page;
-
-import com.ruoyi.common.core.utils.StringUtils;
-
-/**
- * 鍒嗛〉鏁版嵁
- * 
- * @author admin
- */
-public class PageDomain
-{
-    /** 褰撳墠璁板綍璧峰绱㈠紩 */
-    private Integer pageNum;
-
-    /** 姣忛〉鏄剧ず璁板綍鏁� */
-    private Integer pageSize;
-
-    /** 鎺掑簭鍒� */
-    private String orderByColumn;
-
-    /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */
-    private String isAsc = "asc";
-
-    /** 鍒嗛〉鍙傛暟鍚堢悊鍖� */
-    private Boolean reasonable = true;
-
-    public String getOrderBy()
-    {
-        if (StringUtils.isEmpty(orderByColumn))
-        {
-            return "";
-        }
-        return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
-    }
-
-    public Integer getPageNum()
-    {
-        return pageNum;
-    }
-
-    public void setPageNum(Integer pageNum)
-    {
-        this.pageNum = pageNum;
-    }
-
-    public Integer getPageSize()
-    {
-        return pageSize;
-    }
-
-    public void setPageSize(Integer pageSize)
-    {
-        this.pageSize = pageSize;
-    }
-
-    public String getOrderByColumn()
-    {
-        return orderByColumn;
-    }
-
-    public void setOrderByColumn(String orderByColumn)
-    {
-        this.orderByColumn = orderByColumn;
-    }
-
-    public String getIsAsc()
-    {
-        return isAsc;
-    }
-
-    public void setIsAsc(String isAsc)
-    {
-        if (StringUtils.isNotEmpty(isAsc))
-        {
-            // 鍏煎鍓嶇鎺掑簭绫诲瀷
-            if ("ascending".equals(isAsc))
-            {
-                isAsc = "asc";
-            }
-            else if ("descending".equals(isAsc))
-            {
-                isAsc = "desc";
-            }
-            this.isAsc = isAsc;
-        }
-    }
-
-    public Boolean getReasonable()
-    {
-        if (StringUtils.isNull(reasonable))
-        {
-            return Boolean.TRUE;
-        }
-        return reasonable;
-    }
-
-    public void setReasonable(Boolean reasonable)
-    {
-        this.reasonable = reasonable;
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java
deleted file mode 100644
index 4985103..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.ruoyi.common.core.web.page;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 琛ㄦ牸鍒嗛〉鏁版嵁瀵硅薄
- * 
- * @author admin
- */
-public class TableDataInfo implements Serializable
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 鎬昏褰曟暟 */
-    private long total;
-
-    /** 鍒楄〃鏁版嵁 */
-    private List<?> rows;
-
-    /** 娑堟伅鐘舵�佺爜 */
-    private int code;
-
-    /** 娑堟伅鍐呭 */
-    private String msg;
-
-    /**
-     * 琛ㄦ牸鏁版嵁瀵硅薄
-     */
-    public TableDataInfo()
-    {
-    }
-
-    /**
-     * 鍒嗛〉
-     * 
-     * @param list 鍒楄〃鏁版嵁
-     * @param total 鎬昏褰曟暟
-     */
-    public TableDataInfo(List<?> list, int total)
-    {
-        this.rows = list;
-        this.total = total;
-    }
-
-    public long getTotal()
-    {
-        return total;
-    }
-
-    public void setTotal(long total)
-    {
-        this.total = total;
-    }
-
-    public List<?> getRows()
-    {
-        return rows;
-    }
-
-    public void setRows(List<?> rows)
-    {
-        this.rows = rows;
-    }
-
-    public int getCode()
-    {
-        return code;
-    }
-
-    public void setCode(int code)
-    {
-        this.code = code;
-    }
-
-    public String getMsg()
-    {
-        return msg;
-    }
-
-    public void setMsg(String msg)
-    {
-        this.msg = msg;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java b/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java
deleted file mode 100644
index 961a150..0000000
--- a/se-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableSupport.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ruoyi.common.core.web.page;
-
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.core.utils.ServletUtils;
-
-/**
- * 琛ㄦ牸鏁版嵁澶勭悊
- * 
- * @author admin
- */
-public class TableSupport
-{
-    /**
-     * 褰撳墠璁板綍璧峰绱㈠紩
-     */
-    public static final String PAGE_NUM = "pageNum";
-
-    /**
-     * 姣忛〉鏄剧ず璁板綍鏁�
-     */
-    public static final String PAGE_SIZE = "pageSize";
-
-    /**
-     * 鎺掑簭鍒�
-     */
-    public static final String ORDER_BY_COLUMN = "orderByColumn";
-
-    /**
-     * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc".
-     */
-    public static final String IS_ASC = "isAsc";
-
-    /**
-     * 鍒嗛〉鍙傛暟鍚堢悊鍖�
-     */
-    public static final String REASONABLE = "reasonable";
-
-    /**
-     * 灏佽鍒嗛〉瀵硅薄
-     */
-    public static PageDomain getPageDomain()
-    {
-        PageDomain pageDomain = new PageDomain();
-        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
-        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
-        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
-        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
-        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
-        return pageDomain;
-    }
-
-    public static PageDomain buildPageRequest()
-    {
-        return getPageDomain();
-    }
-}
diff --git a/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 30c45a0..0000000
--- a/se-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-com.ruoyi.common.core.utils.SpringUtils
diff --git a/se-common/ruoyi-common-datascope/pom.xml b/se-common/ruoyi-common-datascope/pom.xml
deleted file mode 100644
index cdd5fe8..0000000
--- a/se-common/ruoyi-common-datascope/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-datascope</artifactId>
-	
-    <description>
-        ruoyi-common-datascope鏉冮檺鑼冨洿
-    </description>
-
-    <dependencies>
-		
-        <!-- RuoYi Common Security -->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-security</artifactId>
-        </dependency>
-        
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java b/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java
deleted file mode 100644
index 0d26b99..0000000
--- a/se-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/annotation/DataScope.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.ruoyi.common.datascope.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 鏁版嵁鏉冮檺杩囨护娉ㄨВ
- * 
- * @author admin
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface DataScope
-{
-    /**
-     * 閮ㄩ棬琛ㄧ殑鍒悕
-     */
-    public String deptAlias() default "";
-
-    /**
-     * 鐢ㄦ埛琛ㄧ殑鍒悕
-     */
-    public String userAlias() default "";
-
-    /**
-     * 鏉冮檺瀛楃锛堢敤浜庡涓鑹插尮閰嶇鍚堣姹傜殑鏉冮檺锛夐粯璁ゆ牴鎹潈闄愭敞瑙RequiresPermissions鑾峰彇锛屽涓潈闄愮敤閫楀彿鍒嗛殧寮�鏉�
-     */
-    public String permission() default "";
-}
diff --git a/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 8c4b0e4..0000000
--- a/se-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-com.ruoyi.common.datascope.aspect.DataScopeAspect
diff --git a/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java b/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java
deleted file mode 100644
index 34ca129..0000000
--- a/se-common/ruoyi-common-datasource/src/main/java/com/ruoyi/common/datasource/annotation/Slave.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.common.datasource.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import com.baomidou.dynamic.datasource.annotation.DS;
-
-/**
- * 浠庡簱鏁版嵁婧�
- * 
- * @author admin
- */
-@Target({ ElementType.TYPE, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@DS("slave")
-public @interface Slave
-{
-
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-log/pom.xml b/se-common/ruoyi-common-log/pom.xml
deleted file mode 100644
index a4f5126..0000000
--- a/se-common/ruoyi-common-log/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-log</artifactId>
-	
-    <description>
-        ruoyi-common-log鏃ュ織璁板綍
-    </description>
-
-    <dependencies>
-		
-        <!-- RuoYi Common Security -->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-security</artifactId>
-        </dependency>
-        
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java b/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java
deleted file mode 100644
index 539d834..0000000
--- a/se-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/filter/PropertyPreExcludeFilter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.common.log.filter;
-
-import com.alibaba.fastjson2.filter.SimplePropertyPreFilter;
-
-/**
- * 鎺掗櫎JSON鏁忔劅灞炴��
- * 
- * @author admin
- */
-public class PropertyPreExcludeFilter extends SimplePropertyPreFilter
-{
-    public PropertyPreExcludeFilter()
-    {
-    }
-
-    public PropertyPreExcludeFilter addExcludes(String... filters)
-    {
-        for (int i = 0; i < filters.length; i++)
-        {
-            this.getExcludes().add(filters[i]);
-        }
-        return this;
-    }
-}
diff --git a/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index ee96a67..0000000
--- a/se-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,2 +0,0 @@
-com.ruoyi.common.log.service.AsyncLogService
-com.ruoyi.common.log.aspect.LogAspect
diff --git a/se-common/ruoyi-common-redis/pom.xml b/se-common/ruoyi-common-redis/pom.xml
deleted file mode 100644
index 3a97c56..0000000
--- a/se-common/ruoyi-common-redis/pom.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-redis</artifactId>
-	
-    <description>
-        ruoyi-common-redis缂撳瓨鏈嶅姟
-    </description>
-
-    <dependencies>
-		
-        <!-- SpringBoot Boot Redis -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
-        </dependency>
-        
-        <!-- RuoYi Common Core-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-core</artifactId>
-        </dependency>
-        
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java
deleted file mode 100644
index e6b0ebf..0000000
--- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.ruoyi.common.redis.configure;
-
-import java.nio.charset.Charset;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.data.redis.serializer.SerializationException;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONReader;
-import com.alibaba.fastjson2.JSONWriter;
-import com.alibaba.fastjson2.filter.Filter;
-import com.ruoyi.common.core.constant.Constants;
-
-/**
- * Redis浣跨敤FastJson搴忓垪鍖�
- * 
- * @author admin
- */
-public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
-{
-    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
-
-    static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR);
-
-    private Class<T> clazz;
-
-    public FastJson2JsonRedisSerializer(Class<T> clazz)
-    {
-        super();
-        this.clazz = clazz;
-    }
-
-    @Override
-    public byte[] serialize(T t) throws SerializationException
-    {
-        if (t == null)
-        {
-            return new byte[0];
-        }
-        return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET);
-    }
-
-    @Override
-    public T deserialize(byte[] bytes) throws SerializationException
-    {
-        if (bytes == null || bytes.length <= 0)
-        {
-            return null;
-        }
-        String str = new String(bytes, DEFAULT_CHARSET);
-
-        return JSON.parseObject(str, clazz, AUTO_TYPE_FILTER);
-    }
-}
diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
deleted file mode 100644
index 4eb58f8..0000000
--- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.ruoyi.common.redis.configure;
-
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
-import org.springframework.cache.annotation.CachingConfigurerSupport;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-/**
- * redis閰嶇疆
- * 
- * @author admin
- */
-@Configuration
-@EnableCaching
-@AutoConfigureBefore(RedisAutoConfiguration.class)
-public class RedisConfig extends CachingConfigurerSupport
-{
-    @Bean
-    @SuppressWarnings(value = { "unchecked", "rawtypes" })
-    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
-    {
-        RedisTemplate<Object, Object> template = new RedisTemplate<>();
-        template.setConnectionFactory(connectionFactory);
-
-        FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
-
-        // 浣跨敤StringRedisSerializer鏉ュ簭鍒楀寲鍜屽弽搴忓垪鍖杛edis鐨刱ey鍊�
-        template.setKeySerializer(new StringRedisSerializer());
-        template.setValueSerializer(serializer);
-
-        // Hash鐨刱ey涔熼噰鐢⊿tringRedisSerializer鐨勫簭鍒楀寲鏂瑰紡
-        template.setHashKeySerializer(new StringRedisSerializer());
-        template.setHashValueSerializer(serializer);
-
-        template.afterPropertiesSet();
-        return template;
-    }
-}
diff --git a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
deleted file mode 100644
index 98fd6c2..0000000
--- a/se-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package com.ruoyi.common.redis.service;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.BoundSetOperations;
-import org.springframework.data.redis.core.HashOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.stereotype.Component;
-
-/**
- * spring redis 宸ュ叿绫�
- * 
- * @author admin
- **/
-@SuppressWarnings(value = { "unchecked", "rawtypes" })
-@Component
-public class RedisService
-{
-    @Autowired
-    public RedisTemplate redisTemplate;
-
-    /**
-     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param value 缂撳瓨鐨勫��
-     */
-    public <T> void setCacheObject(final String key, final T value)
-    {
-        redisTemplate.opsForValue().set(key, value);
-    }
-
-    /**
-     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param value 缂撳瓨鐨勫��
-     * @param timeout 鏃堕棿
-     * @param timeUnit 鏃堕棿棰楃矑搴�
-     */
-    public <T> void setCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit)
-    {
-        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
-    }
-
-    /**
-     * 璁剧疆鏈夋晥鏃堕棿
-     *
-     * @param key Redis閿�
-     * @param timeout 瓒呮椂鏃堕棿
-     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
-     */
-    public boolean expire(final String key, final long timeout)
-    {
-        return expire(key, timeout, TimeUnit.SECONDS);
-    }
-
-    /**
-     * 璁剧疆鏈夋晥鏃堕棿
-     *
-     * @param key Redis閿�
-     * @param timeout 瓒呮椂鏃堕棿
-     * @param unit 鏃堕棿鍗曚綅
-     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
-     */
-    public boolean expire(final String key, final long timeout, final TimeUnit unit)
-    {
-        return redisTemplate.expire(key, timeout, unit);
-    }
-
-    /**
-     * 鑾峰彇鏈夋晥鏃堕棿
-     *
-     * @param key Redis閿�
-     * @return 鏈夋晥鏃堕棿
-     */
-    public long getExpire(final String key)
-    {
-        return redisTemplate.getExpire(key);
-    }
-
-    /**
-     * 鍒ゆ柇 key鏄惁瀛樺湪
-     *
-     * @param key 閿�
-     * @return true 瀛樺湪 false涓嶅瓨鍦�
-     */
-    public Boolean hasKey(String key)
-    {
-        return redisTemplate.hasKey(key);
-    }
-
-    /**
-     * 鑾峰緱缂撳瓨鐨勫熀鏈璞°��
-     *
-     * @param key 缂撳瓨閿��
-     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
-     */
-    public <T> T getCacheObject(final String key)
-    {
-        ValueOperations<String, T> operation = redisTemplate.opsForValue();
-        return operation.get(key);
-    }
-
-    /**
-     * 鍒犻櫎鍗曚釜瀵硅薄
-     *
-     * @param key
-     */
-    public boolean deleteObject(final String key)
-    {
-        return redisTemplate.delete(key);
-    }
-
-    /**
-     * 鍒犻櫎闆嗗悎瀵硅薄
-     *
-     * @param collection 澶氫釜瀵硅薄
-     * @return
-     */
-    public boolean deleteObject(final Collection collection)
-    {
-        return redisTemplate.delete(collection) > 0;
-    }
-
-    /**
-     * 缂撳瓨List鏁版嵁
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param dataList 寰呯紦瀛樼殑List鏁版嵁
-     * @return 缂撳瓨鐨勫璞�
-     */
-    public <T> long setCacheList(final String key, final List<T> dataList)
-    {
-        Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
-        return count == null ? 0 : count;
-    }
-
-    /**
-     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
-     */
-    public <T> List<T> getCacheList(final String key)
-    {
-        return redisTemplate.opsForList().range(key, 0, -1);
-    }
-
-    /**
-     * 缂撳瓨Set
-     *
-     * @param key 缂撳瓨閿��
-     * @param dataSet 缂撳瓨鐨勬暟鎹�
-     * @return 缂撳瓨鏁版嵁鐨勫璞�
-     */
-    public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet)
-    {
-        BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
-        Iterator<T> it = dataSet.iterator();
-        while (it.hasNext())
-        {
-            setOperation.add(it.next());
-        }
-        return setOperation;
-    }
-
-    /**
-     * 鑾峰緱缂撳瓨鐨剆et
-     *
-     * @param key
-     * @return
-     */
-    public <T> Set<T> getCacheSet(final String key)
-    {
-        return redisTemplate.opsForSet().members(key);
-    }
-
-    /**
-     * 缂撳瓨Map
-     *
-     * @param key
-     * @param dataMap
-     */
-    public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
-    {
-        if (dataMap != null) {
-            redisTemplate.opsForHash().putAll(key, dataMap);
-        }
-    }
-
-    /**
-     * 鑾峰緱缂撳瓨鐨凪ap
-     *
-     * @param key
-     * @return
-     */
-    public <T> Map<String, T> getCacheMap(final String key)
-    {
-        return redisTemplate.opsForHash().entries(key);
-    }
-
-    /**
-     * 寰�Hash涓瓨鍏ユ暟鎹�
-     *
-     * @param key Redis閿�
-     * @param hKey Hash閿�
-     * @param value 鍊�
-     */
-    public <T> void setCacheMapValue(final String key, final String hKey, final T value)
-    {
-        redisTemplate.opsForHash().put(key, hKey, value);
-    }
-
-    /**
-     * 鑾峰彇Hash涓殑鏁版嵁
-     *
-     * @param key Redis閿�
-     * @param hKey Hash閿�
-     * @return Hash涓殑瀵硅薄
-     */
-    public <T> T getCacheMapValue(final String key, final String hKey)
-    {
-        HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
-        return opsForHash.get(key, hKey);
-    }
-
-    /**
-     * 鑾峰彇澶氫釜Hash涓殑鏁版嵁
-     *
-     * @param key Redis閿�
-     * @param hKeys Hash閿泦鍚�
-     * @return Hash瀵硅薄闆嗗悎
-     */
-    public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys)
-    {
-        return redisTemplate.opsForHash().multiGet(key, hKeys);
-    }
-
-    /**
-     * 鍒犻櫎Hash涓殑鏌愭潯鏁版嵁
-     *
-     * @param key Redis閿�
-     * @param hKey Hash閿�
-     * @return 鏄惁鎴愬姛
-     */
-    public boolean deleteCacheMapValue(final String key, final String hKey)
-    {
-        return redisTemplate.opsForHash().delete(key, hKey) > 0;
-    }
-
-    /**
-     * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛�
-     *
-     * @param pattern 瀛楃涓插墠缂�
-     * @return 瀵硅薄鍒楄〃
-     */
-    public Collection<String> keys(final String pattern)
-    {
-        return redisTemplate.keys(pattern);
-    }
-}
diff --git a/se-common/ruoyi-common-security/pom.xml b/se-common/ruoyi-common-security/pom.xml
deleted file mode 100644
index 963e909..0000000
--- a/se-common/ruoyi-common-security/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-security</artifactId>
-
-    <description>
-        ruoyi-common-security瀹夊叏妯″潡
-    </description>
-
-    <dependencies>
-
-        <!-- Spring Web -->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-        </dependency>
-
-        <!-- RuoYi Api System -->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-api-system</artifactId>
-        </dependency>
-
-        <!-- RuoYi Common Redis-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-redis</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java
deleted file mode 100644
index c07c3a8..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-import org.springframework.context.annotation.Import;
-import org.springframework.scheduling.annotation.EnableAsync;
-import com.ruoyi.common.security.config.ApplicationConfig;
-import com.ruoyi.common.security.feign.FeignAutoConfiguration;
-
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-// 琛ㄧず閫氳繃aop妗嗘灦鏆撮湶璇ヤ唬鐞嗗璞�,AopContext鑳藉璁块棶
-@EnableAspectJAutoProxy(exposeProxy = true)
-// 鎸囧畾瑕佹壂鎻忕殑Mapper绫荤殑鍖呯殑璺緞
-@MapperScan("com.ruoyi.**.mapper")
-// 寮�鍚嚎绋嬪紓姝ユ墽琛�
-@EnableAsync
-// 鑷姩鍔犺浇绫�
-@Import({ ApplicationConfig.class, FeignAutoConfiguration.class })
-public @interface EnableCustomConfig
-{
-
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java
deleted file mode 100644
index 4947fc1..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import java.lang.annotation.*;
-
-/**
- * 鑷畾涔塮eign娉ㄨВ
- * 娣诲姞basePackages璺緞
- * 
- * @author admin
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@EnableFeignClients
-public @interface EnableRyFeignClients
-{
-    String[] value() default {};
-
-    String[] basePackages() default { "com.ruoyi" };
-
-    Class<?>[] basePackageClasses() default {};
-
-    Class<?>[] defaultConfiguration() default {};
-
-    Class<?>[] clients() default {};
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java
deleted file mode 100644
index b1106ba..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/Logical.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-/**
- * 鏉冮檺娉ㄨВ鐨勯獙璇佹ā寮�
- * 
- * @author admin
- *
- */
-public enum Logical
-{
-    /**
-     * 蹇呴』鍏锋湁鎵�鏈夌殑鍏冪礌
-     */
-    AND,
-
-    /**
-     * 鍙渶鍏锋湁鍏朵腑涓�涓厓绱�
-     */
-    OR
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java
deleted file mode 100644
index d6c1cb5..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresLogin.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 鐧诲綍璁よ瘉锛氬彧鏈夌櫥褰曚箣鍚庢墠鑳借繘鍏ヨ鏂规硶
- * 
- * @author admin
- *
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.METHOD, ElementType.TYPE })
-public @interface RequiresLogin
-{
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java
deleted file mode 100644
index 1a4c7cc..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresPermissions.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 鏉冮檺璁よ瘉锛氬繀椤诲叿鏈夋寚瀹氭潈闄愭墠鑳借繘鍏ヨ鏂规硶
- * 
- * @author admin
- *
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.METHOD, ElementType.TYPE })
-public @interface RequiresPermissions
-{
-    /**
-     * 闇�瑕佹牎楠岀殑鏉冮檺鐮�
-     */
-    String[] value() default {};
-
-    /**
-     * 楠岃瘉妯″紡锛欰ND | OR锛岄粯璁ND
-     */
-    Logical logical() default Logical.AND;
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java
deleted file mode 100644
index 3fc55d3..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/RequiresRoles.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.ruoyi.common.security.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 瑙掕壊璁よ瘉锛氬繀椤诲叿鏈夋寚瀹氳鑹叉爣璇嗘墠鑳借繘鍏ヨ鏂规硶
- * 
- * @author admin
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.METHOD, ElementType.TYPE })
-public @interface RequiresRoles
-{
-    /**
-     * 闇�瑕佹牎楠岀殑瑙掕壊鏍囪瘑
-     */
-    String[] value() default {};
-
-    /**
-     * 楠岃瘉閫昏緫锛欰ND | OR锛岄粯璁ND
-     */
-    Logical logical() default Logical.AND;
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java
deleted file mode 100644
index bc75873..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.ruoyi.common.security.aspect;
-
-import java.lang.reflect.Method;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.stereotype.Component;
-import com.ruoyi.common.security.annotation.RequiresLogin;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.annotation.RequiresRoles;
-import com.ruoyi.common.security.auth.AuthUtil;
-
-/**
- * 鍩轰簬 Spring Aop 鐨勬敞瑙i壌鏉�
- * 
- * @author kong
- */
-@Aspect
-@Component
-public class PreAuthorizeAspect
-{
-    /**
-     * 鏋勫缓
-     */
-    public PreAuthorizeAspect()
-    {
-    }
-
-    /**
-     * 瀹氫箟AOP绛惧悕 (鍒囧叆鎵�鏈変娇鐢ㄩ壌鏉冩敞瑙g殑鏂规硶)
-     */
-    public static final String POINTCUT_SIGN = " @annotation(com.ruoyi.common.security.annotation.RequiresLogin) || "
-            + "@annotation(com.ruoyi.common.security.annotation.RequiresPermissions) || "
-            + "@annotation(com.ruoyi.common.security.annotation.RequiresRoles)";
-
-    /**
-     * 澹版槑AOP绛惧悕
-     */
-    @Pointcut(POINTCUT_SIGN)
-    public void pointcut()
-    {
-    }
-
-    /**
-     * 鐜粫鍒囧叆
-     * 
-     * @param joinPoint 鍒囬潰瀵硅薄
-     * @return 搴曞眰鏂规硶鎵ц鍚庣殑杩斿洖鍊�
-     * @throws Throwable 搴曞眰鏂规硶鎶涘嚭鐨勫紓甯�
-     */
-    @Around("pointcut()")
-    public Object around(ProceedingJoinPoint joinPoint) throws Throwable
-    {
-        // 娉ㄨВ閴存潈
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        checkMethodAnnotation(signature.getMethod());
-        try
-        {
-            // 鎵ц鍘熸湁閫昏緫
-            Object obj = joinPoint.proceed();
-            return obj;
-        }
-        catch (Throwable e)
-        {
-            throw e;
-        }
-    }
-
-    /**
-     * 瀵逛竴涓狹ethod瀵硅薄杩涜娉ㄨВ妫�鏌�
-     */
-    public void checkMethodAnnotation(Method method)
-    {
-        // 鏍¢獙 @RequiresLogin 娉ㄨВ
-        RequiresLogin requiresLogin = method.getAnnotation(RequiresLogin.class);
-        if (requiresLogin != null)
-        {
-            AuthUtil.checkLogin();
-        }
-
-        // 鏍¢獙 @RequiresRoles 娉ㄨВ
-        RequiresRoles requiresRoles = method.getAnnotation(RequiresRoles.class);
-        if (requiresRoles != null)
-        {
-            AuthUtil.checkRole(requiresRoles);
-        }
-
-        // 鏍¢獙 @RequiresPermissions 娉ㄨВ
-        RequiresPermissions requiresPermissions = method.getAnnotation(RequiresPermissions.class);
-        if (requiresPermissions != null)
-        {
-            AuthUtil.checkPermi(requiresPermissions);
-        }
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
deleted file mode 100644
index 138507f..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
+++ /dev/null
@@ -1,373 +0,0 @@
-package com.ruoyi.common.security.auth;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import org.springframework.util.PatternMatchUtils;
-import com.ruoyi.common.core.context.SecurityContextHolder;
-import com.ruoyi.common.core.exception.auth.NotLoginException;
-import com.ruoyi.common.core.exception.auth.NotPermissionException;
-import com.ruoyi.common.core.exception.auth.NotRoleException;
-import com.ruoyi.common.core.utils.SpringUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.security.annotation.Logical;
-import com.ruoyi.common.security.annotation.RequiresLogin;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.annotation.RequiresRoles;
-import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.se.system.api.model.LoginUser;
-
-/**
- * Token 鏉冮檺楠岃瘉锛岄�昏緫瀹炵幇绫�
- * 
- * @author admin
- */
-public class AuthLogic
-{
-    /** 鎵�鏈夋潈闄愭爣璇� */
-    private static final String ALL_PERMISSION = "*:*:*";
-
-    /** 绠$悊鍛樿鑹叉潈闄愭爣璇� */
-    private static final String SUPER_ADMIN = "admin";
-
-    public TokenService tokenService = SpringUtils.getBean(TokenService.class);
-
-    /**
-     * 浼氳瘽娉ㄩ攢
-     */
-    public void logout()
-    {
-        String token = SecurityUtils.getToken();
-        if (token == null)
-        {
-            return;
-        }
-        logoutByToken(token);
-    }
-
-    /**
-     * 浼氳瘽娉ㄩ攢锛屾牴鎹寚瀹歍oken
-     */
-    public void logoutByToken(String token)
-    {
-        tokenService.delLoginUser(token);
-    }
-
-    /**
-     * 妫�楠岀敤鎴锋槸鍚﹀凡缁忕櫥褰曪紝濡傛湭鐧诲綍锛屽垯鎶涘嚭寮傚父
-     */
-    public void checkLogin()
-    {
-        getLoginUser();
-    }
-
-    /**
-     * 鑾峰彇褰撳墠鐢ㄦ埛缂撳瓨淇℃伅, 濡傛灉鏈櫥褰曪紝鍒欐姏鍑哄紓甯�
-     * 
-     * @return 鐢ㄦ埛缂撳瓨淇℃伅
-     */
-    public LoginUser getLoginUser()
-    {
-        String token = SecurityUtils.getToken();
-        if (token == null)
-        {
-            throw new NotLoginException("鏈彁渚泃oken");
-        }
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        if (loginUser == null)
-        {
-            throw new NotLoginException("鏃犳晥鐨則oken");
-        }
-        return loginUser;
-    }
-
-    /**
-     * 鑾峰彇褰撳墠鐢ㄦ埛缂撳瓨淇℃伅, 濡傛灉鏈櫥褰曪紝鍒欐姏鍑哄紓甯�
-     * 
-     * @param token 鍓嶇浼犻�掔殑璁よ瘉淇℃伅
-     * @return 鐢ㄦ埛缂撳瓨淇℃伅
-     */
-    public LoginUser getLoginUser(String token)
-    {
-        return tokenService.getLoginUser(token);
-    }
-
-    /**
-     * 楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈�, 濡傛灉鐩稿樊涓嶈冻120鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛�
-     * 
-     * @param loginUser 褰撳墠鐢ㄦ埛淇℃伅
-     */
-    public void verifyLoginUserExpire(LoginUser loginUser)
-    {
-        tokenService.verifyToken(loginUser);
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
-     * 
-     * @param permission 鏉冮檺瀛楃涓�
-     * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
-     */
-    public boolean hasPermi(String permission)
-    {
-        return hasPermi(getPermiList(), permission);
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException
-     * 
-     * @param permission 鏉冮檺瀛楃涓�
-     * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
-     */
-    public void checkPermi(String permission)
-    {
-        if (!hasPermi(getPermiList(), permission))
-        {
-            throw new NotPermissionException(permission);
-        }
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ(@RequiresPermissions)閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException
-     * 
-     * @param requiresPermissions 娉ㄨВ瀵硅薄
-     */
-    public void checkPermi(RequiresPermissions requiresPermissions)
-    {
-        SecurityContextHolder.setPermission(StringUtils.join(requiresPermissions.value(), ","));
-        if (requiresPermissions.logical() == Logical.AND)
-        {
-            checkPermiAnd(requiresPermissions.value());
-        }
-        else
-        {
-            checkPermiOr(requiresPermissions.value());
-        }
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽繀椤诲叏閮ㄦ嫢鏈�
-     *
-     * @param permissions 鏉冮檺鍒楄〃
-     */
-    public void checkPermiAnd(String... permissions)
-    {
-        Set<String> permissionList = getPermiList();
-        for (String permission : permissions)
-        {
-            if (!hasPermi(permissionList, permission))
-            {
-                throw new NotPermissionException(permission);
-            }
-        }
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾鏉冮檺锛屽彧闇�鍖呭惈鍏朵腑涓�涓�
-     * 
-     * @param permissions 鏉冮檺鐮佹暟缁�
-     */
-    public void checkPermiOr(String... permissions)
-    {
-        Set<String> permissionList = getPermiList();
-        for (String permission : permissions)
-        {
-            if (hasPermi(permissionList, permission))
-            {
-                return;
-            }
-        }
-        if (permissions.length > 0)
-        {
-            throw new NotPermissionException(permissions);
-        }
-    }
-
-    /**
-     * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊
-     * 
-     * @param role 瑙掕壊鏍囪瘑
-     * @return 鐢ㄦ埛鏄惁鍏峰鏌愯鑹�
-     */
-    public boolean hasRole(String role)
-    {
-        return hasRole(getRoleList(), role);
-    }
-
-    /**
-     * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException
-     * 
-     * @param role 瑙掕壊鏍囪瘑
-     */
-    public void checkRole(String role)
-    {
-        if (!hasRole(role))
-        {
-            throw new NotRoleException(role);
-        }
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ(@RequiresRoles)閴存潈
-     * 
-     * @param requiresRoles 娉ㄨВ瀵硅薄
-     */
-    public void checkRole(RequiresRoles requiresRoles)
-    {
-        if (requiresRoles.logical() == Logical.AND)
-        {
-            checkRoleAnd(requiresRoles.value());
-        }
-        else
-        {
-            checkRoleOr(requiresRoles.value());
-        }
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽繀椤诲叏閮ㄦ嫢鏈�
-     * 
-     * @param roles 瑙掕壊鏍囪瘑鏁扮粍
-     */
-    public void checkRoleAnd(String... roles)
-    {
-        Set<String> roleList = getRoleList();
-        for (String role : roles)
-        {
-            if (!hasRole(roleList, role))
-            {
-                throw new NotRoleException(role);
-            }
-        }
-    }
-
-    /**
-     * 楠岃瘉鐢ㄦ埛鏄惁鍚湁鎸囧畾瑙掕壊锛屽彧闇�鍖呭惈鍏朵腑涓�涓�
-     * 
-     * @param roles 瑙掕壊鏍囪瘑鏁扮粍
-     */
-    public void checkRoleOr(String... roles)
-    {
-        Set<String> roleList = getRoleList();
-        for (String role : roles)
-        {
-            if (hasRole(roleList, role))
-            {
-                return;
-            }
-        }
-        if (roles.length > 0)
-        {
-            throw new NotRoleException(roles);
-        }
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ(@RequiresLogin)閴存潈
-     * 
-     * @param at 娉ㄨВ瀵硅薄
-     */
-    public void checkByAnnotation(RequiresLogin at)
-    {
-        this.checkLogin();
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ(@RequiresRoles)閴存潈
-     * 
-     * @param at 娉ㄨВ瀵硅薄
-     */
-    public void checkByAnnotation(RequiresRoles at)
-    {
-        String[] roleArray = at.value();
-        if (at.logical() == Logical.AND)
-        {
-            this.checkRoleAnd(roleArray);
-        }
-        else
-        {
-            this.checkRoleOr(roleArray);
-        }
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ(@RequiresPermissions)閴存潈
-     * 
-     * @param at 娉ㄨВ瀵硅薄
-     */
-    public void checkByAnnotation(RequiresPermissions at)
-    {
-        String[] permissionArray = at.value();
-        if (at.logical() == Logical.AND)
-        {
-            this.checkPermiAnd(permissionArray);
-        }
-        else
-        {
-            this.checkPermiOr(permissionArray);
-        }
-    }
-
-    /**
-     * 鑾峰彇褰撳墠璐﹀彿鐨勮鑹插垪琛�
-     * 
-     * @return 瑙掕壊鍒楄〃
-     */
-    public Set<String> getRoleList()
-    {
-        try
-        {
-            LoginUser loginUser = getLoginUser();
-            return loginUser.getRoles();
-        }
-        catch (Exception e)
-        {
-            return new HashSet<>();
-        }
-    }
-
-    /**
-     * 鑾峰彇褰撳墠璐﹀彿鐨勬潈闄愬垪琛�
-     * 
-     * @return 鏉冮檺鍒楄〃
-     */
-    public Set<String> getPermiList()
-    {
-        try
-        {
-            LoginUser loginUser = getLoginUser();
-            return loginUser.getPermissions();
-        }
-        catch (Exception e)
-        {
-            return new HashSet<>();
-        }
-    }
-
-    /**
-     * 鍒ゆ柇鏄惁鍖呭惈鏉冮檺
-     * 
-     * @param authorities 鏉冮檺鍒楄〃
-     * @param permission 鏉冮檺瀛楃涓�
-     * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
-     */
-    public boolean hasPermi(Collection<String> authorities, String permission)
-    {
-        return authorities.stream().filter(StringUtils::hasText)
-                .anyMatch(x -> ALL_PERMISSION.equals(x) || PatternMatchUtils.simpleMatch(x, permission));
-    }
-
-    /**
-     * 鍒ゆ柇鏄惁鍖呭惈瑙掕壊
-     * 
-     * @param roles 瑙掕壊鍒楄〃
-     * @param role 瑙掕壊
-     * @return 鐢ㄦ埛鏄惁鍏峰鏌愯鑹叉潈闄�
-     */
-    public boolean hasRole(Collection<String> roles, String role)
-    {
-        return roles.stream().filter(StringUtils::hasText)
-                .anyMatch(x -> SUPER_ADMIN.equals(x) || PatternMatchUtils.simpleMatch(x, role));
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java
deleted file mode 100644
index 130362b..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package com.ruoyi.common.security.auth;
-
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.common.security.annotation.RequiresRoles;
-import com.se.system.api.model.LoginUser;
-
-/**
- * Token 鏉冮檺楠岃瘉宸ュ叿绫�
- * 
- * @author admin
- */
-public class AuthUtil
-{
-    /**
-     * 搴曞眰鐨� AuthLogic 瀵硅薄
-     */
-    public static AuthLogic authLogic = new AuthLogic();
-
-    /**
-     * 浼氳瘽娉ㄩ攢
-     */
-    public static void logout()
-    {
-        authLogic.logout();
-    }
-
-    /**
-     * 浼氳瘽娉ㄩ攢锛屾牴鎹寚瀹歍oken
-     * 
-     * @param token 鎸囧畾token
-     */
-    public static void logoutByToken(String token)
-    {
-        authLogic.logoutByToken(token);
-    }
-
-    /**
-     * 妫�楠屽綋鍓嶄細璇濇槸鍚﹀凡缁忕櫥褰曪紝濡傛湭鐧诲綍锛屽垯鎶涘嚭寮傚父
-     */
-    public static void checkLogin()
-    {
-        authLogic.checkLogin();
-    }
-
-    /**
-     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
-     * 
-     * @param token 鎸囧畾token
-     * @return 鐢ㄦ埛淇℃伅
-     */
-    public static LoginUser getLoginUser(String token)
-    {
-        return authLogic.getLoginUser(token);
-    }
-
-    /**
-     * 楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈�
-     * 
-     * @param loginUser 鐢ㄦ埛淇℃伅
-     */
-    public static void verifyLoginUserExpire(LoginUser loginUser)
-    {
-        authLogic.verifyLoginUserExpire(loginUser);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑, 杩斿洖true鎴杅alse
-     * 
-     * @param role 瑙掕壊鏍囪瘑
-     * @return 鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑
-     */
-    public static boolean hasRole(String role)
-    {
-        return authLogic.hasRole(role);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException
-     * 
-     * @param role 瑙掕壊鏍囪瘑
-     */
-    public static void checkRole(String role)
-    {
-        authLogic.checkRole(role);
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ浼犲叆鍙傛暟閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotRoleException
-     * 
-     * @param requiresRoles 瑙掕壊鏉冮檺娉ㄨВ
-     */
-    public static void checkRole(RequiresRoles requiresRoles)
-    {
-        authLogic.checkRole(requiresRoles);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑 [鎸囧畾澶氫釜锛屽繀椤诲叏閮ㄩ獙璇侀�氳繃]
-     * 
-     * @param roles 瑙掕壊鏍囪瘑鏁扮粍
-     */
-    public static void checkRoleAnd(String... roles)
-    {
-        authLogic.checkRoleAnd(roles);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾瑙掕壊鏍囪瘑 [鎸囧畾澶氫釜锛屽彧瑕佸叾涓�楠岃瘉閫氳繃鍗冲彲]
-     * 
-     * @param roles 瑙掕壊鏍囪瘑鏁扮粍
-     */
-    public static void checkRoleOr(String... roles)
-    {
-        authLogic.checkRoleOr(roles);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺, 杩斿洖true鎴杅alse
-     * 
-     * @param permission 鏉冮檺鐮�
-     * @return 鏄惁鍚湁鎸囧畾鏉冮檺
-     */
-    public static boolean hasPermi(String permission)
-    {
-        return authLogic.hasPermi(permission);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException
-     * 
-     * @param permission 鏉冮檺鐮�
-     */
-    public static void checkPermi(String permission)
-    {
-        authLogic.checkPermi(permission);
-    }
-
-    /**
-     * 鏍规嵁娉ㄨВ浼犲叆鍙傛暟閴存潈, 濡傛灉楠岃瘉鏈�氳繃锛屽垯鎶涘嚭寮傚父: NotPermissionException
-     * 
-     * @param requiresPermissions 鏉冮檺娉ㄨВ
-     */
-    public static void checkPermi(RequiresPermissions requiresPermissions)
-    {
-        authLogic.checkPermi(requiresPermissions);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺 [鎸囧畾澶氫釜锛屽繀椤诲叏閮ㄩ獙璇侀�氳繃]
-     * 
-     * @param permissions 鏉冮檺鐮佹暟缁�
-     */
-    public static void checkPermiAnd(String... permissions)
-    {
-        authLogic.checkPermiAnd(permissions);
-    }
-
-    /**
-     * 褰撳墠璐﹀彿鏄惁鍚湁鎸囧畾鏉冮檺 [鎸囧畾澶氫釜锛屽彧瑕佸叾涓�楠岃瘉閫氳繃鍗冲彲]
-     * 
-     * @param permissions 鏉冮檺鐮佹暟缁�
-     */
-    public static void checkPermiOr(String... permissions)
-    {
-        authLogic.checkPermiOr(permissions);
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java
deleted file mode 100644
index e95a4c1..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.common.security.config;
-
-import java.util.TimeZone;
-import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
-import org.springframework.context.annotation.Bean;
-
-/**
- * 绯荤粺閰嶇疆
- *
- * @author admin
- */
-public class ApplicationConfig
-{
-    /**
-     * 鏃跺尯閰嶇疆
-     */
-    @Bean
-    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization()
-    {
-        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java
deleted file mode 100644
index bd1aebe..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/WebMvcConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.ruoyi.common.security.config;
-
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import com.ruoyi.common.security.interceptor.HeaderInterceptor;
-
-/**
- * 鎷︽埅鍣ㄩ厤缃�
- *
- * @author admin
- */
-public class WebMvcConfig implements WebMvcConfigurer
-{
-    /** 涓嶉渶瑕佹嫤鎴湴鍧� */
-    public static final String[] excludeUrls = { "/login", "/logout", "/refresh" };
-
-    @Override
-    public void addInterceptors(InterceptorRegistry registry)
-    {
-        registry.addInterceptor(getHeaderInterceptor())
-                .addPathPatterns("/**")
-                .excludePathPatterns(excludeUrls)
-                .order(-10);
-    }
-
-    /**
-     * 鑷畾涔夎姹傚ご鎷︽埅鍣�
-     */
-    public HeaderInterceptor getHeaderInterceptor()
-    {
-        return new HeaderInterceptor();
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java
deleted file mode 100644
index 77a53f5..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignAutoConfiguration.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.common.security.feign;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import feign.RequestInterceptor;
-
-/**
- * Feign 閰嶇疆娉ㄥ唽
- *
- * @author admin
- **/
-@Configuration
-public class FeignAutoConfiguration
-{
-    @Bean
-    public RequestInterceptor requestInterceptor()
-    {
-        return new FeignRequestInterceptor();
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java
deleted file mode 100644
index f836cc6..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/FeignRequestInterceptor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ruoyi.common.security.feign;
-
-import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.utils.ip.IpUtils;
-import feign.RequestInterceptor;
-import feign.RequestTemplate;
-
-/**
- * feign 璇锋眰鎷︽埅鍣�
- * 
- * @author admin
- */
-@Component
-public class FeignRequestInterceptor implements RequestInterceptor
-{
-    @Override
-    public void apply(RequestTemplate requestTemplate)
-    {
-        HttpServletRequest httpServletRequest = ServletUtils.getRequest();
-        if (StringUtils.isNotNull(httpServletRequest))
-        {
-            Map<String, String> headers = ServletUtils.getHeaders(httpServletRequest);
-            // 浼犻�掔敤鎴蜂俊鎭姹傚ご锛岄槻姝涪澶�
-            String userId = headers.get(SecurityConstants.DETAILS_USER_ID);
-            if (StringUtils.isNotEmpty(userId))
-            {
-                requestTemplate.header(SecurityConstants.DETAILS_USER_ID, userId);
-            }
-            String userKey = headers.get(SecurityConstants.USER_KEY);
-            if (StringUtils.isNotEmpty(userKey))
-            {
-                requestTemplate.header(SecurityConstants.USER_KEY, userKey);
-            }
-            String userName = headers.get(SecurityConstants.DETAILS_USERNAME);
-            if (StringUtils.isNotEmpty(userName))
-            {
-                requestTemplate.header(SecurityConstants.DETAILS_USERNAME, userName);
-            }
-            String authentication = headers.get(SecurityConstants.AUTHORIZATION_HEADER);
-            if (StringUtils.isNotEmpty(authentication))
-            {
-                requestTemplate.header(SecurityConstants.AUTHORIZATION_HEADER, authentication);
-            }
-
-            // 閰嶇疆瀹㈡埛绔疘P
-            requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr());
-        }
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java
deleted file mode 100644
index 2400d33..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ruoyi.common.security.interceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.AsyncHandlerInterceptor;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.context.SecurityContextHolder;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.security.auth.AuthUtil;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.se.system.api.model.LoginUser;
-
-/**
- * 鑷畾涔夎姹傚ご鎷︽埅鍣紝灏咹eader鏁版嵁灏佽鍒扮嚎绋嬪彉閲忎腑鏂逛究鑾峰彇
- * 娉ㄦ剰锛氭鎷︽埅鍣ㄤ細鍚屾椂楠岃瘉褰撳墠鐢ㄦ埛鏈夋晥鏈熻嚜鍔ㄥ埛鏂版湁鏁堟湡
- *
- * @author admin
- */
-public class HeaderInterceptor implements AsyncHandlerInterceptor
-{
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
-    {
-        if (!(handler instanceof HandlerMethod))
-        {
-            return true;
-        }
-
-        SecurityContextHolder.setUserId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USER_ID));
-        SecurityContextHolder.setUserName(ServletUtils.getHeader(request, SecurityConstants.DETAILS_USERNAME));
-        SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
-
-        String token = SecurityUtils.getToken();
-        if (StringUtils.isNotEmpty(token))
-        {
-            LoginUser loginUser = AuthUtil.getLoginUser(token);
-            if (StringUtils.isNotNull(loginUser))
-            {
-                AuthUtil.verifyLoginUserExpire(loginUser);
-                SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
-            throws Exception
-    {
-        SecurityContextHolder.remove();
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
deleted file mode 100644
index d6cb5c6..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.ruoyi.common.security.service;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-import javax.servlet.http.HttpServletRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.constant.CacheConstants;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.utils.JwtUtils;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.utils.ip.IpUtils;
-import com.ruoyi.common.core.utils.uuid.IdUtils;
-import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.common.security.utils.SecurityUtils;
-import com.se.system.api.model.LoginUser;
-
-/**
- * token楠岃瘉澶勭悊
- * 
- * @author admin
- */
-@Component
-public class TokenService
-{
-    private static final Logger log = LoggerFactory.getLogger(TokenService.class);
-
-    @Autowired
-    private RedisService redisService;
-
-    protected static final long MILLIS_SECOND = 1000;
-
-    protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND;
-
-    private final static long expireTime = CacheConstants.EXPIRATION;
-
-    private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY;
-
-    private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE;
-
-    /**
-     * 鍒涘缓浠ょ墝
-     */
-    public Map<String, Object> createToken(LoginUser loginUser)
-    {
-        String token = IdUtils.fastUUID();
-        Long userId = loginUser.getSysUser().getUserId();
-        String userName = loginUser.getSysUser().getUserName();
-        loginUser.setToken(token);
-        loginUser.setUserid(userId);
-        loginUser.setUsername(userName);
-        loginUser.setIpaddr(IpUtils.getIpAddr());
-        refreshToken(loginUser);
-
-        // Jwt瀛樺偍淇℃伅
-        Map<String, Object> claimsMap = new HashMap<String, Object>();
-        claimsMap.put(SecurityConstants.USER_KEY, token);
-        claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
-        claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
-
-        // 鎺ュ彛杩斿洖淇℃伅
-        Map<String, Object> rspMap = new HashMap<String, Object>();
-        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
-        rspMap.put("expires_in", expireTime);
-        return rspMap;
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛韬唤淇℃伅
-     *
-     * @return 鐢ㄦ埛淇℃伅
-     */
-    public LoginUser getLoginUser()
-    {
-        return getLoginUser(ServletUtils.getRequest());
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛韬唤淇℃伅
-     *
-     * @return 鐢ㄦ埛淇℃伅
-     */
-    public LoginUser getLoginUser(HttpServletRequest request)
-    {
-        // 鑾峰彇璇锋眰鎼哄甫鐨勪护鐗�
-        String token = SecurityUtils.getToken(request);
-        return getLoginUser(token);
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛韬唤淇℃伅
-     *
-     * @return 鐢ㄦ埛淇℃伅
-     */
-    public LoginUser getLoginUser(String token)
-    {
-        LoginUser user = null;
-        try
-        {
-            if (StringUtils.isNotEmpty(token))
-            {
-                String userkey = JwtUtils.getUserKey(token);
-                user = redisService.getCacheObject(getTokenKey(userkey));
-                return user;
-            }
-        }
-        catch (Exception e)
-        {
-            log.error("鑾峰彇鐢ㄦ埛淇℃伅寮傚父'{}'", e.getMessage());
-        }
-        return user;
-    }
-
-    /**
-     * 璁剧疆鐢ㄦ埛韬唤淇℃伅
-     */
-    public void setLoginUser(LoginUser loginUser)
-    {
-        if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken()))
-        {
-            refreshToken(loginUser);
-        }
-    }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛缂撳瓨淇℃伅
-     */
-    public void delLoginUser(String token)
-    {
-        if (StringUtils.isNotEmpty(token))
-        {
-            String userkey = JwtUtils.getUserKey(token);
-            redisService.deleteObject(getTokenKey(userkey));
-        }
-    }
-
-    /**
-     * 楠岃瘉浠ょ墝鏈夋晥鏈燂紝鐩稿樊涓嶈冻120鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛�
-     *
-     * @param loginUser
-     */
-    public void verifyToken(LoginUser loginUser)
-    {
-        long expireTime = loginUser.getExpireTime();
-        long currentTime = System.currentTimeMillis();
-        if (expireTime - currentTime <= MILLIS_MINUTE_TEN)
-        {
-            refreshToken(loginUser);
-        }
-    }
-
-    /**
-     * 鍒锋柊浠ょ墝鏈夋晥鏈�
-     *
-     * @param loginUser 鐧诲綍淇℃伅
-     */
-    public void refreshToken(LoginUser loginUser)
-    {
-        loginUser.setLoginTime(System.currentTimeMillis());
-        loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
-        // 鏍规嵁uuid灏唋oginUser缂撳瓨
-        String userKey = getTokenKey(loginUser.getToken());
-        redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
-    }
-
-    private String getTokenKey(String token)
-    {
-        return ACCESS_TOKEN + token;
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java b/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
deleted file mode 100644
index 3abe2c4..0000000
--- a/se-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.ruoyi.common.security.utils;
-
-import javax.servlet.http.HttpServletRequest;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.constant.TokenConstants;
-import com.ruoyi.common.core.context.SecurityContextHolder;
-import com.ruoyi.common.core.utils.ServletUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.se.system.api.model.LoginUser;
-
-/**
- * 鏉冮檺鑾峰彇宸ュ叿绫�
- * 
- * @author admin
- */
-public class SecurityUtils
-{
-    /**
-     * 鑾峰彇鐢ㄦ埛ID
-     */
-    public static Long getUserId()
-    {
-        return SecurityContextHolder.getUserId();
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛鍚嶇О
-     */
-    public static String getUsername()
-    {
-        return SecurityContextHolder.getUserName();
-    }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛key
-     */
-    public static String getUserKey()
-    {
-        return SecurityContextHolder.getUserKey();
-    }
-
-    /**
-     * 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-     */
-    public static LoginUser getLoginUser()
-    {
-        return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class);
-    }
-
-    /**
-     * 鑾峰彇璇锋眰token
-     */
-    public static String getToken()
-    {
-        return getToken(ServletUtils.getRequest());
-    }
-
-    /**
-     * 鏍规嵁request鑾峰彇璇锋眰token
-     */
-    public static String getToken(HttpServletRequest request)
-    {
-        // 浠巋eader鑾峰彇token鏍囪瘑
-        String token = request.getHeader(TokenConstants.AUTHENTICATION);
-        return replaceTokenPrefix(token);
-    }
-
-    /**
-     * 瑁佸壀token鍓嶇紑
-     */
-    public static String replaceTokenPrefix(String token)
-    {
-        // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂�
-        if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
-        {
-            token = token.replaceFirst(TokenConstants.PREFIX, "");
-        }
-        return token;
-    }
-
-    /**
-     * 鏄惁涓虹鐞嗗憳
-     * 
-     * @param userId 鐢ㄦ埛ID
-     * @return 缁撴灉
-     */
-    public static boolean isAdmin(Long userId)
-    {
-        return userId != null && 1L == userId;
-    }
-
-    /**
-     * 鐢熸垚BCryptPasswordEncoder瀵嗙爜
-     *
-     * @param password 瀵嗙爜
-     * @return 鍔犲瘑瀛楃涓�
-     */
-    public static String encryptPassword(String password)
-    {
-        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        return passwordEncoder.encode(password);
-    }
-
-    /**
-     * 鍒ゆ柇瀵嗙爜鏄惁鐩稿悓
-     *
-     * @param rawPassword 鐪熷疄瀵嗙爜
-     * @param encodedPassword 鍔犲瘑鍚庡瓧绗�
-     * @return 缁撴灉
-     */
-    public static boolean matchesPassword(String rawPassword, String encodedPassword)
-    {
-        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        return passwordEncoder.matches(rawPassword, encodedPassword);
-    }
-}
diff --git a/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 7418bbc..0000000
--- a/se-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,5 +0,0 @@
-com.ruoyi.common.security.config.WebMvcConfig
-com.ruoyi.common.security.service.TokenService
-com.ruoyi.common.security.aspect.PreAuthorizeAspect
-com.ruoyi.common.security.aspect.InnerAuthAspect
-com.ruoyi.common.security.handler.GlobalExceptionHandler
diff --git a/se-common/ruoyi-common-sensitive/pom.xml b/se-common/ruoyi-common-sensitive/pom.xml
deleted file mode 100644
index f5f5c1d..0000000
--- a/se-common/ruoyi-common-sensitive/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-sensitive</artifactId>
-
-    <description>
-        ruoyi-common-sensitive鏁版嵁鑴辨晱
-    </description>
-
-    <dependencies>
-
-        <!-- RuoYi Common Security -->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common-security</artifactId>
-        </dependency>
-
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java b/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java
deleted file mode 100644
index 5ebd1e4..0000000
--- a/se-common/ruoyi-common-sensitive/src/main/java/com/ruoyi/common/sensitive/annotation/Sensitive.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.common.sensitive.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.ruoyi.common.sensitive.config.SensitiveJsonSerializer;
-import com.ruoyi.common.sensitive.enums.DesensitizedType;
-
-/**
- * 鏁版嵁鑴辨晱娉ㄨВ
- *
- * @author admin
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@JacksonAnnotationsInside
-@JsonSerialize(using = SensitiveJsonSerializer.class)
-public @interface Sensitive
-{
-    DesensitizedType desensitizedType();
-}
diff --git a/se-common/ruoyi-common-swagger/pom.xml b/se-common/ruoyi-common-swagger/pom.xml
deleted file mode 100644
index cc48257..0000000
--- a/se-common/ruoyi-common-swagger/pom.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>com.ruoyi</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>3.6.4</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    
-    <artifactId>ruoyi-common-swagger</artifactId>
-	
-    <description>
-        ruoyi-common-swagger绯荤粺鎺ュ彛
-    </description>
-
-	<dependencies>
-
-        <!-- SpringBoot Web -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-
-        <!-- Swagger -->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-            <version>${swagger.fox.version}</version>
-        </dependency>
-
-	</dependencies>
-</project>
diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
deleted file mode 100644
index c628e8c..0000000
--- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.ruoyi.common.swagger.config;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-@EnableConfigurationProperties(SwaggerProperties.class)
-@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
-@Import({SwaggerBeanPostProcessor.class, SwaggerWebConfiguration.class})
-public class SwaggerAutoConfiguration
-{
-    /**
-     * 榛樿鐨勬帓闄よ矾寰勶紝鎺掗櫎Spring Boot榛樿鐨勯敊璇鐞嗚矾寰勫拰绔偣
-     */
-    private static final List<String> DEFAULT_EXCLUDE_PATH = Arrays.asList("/error", "/actuator/**");
-
-    private static final String BASE_PATH = "/**";
-
-    @Bean
-    public Docket api(SwaggerProperties swaggerProperties)
-    {
-        // base-path澶勭悊
-        if (swaggerProperties.getBasePath().isEmpty())
-        {
-            swaggerProperties.getBasePath().add(BASE_PATH);
-        }
-        // noinspection unchecked
-        List<Predicate<String>> basePath = new ArrayList<Predicate<String>>();
-        swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path)));
-
-        // exclude-path澶勭悊
-        if (swaggerProperties.getExcludePath().isEmpty())
-        {
-            swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
-        }
-
-        List<Predicate<String>> excludePath = new ArrayList<>();
-        swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
-
-        ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
-                .apiInfo(apiInfo(swaggerProperties)).select()
-                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()));
-
-        swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p)));
-        swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate()));
-
-        return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");
-    }
-
-    /**
-     * 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻��
-     */
-    private List<SecurityScheme> securitySchemes()
-    {
-        List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
-        return apiKeyList;
-    }
-
-    /**
-     * 瀹夊叏涓婁笅鏂�
-     */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
-                        .build());
-        return securityContexts;
-    }
-
-    /**
-     * 榛樿鐨勫叏灞�閴存潈绛栫暐
-     *
-     * @return
-     */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
-
-    private ApiInfo apiInfo(SwaggerProperties swaggerProperties)
-    {
-         return new ApiInfoBuilder()
-             .title(swaggerProperties.getTitle())
-             .description(swaggerProperties.getDescription())
-             .license(swaggerProperties.getLicense())
-             .licenseUrl(swaggerProperties.getLicenseUrl())
-             .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
-             .contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail()))
-             .version(swaggerProperties.getVersion())
-             .build();
-    }
-}
diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java
deleted file mode 100644
index 7934ee3..0000000
--- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerProperties.java
+++ /dev/null
@@ -1,343 +0,0 @@
-package com.ruoyi.common.swagger.config;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-@ConfigurationProperties("swagger")
-public class SwaggerProperties
-{
-    /**
-     * 鏄惁寮�鍚痵wagger
-     */
-    private Boolean enabled;
-
-    /**
-     * swagger浼氳В鏋愮殑鍖呰矾寰�
-     **/
-    private String basePackage = "";
-
-    /**
-     * swagger浼氳В鏋愮殑url瑙勫垯
-     **/
-    private List<String> basePath = new ArrayList<>();
-
-    /**
-     * 鍦╞asePath鍩虹涓婇渶瑕佹帓闄ょ殑url瑙勫垯
-     **/
-    private List<String> excludePath = new ArrayList<>();
-
-    /**
-     * 鏍囬
-     **/
-    private String title = "";
-
-    /**
-     * 鎻忚堪
-     **/
-    private String description = "";
-
-    /**
-     * 鐗堟湰
-     **/
-    private String version = "";
-
-    /**
-     * 璁稿彲璇�
-     **/
-    private String license = "";
-
-    /**
-     * 璁稿彲璇乁RL
-     **/
-    private String licenseUrl = "";
-
-    /**
-     * 鏈嶅姟鏉℃URL
-     **/
-    private String termsOfServiceUrl = "";
-
-    /**
-     * host淇℃伅
-     **/
-    private String host = "";
-
-    /**
-     * 鑱旂郴浜轰俊鎭�
-     */
-    private Contact contact = new Contact();
-
-    /**
-     * 鍏ㄥ眬缁熶竴閴存潈閰嶇疆
-     **/
-    private Authorization authorization = new Authorization();
-
-    public Boolean getEnabled()
-    {
-        return enabled;
-    }
-
-    public void setEnabled(Boolean enabled)
-    {
-        this.enabled = enabled;
-    }
-
-    public String getBasePackage()
-    {
-        return basePackage;
-    }
-
-    public void setBasePackage(String basePackage)
-    {
-        this.basePackage = basePackage;
-    }
-
-    public List<String> getBasePath()
-    {
-        return basePath;
-    }
-
-    public void setBasePath(List<String> basePath)
-    {
-        this.basePath = basePath;
-    }
-
-    public List<String> getExcludePath()
-    {
-        return excludePath;
-    }
-
-    public void setExcludePath(List<String> excludePath)
-    {
-        this.excludePath = excludePath;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-    public String getDescription()
-    {
-        return description;
-    }
-
-    public void setDescription(String description)
-    {
-        this.description = description;
-    }
-
-    public String getVersion()
-    {
-        return version;
-    }
-
-    public void setVersion(String version)
-    {
-        this.version = version;
-    }
-
-    public String getLicense()
-    {
-        return license;
-    }
-
-    public void setLicense(String license)
-    {
-        this.license = license;
-    }
-
-    public String getLicenseUrl()
-    {
-        return licenseUrl;
-    }
-
-    public void setLicenseUrl(String licenseUrl)
-    {
-        this.licenseUrl = licenseUrl;
-    }
-
-    public String getTermsOfServiceUrl()
-    {
-        return termsOfServiceUrl;
-    }
-
-    public void setTermsOfServiceUrl(String termsOfServiceUrl)
-    {
-        this.termsOfServiceUrl = termsOfServiceUrl;
-    }
-
-    public String getHost()
-    {
-        return host;
-    }
-
-    public void setHost(String host)
-    {
-        this.host = host;
-    }
-
-    public Contact getContact()
-    {
-        return contact;
-    }
-
-    public void setContact(Contact contact)
-    {
-        this.contact = contact;
-    }
-
-    public Authorization getAuthorization()
-    {
-        return authorization;
-    }
-
-    public void setAuthorization(Authorization authorization)
-    {
-        this.authorization = authorization;
-    }
-
-    public static class Contact
-    {
-        /**
-         * 鑱旂郴浜�
-         **/
-        private String name = "";
-        /**
-         * 鑱旂郴浜簎rl
-         **/
-        private String url = "";
-        /**
-         * 鑱旂郴浜篹mail
-         **/
-        private String email = "";
-
-        public String getName()
-        {
-            return name;
-        }
-
-        public void setName(String name)
-        {
-            this.name = name;
-        }
-
-        public String getUrl()
-        {
-            return url;
-        }
-
-        public void setUrl(String url)
-        {
-            this.url = url;
-        }
-
-        public String getEmail()
-        {
-            return email;
-        }
-
-        public void setEmail(String email)
-        {
-            this.email = email;
-        }
-    }
-
-    public static class Authorization
-    {
-        /**
-         * 閴存潈绛栫暐ID锛岄渶瑕佸拰SecurityReferences ID淇濇寔涓�鑷�
-         */
-        private String name = "";
-
-        /**
-         * 闇�瑕佸紑鍚壌鏉僓RL鐨勬鍒�
-         */
-        private String authRegex = "^.*$";
-
-        /**
-         * 閴存潈浣滅敤鍩熷垪琛�
-         */
-        private List<AuthorizationScope> authorizationScopeList = new ArrayList<>();
-
-        private List<String> tokenUrlList = new ArrayList<>();
-
-        public String getName()
-        {
-            return name;
-        }
-
-        public void setName(String name)
-        {
-            this.name = name;
-        }
-
-        public String getAuthRegex()
-        {
-            return authRegex;
-        }
-
-        public void setAuthRegex(String authRegex)
-        {
-            this.authRegex = authRegex;
-        }
-
-        public List<AuthorizationScope> getAuthorizationScopeList()
-        {
-            return authorizationScopeList;
-        }
-
-        public void setAuthorizationScopeList(List<AuthorizationScope> authorizationScopeList)
-        {
-            this.authorizationScopeList = authorizationScopeList;
-        }
-
-        public List<String> getTokenUrlList()
-        {
-            return tokenUrlList;
-        }
-
-        public void setTokenUrlList(List<String> tokenUrlList)
-        {
-            this.tokenUrlList = tokenUrlList;
-        }
-    }
-
-    public static class AuthorizationScope
-    {
-        /**
-         * 浣滅敤鍩熷悕绉�
-         */
-        private String scope = "";
-
-        /**
-         * 浣滅敤鍩熸弿杩�
-         */
-        private String description = "";
-
-        public String getScope()
-        {
-            return scope;
-        }
-
-        public void setScope(String scope)
-        {
-            this.scope = scope;
-        }
-
-        public String getDescription()
-        {
-            return description;
-        }
-
-        public void setDescription(String description)
-        {
-            this.description = description;
-        }
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java b/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java
deleted file mode 100644
index ebcba53..0000000
--- a/se-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ruoyi.common.swagger.config;
-
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * swagger 璧勬簮鏄犲皠璺緞
- * 
- * @author admin
- */
-public class SwaggerWebConfiguration implements WebMvcConfigurer
-{
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry)
-    {
-        /** swagger-ui 鍦板潃 */
-        registry.addResourceHandler("/swagger-ui/**")
-                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
-    }
-}
\ No newline at end of file
diff --git a/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 4c2e499..0000000
--- a/se-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1,3 +0,0 @@
-# com.ruoyi.common.swagger.config.SwaggerAutoConfiguration
-# com.ruoyi.common.swagger.config.SwaggerWebConfiguration
-# com.ruoyi.common.swagger.config.SwaggerBeanPostProcessor
diff --git a/ruoyi-gateway/pom.xml b/se-gateway/pom.xml
similarity index 100%
rename from ruoyi-gateway/pom.xml
rename to se-gateway/pom.xml
diff --git a/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java b/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java
new file mode 100644
index 0000000..f2341e9
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/SeGatewayApplication.java
@@ -0,0 +1,20 @@
+package com.se.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+/**
+ * 缃戝叧鍚姩绋嬪簭
+ * 
+ * @author admin
+ */
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
+public class SeGatewayApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeGatewayApplication.class, args);
+        System.out.println("    缃戝叧鍚姩鎴愬姛    ");
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java b/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java
new file mode 100644
index 0000000..a6fb2e9
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/CaptchaConfig.java
@@ -0,0 +1,83 @@
+package com.se.gateway.config;
+
+import java.util.Properties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+import static com.google.code.kaptcha.Constants.*;
+
+/**
+ * 楠岃瘉鐮侀厤缃�
+ * 
+ * @author admin
+ */
+@Configuration
+public class CaptchaConfig
+{
+    @Bean(name = "captchaProducer")
+    public DefaultKaptcha getKaptchaBean()
+    {
+        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+        Properties properties = new Properties();
+        // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o
+        properties.setProperty(KAPTCHA_BORDER, "yes");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
+        // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200
+        properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
+        // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50
+        properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
+        // KAPTCHA_SESSION_KEY
+        properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
+        // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
+        // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy
+        properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
+        Config config = new Config(properties);
+        defaultKaptcha.setConfig(config);
+        return defaultKaptcha;
+    }
+    
+    @Bean(name = "captchaProducerMath")
+    public DefaultKaptcha getKaptchaBeanMath()
+    {
+        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+        Properties properties = new Properties();
+        // 鏄惁鏈夎竟妗� 榛樿涓簍rue 鎴戜滑鍙互鑷繁璁剧疆yes锛宯o
+        properties.setProperty(KAPTCHA_BORDER, "yes");
+        // 杈规棰滆壊 榛樿涓篊olor.BLACK
+        properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹂鑹� 榛樿涓篊olor.BLACK
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
+        // 楠岃瘉鐮佸浘鐗囧搴� 榛樿涓�200
+        properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
+        // 楠岃瘉鐮佸浘鐗囬珮搴� 榛樿涓�50
+        properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹀ぇ灏� 榛樿涓�40
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35");
+        // KAPTCHA_SESSION_KEY
+        properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
+        // 楠岃瘉鐮佹枃鏈敓鎴愬櫒
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "KaptchaTextCreator");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹂棿璺� 榛樿涓�2
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
+        // 楠岃瘉鐮佹枃鏈瓧绗﹂暱搴� 榛樿涓�5
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");
+        // 楠岃瘉鐮佹枃鏈瓧浣撴牱寮� 榛樿涓簄ew Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
+        // 楠岃瘉鐮佸櫔鐐归鑹� 榛樿涓篊olor.BLACK
+        properties.setProperty(KAPTCHA_NOISE_COLOR, "white");
+        // 骞叉壈瀹炵幇绫�
+        properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
+        // 鍥剧墖鏍峰紡 姘寸汗com.google.code.kaptcha.impl.WaterRipple 楸肩溂com.google.code.kaptcha.impl.FishEyeGimpy 闃村奖com.google.code.kaptcha.impl.ShadowGimpy
+        properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
+        Config config = new Config(properties);
+        defaultKaptcha.setConfig(config);
+        return defaultKaptcha;
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java b/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java
new file mode 100644
index 0000000..ebaf02b
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/GatewayConfig.java
@@ -0,0 +1,23 @@
+package com.se.gateway.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import com.se.gateway.handler.SentinelFallbackHandler;
+
+/**
+ * 缃戝叧闄愭祦閰嶇疆
+ * 
+ * @author admin
+ */
+@Configuration
+public class GatewayConfig
+{
+    @Bean
+    @Order(Ordered.HIGHEST_PRECEDENCE)
+    public SentinelFallbackHandler sentinelGatewayExceptionHandler()
+    {
+        return new SentinelFallbackHandler();
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java b/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java
new file mode 100644
index 0000000..ed75945
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/KaptchaTextCreator.java
@@ -0,0 +1,75 @@
+package com.se.gateway.config;
+
+import java.util.Random;
+import com.google.code.kaptcha.text.impl.DefaultTextCreator;
+
+/**
+ * 楠岃瘉鐮佹枃鏈敓鎴愬櫒
+ * 
+ * @author admin
+ */
+public class KaptchaTextCreator extends DefaultTextCreator
+{
+    private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(",");
+
+    @Override
+    public String getText()
+    {
+        Integer result = 0;
+        Random random = new Random();
+        int x = random.nextInt(10);
+        int y = random.nextInt(10);
+        StringBuilder suChinese = new StringBuilder();
+        int randomoperands = random.nextInt(3);
+        if (randomoperands == 0)
+        {
+            result = x * y;
+            suChinese.append(CNUMBERS[x]);
+            suChinese.append("*");
+            suChinese.append(CNUMBERS[y]);
+        }
+        else if (randomoperands == 1)
+        {
+            if ((x != 0) && y % x == 0)
+            {
+                result = y / x;
+                suChinese.append(CNUMBERS[y]);
+                suChinese.append("/");
+                suChinese.append(CNUMBERS[x]);
+            }
+            else
+            {
+                result = x + y;
+                suChinese.append(CNUMBERS[x]);
+                suChinese.append("+");
+                suChinese.append(CNUMBERS[y]);
+            }
+        }
+        else if (randomoperands == 2)
+        {
+            if (x >= y)
+            {
+                result = x - y;
+                suChinese.append(CNUMBERS[x]);
+                suChinese.append("-");
+                suChinese.append(CNUMBERS[y]);
+            }
+            else
+            {
+                result = y - x;
+                suChinese.append(CNUMBERS[y]);
+                suChinese.append("-");
+                suChinese.append(CNUMBERS[x]);
+            }
+        }
+        else
+        {
+            result = x + y;
+            suChinese.append(CNUMBERS[x]);
+            suChinese.append("+");
+            suChinese.append(CNUMBERS[y]);
+        }
+        suChinese.append("=?@" + result);
+        return suChinese.toString();
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java b/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java
new file mode 100644
index 0000000..add5c8d
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/RouterFunctionConfiguration.java
@@ -0,0 +1,31 @@
+package com.se.gateway.config;
+
+import com.se.gateway.handler.ValidateCodeHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.web.reactive.function.server.RequestPredicates;
+import org.springframework.web.reactive.function.server.RouterFunction;
+import org.springframework.web.reactive.function.server.RouterFunctions;
+
+/**
+ * 璺敱閰嶇疆淇℃伅
+ * 
+ * @author admin
+ */
+@Configuration
+public class RouterFunctionConfiguration
+{
+    @Autowired
+    private ValidateCodeHandler validateCodeHandler;
+
+    @SuppressWarnings("rawtypes")
+    @Bean
+    public RouterFunction routerFunction()
+    {
+        return RouterFunctions.route(
+                RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
+                validateCodeHandler);
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java b/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java
new file mode 100644
index 0000000..badbe8f
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/SwaggerProvider.java
@@ -0,0 +1,79 @@
+package com.se.gateway.config;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.gateway.config.GatewayProperties;
+import org.springframework.cloud.gateway.route.RouteLocator;
+import org.springframework.cloud.gateway.support.NameUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+import org.springframework.web.reactive.config.ResourceHandlerRegistry;
+import org.springframework.web.reactive.config.WebFluxConfigurer;
+import springfox.documentation.swagger.web.SwaggerResource;
+import springfox.documentation.swagger.web.SwaggerResourcesProvider;
+
+/**
+ * 鑱氬悎绯荤粺鎺ュ彛
+ * 
+ * @author admin
+ */
+@Component
+public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer
+{
+    /**
+     * Swagger2榛樿鐨剈rl鍚庣紑
+     */
+    public static final String SWAGGER2URL = "/v2/api-docs";
+
+    /**
+     * 缃戝叧璺敱
+     */
+    @Lazy
+    @Autowired
+    private RouteLocator routeLocator;
+
+    @Autowired
+    private GatewayProperties gatewayProperties;
+
+    /**
+     * 鑱氬悎鍏朵粬鏈嶅姟鎺ュ彛
+     * 
+     * @return
+     */
+    @Override
+    public List<SwaggerResource> get()
+    {
+        List<SwaggerResource> resourceList = new ArrayList<>();
+        List<String> routes = new ArrayList<>();
+        // 鑾峰彇缃戝叧涓厤缃殑route
+        routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
+        gatewayProperties.getRoutes().stream()
+                .filter(routeDefinition -> routes
+                        .contains(routeDefinition.getId()))
+                .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
+                        .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
+                        .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId()))
+                        .forEach(predicateDefinition -> resourceList
+                                .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs()
+                                        .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL)))));
+        return resourceList;
+    }
+
+    private SwaggerResource swaggerResource(String name, String location)
+    {
+        SwaggerResource swaggerResource = new SwaggerResource();
+        swaggerResource.setName(name);
+        swaggerResource.setLocation(location);
+        swaggerResource.setSwaggerVersion("2.0");
+        return swaggerResource;
+    }
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry)
+    {
+        /** swagger-ui 鍦板潃 */
+        registry.addResourceHandler("/swagger-ui/**")
+                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java
new file mode 100644
index 0000000..2b67a94
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/properties/CaptchaProperties.java
@@ -0,0 +1,46 @@
+package com.se.gateway.config.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 楠岃瘉鐮侀厤缃�
+ * 
+ * @author admin
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.captcha")
+public class CaptchaProperties
+{
+    /**
+     * 楠岃瘉鐮佸紑鍏�
+     */
+    private Boolean enabled;
+
+    /**
+     * 楠岃瘉鐮佺被鍨嬶紙math 鏁扮粍璁$畻 char 瀛楃锛�
+     */
+    private String type;
+
+    public Boolean getEnabled()
+    {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled)
+    {
+        this.enabled = enabled;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+
+    public void setType(String type)
+    {
+        this.type = type;
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java
new file mode 100644
index 0000000..21089cf
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/properties/IgnoreWhiteProperties.java
@@ -0,0 +1,33 @@
+package com.se.gateway.config.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 鏀捐鐧藉悕鍗曢厤缃�
+ * 
+ * @author admin
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.ignore")
+public class IgnoreWhiteProperties
+{
+    /**
+     * 鏀捐鐧藉悕鍗曢厤缃紝缃戝叧涓嶆牎楠屾澶勭殑鐧藉悕鍗�
+     */
+    private List<String> whites = new ArrayList<>();
+
+    public List<String> getWhites()
+    {
+        return whites;
+    }
+
+    public void setWhites(List<String> whites)
+    {
+        this.whites = whites;
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java b/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java
new file mode 100644
index 0000000..6f66969
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/config/properties/XssProperties.java
@@ -0,0 +1,48 @@
+package com.se.gateway.config.properties;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * XSS璺ㄧ珯鑴氭湰閰嶇疆
+ * 
+ * @author admin
+ */
+@Configuration
+@RefreshScope
+@ConfigurationProperties(prefix = "security.xss")
+public class XssProperties
+{
+    /**
+     * Xss寮�鍏�
+     */
+    private Boolean enabled;
+
+    /**
+     * 鎺掗櫎璺緞
+     */
+    private List<String> excludeUrls = new ArrayList<>();
+
+    public Boolean getEnabled()
+    {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled)
+    {
+        this.enabled = enabled;
+    }
+
+    public List<String> getExcludeUrls()
+    {
+        return excludeUrls;
+    }
+
+    public void setExcludeUrls(List<String> excludeUrls)
+    {
+        this.excludeUrls = excludeUrls;
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java
new file mode 100644
index 0000000..52323a6
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java
@@ -0,0 +1,135 @@
+package com.se.gateway.filter;
+
+import com.se.gateway.config.properties.IgnoreWhiteProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.constant.HttpStatus;
+import com.se.common.core.constant.SecurityConstants;
+import com.se.common.core.constant.TokenConstants;
+import com.se.common.core.utils.JwtUtils;
+import com.se.common.core.utils.ServletUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.redis.service.RedisService;
+import io.jsonwebtoken.Claims;
+import reactor.core.publisher.Mono;
+
+/**
+ * 缃戝叧閴存潈
+ * 
+ * @author admin
+ */
+@Component
+public class AuthFilter implements GlobalFilter, Ordered
+{
+    private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
+
+    // 鎺掗櫎杩囨护鐨� uri 鍦板潃锛宯acos鑷娣诲姞
+    @Autowired
+    private IgnoreWhiteProperties ignoreWhite;
+
+    @Autowired
+    private RedisService redisService;
+
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
+    {
+        ServerHttpRequest request = exchange.getRequest();
+        ServerHttpRequest.Builder mutate = request.mutate();
+
+        String url = request.getURI().getPath();
+        // 璺宠繃涓嶉渶瑕侀獙璇佺殑璺緞
+        if (StringUtils.matches(url, ignoreWhite.getWhites()))
+        {
+            return chain.filter(exchange);
+        }
+        String token = getToken(request);
+        if (StringUtils.isEmpty(token))
+        {
+            return unauthorizedResponse(exchange, "浠ょ墝涓嶈兘涓虹┖");
+        }
+        Claims claims = JwtUtils.parseToken(token);
+        if (claims == null)
+        {
+            return unauthorizedResponse(exchange, "浠ょ墝宸茶繃鏈熸垨楠岃瘉涓嶆纭紒");
+        }
+        String userkey = JwtUtils.getUserKey(claims);
+        boolean islogin = redisService.hasKey(getTokenKey(userkey));
+        if (!islogin)
+        {
+            return unauthorizedResponse(exchange, "鐧诲綍鐘舵�佸凡杩囨湡");
+        }
+        String userid = JwtUtils.getUserId(claims);
+        String username = JwtUtils.getUserName(claims);
+        if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
+        {
+            return unauthorizedResponse(exchange, "浠ょ墝楠岃瘉澶辫触");
+        }
+
+        // 璁剧疆鐢ㄦ埛淇℃伅鍒拌姹�
+        addHeader(mutate, SecurityConstants.USER_KEY, userkey);
+        addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
+        addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
+        // 鍐呴儴璇锋眰鏉ユ簮鍙傛暟娓呴櫎
+        removeHeader(mutate, SecurityConstants.FROM_SOURCE);
+        return chain.filter(exchange.mutate().request(mutate.build()).build());
+    }
+
+    private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value)
+    {
+        if (value == null)
+        {
+            return;
+        }
+        String valueStr = value.toString();
+        String valueEncode = ServletUtils.urlEncode(valueStr);
+        mutate.header(name, valueEncode);
+    }
+
+    private void removeHeader(ServerHttpRequest.Builder mutate, String name)
+    {
+        mutate.headers(httpHeaders -> httpHeaders.remove(name)).build();
+    }
+
+    private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg)
+    {
+        log.error("[閴存潈寮傚父澶勭悊]璇锋眰璺緞:{}", exchange.getRequest().getPath());
+        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED);
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨key
+     */
+    private String getTokenKey(String token)
+    {
+        return CacheConstants.LOGIN_TOKEN_KEY + token;
+    }
+
+    /**
+     * 鑾峰彇璇锋眰token
+     */
+    private String getToken(ServerHttpRequest request)
+    {
+        String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
+        // 濡傛灉鍓嶇璁剧疆浜嗕护鐗屽墠缂�锛屽垯瑁佸壀鎺夊墠缂�
+        if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
+        {
+            token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
+        }
+        return token;
+    }
+
+    @Override
+    public int getOrder()
+    {
+        return -200;
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java
new file mode 100644
index 0000000..6cd3838
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/filter/BlackListUrlFilter.java
@@ -0,0 +1,65 @@
+package com.se.gateway.filter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.stereotype.Component;
+import com.se.common.core.utils.ServletUtils;
+
+/**
+ * 榛戝悕鍗曡繃婊ゅ櫒
+ * 
+ * @author admin
+ */
+@Component
+public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config>
+{
+    @Override
+    public GatewayFilter apply(Config config)
+    {
+        return (exchange, chain) -> {
+
+            String url = exchange.getRequest().getURI().getPath();
+            if (config.matchBlacklist(url))
+            {
+                return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰鍦板潃涓嶅厑璁歌闂�");
+            }
+
+            return chain.filter(exchange);
+        };
+    }
+
+    public BlackListUrlFilter()
+    {
+        super(Config.class);
+    }
+
+    public static class Config
+    {
+        private List<String> blacklistUrl;
+
+        private List<Pattern> blacklistUrlPattern = new ArrayList<>();
+
+        public boolean matchBlacklist(String url)
+        {
+            return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find());
+        }
+
+        public List<String> getBlacklistUrl()
+        {
+            return blacklistUrl;
+        }
+
+        public void setBlacklistUrl(List<String> blacklistUrl)
+        {
+            this.blacklistUrl = blacklistUrl;
+            this.blacklistUrlPattern.clear();
+            this.blacklistUrl.forEach(url -> {
+                this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE));
+            });
+        }
+    }
+
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java
new file mode 100644
index 0000000..a0f69c3
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/filter/CacheRequestFilter.java
@@ -0,0 +1,87 @@
+package com.se.gateway.filter;
+
+import java.util.Collections;
+import java.util.List;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.OrderedGatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+/**
+ * 鑾峰彇body璇锋眰鏁版嵁锛堣В鍐虫祦涓嶈兘閲嶅璇诲彇闂锛�
+ * 
+ * @author admin
+ */
+@Component
+public class CacheRequestFilter extends AbstractGatewayFilterFactory<CacheRequestFilter.Config>
+{
+    public CacheRequestFilter()
+    {
+        super(Config.class);
+    }
+
+    @Override
+    public String name()
+    {
+        return "CacheRequestFilter";
+    }
+
+    @Override
+    public GatewayFilter apply(Config config)
+    {
+        CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter();
+        Integer order = config.getOrder();
+        if (order == null)
+        {
+            return cacheRequestGatewayFilter;
+        }
+        return new OrderedGatewayFilter(cacheRequestGatewayFilter, order);
+    }
+
+    public static class CacheRequestGatewayFilter implements GatewayFilter
+    {
+        @Override
+        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
+        {
+            // GET DELETE 涓嶈繃婊�
+            HttpMethod method = exchange.getRequest().getMethod();
+            if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE)
+            {
+                return chain.filter(exchange);
+            }
+            return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> {
+                if (serverHttpRequest == exchange.getRequest())
+                {
+                    return chain.filter(exchange);
+                }
+                return chain.filter(exchange.mutate().request(serverHttpRequest).build());
+            });
+        }
+    }
+
+    @Override
+    public List<String> shortcutFieldOrder()
+    {
+        return Collections.singletonList("order");
+    }
+
+    static class Config
+    {
+        private Integer order;
+
+        public Integer getOrder()
+        {
+            return order;
+        }
+
+        public void setOrder(Integer order)
+        {
+            this.order = order;
+        }
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java
new file mode 100644
index 0000000..9a80854
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/filter/ValidateCodeFilter.java
@@ -0,0 +1,80 @@
+package com.se.gateway.filter;
+
+import java.nio.CharBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.atomic.AtomicReference;
+
+import com.se.gateway.service.ValidateCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.core.io.buffer.DataBufferUtils;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.se.common.core.utils.ServletUtils;
+import com.se.common.core.utils.StringUtils;
+import com.se.gateway.config.properties.CaptchaProperties;
+import reactor.core.publisher.Flux;
+
+/**
+ * 楠岃瘉鐮佽繃婊ゅ櫒
+ *
+ * @author admin
+ */
+@Component
+public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object>
+{
+    private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" };
+
+    @Autowired
+    private ValidateCodeService validateCodeService;
+
+    @Autowired
+    private CaptchaProperties captchaProperties;
+
+    private static final String CODE = "code";
+
+    private static final String UUID = "uuid";
+
+    @Override
+    public GatewayFilter apply(Object config)
+    {
+        return (exchange, chain) -> {
+            ServerHttpRequest request = exchange.getRequest();
+
+            // 闈炵櫥褰�/娉ㄥ唽璇锋眰鎴栭獙璇佺爜鍏抽棴锛屼笉澶勭悊
+            if (!StringUtils.equalsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled())
+            {
+                return chain.filter(exchange);
+            }
+
+            try
+            {
+                String rspStr = resolveBodyFromRequest(request);
+                JSONObject obj = JSON.parseObject(rspStr);
+                validateCodeService.checkCaptcha(obj.getString(CODE), obj.getString(UUID));
+            }
+            catch (Exception e)
+            {
+                return ServletUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage());
+            }
+            return chain.filter(exchange);
+        };
+    }
+
+    private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest)
+    {
+        // 鑾峰彇璇锋眰浣�
+        Flux<DataBuffer> body = serverHttpRequest.getBody();
+        AtomicReference<String> bodyRef = new AtomicReference<>();
+        body.subscribe(buffer -> {
+            CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer());
+            DataBufferUtils.release(buffer);
+            bodyRef.set(charBuffer.toString());
+        });
+        return bodyRef.get();
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java b/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java
new file mode 100644
index 0000000..cf9d89b
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/filter/XssFilter.java
@@ -0,0 +1,129 @@
+package com.se.gateway.filter;
+
+import java.nio.charset.StandardCharsets;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.core.io.buffer.DataBufferFactory;
+import org.springframework.core.io.buffer.DataBufferUtils;
+import org.springframework.core.io.buffer.DefaultDataBufferFactory;
+import org.springframework.core.io.buffer.NettyDataBufferFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.html.EscapeUtil;
+import com.se.gateway.config.properties.XssProperties;
+import io.netty.buffer.ByteBufAllocator;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/**
+ * 璺ㄧ珯鑴氭湰杩囨护鍣�
+ *
+ * @author admin
+ */
+@Component
+@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true")
+public class XssFilter implements GlobalFilter, Ordered
+{
+    // 璺ㄧ珯鑴氭湰鐨� xss 閰嶇疆锛宯acos鑷娣诲姞
+    @Autowired
+    private XssProperties xss;
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
+    {
+        ServerHttpRequest request = exchange.getRequest();
+        // xss寮�鍏虫湭寮�鍚� 鎴� 閫氳繃nacos鍏抽棴锛屼笉杩囨护
+        if (!xss.getEnabled())
+        {
+            return chain.filter(exchange);
+        }
+        // GET DELETE 涓嶈繃婊�
+        HttpMethod method = request.getMethod();
+        if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE)
+        {
+            return chain.filter(exchange);
+        }
+        // 闈瀓son绫诲瀷锛屼笉杩囨护
+        if (!isJsonRequest(exchange))
+        {
+            return chain.filter(exchange);
+        }
+        // excludeUrls 涓嶈繃婊�
+        String url = request.getURI().getPath();
+        if (StringUtils.matches(url, xss.getExcludeUrls()))
+        {
+            return chain.filter(exchange);
+        }
+        ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange);
+        return chain.filter(exchange.mutate().request(httpRequestDecorator).build());
+
+    }
+
+    private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange)
+    {
+        ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest())
+        {
+            @Override
+            public Flux<DataBuffer> getBody()
+            {
+                Flux<DataBuffer> body = super.getBody();
+                return body.buffer().map(dataBuffers -> {
+                    DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
+                    DataBuffer join = dataBufferFactory.join(dataBuffers);
+                    byte[] content = new byte[join.readableByteCount()];
+                    join.read(content);
+                    DataBufferUtils.release(join);
+                    String bodyStr = new String(content, StandardCharsets.UTF_8);
+                    // 闃瞲ss鏀诲嚮杩囨护
+                    bodyStr = EscapeUtil.clean(bodyStr);
+                    // 杞垚瀛楄妭
+                    byte[] bytes = bodyStr.getBytes(StandardCharsets.UTF_8);
+                    NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT);
+                    DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length);
+                    buffer.write(bytes);
+                    return buffer;
+                });
+            }
+
+            @Override
+            public HttpHeaders getHeaders()
+            {
+                HttpHeaders httpHeaders = new HttpHeaders();
+                httpHeaders.putAll(super.getHeaders());
+                // 鐢变簬淇敼浜嗚姹備綋鐨刡ody锛屽鑷碿ontent-length闀垮害涓嶇‘瀹氾紝鍥犳闇�瑕佸垹闄ゅ師鍏堢殑content-length
+                httpHeaders.remove(HttpHeaders.CONTENT_LENGTH);
+                httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
+                return httpHeaders;
+            }
+
+        };
+        return serverHttpRequestDecorator;
+    }
+
+    /**
+     * 鏄惁鏄疛son璇锋眰
+     * 
+     * @param exchange HTTP璇锋眰
+     */
+    public boolean isJsonRequest(ServerWebExchange exchange)
+    {
+        String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
+        return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
+    }
+
+    @Override
+    public int getOrder()
+    {
+        return -100;
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java
new file mode 100644
index 0000000..3bca5ed
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/handler/GatewayExceptionHandler.java
@@ -0,0 +1,56 @@
+package com.se.gateway.handler;
+
+import org.springframework.cloud.gateway.support.NotFoundException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.server.ResponseStatusException;
+import org.springframework.web.server.ServerWebExchange;
+import com.se.common.core.utils.ServletUtils;
+import reactor.core.publisher.Mono;
+
+/**
+ * 缃戝叧缁熶竴寮傚父澶勭悊
+ *
+ * @author admin
+ */
+@Order(-1)
+@Configuration
+public class GatewayExceptionHandler implements ErrorWebExceptionHandler
+{
+    private static final Logger log = LoggerFactory.getLogger(GatewayExceptionHandler.class);
+
+    @Override
+    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
+    {
+        ServerHttpResponse response = exchange.getResponse();
+
+        if (exchange.getResponse().isCommitted())
+        {
+            return Mono.error(ex);
+        }
+
+        String msg;
+
+        if (ex instanceof NotFoundException)
+        {
+            msg = "鏈嶅姟鏈壘鍒�";
+        }
+        else if (ex instanceof ResponseStatusException)
+        {
+            ResponseStatusException responseStatusException = (ResponseStatusException) ex;
+            msg = responseStatusException.getMessage();
+        }
+        else
+        {
+            msg = "鍐呴儴鏈嶅姟鍣ㄩ敊璇�";
+        }
+
+        log.error("[缃戝叧寮傚父澶勭悊]璇锋眰璺緞:{},寮傚父淇℃伅:{}", exchange.getRequest().getPath(), ex.getMessage());
+
+        return ServletUtils.webFluxResponseWriter(response, msg);
+    }
+}
\ No newline at end of file
diff --git a/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java
new file mode 100644
index 0000000..7400095
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/handler/SentinelFallbackHandler.java
@@ -0,0 +1,41 @@
+package com.se.gateway.handler;
+
+import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.se.common.core.utils.ServletUtils;
+import org.springframework.web.reactive.function.server.ServerResponse;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebExceptionHandler;
+import reactor.core.publisher.Mono;
+
+/**
+ * 鑷畾涔夐檺娴佸紓甯稿鐞�
+ *
+ * @author admin
+ */
+public class SentinelFallbackHandler implements WebExceptionHandler
+{
+    private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange)
+    {
+        return ServletUtils.webFluxResponseWriter(exchange.getResponse(), "璇锋眰瓒呰繃鏈�澶ф暟锛岃绋嶅�欏啀璇�");
+    }
+
+    @Override
+    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex)
+    {
+        if (exchange.getResponse().isCommitted())
+        {
+            return Mono.error(ex);
+        }
+        if (!BlockException.isBlockException(ex))
+        {
+            return Mono.error(ex);
+        }
+        return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange));
+    }
+
+    private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable)
+    {
+        return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable);
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java
new file mode 100644
index 0000000..edc42c1
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/handler/SwaggerHandler.java
@@ -0,0 +1,56 @@
+package com.se.gateway.handler;
+
+import java.util.Optional;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
+import springfox.documentation.swagger.web.SecurityConfiguration;
+import springfox.documentation.swagger.web.SecurityConfigurationBuilder;
+import springfox.documentation.swagger.web.SwaggerResourcesProvider;
+import springfox.documentation.swagger.web.UiConfiguration;
+import springfox.documentation.swagger.web.UiConfigurationBuilder;
+
+@RestController
+@RequestMapping("/swagger-resources")
+public class SwaggerHandler
+{
+    @Autowired(required = false)
+    private SecurityConfiguration securityConfiguration;
+
+    @Autowired(required = false)
+    private UiConfiguration uiConfiguration;
+
+    private final SwaggerResourcesProvider swaggerResources;
+
+    @Autowired
+    public SwaggerHandler(SwaggerResourcesProvider swaggerResources)
+    {
+        this.swaggerResources = swaggerResources;
+    }
+
+    @GetMapping("/configuration/security")
+    public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration()
+    {
+        return Mono.just(new ResponseEntity<>(
+                Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()),
+                HttpStatus.OK));
+    }
+
+    @GetMapping("/configuration/ui")
+    public Mono<ResponseEntity<UiConfiguration>> uiConfiguration()
+    {
+        return Mono.just(new ResponseEntity<>(
+                Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));
+    }
+
+    @SuppressWarnings("rawtypes")
+    @GetMapping("")
+    public Mono<ResponseEntity> swaggerResources()
+    {
+        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java b/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java
new file mode 100644
index 0000000..5882d4d
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/handler/ValidateCodeHandler.java
@@ -0,0 +1,42 @@
+package com.se.gateway.handler;
+
+import java.io.IOException;
+
+import com.se.gateway.service.ValidateCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
+import org.springframework.web.reactive.function.BodyInserters;
+import org.springframework.web.reactive.function.server.HandlerFunction;
+import org.springframework.web.reactive.function.server.ServerRequest;
+import org.springframework.web.reactive.function.server.ServerResponse;
+import com.se.common.core.exception.CaptchaException;
+import com.se.common.core.web.domain.AjaxResult;
+import reactor.core.publisher.Mono;
+
+/**
+ * 楠岃瘉鐮佽幏鍙�
+ *
+ * @author admin
+ */
+@Component
+public class ValidateCodeHandler implements HandlerFunction<ServerResponse>
+{
+    @Autowired
+    private ValidateCodeService validateCodeService;
+
+    @Override
+    public Mono<ServerResponse> handle(ServerRequest serverRequest)
+    {
+        AjaxResult ajax;
+        try
+        {
+            ajax = validateCodeService.createCaptcha();
+        }
+        catch (CaptchaException | IOException e)
+        {
+            return Mono.error(e);
+        }
+        return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax));
+    }
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java b/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java
new file mode 100644
index 0000000..db83c28
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/service/ValidateCodeService.java
@@ -0,0 +1,23 @@
+package com.se.gateway.service;
+
+import java.io.IOException;
+import com.se.common.core.exception.CaptchaException;
+import com.se.common.core.web.domain.AjaxResult;
+
+/**
+ * 楠岃瘉鐮佸鐞�
+ *
+ * @author admin
+ */
+public interface ValidateCodeService
+{
+    /**
+     * 鐢熸垚楠岃瘉鐮�
+     */
+    public AjaxResult createCaptcha() throws IOException, CaptchaException;
+
+    /**
+     * 鏍¢獙楠岃瘉鐮�
+     */
+    public void checkCaptcha(String key, String value) throws CaptchaException;
+}
diff --git a/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java b/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java
new file mode 100644
index 0000000..913ceeb
--- /dev/null
+++ b/se-gateway/src/main/java/com/se/gateway/service/impl/ValidateCodeServiceImpl.java
@@ -0,0 +1,119 @@
+package com.se.gateway.service.impl;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+
+import com.se.gateway.config.properties.CaptchaProperties;
+import com.se.gateway.service.ValidateCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.FastByteArrayOutputStream;
+import com.google.code.kaptcha.Producer;
+import com.se.common.core.constant.CacheConstants;
+import com.se.common.core.constant.Constants;
+import com.se.common.core.exception.CaptchaException;
+import com.se.common.core.utils.StringUtils;
+import com.se.common.core.utils.sign.Base64;
+import com.se.common.core.utils.uuid.IdUtils;
+import com.se.common.core.web.domain.AjaxResult;
+import com.se.common.redis.service.RedisService;
+
+/**
+ * 楠岃瘉鐮佸疄鐜板鐞�
+ *
+ * @author admin
+ */
+@Service
+public class ValidateCodeServiceImpl implements ValidateCodeService
+{
+    @Resource(name = "captchaProducer")
+    private Producer captchaProducer;
+
+    @Resource(name = "captchaProducerMath")
+    private Producer captchaProducerMath;
+
+    @Autowired
+    private RedisService redisService;
+
+    @Autowired
+    private CaptchaProperties captchaProperties;
+
+    /**
+     * 鐢熸垚楠岃瘉鐮�
+     */
+    @Override
+    public AjaxResult createCaptcha() throws IOException, CaptchaException
+    {
+        AjaxResult ajax = AjaxResult.success();
+        boolean captchaEnabled = captchaProperties.getEnabled();
+        ajax.put("captchaEnabled", captchaEnabled);
+        if (!captchaEnabled)
+        {
+            return ajax;
+        }
+
+        // 淇濆瓨楠岃瘉鐮佷俊鎭�
+        String uuid = IdUtils.simpleUUID();
+        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
+
+        String capStr = null, code = null;
+        BufferedImage image = null;
+
+        String captchaType = captchaProperties.getType();
+        // 鐢熸垚楠岃瘉鐮�
+        if ("math".equals(captchaType))
+        {
+            String capText = captchaProducerMath.createText();
+            capStr = capText.substring(0, capText.lastIndexOf("@"));
+            code = capText.substring(capText.lastIndexOf("@") + 1);
+            image = captchaProducerMath.createImage(capStr);
+        }
+        else if ("char".equals(captchaType))
+        {
+            capStr = code = captchaProducer.createText();
+            image = captchaProducer.createImage(capStr);
+        }
+
+        redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
+        // 杞崲娴佷俊鎭啓鍑�
+        FastByteArrayOutputStream os = new FastByteArrayOutputStream();
+        try
+        {
+            ImageIO.write(image, "jpg", os);
+        }
+        catch (IOException e)
+        {
+            return AjaxResult.error(e.getMessage());
+        }
+
+        ajax.put("uuid", uuid);
+        ajax.put("img", Base64.encode(os.toByteArray()));
+        return ajax;
+    }
+
+    /**
+     * 鏍¢獙楠岃瘉鐮�
+     */
+    @Override
+    public void checkCaptcha(String code, String uuid) throws CaptchaException
+    {
+        if (StringUtils.isEmpty(code))
+        {
+            throw new CaptchaException("楠岃瘉鐮佷笉鑳戒负绌�");
+        }
+        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
+        String captcha = redisService.getCacheObject(verifyKey);
+        if (captcha == null)
+        {
+            throw new CaptchaException("楠岃瘉鐮佸凡澶辨晥");
+        }
+        redisService.deleteObject(verifyKey);
+        if (!code.equalsIgnoreCase(captcha))
+        {
+            throw new CaptchaException("楠岃瘉鐮侀敊璇�");
+        }
+    }
+}
diff --git a/se-gateway/src/main/resources/banner.txt b/se-gateway/src/main/resources/banner.txt
new file mode 100644
index 0000000..cf2c628
--- /dev/null
+++ b/se-gateway/src/main/resources/banner.txt
@@ -0,0 +1,3 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+SeGatewayApplication锛屽凡缁忓惎鍔�
\ No newline at end of file
diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/se-gateway/src/main/resources/bootstrap.yml
similarity index 100%
rename from ruoyi-gateway/src/main/resources/bootstrap.yml
rename to se-gateway/src/main/resources/bootstrap.yml
diff --git a/ruoyi-gateway/src/main/resources/logback.xml b/se-gateway/src/main/resources/logback.xml
similarity index 100%
rename from ruoyi-gateway/src/main/resources/logback.xml
rename to se-gateway/src/main/resources/logback.xml
diff --git a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java b/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java
deleted file mode 100644
index b5adc7f..0000000
--- a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.ruoyi.modules.monitor;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import de.codecentric.boot.admin.server.config.EnableAdminServer;
-
-/**
- * 鐩戞帶涓績
- * 
- * @author admin
- */
-@EnableAdminServer
-@SpringBootApplication
-public class RuoYiMonitorApplication
-{
-    public static void main(String[] args)
-    {
-        SpringApplication.run(RuoYiMonitorApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鐩戞帶涓績鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}
diff --git a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java b/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java
deleted file mode 100644
index c8f9175..0000000
--- a/se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.ruoyi.modules.monitor.config;
-
-import de.codecentric.boot.admin.server.config.AdminServerProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
-
-/**
- * 鐩戞帶鏉冮檺閰嶇疆
- * 
- * @author admin
- */
-@EnableWebSecurity
-public class WebSecurityConfigurer
-{
-    private final String adminContextPath;
-
-    public WebSecurityConfigurer(AdminServerProperties adminServerProperties)
-    {
-        this.adminContextPath = adminServerProperties.getContextPath();
-    }
-
-    @Bean
-    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
-    {
-        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
-        successHandler.setTargetUrlParameter("redirectTo");
-        successHandler.setDefaultTargetUrl(adminContextPath + "/");
-
-        return httpSecurity
-                .headers().frameOptions().disable()
-                .and().authorizeRequests()
-                .antMatchers(adminContextPath + "/assets/**"
-                        , adminContextPath + "/login"
-                        , adminContextPath + "/actuator/**"
-                        , adminContextPath + "/instances/**"
-                ).permitAll()
-                .anyRequest().authenticated()
-                .and()
-                .formLogin().loginPage(adminContextPath + "/login")
-                .successHandler(successHandler).and()
-                .logout().logoutUrl(adminContextPath + "/logout")
-                .and()
-                .httpBasic().and()
-                .csrf()
-                .disable()
-                .build();
-    }
-}
diff --git a/se-visual/ruoyi-monitor/src/main/resources/banner.txt b/se-visual/ruoyi-monitor/src/main/resources/banner.txt
deleted file mode 100644
index ecaf8a4..0000000
--- a/se-visual/ruoyi-monitor/src/main/resources/banner.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Spring Boot Version: ${spring-boot.version}
-Spring Application Name: ${spring.application.name}
-                            _                                   _  _                
-                           (_)                                 (_)| |               
- _ __  _   _   ___   _   _  _  ______  _ __ ___    ___   _ __   _ | |_   ___   _ __ 
-| '__|| | | | / _ \ | | | || ||______|| '_ ` _ \  / _ \ | '_ \ | || __| / _ \ | '__|
-| |   | |_| || (_) || |_| || |        | | | | | || (_) || | | || || |_ | (_) || |   
-|_|    \__,_| \___/  \__, ||_|        |_| |_| |_| \___/ |_| |_||_| \__| \___/ |_|   
-                      __/ |                                                         
-                     |___/                                                          
\ No newline at end of file
diff --git a/se-visual/ruoyi-monitor/pom.xml b/se-visual/se-monitor/pom.xml
similarity index 100%
rename from se-visual/ruoyi-monitor/pom.xml
rename to se-visual/se-monitor/pom.xml
diff --git a/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java
new file mode 100644
index 0000000..b0a56ca
--- /dev/null
+++ b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/SeMonitorApplication.java
@@ -0,0 +1,30 @@
+package com.se.modules.monitor;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
+
+/**
+ * 鐩戞帶涓績
+ * 
+ * @author admin
+ */
+@EnableAdminServer
+@SpringBootApplication
+public class SeMonitorApplication
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeMonitorApplication.class, args);
+        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鐩戞帶涓績鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
+                " .-------.       ____     __        \n" +
+                " |  _ _   \\      \\   \\   /  /    \n" +
+                " | ( ' )  |       \\  _. /  '       \n" +
+                " |(_ o _) /        _( )_ .'         \n" +
+                " | (_,_).' __  ___(_ o _)'          \n" +
+                " |  |\\ \\  |  ||   |(_,_)'         \n" +
+                " |  | \\ `'   /|   `-'  /           \n" +
+                " |  |  \\    /  \\      /           \n" +
+                " ''-'   `'-'    `-..-'              ");
+    }
+}
diff --git a/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java
new file mode 100644
index 0000000..df88aed
--- /dev/null
+++ b/se-visual/se-monitor/src/main/java/com/se/modules/monitor/config/WebSecurityConfigurer.java
@@ -0,0 +1,51 @@
+package com.se.modules.monitor.config;
+
+import de.codecentric.boot.admin.server.config.AdminServerProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
+
+/**
+ * 鐩戞帶鏉冮檺閰嶇疆
+ * 
+ * @author admin
+ */
+@EnableWebSecurity
+public class WebSecurityConfigurer
+{
+    private final String adminContextPath;
+
+    public WebSecurityConfigurer(AdminServerProperties adminServerProperties)
+    {
+        this.adminContextPath = adminServerProperties.getContextPath();
+    }
+
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
+    {
+        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
+        successHandler.setTargetUrlParameter("redirectTo");
+        successHandler.setDefaultTargetUrl(adminContextPath + "/");
+
+        return httpSecurity
+                .headers().frameOptions().disable()
+                .and().authorizeRequests()
+                .antMatchers(adminContextPath + "/assets/**"
+                        , adminContextPath + "/login"
+                        , adminContextPath + "/actuator/**"
+                        , adminContextPath + "/instances/**"
+                ).permitAll()
+                .anyRequest().authenticated()
+                .and()
+                .formLogin().loginPage(adminContextPath + "/login")
+                .successHandler(successHandler).and()
+                .logout().logoutUrl(adminContextPath + "/logout")
+                .and()
+                .httpBasic().and()
+                .csrf()
+                .disable()
+                .build();
+    }
+}
diff --git a/se-visual/se-monitor/src/main/resources/banner.txt b/se-visual/se-monitor/src/main/resources/banner.txt
new file mode 100644
index 0000000..1bed2a5
--- /dev/null
+++ b/se-visual/se-monitor/src/main/resources/banner.txt
@@ -0,0 +1,3 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+SeMonitorApplication锛屽凡缁忓惎鍔�
\ No newline at end of file
diff --git a/se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/se-visual/se-monitor/src/main/resources/bootstrap.yml
similarity index 100%
rename from se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
rename to se-visual/se-monitor/src/main/resources/bootstrap.yml
diff --git a/se-visual/ruoyi-monitor/src/main/resources/logback.xml b/se-visual/se-monitor/src/main/resources/logback.xml
similarity index 100%
rename from se-visual/ruoyi-monitor/src/main/resources/logback.xml
rename to se-visual/se-monitor/src/main/resources/logback.xml

--
Gitblit v1.9.3