From 8f45afced0c6a4085560c62dbd58e6ef0f4cecf4 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 19 二月 2025 16:26:23 +0800
Subject: [PATCH] 提交基础版本

---
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysIndexController.java                                |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserOnlineMapper.java                        |    8 
 ruoyi-admin/src/main/resources/mapper/system/SysUserRoleMapper.xml                                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysLogininfor.java                              |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDeptMapper.java                              |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserServiceImpl.java                    |   24 
 ruoyi-admin/src/main/resources/static/css/style.min.css                                               |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserOnlineServiceImpl.java              |   12 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java          |    5 
 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java                       |    5 
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java                                      |   14 
 ruoyi-admin/src/main/resources/mapper/system/SysDictDataMapper.xml                                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserMapper.java                              |    6 
 ruoyi-quartz/pom.xml                                                                                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java                   |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/CacheController.java                           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysNotice.java                                  |    2 
 ruoyi-generator/src/main/resources/vm/java/controller.java.vm                                         |    1 
 ruoyi-admin/src/main/resources/mapper/system/SysNoticeMapper.xml                                      |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMapper.java                              |    6 
 ruoyi-admin/src/main/resources/static/ruoyi/js/ry-ui.js                                               |   14 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoDialogController.java              |    2 
 ruoyi-admin/src/main/java/com/ruoyi/sange/util/JwtUtils.java                                          |   74 
 ruoyi-quartz/src/main/resources/templates/monitor/job/cron.html                                       |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java                      |    7 
 ruoyi-admin/src/main/resources/mapper/system/SysUserPostMapper.xml                                    |    2 
 ruoyi-generator/pom.xml                                                                               |    2 
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemUserServiceImpl.java                     |   15 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/BuildController.java                                     |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java            |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java      |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDUtil.java                                              |  102 +
 ruoyi-admin/src/main/resources/mapper/system/SysConfigMapper.xml                                      |    2 
 ruoyi-admin/src/main/resources/templates/register.html                                                |    6 
 ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm                                         |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysCaptchaController.java                              |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysUserOnlineController.java                   |    6 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java                  |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDeptServiceImpl.java                    |   10 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoReportController.java              |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictDataController.java                             |    5 
 ruoyi-admin/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java                       |   13 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java |    0 
 pom.xml                                                                                               |   64 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/rememberMe/CustomCookieRememberMeManager.java     |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysOperLog.java                                 |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java                |    0 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java                                  |  298 +--
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoFormController.java                |    2 
 ruoyi-admin/src/main/resources/mapper/system/SysUserMapper.xml                                        |    2 
 ruoyi-admin/src/main/resources/static/css/style.css                                                   |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRoleController.java                                 |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoOperateController.java             |    7 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysConfigService.java                          |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysConfigMapper.java                            |    8 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java                 |    0 
 ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemUser.java                                      |  119 +
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/DruidConfig.java                                 |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysConfigServiceImpl.java                  |   12 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java                      |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysLogininforController.java                   |    6 
 ruoyi-admin/src/main/java/com/ruoyi/sange/util/SecurityConstants.java                                 |   24 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysPostMapper.java                              |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysLogininforService.java                      |    8 
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/TokenVo.java                                        |   18 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/Result.java                                              |  127 +
 ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/PermissionsAspect.java                          |    0 
 ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenService.java                                      |   82 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysPostService.java                            |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysLogininforMapper.java                        |    8 
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java                                             |   37 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDModel.java                                             |   50 
 ruoyi-admin/src/main/resources/mapper/system/SysRoleMapper.xml                                        |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictTypeController.java                             |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRegisterController.java                             |    4 
 ruoyi-admin/src/main/resources/templates/demo/table/resizable.html                                    |   11 
 ruoyi-admin/src/main/java/com/ruoyi/framework/manager/AsyncManager.java                               |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysPost.java                                    |    2 
 ruoyi-admin/src/main/resources/mapper/system/SysRoleMenuMapper.xml                                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/CacheUtil.java                                           |   19 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/UUIDUtil.java                                            |   97 +
 ruoyi-admin/src/main/resources/templates/index-topnav.html                                            |    6 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java                   |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java                           |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/DruidController.java                           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java                              |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/I18nConfig.java                                  |    0 
 ruoyi-admin/src/main/resources/templates/demo/form/datetime.html                                      |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoIconController.java                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysConfigController.java                               |    7 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserRole.java                                |    2 
 ruoyi-admin/src/main/resources/templates/lock.html                                                    |    2 
 ruoyi-admin/src/main/resources/templates/index.html                                                   |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysMenuServiceImpl.java                    |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RedisConfig.java                                  |   33 
 ruoyi-admin/src/main/resources/mapper/system/SysDeptMapper.xml                                        |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictTypeMapper.java                          |    6 
 ruoyi-generator/src/main/resources/vm/java/domain.java.vm                                             |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/TestController.java                                      |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java                               |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java                             |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysMenuController.java                                 |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysConfig.java                                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java        |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java                            |    0 
 ruoyi-admin/src/main/resources/application-druid.yml                                                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictTypeServiceImpl.java                |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysOperlogController.java                      |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleDept.java                                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java                       |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictDataServiceImpl.java                |   10 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java                              |    0 
 ruoyi-admin/src/main/resources/mapper/system/SysMenuMapper.xml                                        |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysOperLogService.java                         |    8 
 ruoyi-admin/src/main/resources/mapper/system/SysOperLogMapper.xml                                     |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserService.java                            |    8 
 ruoyi-admin/src/main/resources/templates/include.html                                                 |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/R.java                                                   |   28 
 ruoyi-admin/src/main/resources/mapper/system/SysLogininforMapper.xml                                  |    2 
 ruoyi-admin/src/main/resources/mapper/system/SysRoleDeptMapper.xml                                    |    2 
 ruoyi-admin/src/main/resources/templates/demo/table/asynTree.html                                     |   10 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java                      |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysRoleServiceImpl.java                    |   20 
 ruoyi-admin/src/main/resources/templates/skin.html                                                    |    2 
 ruoyi-admin/src/main/resources/static/ruoyi/index.js                                                  |    7 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/ServerController.java                          |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java     |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysMenuService.java                            |    6 
 ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js                       |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysUserController.java                                 |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/StringUtils.java                                         |   26 
 ruoyi-admin/src/main/resources/application.yml                                                        |   41 
 ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemUserMapper.java                                |   13 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserPost.java                                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysRoleService.java                            |    8 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java                              |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserPostMapper.java                          |    8 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/DictService.java                            |    5 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java               |    0 
 ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css                                             |    4 
 ruoyi-admin/src/main/resources/mapper/system/SysPostMapper.xml                                        |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysNoticeMapper.java                            |    8 
 ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemUserController.java                        |  104 +
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictDataMapper.java                          |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoTableController.java               |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysOperLogMapper.java                           |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserRoleMapper.java                          |    8 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/CacheService.java                           |    0 
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/LoginVo.java                                        |   18 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/util/AuthorizationUtils.java                      |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleMenu.java                                |    2 
 ruoyi-admin/src/main/resources/templates/main.html                                                    | 1755 -------------------
 ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java                            |    0 
 ruoyi-admin/src/main/resources/static/img/qr_code.png                                                 |    0 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java                               |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/RedisLock.java                                           |   46 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java                              |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysNoticeServiceImpl.java                  |   12 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java                                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSession.java                        |    0 
 ruoyi-admin/src/main/resources/mapper/system/SysDictTypeMapper.xml                                    |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserOnline.java                              |    2 
 ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java                               |   18 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/GoodsModel.java                            |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java      |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDeptService.java                            |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictDataService.java                        |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserOnlineService.java                      |    8 
 ruoyi-generator/src/main/resources/generator.yml                                                      |    4 
 ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java                                  |    3 
 ruoyi-admin/src/main/resources/templates/demo/form/summernote.html                                    |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/tool/SwaggerController.java                                   |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysMenuMapper.java                              |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysLoginController.java                                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysNoticeController.java                               |    7 
 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java                                     |    5 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/ShiroConfig.java                                 |    2 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/ConfigService.java                          |    2 
 ruoyi-admin/src/main/resources/static/ruoyi/js/common.js                                              |    7 
 ruoyi-admin/src/main/resources/mapper/system/SysUserOnlineMapper.xml                                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysLogininforServiceImpl.java              |   12 
 ruoyi-admin/src/main/java/com/ruoyi/sange/util/ServletUtils.java                                      |  335 +++
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/PermissionService.java                      |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java                          |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleDeptMapper.java                          |    8 
 ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java                           |    0 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/Server.java                                  |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDeptController.java                                 |   10 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java           |  122 +
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictTypeService.java                        |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysPostController.java                                 |   16 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysPostServiceImpl.java                    |   14 
 ruoyi-admin/pom.xml                                                                                   |  114 +
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java                          |    1 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java                          |    0 
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemUserService.java                             |   11 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/CustomerModel.java                         |    2 
 ruoyi-admin/src/main/resources/templates/login.html                                                   |    6 
 ruoyi-admin/src/main/java/com/ruoyi/framework/config/FilterConfig.java                                |    0 
 ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenConstants.java                                    |   35 
 ruoyi-common/pom.xml                                                                                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMenuMapper.java                          |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysNoticeService.java                          |    8 
 /dev/null                                                                                             |  722 --------
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionDAO.java                     |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysOperLogServiceImpl.java                 |   12 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/CommonController.java                                  |    5 
 ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java                              |    0 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/SysProfileController.java                              |    4 
 ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java             |    0 
 ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java                               |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/UserOperateModel.java                      |    2 
 212 files changed, 2,190 insertions(+), 3,154 deletions(-)

diff --git a/bin/clean.bat b/bin/clean.bat
deleted file mode 100644
index 24c0974..0000000
--- a/bin/clean.bat
+++ /dev/null
@@ -1,12 +0,0 @@
-@echo off
-echo.
-echo [��Ϣ] ������target����·����
-echo.
-
-%~d0
-cd %~dp0
-
-cd ..
-call mvn clean
-
-pause
\ No newline at end of file
diff --git a/bin/package.bat b/bin/package.bat
deleted file mode 100644
index c693ec0..0000000
--- a/bin/package.bat
+++ /dev/null
@@ -1,12 +0,0 @@
-@echo off
-echo.
-echo [��Ϣ] ���Web���̣�����war/jar���ļ���
-echo.
-
-%~d0
-cd %~dp0
-
-cd ..
-call mvn clean package -Dmaven.test.skip=true
-
-pause
\ No newline at end of file
diff --git a/bin/run.bat b/bin/run.bat
deleted file mode 100644
index 41efbd0..0000000
--- a/bin/run.bat
+++ /dev/null
@@ -1,14 +0,0 @@
-@echo off
-echo.
-echo [��Ϣ] ʹ��Jar��������Web���̡�
-echo.
-
-cd %~dp0
-cd ../ruoyi-admin/target
-
-set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
-
-java -jar %JAVA_OPTS% ruoyi-admin.jar
-
-cd bin
-pause
\ No newline at end of file
diff --git "a/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx" "b/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx"
deleted file mode 100644
index fa5b62d..0000000
--- "a/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx"
+++ /dev/null
Binary files differ
diff --git a/pom.xml b/pom.xml
index b2b651d..8d4c0c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,20 +5,20 @@
 
     <groupId>com.ruoyi</groupId>
     <artifactId>ruoyi</artifactId>
-    <version>4.8.0</version>
+    <version>4.7.9</version>
 
     <name>ruoyi</name>
     <url>http://www.ruoyi.vip</url>
     <description>若依管理系统</description>
     
     <properties>
-        <ruoyi.version>4.8.0</ruoyi.version>
+        <ruoyi.version>4.7.9</ruoyi.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
-        <spring-boot.version>2.5.15</spring-boot.version>
         <shiro.version>1.13.0</shiro.version>
+        <spring-framework.version>5.3.33</spring-framework.version>
         <thymeleaf.extras.shiro.version>2.1.0</thymeleaf.extras.shiro.version>
         <druid.version>1.2.23</druid.version>
         <bitwalker.version>1.21</bitwalker.version>
@@ -26,21 +26,17 @@
         <swagger.version>3.0.0</swagger.version>
         <pagehelper.boot.version>1.4.7</pagehelper.boot.version>
         <fastjson.version>1.2.83</fastjson.version>
-        <oshi.version>6.6.5</oshi.version>
+        <oshi.version>6.6.3</oshi.version>
         <commons.io.version>2.16.1</commons.io.version>
         <poi.version>4.1.2</poi.version>
         <velocity.version>2.3</velocity.version>
-        <!-- override dependency version -->
-        <tomcat.version>9.0.96</tomcat.version>
-        <logback.version>1.2.13</logback.version>
-        <spring-framework.version>5.3.39</spring-framework.version>
     </properties>
 
     <!-- 依赖声明 -->
     <dependencyManagement>
         <dependencies>
 
-            <!-- 覆盖SpringFramework的依赖配置-->
+            <!-- SpringFramework的依赖配置-->
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-framework-bom</artifactId>
@@ -53,41 +49,9 @@
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-dependencies</artifactId>
-                <version>${spring-boot.version}</version>
+                <version>2.5.15</version>
                 <type>pom</type>
                 <scope>import</scope>
-            </dependency>
-
-            <!-- 覆盖logback的依赖配置-->
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-core</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-classic</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-
-            <!-- 覆盖tomcat的依赖配置-->
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-core</artifactId>
-                <version>${tomcat.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-el</artifactId>
-                <version>${tomcat.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-websocket</artifactId>
-                <version>${tomcat.version}</version>
             </dependency>
 
             <!-- 阿里数据库连接池 -->
@@ -208,20 +172,6 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
-            <!-- 核心模块-->
-            <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-framework</artifactId>
-                <version>${ruoyi.version}</version>
-            </dependency>
-
-            <!-- 系统模块-->
-            <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-system</artifactId>
-                <version>${ruoyi.version}</version>
-            </dependency>
-
             <!-- 通用工具-->
             <dependency>
                 <groupId>com.ruoyi</groupId>
@@ -234,8 +184,6 @@
 
     <modules>
         <module>ruoyi-admin</module>
-        <module>ruoyi-framework</module>
-        <module>ruoyi-system</module>
         <module>ruoyi-quartz</module>
         <module>ruoyi-generator</module>
         <module>ruoyi-common</module>
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 0c3854b..e944757 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>ruoyi</artifactId>
         <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
+        <version>4.7.9</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>jar</packaging>
@@ -16,7 +16,65 @@
     </description>
 
     <dependencies>
-
+    
+        <!-- SpringBoot Web容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+    
+        <!-- SpringBoot 拦截器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+    
+        <!-- 阿里数据库连接池 -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+        </dependency>
+    
+        <!-- 验证码 -->
+        <dependency>
+            <groupId>pro.fessional</groupId>
+            <artifactId>kaptcha</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>servlet-api</artifactId>
+                    <groupId>javax.servlet</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    
+        <!-- Shiro使用Spring框架 -->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-spring</artifactId>
+        </dependency>
+    
+        <!-- thymeleaf模板引擎和shiro框架的整合 -->
+        <dependency>
+            <groupId>com.github.theborakompanioni</groupId>
+            <artifactId>thymeleaf-extras-shiro</artifactId>
+        </dependency>
+    
+        <!-- 解析客户端操作系统、浏览器等 -->
+        <dependency>
+            <groupId>eu.bitwalker</groupId>
+            <artifactId>UserAgentUtils</artifactId>
+        </dependency>
+    
+        <!-- 获取系统信息 -->
+        <dependency>
+            <groupId>com.github.oshi</groupId>
+            <artifactId>oshi-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common</artifactId>
+        </dependency>
+        
         <!-- SpringBoot集成thymeleaf模板 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -49,12 +107,6 @@
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
 
-        <!-- 核心模块-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-framework</artifactId>
-        </dependency>
-
         <!-- 定时任务-->
         <dependency>
             <groupId>com.ruoyi</groupId>
@@ -66,10 +118,52 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
+    
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+    
         <dependency>
             <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus</artifactId>
-            <version>3.5.5</version>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        
+	    <dependency>
+		    <groupId>org.projectlombok</groupId>
+		    <artifactId>lombok</artifactId>
+	    </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>barcodes</artifactId>
+            <version>8.0.4</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.18</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+            <version>1.13.1</version>
+        </dependency>
+    
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.1</version>
         </dependency>
     </dependencies>
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 0e890c1..5626719 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -1,30 +1,29 @@
 package com.ruoyi;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 
 /**
  * 启动程序
- * 
+ *
  * @author ruoyi
  */
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class RuoYiApplication
-{
-    public static void main(String[] args)
-    {
-        // System.setProperty("spring.devtools.restart.enabled", "false");
-        SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
+@MapperScan(basePackages = {"com.ruoyi.**.mapper"})
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+public class RuoYiApplication {
+	public static void main(String[] args) {
+		SpringApplication.run(RuoYiApplication.class, args);
+		System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +
+				" .-------.       ____     __        \n" +
+				" |  _ _   \\      \\   \\   /  /    \n" +
+				" | ( ' )  |       \\  _. /  '       \n" +
+				" |(_ o _) /        _( )_ .'         \n" +
+				" | (_,_).' __  ___(_ o _)'          \n" +
+				" |  |\\ \\  |  ||   |(_,_)'         \n" +
+				" |  | \\ `'   /|   `-'  /           \n" +
+				" |  |  \\    /  \\      /           \n" +
+				" ''-'   `'-'    `-..-'              ");
+	}
 }
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java
index 6de67dc..21268d5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java
@@ -5,14 +5,12 @@
 
 /**
  * web容器中进行部署
- * 
+ *
  * @author ruoyi
  */
-public class RuoYiServletInitializer extends SpringBootServletInitializer
-{
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
-    {
-        return application.sources(RuoYiApplication.class);
-    }
+public class RuoYiServletInitializer extends SpringBootServletInitializer {
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(RuoYiApplication.class);
+	}
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
similarity index 99%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
index 25215b5..c69d1c3 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -4,6 +4,8 @@
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.web.domain.system.SysOperLog;
 import org.apache.commons.lang3.ArrayUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
@@ -26,7 +28,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
-import com.ruoyi.system.domain.SysOperLog;
 
 /**
  * 操作日志记录处理
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PermissionsAspect.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/PermissionsAspect.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PermissionsAspect.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/aspectj/PermissionsAspect.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/DruidConfig.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/DruidConfig.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/FilterConfig.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/FilterConfig.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/I18nConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/I18nConfig.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/I18nConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/I18nConfig.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/KaptchaTextCreator.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
similarity index 99%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
index 5322ecd..18f154b 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java
@@ -55,4 +55,6 @@
     {
         registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
     }
+    
+    
 }
\ No newline at end of file
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
similarity index 99%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
index 2929403..8406646 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
@@ -290,12 +290,14 @@
         filterChainDefinitionMap.put("/js/**", "anon");
         filterChainDefinitionMap.put("/ruoyi/**", "anon");
         filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
+        filterChainDefinitionMap.put("/api/**", "anon");
         // 匿名访问不鉴权注解列表
         List<String> permitAllUrl = SpringUtils.getBean(PermitAllUrlProperties.class).getUrls();
         if (StringUtils.isNotEmpty(permitAllUrl))
         {
             permitAllUrl.forEach(url -> filterChainDefinitionMap.put(url, "anon"));
         }
+        
         // 退出 logout地址,shiro去清除session
         filterChainDefinitionMap.put("/logout", "logout");
         // 不需要拦截的访问
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
new file mode 100644
index 0000000..0683102
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
@@ -0,0 +1,122 @@
+package com.ruoyi.framework.config.properties;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import org.springframework.aop.framework.Advised;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.RequestMapping;
+import com.ruoyi.common.annotation.Anonymous;
+
+/**
+ * 设置Anonymous注解允许匿名访问的url
+ * 
+ * @author ruoyi
+ */
+@Configuration
+public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware
+{
+    private List<String> urls = new ArrayList<>();
+
+    private ApplicationContext applicationContext;
+
+    @Override
+    public void afterPropertiesSet() throws Exception
+    {
+        Map<String, Object> controllers = applicationContext.getBeansWithAnnotation(Controller.class);
+        for (Object bean : controllers.values())
+        {
+            if (!(bean instanceof Advised))
+            {
+                continue;
+            }
+            Class<?> beanClass = ((Advised) bean).getTargetSource().getTarget().getClass();
+            RequestMapping base = beanClass.getAnnotation(RequestMapping.class);
+            String[] baseUrl = {};
+            if (Objects.nonNull(base))
+            {
+                baseUrl = base.value();
+            }
+            Method[] methods = beanClass.getDeclaredMethods();
+            for (Method method : methods)
+            {
+                if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(RequestMapping.class))
+                {
+                    RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
+                    String[] uri = requestMapping.value();
+                    urls.addAll(rebuildUrl(baseUrl, uri));
+                }
+                else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(GetMapping.class))
+                {
+                    GetMapping requestMapping = method.getAnnotation(GetMapping.class);
+                    String[] uri = requestMapping.value();
+                    urls.addAll(rebuildUrl(baseUrl, uri));
+                }
+                else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PostMapping.class))
+                {
+                    PostMapping requestMapping = method.getAnnotation(PostMapping.class);
+                    String[] uri = requestMapping.value();
+                    urls.addAll(rebuildUrl(baseUrl, uri));
+                }
+                else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PutMapping.class))
+                {
+                    PutMapping requestMapping = method.getAnnotation(PutMapping.class);
+                    String[] uri = requestMapping.value();
+                    urls.addAll(rebuildUrl(baseUrl, uri));
+                }
+                else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(DeleteMapping.class))
+                {
+                    DeleteMapping requestMapping = method.getAnnotation(DeleteMapping.class);
+                    String[] uri = requestMapping.value();
+                    urls.addAll(rebuildUrl(baseUrl, uri));
+                }
+            }
+
+        }
+    }
+
+    private List<String> rebuildUrl(String[] bases, String[] uris)
+    {
+        List<String> urls = new ArrayList<>();
+        for (String base : bases)
+        {
+            for (String uri : uris)
+            {
+                urls.add(prefix(base) + prefix(uri));
+            }
+        }
+        return urls;
+    }
+
+    private String prefix(String seg)
+    {
+        return seg.startsWith("/") ? seg : "/" + seg;
+    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext context) throws BeansException
+    {
+        this.applicationContext = context;
+    }
+
+    public List<String> getUrls()
+    {
+        return urls;
+    }
+
+    public void setUrls(List<String> urls)
+    {
+        this.urls = urls;
+    }
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/manager/AsyncManager.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/manager/AsyncManager.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
similarity index 93%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
index befa9ca..cd8d490 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
@@ -1,6 +1,13 @@
 package com.ruoyi.framework.manager.factory;
 
 import java.util.TimerTask;
+
+import com.ruoyi.web.domain.system.SysLogininfor;
+import com.ruoyi.web.domain.system.SysOperLog;
+import com.ruoyi.web.domain.system.SysUserOnline;
+import com.ruoyi.web.server.impl.system.SysLogininforServiceImpl;
+import com.ruoyi.web.server.system.ISysOperLogService;
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.ruoyi.common.constant.Constants;
@@ -11,12 +18,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.shiro.session.OnlineSession;
-import com.ruoyi.system.domain.SysLogininfor;
-import com.ruoyi.system.domain.SysOperLog;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysOperLogService;
-import com.ruoyi.system.service.ISysUserOnlineService;
-import com.ruoyi.system.service.impl.SysLogininforServiceImpl;
 import eu.bitwalker.useragentutils.UserAgent;
 
 /**
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java
index e77fafc..f06810f 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java
@@ -2,6 +2,9 @@
 
 import java.util.HashSet;
 import java.util.Set;
+
+import com.ruoyi.web.server.system.ISysMenuService;
+import com.ruoyi.web.server.system.ISysRoleService;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
 import org.apache.shiro.authc.AuthenticationToken;
@@ -29,8 +32,6 @@
 import com.ruoyi.common.exception.user.UserPasswordRetryLimitExceedException;
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.framework.shiro.service.SysLoginService;
-import com.ruoyi.system.service.ISysMenuService;
-import com.ruoyi.system.service.ISysRoleService;
 
 /**
  * 自定义Realm 处理登录 权限
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/rememberMe/CustomCookieRememberMeManager.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/rememberMe/CustomCookieRememberMeManager.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/rememberMe/CustomCookieRememberMeManager.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/rememberMe/CustomCookieRememberMeManager.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java
index b3baf1d..8f8065c 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysLoginService.java
@@ -2,6 +2,10 @@
 
 import java.util.List;
 import java.util.Set;
+
+import com.ruoyi.web.server.system.ISysConfigService;
+import com.ruoyi.web.server.system.ISysMenuService;
+import com.ruoyi.web.server.system.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.Constants;
@@ -24,9 +28,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysMenuService;
-import com.ruoyi.system.service.ISysUserService;
 
 /**
  * 登录校验方法
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java
index 690fbf2..25e1161 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysRegisterService.java
@@ -1,5 +1,6 @@
 package com.ruoyi.framework.shiro.service;
 
+import com.ruoyi.web.server.system.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.Constants;
@@ -13,7 +14,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
-import com.ruoyi.system.service.ISysUserService;
 
 /**
  * 注册校验方法
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java
similarity index 94%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java
index 1fb9c7e..fbdd16d 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/service/SysShiroService.java
@@ -1,13 +1,14 @@
 package com.ruoyi.framework.shiro.service;
 
 import java.io.Serializable;
+
+import com.ruoyi.web.domain.system.SysUserOnline;
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 import org.apache.shiro.session.Session;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.shiro.session.OnlineSession;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
 
 /**
  * 会话db操作处理
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSession.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSession.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSession.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSession.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionDAO.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionDAO.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionDAO.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionDAO.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/util/AuthorizationUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/util/AuthorizationUtils.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/util/AuthorizationUtils.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/util/AuthorizationUtils.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
index c6dbfa5..93fd3e3 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
@@ -2,6 +2,8 @@
 
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
+
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 import org.apache.shiro.session.SessionException;
 import org.apache.shiro.subject.Subject;
 import org.slf4j.Logger;
@@ -14,7 +16,6 @@
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.manager.AsyncManager;
 import com.ruoyi.framework.manager.factory.AsyncFactory;
-import com.ruoyi.system.service.ISysUserOnlineService;
 
 /**
  * 退出过滤器
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java
index 7ceebad..5e6ff41 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/OnlineWebSessionManager.java
@@ -4,6 +4,9 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+
+import com.ruoyi.web.domain.system.SysUserOnline;
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 import org.apache.commons.lang3.time.DateUtils;
 import org.apache.shiro.session.ExpiredSessionException;
 import org.apache.shiro.session.InvalidSessionException;
@@ -18,8 +21,6 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.shiro.session.OnlineSession;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
 
 /**
  * 主要是在此如果会话的属性修改了 就标识下其修改了 然后方便 OnlineSessionDao同步
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/Server.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/Server.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/CacheService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/CacheService.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/CacheService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/CacheService.java
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/ConfigService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/ConfigService.java
similarity index 91%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/ConfigService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/ConfigService.java
index 2859588..8fa2be1 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/ConfigService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/ConfigService.java
@@ -1,8 +1,8 @@
 package com.ruoyi.framework.web.service;
 
+import com.ruoyi.web.server.system.ISysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.ruoyi.system.service.ISysConfigService;
 
 /**
  * RuoYi首创 html调用 thymeleaf 实现参数管理
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/DictService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/DictService.java
similarity index 90%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/DictService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/DictService.java
index f485811..43db800 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/DictService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/DictService.java
@@ -1,11 +1,12 @@
 package com.ruoyi.framework.web.service;
 
 import java.util.List;
+
+import com.ruoyi.web.server.system.ISysDictDataService;
+import com.ruoyi.web.server.system.ISysDictTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.system.service.ISysDictDataService;
-import com.ruoyi.system.service.ISysDictTypeService;
 
 /**
  * RuoYi首创 html调用 thymeleaf 实现字典读取
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
similarity index 100%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemUserController.java
new file mode 100644
index 0000000..f22ca30
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemUserController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.sange.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.sange.domain.SystemUser;
+import com.ruoyi.sange.service.ISystemUserService;
+import com.ruoyi.sange.util.JwtUtils;
+import com.ruoyi.sange.util.SecurityConstants;
+import com.ruoyi.sange.util.ServletUtils;
+import com.ruoyi.sange.util.TokenService;
+import com.ruoyi.sange.warpper.LoginVo;
+import com.ruoyi.sange.warpper.TokenVo;
+import com.ruoyi.web.tool.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+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 javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:30
+ */
+@Api
+@RestController
+@RequestMapping("/api/systemUser")
+public class SystemUserController {
+	
+	@Resource
+	private ISystemUserService systemUserService;
+	
+	@Resource
+	private RedisTemplate redisTemplate;
+	
+	private final Integer max_err = 5;
+	
+	@Resource
+	private TokenService tokenService;
+	
+	
+	@PostMapping("/login")
+	@ApiOperation(value = "登录", tags = {"管理后台-登录"})
+	public R<TokenVo> login(@RequestBody LoginVo vo){
+		String key = "login:" + vo.getPhone();
+		Integer size = (Integer) redisTemplate.opsForValue().get(key);
+		if(null != size && max_err.equals(size)){
+			return R.fail("连续登录失败,请稍后重试。");
+		}
+		if(null == size){
+			size = 0;
+		}
+		SystemUser systemUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>()
+				.eq(SystemUser::getPhone, vo.getPhone()).ne(SystemUser::getStatus, 3));
+		if(null == systemUser){
+			size++;
+			redisTemplate.opsForValue().set(key, size, 5, TimeUnit.MINUTES);
+			return R.fail("登录失败,手机号/密码错误。");
+		}
+		if(!vo.getPassword().equals(systemUser.getPassword())){
+			size++;
+			redisTemplate.opsForValue().set(key, size, 5, TimeUnit.MINUTES);
+			return R.fail("登录失败,手机号/密码错误。");
+		}
+		if(2 == systemUser.getStatus()){
+			return R.fail("当前账号已冻结。");
+		}
+		//创建token
+		String userKey = UUID.randomUUID().toString();
+		Map<String, Object> claims = new HashMap<>();
+		claims.put(SecurityConstants.USER_KEY, userKey);
+		String token = JwtUtils.createToken(claims);
+		//token有效期2小时
+		redisTemplate.opsForValue().set("token:" + userKey, token, SecurityConstants.expireTime, TimeUnit.MILLISECONDS);
+		redisTemplate.delete(key);
+		TokenVo tokenVo = new TokenVo();
+		tokenVo.setToken(token);
+		tokenVo.setExpireTime(SecurityConstants.expireTime);
+		return R.ok(tokenVo);
+	}
+	
+	
+	@PostMapping("/logout")
+	@ApiOperation(value = "退出登录", tags = {"管理后台-登录"})
+	public R logout(){
+		String token = tokenService.getToken(ServletUtils.getRequest());
+		if(StringUtils.isEmpty(token)){
+			return R.fail("请先登录");
+		}
+		String userKey = JwtUtils.getUserKey(token);
+		redisTemplate.delete("token:" + userKey);
+		return R.ok();
+	}
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/TestController.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/TestController.java
deleted file mode 100644
index 478b122..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/TestController.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.sange.controller;
-
-/**
- * @author zhibing.pu
- * @Date 2025/2/18 18:33
- */
-public class TestController {
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemUser.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemUser.java
new file mode 100644
index 0000000..334b51b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemUser.java
@@ -0,0 +1,119 @@
+package com.ruoyi.sange.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 系统用户
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:18
+ */
+@Data
+@TableName("t_system_user")
+public class SystemUser {
+	/**
+	 * 主键
+	 */
+	@TableId(value = "id", type = IdType.AUTO)
+	private Integer id;
+	/**
+	 * 姓名
+	 */
+	@TableField("name")
+	private String name;
+	/**
+	 * 手机号
+	 */
+	@TableField("phone")
+	private String phone;
+	/**
+	 * 密码
+	 */
+	@TableField("password")
+	private String password;
+	/**
+	 * 一级单位id
+	 */
+	@TableField("one_department_id")
+	private Integer oneDepartmentId;
+	/**
+	 * 二级单位id
+	 */
+	@TableField("two_department_id")
+	private Integer twoDepartmentId;
+	/**
+	 * 三级单位id
+	 */
+	@TableField("three_department_id")
+	private Integer threeDepartmentId;
+	/**
+	 * 四级单位id
+	 */
+	@TableField("four_department_id")
+	private Integer fourDepartmentId;
+	/**
+	 * 是否是管理员(0=否,1=是)
+	 */
+	@TableField("is_admin")
+	private Integer isAdmin;
+	/**
+	 * 职位id
+	 */
+	@TableField("system_post_id")
+	private Integer systemPostId;
+	/**
+	 * 角色id
+	 */
+	@TableField("system_role_id")
+	private Integer systemRoleId;
+	/**
+	 * 账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)
+	 */
+	@TableField("account_level")
+	private Integer accountLevel;
+	/**
+	 * 所属区县
+	 */
+	@TableField("districts")
+	private String districts;
+	/**
+	 * 区县编号
+	 */
+	@TableField("districts_code")
+	private String districtsCode;
+	/**
+	 * 街道
+	 */
+	@TableField("street")
+	private String street;
+	/**
+	 * 街道编号
+	 */
+	@TableField("street_code")
+	private String streetCode;
+	/**
+	 * 社区
+	 */
+	@TableField("community")
+	private String community;
+	/**
+	 * 社区编号
+	 */
+	@TableField("community_code")
+	private String communityCode;
+	/**
+	 * 状态(1=正常,2=冻结,3=删除)
+	 */
+	@TableField("status")
+	private Integer status;
+	/**
+	 * 添加时间
+	 */
+	@TableField("create_time")
+	private LocalDateTime createTime;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Test.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Test.java
deleted file mode 100644
index 3cbed3f..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Test.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.ruoyi.sange.domain;
-
-/**
- * @author zhibing.pu
- * @Date 2025/2/18 18:33
- */
-public class Test {
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemUserMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemUserMapper.java
new file mode 100644
index 0000000..a270c5e
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemUserMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.sange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sange.domain.SystemUser;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:29
+ */
+@Mapper
+public interface SystemUserMapper extends BaseMapper<SystemUser> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/TestMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/TestMapper.java
deleted file mode 100644
index 22755a5..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/TestMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.ruoyi.sange.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.sange.domain.Test;
-
-/**
- * @author zhibing.pu
- * @Date 2025/2/18 18:34
- */
-public interface TestMapper extends BaseMapper<Test> {
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemUserService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemUserService.java
new file mode 100644
index 0000000..70a063a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemUserService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sange.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sange.domain.SystemUser;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:30
+ */
+public interface ISystemUserService extends IService<SystemUser> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ITestService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ITestService.java
deleted file mode 100644
index 6776b39..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ITestService.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.ruoyi.sange.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.sange.domain.Test;
-
-/**
- * @author zhibing.pu
- * @Date 2025/2/18 18:34
- */
-public interface ITestService extends IService<Test> {
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemUserServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemUserServiceImpl.java
new file mode 100644
index 0000000..edb5a13
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemUserServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sange.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sange.domain.SystemUser;
+import com.ruoyi.sange.mapper.SystemUserMapper;
+import com.ruoyi.sange.service.ISystemUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:30
+ */
+@Service
+public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemUser> implements ISystemUserService {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/TestServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/TestServiceImpl.java
deleted file mode 100644
index 9dc126a..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/TestServiceImpl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.ruoyi.sange.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.sange.domain.Test;
-import com.ruoyi.sange.mapper.TestMapper;
-import com.ruoyi.sange.service.ITestService;
-
-/**
- * @author zhibing.pu
- * @Date 2025/2/18 18:36
- */
-public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements ITestService {
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/util/JwtUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/JwtUtils.java
new file mode 100644
index 0000000..a778a30
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/JwtUtils.java
@@ -0,0 +1,74 @@
+package com.ruoyi.sange.util;
+
+import com.ruoyi.common.core.text.Convert;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+import java.util.Map;
+
+/**
+ * Jwt工具类
+ *
+ * @author ruoyi
+ */
+public class JwtUtils {
+	public static String secret = TokenConstants.SECRET;
+	
+	/**
+	 * 从数据声明生成令牌
+	 *
+	 * @param claims 数据声明
+	 * @return 令牌
+	 */
+	public static String createToken(Map<String, Object> claims) {
+		String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
+		return token;
+	}
+	
+	/**
+	 * 从令牌中获取数据声明
+	 *
+	 * @param token 令牌
+	 * @return 数据声明
+	 */
+	public static Claims parseToken(String token) {
+		return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
+	}
+	
+	/**
+	 * 根据令牌获取用户标识
+	 *
+	 * @param token 令牌
+	 * @return 用户ID
+	 */
+	public static String getUserKey(String token) {
+		Claims claims = parseToken(token);
+		return getValue(claims, SecurityConstants.USER_KEY);
+	}
+	
+	/**
+	 * 根据令牌获取用户标识
+	 *
+	 * @param claims 身份信息
+	 * @return 用户ID
+	 */
+	public static String getUserKey(Claims claims) {
+		return getValue(claims, SecurityConstants.USER_KEY);
+	}
+	
+	
+
+
+	
+	/**
+	 * 根据身份信息获取键值
+	 *
+	 * @param claims 身份信息
+	 * @param key    键
+	 * @return 值
+	 */
+	public static String getValue(Claims claims, String key) {
+		return Convert.toStr(claims.get(key), "");
+	}
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/util/SecurityConstants.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/SecurityConstants.java
new file mode 100644
index 0000000..31b770b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/SecurityConstants.java
@@ -0,0 +1,24 @@
+package com.ruoyi.sange.util;
+
+/**
+ * 权限相关通用常量
+ * 
+ * @author ruoyi
+ */
+public class SecurityConstants
+{
+
+    /**
+     * 授权信息字段
+     */
+    public static final String AUTHORIZATION_HEADER = "Authorization";
+
+    /**
+     * 用户标识
+     */
+    public static final String USER_KEY = "user_key";
+    /**
+     * token有效期
+     */
+    public static final Long expireTime = 7200000L;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/util/ServletUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/ServletUtils.java
new file mode 100644
index 0000000..cce8b0a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/ServletUtils.java
@@ -0,0 +1,335 @@
+package com.ruoyi.sange.util;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.utils.StringUtils;
+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 reactor.core.publisher.Mono;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+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;
+
+/**
+ * 客户端工具类
+ * 
+ * @author ruoyi
+ */
+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();
+        }
+    }
+
+    /**
+     * 是否是Ajax异步请求
+     * 
+     * @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;
+        }
+    }
+
+    /**
+     * 内容解码
+     * 
+     * @param str 内容
+     * @return 解码后的内容
+     */
+    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/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenConstants.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenConstants.java
new file mode 100644
index 0000000..387bc49
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenConstants.java
@@ -0,0 +1,35 @@
+package com.ruoyi.sange.util;
+
+/**
+ * Token的Key常量
+ * 
+ * @author ruoyi
+ */
+public class TokenConstants
+{
+    /**
+     * 令牌自定义标识
+     */
+    public static final String AUTHENTICATION = "Authorization";
+
+    /**
+     * 令牌前缀
+     */
+    public static final String PREFIX = "Bearer ";
+
+    /**
+     * 令牌秘钥
+     */
+    public final static String SECRET = "abcdefghijklmnopqrstuvwxyz";
+    
+    /**
+     * 参数签名
+     */
+    public static final String SIGN = "sign";
+    
+    /**
+     * 参数随机字符串
+     */
+    public static final String NONCE_STR = "nonce_str";
+
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenService.java
new file mode 100644
index 0000000..4ea917d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/util/TokenService.java
@@ -0,0 +1,82 @@
+package com.ruoyi.sange.util;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.sange.domain.SystemUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * token验证处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class TokenService {
+	@Autowired
+	private RedisTemplate redisTemplate;
+	
+	
+	/**
+	 * 获取用户身份信息
+	 *
+	 * @return 用户信息
+	 */
+	public SystemUser getLoginUser() {
+		SystemUser loginUser = getLoginUser(ServletUtils.getRequest());
+		if (loginUser == null) {
+			throw new RuntimeException("令牌已过期,请重新登录!");
+		}
+		return loginUser;
+	}
+	
+	/**
+	 * 获取用户身份信息
+	 *
+	 * @return 用户信息
+	 */
+	public SystemUser getLoginUser(HttpServletRequest request) {
+		// 获取请求携带的令牌
+		String token = getToken(request);
+		return getLoginUser(token);
+	}
+	
+	/**
+	 * 获取用户身份信息
+	 *
+	 * @return 用户信息
+	 */
+	public SystemUser getLoginUser(String token) {
+		SystemUser user = null;
+		try {
+			if (StringUtils.isNotEmpty(token)) {
+				String userkey = JwtUtils.getUserKey(token);
+				user = (SystemUser) redisTemplate.opsForValue().get(userkey);
+				return user;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return user;
+	}
+	
+	
+	public String getToken(HttpServletRequest request) {
+		// 从header获取token标识
+		String token = request.getHeader(TokenConstants.AUTHENTICATION);
+		return replaceTokenPrefix(token);
+	}
+	
+	/**
+	 * 裁剪token前缀
+	 */
+	public String replaceTokenPrefix(String token) {
+		// 如果前端设置了令牌前缀,则裁剪掉前缀
+		if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) {
+			token = token.replaceFirst(TokenConstants.PREFIX, "");
+		}
+		return token;
+	}
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/LoginVo.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/LoginVo.java
new file mode 100644
index 0000000..9307cab
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/LoginVo.java
@@ -0,0 +1,18 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 22:33
+ */
+@Data
+@ApiModel
+public class LoginVo {
+	@ApiModelProperty(value = "登录账号", required = true)
+	private String phone;
+	@ApiModelProperty(value = "登录密码", required = true)
+	private String password;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/TokenVo.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/TokenVo.java
new file mode 100644
index 0000000..94d6ebf
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/TokenVo.java
@@ -0,0 +1,18 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/18 23:32
+ */
+@ApiModel
+@Data
+public class TokenVo {
+	@ApiModelProperty("token")
+	private String token;
+	@ApiModelProperty("有效期(毫秒)")
+	private Long expireTime;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RedisConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RedisConfig.java
new file mode 100644
index 0000000..6716475
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RedisConfig.java
@@ -0,0 +1,33 @@
+package com.ruoyi.web.core.config;
+
+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.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+
+/**
+ * redis序列化配置
+ */
+@Configuration
+public class RedisConfig {
+
+    @Bean
+    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
+        //1.创建
+        RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(connectionFactory);
+        //json序列化工具
+        GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer();
+        //设置key的序列化
+        //StringRedisSerializer UTF_8 = new StringRedisSerializer(StandardCharsets.UTF_8);
+        redisTemplate.setKeySerializer(RedisSerializer.string());
+        redisTemplate.setHashKeySerializer(RedisSerializer.string());
+        //设置值的value
+        redisTemplate.setValueSerializer(serializer);
+        redisTemplate.setHashKeySerializer(serializer);
+        return redisTemplate;
+    }
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysConfig.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysConfig.java
index 56f3767..d70eb79 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysConfig.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import javax.validation.constraints.*;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysLogininfor.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysLogininfor.java
index 29b3af1..80f1b0e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysLogininfor.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysNotice.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysNotice.java
index 8c07a54..6a71a73 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysNotice.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysOperLog.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysOperLog.java
index e758412..92335b5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysOperLog.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysPost.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysPost.java
index a172f66..393ada7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysPost.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import javax.validation.constraints.*;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleDept.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleDept.java
index 47b21bf..32493d5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleDept.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleMenu.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleMenu.java
index de10a74..ca3b0e1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysRoleMenu.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserOnline.java
similarity index 98%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserOnline.java
index 4ecf07a..c3c7f38 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserOnline.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import java.util.Date;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserPost.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserPost.java
index 6e8c416..7457e27 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserPost.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserRole.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserRole.java
index 4d15810..c0e5ea1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/system/SysUserRole.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.domain;
+package com.ruoyi.web.domain.system;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysConfigMapper.java
similarity index 87%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysConfigMapper.java
index 84c949c..dbf152b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysConfigMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysConfig;
 
 /**
  * 参数配置 数据层
  * 
  * @author ruoyi
  */
-public interface SysConfigMapper
+public interface SysConfigMapper extends BaseMapper<SysConfig>
 {
     /**
      * 查询参数配置信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDeptMapper.java
similarity index 93%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDeptMapper.java
index af2b705..d156f67 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDeptMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import com.ruoyi.common.core.domain.entity.SysDept;
 
@@ -9,7 +11,7 @@
  * 
  * @author ruoyi
  */
-public interface SysDeptMapper
+public interface SysDeptMapper extends BaseMapper<SysDept>
 {
     /**
      * 查询下级部门数量
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictDataMapper.java
similarity index 92%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictDataMapper.java
index 368252a..f1e72ff 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictDataMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 
@@ -9,7 +11,7 @@
  * 
  * @author ruoyi
  */
-public interface SysDictDataMapper
+public interface SysDictDataMapper extends BaseMapper<SysDictData>
 {
     /**
      * 根据条件分页查询字典数据
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictTypeMapper.java
similarity index 91%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictTypeMapper.java
index 25be4f4..ed5c63b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysDictTypeMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysDictType;
 
 /**
@@ -8,7 +10,7 @@
  * 
  * @author ruoyi
  */
-public interface SysDictTypeMapper
+public interface SysDictTypeMapper extends BaseMapper<SysDictType>
 {
     /**
      * 根据条件分页查询字典类型
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysLogininforMapper.java
similarity index 77%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysLogininforMapper.java
index 7ee47dc..b0802b3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysLogininforMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysLogininfor;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysLogininfor;
 
 /**
  * 系统访问日志情况信息 数据层
  * 
  * @author ruoyi
  */
-public interface SysLogininforMapper
+public interface SysLogininforMapper extends BaseMapper<SysLogininfor>
 {
     /**
      * 新增系统登录日志
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysMenuMapper.java
similarity index 94%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysMenuMapper.java
index e07903f..a76f82b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysMenuMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 
@@ -9,7 +11,7 @@
  * 
  * @author ruoyi
  */
-public interface SysMenuMapper
+public interface SysMenuMapper extends BaseMapper<SysMenu>
 {
     /**
      * 查询系统所有菜单(含按钮)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysNoticeMapper.java
similarity index 81%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysNoticeMapper.java
index dd402e2..f331d54 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysNoticeMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysNotice;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysNotice;
 
 /**
  * 公告 数据层
  * 
  * @author ruoyi
  */
-public interface SysNoticeMapper
+public interface SysNoticeMapper extends BaseMapper<SysNotice>
 {
     /**
      * 查询公告信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysOperLogMapper.java
similarity index 80%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysOperLogMapper.java
index b40bd29..a8993c4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysOperLogMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysOperLog;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysOperLog;
 
 /**
  * 操作日志 数据层
  * 
  * @author ruoyi
  */
-public interface SysOperLogMapper
+public interface SysOperLogMapper extends BaseMapper<SysOperLog>
 {
     /**
      * 新增操作日志
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysPostMapper.java
similarity index 88%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysPostMapper.java
index 188f335..b36b42c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysPostMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysPost;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysPost;
 
 /**
  * 岗位信息 数据层
  * 
  * @author ruoyi
  */
-public interface SysPostMapper
+public interface SysPostMapper extends BaseMapper<SysPost>
 {
     /**
      * 查询岗位数据集合
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleDeptMapper.java
similarity index 79%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleDeptMapper.java
index f9d3a2f..07f85bb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleDeptMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysRoleDept;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysRoleDept;
 
 /**
  * 角色与部门关联表 数据层
  * 
  * @author ruoyi
  */
-public interface SysRoleDeptMapper
+public interface SysRoleDeptMapper extends BaseMapper<SysRoleDept>
 {
     /**
      * 通过角色ID删除角色和部门关联
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMapper.java
similarity index 91%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMapper.java
index 78a3ec7..fcc058c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysRole;
 
 /**
@@ -8,7 +10,7 @@
  * 
  * @author ruoyi
  */
-public interface SysRoleMapper
+public interface SysRoleMapper extends BaseMapper<SysRole>
 {
     /**
      * 根据条件分页查询角色数据
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMenuMapper.java
similarity index 79%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMenuMapper.java
index 9b88796..5206b66 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysRoleMenuMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysRoleMenu;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysRoleMenu;
 
 /**
  * 角色与菜单关联表 数据层
  * 
  * @author ruoyi
  */
-public interface SysRoleMenuMapper
+public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu>
 {
     /**
      * 通过角色ID删除角色和菜单关联
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserMapper.java
similarity index 94%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserMapper.java
index 309d88e..0559925 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserMapper.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysUser;
 
 /**
@@ -8,7 +10,7 @@
  * 
  * @author ruoyi
  */
-public interface SysUserMapper
+public interface SysUserMapper extends BaseMapper<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserOnlineMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserOnlineMapper.java
similarity index 82%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserOnlineMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserOnlineMapper.java
index 5bd68ed..02b3ca0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserOnlineMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserOnlineMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysUserOnline;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysUserOnline;
 
 /**
  * 在线用户 数据层
  * 
  * @author ruoyi
  */
-public interface SysUserOnlineMapper
+public interface SysUserOnlineMapper extends BaseMapper<SysUserOnline>
 {
     /**
      * 通过会话序号查询信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserPostMapper.java
similarity index 79%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserPostMapper.java
index ec094ca..a6f2b74 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserPostMapper.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysUserPost;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysUserPost;
 
 /**
  * 用户与岗位关联表 数据层
  * 
  * @author ruoyi
  */
-public interface SysUserPostMapper
+public interface SysUserPostMapper extends BaseMapper<SysUserPost>
 {
     /**
      * 通过用户ID删除用户和岗位关联
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserRoleMapper.java
similarity index 87%
rename from ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserRoleMapper.java
index 669d1ec..af402bc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/system/SysUserRoleMapper.java
@@ -1,15 +1,17 @@
-package com.ruoyi.system.mapper;
+package com.ruoyi.web.mapper.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.system.SysUserRole;
 import org.apache.ibatis.annotations.Param;
-import com.ruoyi.system.domain.SysUserRole;
 
 /**
  * 用户与角色关联表 数据层
  * 
  * @author ruoyi
  */
-public interface SysUserRoleMapper
+public interface SysUserRoleMapper extends BaseMapper<SysUserRole>
 {
     /**
      * 通过用户ID查询用户和角色关联
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysConfigServiceImpl.java
similarity index 93%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysConfigServiceImpl.java
index cf164e5..4ff7983 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysConfigServiceImpl.java
@@ -1,7 +1,12 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
 import javax.annotation.PostConstruct;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysConfig;
+import com.ruoyi.web.mapper.system.SysConfigMapper;
+import com.ruoyi.web.server.system.ISysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.constant.Constants;
@@ -10,9 +15,6 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.CacheUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.mapper.SysConfigMapper;
-import com.ruoyi.system.service.ISysConfigService;
 
 /**
  * 参数配置 服务层实现
@@ -20,7 +22,7 @@
  * @author ruoyi
  */
 @Service
-public class SysConfigServiceImpl implements ISysConfigService
+public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService
 {
     @Autowired
     private SysConfigMapper configMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDeptServiceImpl.java
similarity index 96%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDeptServiceImpl.java
index 7ada597..d353113 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDeptServiceImpl.java
@@ -1,7 +1,11 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.ArrayList;
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.mapper.system.SysDeptMapper;
+import com.ruoyi.web.server.system.ISysDeptService;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -17,8 +21,6 @@
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.system.service.ISysDeptService;
 
 /**
  * 部门管理 服务实现
@@ -26,7 +28,7 @@
  * @author ruoyi
  */
 @Service
-public class SysDeptServiceImpl implements ISysDeptService
+public class SysDeptServiceImpl extends ServiceImpl< SysDeptMapper,  SysDept> implements ISysDeptService
 {
     @Autowired
     private SysDeptMapper deptMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictDataServiceImpl.java
similarity index 89%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictDataServiceImpl.java
index bf9e6e5..abe9024 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictDataServiceImpl.java
@@ -1,13 +1,15 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.mapper.system.SysDictDataMapper;
+import com.ruoyi.web.server.system.ISysDictDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.utils.DictUtils;
-import com.ruoyi.system.mapper.SysDictDataMapper;
-import com.ruoyi.system.service.ISysDictDataService;
 
 /**
  * 字典 业务层处理
@@ -15,7 +17,7 @@
  * @author ruoyi
  */
 @Service
-public class SysDictDataServiceImpl implements ISysDictDataService
+public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService
 {
     @Autowired
     private SysDictDataMapper dictDataMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictTypeServiceImpl.java
similarity index 94%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictTypeServiceImpl.java
index f5f3a13..bc169f1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysDictTypeServiceImpl.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -6,6 +6,11 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 import javax.annotation.PostConstruct;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.mapper.system.SysDictDataMapper;
+import com.ruoyi.web.mapper.system.SysDictTypeMapper;
+import com.ruoyi.web.server.system.ISysDictTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -17,9 +22,6 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.mapper.SysDictDataMapper;
-import com.ruoyi.system.mapper.SysDictTypeMapper;
-import com.ruoyi.system.service.ISysDictTypeService;
 
 /**
  * 字典 业务层处理
@@ -27,7 +29,7 @@
  * @author ruoyi
  */
 @Service
-public class SysDictTypeServiceImpl implements ISysDictTypeService
+public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService
 {
     @Autowired
     private SysDictTypeMapper dictTypeMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysLogininforServiceImpl.java
similarity index 76%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysLogininforServiceImpl.java
index 13f5c1a..bc5f3dd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysLogininforServiceImpl.java
@@ -1,12 +1,14 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysLogininfor;
+import com.ruoyi.web.mapper.system.SysLogininforMapper;
+import com.ruoyi.web.server.system.ISysLogininforService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.system.domain.SysLogininfor;
-import com.ruoyi.system.mapper.SysLogininforMapper;
-import com.ruoyi.system.service.ISysLogininforService;
 
 /**
  * 系统访问日志情况信息 服务层处理
@@ -14,7 +16,7 @@
  * @author ruoyi
  */
 @Service
-public class SysLogininforServiceImpl implements ISysLogininforService
+public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, SysLogininfor> implements ISysLogininforService
 {
 
     @Autowired
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysMenuServiceImpl.java
similarity index 96%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysMenuServiceImpl.java
index 4ff052b..c687406 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysMenuServiceImpl.java
@@ -1,4 +1,4 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -9,6 +9,11 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.mapper.system.SysMenuMapper;
+import com.ruoyi.web.mapper.system.SysRoleMenuMapper;
+import com.ruoyi.web.server.system.ISysMenuService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.constant.UserConstants;
@@ -17,9 +22,6 @@
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.mapper.SysMenuMapper;
-import com.ruoyi.system.mapper.SysRoleMenuMapper;
-import com.ruoyi.system.service.ISysMenuService;
 
 /**
  * 菜单 业务层处理
@@ -27,7 +29,7 @@
  * @author ruoyi
  */
 @Service
-public class SysMenuServiceImpl implements ISysMenuService
+public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService
 {
     public static final String PREMISSION_STRING = "perms[\"{0}\"]";
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysNoticeServiceImpl.java
similarity index 80%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysNoticeServiceImpl.java
index 7968b9a..e774ce8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysNoticeServiceImpl.java
@@ -1,12 +1,14 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysNotice;
+import com.ruoyi.web.mapper.system.SysNoticeMapper;
+import com.ruoyi.web.server.system.ISysNoticeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.mapper.SysNoticeMapper;
-import com.ruoyi.system.service.ISysNoticeService;
 
 /**
  * 公告 服务层实现
@@ -15,7 +17,7 @@
  * @date 2018-06-25
  */
 @Service
-public class SysNoticeServiceImpl implements ISysNoticeService
+public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements ISysNoticeService
 {
     @Autowired
     private SysNoticeMapper noticeMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysOperLogServiceImpl.java
similarity index 79%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysOperLogServiceImpl.java
index 78ae353..ac486b0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysOperLogServiceImpl.java
@@ -1,12 +1,14 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysOperLog;
+import com.ruoyi.web.mapper.system.SysOperLogMapper;
+import com.ruoyi.web.server.system.ISysOperLogService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.system.domain.SysOperLog;
-import com.ruoyi.system.mapper.SysOperLogMapper;
-import com.ruoyi.system.service.ISysOperLogService;
 
 /**
  * 操作日志 服务层处理
@@ -14,7 +16,7 @@
  * @author ruoyi
  */
 @Service
-public class SysOperLogServiceImpl implements ISysOperLogService
+public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements ISysOperLogService
 {
     @Autowired
     private SysOperLogMapper operLogMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysPostServiceImpl.java
similarity index 90%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysPostServiceImpl.java
index 41a5e71..0ae3cce 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysPostServiceImpl.java
@@ -1,16 +1,18 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysPost;
+import com.ruoyi.web.mapper.system.SysPostMapper;
+import com.ruoyi.web.mapper.system.SysUserPostMapper;
+import com.ruoyi.web.server.system.ISysPostService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.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;
 
 /**
  * 岗位信息 服务层处理
@@ -18,7 +20,7 @@
  * @author ruoyi
  */
 @Service
-public class SysPostServiceImpl implements ISysPostService
+public class SysPostServiceImpl extends ServiceImpl<SysPostMapper, SysPost> implements ISysPostService
 {
     @Autowired
     private SysPostMapper postMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysRoleServiceImpl.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysRoleServiceImpl.java
index 3c57dab..4a576e5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysRoleServiceImpl.java
@@ -1,10 +1,18 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysPost;
+import com.ruoyi.web.domain.system.SysRoleDept;
+import com.ruoyi.web.domain.system.SysRoleMenu;
+import com.ruoyi.web.domain.system.SysUserRole;
+import com.ruoyi.web.mapper.system.*;
+import com.ruoyi.web.server.system.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -17,14 +25,6 @@
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
-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;
 
 /**
  * 角色 业务层处理
@@ -32,7 +32,7 @@
  * @author ruoyi
  */
 @Service
-public class SysRoleServiceImpl implements ISysRoleService
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService
 {
     @Autowired
     private SysRoleMapper roleMapper;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserOnlineServiceImpl.java
similarity index 89%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserOnlineServiceImpl.java
index ae6087a..d04c2fd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserOnlineServiceImpl.java
@@ -1,10 +1,15 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Deque;
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.web.domain.system.SysUserOnline;
+import com.ruoyi.web.mapper.system.SysUserOnlineMapper;
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 import org.apache.shiro.cache.Cache;
 import org.apache.shiro.cache.ehcache.EhCacheManager;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,9 +17,6 @@
 import com.ruoyi.common.constant.ShiroConstants;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.mapper.SysUserOnlineMapper;
-import com.ruoyi.system.service.ISysUserOnlineService;
 
 /**
  * 在线用户 服务层处理
@@ -22,7 +24,7 @@
  * @author ruoyi
  */
 @Service
-public class SysUserOnlineServiceImpl implements ISysUserOnlineService
+public class SysUserOnlineServiceImpl extends ServiceImpl<SysUserOnlineMapper, SysUserOnline> implements ISysUserOnlineService
 {
     @Autowired
     private SysUserOnlineMapper userOnlineDao;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserServiceImpl.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserServiceImpl.java
index 34ae796..860fc1c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/impl/system/SysUserServiceImpl.java
@@ -1,10 +1,19 @@
-package com.ruoyi.system.service.impl;
+package com.ruoyi.web.server.impl.system;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.validation.ConstraintViolationException;
 import javax.validation.Validator;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.system.SysPost;
+import com.ruoyi.web.domain.system.SysUserPost;
+import com.ruoyi.web.domain.system.SysUserRole;
+import com.ruoyi.web.mapper.system.*;
+import com.ruoyi.web.server.system.ISysConfigService;
+import com.ruoyi.web.server.system.ISysDeptService;
+import com.ruoyi.web.server.system.ISysUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,17 +33,6 @@
 import com.ruoyi.common.utils.html.EscapeUtil;
 import com.ruoyi.common.utils.security.Md5Utils;
 import com.ruoyi.common.utils.spring.SpringUtils;
-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;
 
 /**
  * 用户 业务层处理
@@ -42,7 +40,7 @@
  * @author ruoyi
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService
 {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysConfigService.java
similarity index 87%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysConfigService.java
index e1c553c..5ff8108 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysConfigService.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysConfig;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysConfig;
 
 /**
  * 参数配置 服务层
  * 
  * @author ruoyi
  */
-public interface ISysConfigService
+public interface ISysConfigService extends IService<SysConfig>
 {
     /**
      * 查询参数配置信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDeptService.java
similarity index 93%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDeptService.java
index 10ce107..c4ed409 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDeptService.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.Ztree;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
@@ -10,7 +12,7 @@
  * 
  * @author ruoyi
  */
-public interface ISysDeptService
+public interface ISysDeptService extends IService<SysDept>
 {
     /**
      * 查询部门管理数据
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictDataService.java
similarity index 88%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictDataService.java
index efb6bdd..825ac56 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictDataService.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 
 /**
@@ -8,7 +10,7 @@
  * 
  * @author ruoyi
  */
-public interface ISysDictDataService
+public interface ISysDictDataService extends IService<SysDictData>
 {
     /**
      * 根据条件分页查询字典数据
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictTypeService.java
similarity index 92%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictTypeService.java
index 126d258..4ced510 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysDictTypeService.java
@@ -1,6 +1,8 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.Ztree;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysDictType;
@@ -10,7 +12,7 @@
  * 
  * @author ruoyi
  */
-public interface ISysDictTypeService
+public interface ISysDictTypeService extends IService<SysDictType>
 {
     /**
      * 根据条件分页查询字典类型
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysLogininforService.java
similarity index 76%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysLogininforService.java
index ea99dff..e9e071e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysLogininforService.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysLogininfor;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysLogininfor;
 
 /**
  * 系统访问日志情况信息 服务层
  * 
  * @author ruoyi
  */
-public interface ISysLogininforService
+public interface ISysLogininforService extends IService<SysLogininfor>
 {
     /**
      * 新增系统登录日志
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysMenuService.java
similarity index 94%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysMenuService.java
index d6db936..6655591 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysMenuService.java
@@ -1,8 +1,10 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.Ztree;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysRole;
@@ -13,7 +15,7 @@
  * 
  * @author ruoyi
  */
-public interface ISysMenuService
+public interface ISysMenuService extends IService<SysMenu>
 {
     /**
      * 根据用户ID查询菜单
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysNoticeService.java
similarity index 80%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysNoticeService.java
index 6398b5a..5215b1f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysNoticeService.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysNotice;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysNotice;
 
 /**
  * 公告 服务层
  * 
  * @author ruoyi
  */
-public interface ISysNoticeService
+public interface ISysNoticeService extends IService<SysNotice>
 {
     /**
      * 查询公告信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysOperLogService.java
similarity index 79%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysOperLogService.java
index 3cdc5d2..dc1ccf4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysOperLogService.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysOperLog;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysOperLog;
 
 /**
  * 操作日志 服务层
  * 
  * @author ruoyi
  */
-public interface ISysOperLogService
+public interface ISysOperLogService extends IService<SysOperLog>
 {
     /**
      * 新增操作日志
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysPostService.java
similarity index 89%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysPostService.java
index 7f2a189..f74a9b2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysPostService.java
@@ -1,14 +1,16 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
-import com.ruoyi.system.domain.SysPost;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysPost;
 
 /**
  * 岗位信息 服务层
  * 
  * @author ruoyi
  */
-public interface ISysPostService
+public interface ISysPostService extends IService<SysPost>
 {
     /**
      * 查询岗位信息集合
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysRoleService.java
similarity index 93%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysRoleService.java
index 80d6140..5363b7f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysRoleService.java
@@ -1,16 +1,18 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
 import java.util.Set;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.web.domain.system.SysUserRole;
 
 /**
  * 角色业务层
  * 
  * @author ruoyi
  */
-public interface ISysRoleService
+public interface ISysRoleService extends IService<SysRole>
 {
     /**
      * 根据条件分页查询角色数据
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserOnlineService.java
similarity index 86%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserOnlineService.java
index 50c99a1..6efe836 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserOnlineService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserOnlineService.java
@@ -1,15 +1,17 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.system.SysUserOnline;
 
 import java.util.Date;
 import java.util.List;
-import com.ruoyi.system.domain.SysUserOnline;
 
 /**
  * 在线用户 服务层
  * 
  * @author ruoyi
  */
-public interface ISysUserOnlineService
+public interface ISysUserOnlineService extends IService<SysUserOnline>
 {
     /**
      * 通过会话序号查询信息
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserService.java
similarity index 95%
rename from ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserService.java
index 35ad2e2..41aea84 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/server/system/ISysUserService.java
@@ -1,15 +1,17 @@
-package com.ruoyi.system.service;
+package com.ruoyi.web.server.system;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.web.domain.system.SysUserRole;
 
 /**
  * 用户 业务层
  * 
  * @author ruoyi
  */
-public interface ISysUserService
+public interface ISysUserService extends IService<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/CommonController.java
similarity index 97%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/CommonController.java
index ff7bac1..b60678b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/CommonController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.common;
+package com.ruoyi.web.system;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -139,7 +139,8 @@
      * 本地资源通用下载
      */
     @GetMapping("/download/resource")
-    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception
+    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
+            throws Exception
     {
         try
         {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysCaptchaController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysCaptchaController.java
index 739c469..8004bee 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysCaptchaController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.awt.image.BufferedImage;
 import java.io.IOException;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysConfigController.java
similarity index 95%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysConfigController.java
index 6a2adda..c1bcbde 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysConfigController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -17,8 +17,8 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.web.domain.system.SysConfig;
+import com.ruoyi.web.server.system.ISysConfigService;
 
 /**
  * 参数配置 信息操作处理
@@ -68,7 +68,6 @@
     /**
      * 新增参数配置
      */
-    @RequiresPermissions("system:config:add")
     @GetMapping("/add")
     public String add()
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDeptController.java
similarity index 94%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDeptController.java
index c842fe5..a1b5610 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDeptController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -19,7 +19,7 @@
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.web.server.system.ISysDeptService;
 
 /**
  * 部门信息
@@ -54,7 +54,6 @@
     /**
      * 新增部门
      */
-    @RequiresPermissions("system:dept:add")
     @GetMapping("/add/{parentId}")
     public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
     {
@@ -164,9 +163,9 @@
      * @param deptId 部门ID
      * @param excludeId 排除ID
      */
-    @RequiresPermissions("system:dept:list")
     @GetMapping(value = { "/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}" })
-    public String selectDeptTree(@PathVariable("deptId") Long deptId, @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap)
+    public String selectDeptTree(@PathVariable("deptId") Long deptId,
+            @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap)
     {
         mmap.put("dept", deptService.selectDeptById(deptId));
         mmap.put("excludeId", excludeId);
@@ -176,7 +175,6 @@
     /**
      * 加载部门列表树(排除下级)
      */
-    @RequiresPermissions("system:dept:list")
     @GetMapping("/treeData/{excludeId}")
     @ResponseBody
     public List<Ztree> treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictDataController.java
similarity index 96%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictDataController.java
index 36ab009..dd2933c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictDataController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -18,7 +18,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.web.server.system.ISysDictDataService;
 
 /**
  * 数据字典信息
@@ -65,7 +65,6 @@
     /**
      * 新增字典类型
      */
-    @RequiresPermissions("system:dict:add")
     @GetMapping("/add/{dictType}")
     public String add(@PathVariable("dictType") String dictType, ModelMap mmap)
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictTypeController.java
similarity index 96%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictTypeController.java
index 495116b..411cbcd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysDictTypeController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -19,7 +19,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.web.server.system.ISysDictTypeService;
 
 /**
  * 数据字典信息
@@ -67,7 +67,6 @@
     /**
      * 新增字典类型
      */
-    @RequiresPermissions("system:dict:add")
     @GetMapping("/add")
     public String add()
     {
@@ -168,7 +167,8 @@
      * 选择字典树
      */
     @GetMapping("/selectDictTree/{columnId}/{dictType}")
-    public String selectDeptTree(@PathVariable("columnId") Long columnId, @PathVariable("dictType") String dictType, ModelMap mmap)
+    public String selectDeptTree(@PathVariable("columnId") Long columnId, @PathVariable("dictType") String dictType,
+            ModelMap mmap)
     {
         mmap.put("columnId", columnId);
         mmap.put("dict", dictTypeService.selectDictTypeByType(dictType));
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysIndexController.java
similarity index 97%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysIndexController.java
index 667fea5..29b1a42 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysIndexController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.Date;
 import java.util.List;
@@ -23,8 +23,8 @@
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysMenuService;
+import com.ruoyi.web.server.system.ISysConfigService;
+import com.ruoyi.web.server.system.ISysMenuService;
 
 /**
  * 首页 业务处理
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysLoginController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysLoginController.java
index 55aecae..1b0f9c8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysLoginController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysMenuController.java
similarity index 97%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysMenuController.java
index 44960cb..997598d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysMenuController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -20,7 +20,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysMenuService;
+import com.ruoyi.web.server.system.ISysMenuService;
 
 /**
  * 菜单信息
@@ -77,7 +77,6 @@
     /**
      * 新增
      */
-    @RequiresPermissions("system:menu:add")
     @GetMapping("/add/{parentId}")
     public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysNoticeController.java
similarity index 94%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysNoticeController.java
index 96d0fa4..59fe96c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysNoticeController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -16,8 +16,8 @@
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.service.ISysNoticeService;
+import com.ruoyi.web.domain.system.SysNotice;
+import com.ruoyi.web.server.system.ISysNoticeService;
 
 /**
  * 公告 信息操作处理
@@ -56,7 +56,6 @@
     /**
      * 新增公告
      */
-    @RequiresPermissions("system:notice:add")
     @GetMapping("/add")
     public String add()
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysPostController.java
similarity index 93%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysPostController.java
index 9835a57..a40d06f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysPostController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -17,8 +17,8 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.service.ISysPostService;
+import com.ruoyi.web.domain.system.SysPost;
+import com.ruoyi.web.server.system.ISysPostService;
 
 /**
  * 岗位信息操作处理
@@ -68,13 +68,19 @@
     @ResponseBody
     public AjaxResult remove(String ids)
     {
-        return toAjax(postService.deletePostByIds(ids));
+        try
+        {
+            return toAjax(postService.deletePostByIds(ids));
+        }
+        catch (Exception e)
+        {
+            return error(e.getMessage());
+        }
     }
 
     /**
      * 新增岗位
      */
-    @RequiresPermissions("system:post:add")
     @GetMapping("/add")
     public String add()
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysProfileController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysProfileController.java
index e95868a..ce5bb36 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysProfileController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -23,7 +23,7 @@
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.server.system.ISysUserService;
 
 /**
  * 个人信息 业务处理
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRegisterController.java
similarity index 93%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRegisterController.java
index e8dc001..f85b780 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRegisterController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -10,7 +10,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.shiro.service.SysRegisterService;
-import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.web.server.system.ISysConfigService;
 
 /**
  * 注册验证
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRoleController.java
similarity index 96%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRoleController.java
index b853146..bd15018 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysRoleController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -21,10 +21,10 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.domain.system.SysUserRole;
+import com.ruoyi.web.server.system.ISysDeptService;
+import com.ruoyi.web.server.system.ISysRoleService;
+import com.ruoyi.web.server.system.ISysUserService;
 
 /**
  * 角色信息
@@ -77,7 +77,6 @@
     /**
      * 新增角色
      */
-    @RequiresPermissions("system:role:add")
     @GetMapping("/add")
     public String add()
     {
@@ -276,7 +275,6 @@
     /**
      * 选择用户
      */
-    @RequiresPermissions("system:role:list")
     @GetMapping("/authUser/selectUser/{roleId}")
     public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysUserController.java
similarity index 97%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/SysUserController.java
index 094cc58..7adbcf3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/SysUserController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.system;
+package com.ruoyi.web.system;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -30,10 +30,10 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
 import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.web.server.system.ISysDeptService;
+import com.ruoyi.web.server.system.ISysPostService;
+import com.ruoyi.web.server.system.ISysRoleService;
+import com.ruoyi.web.server.system.ISysUserService;
 
 /**
  * 用户信息
@@ -113,7 +113,6 @@
     /**
      * 新增用户
      */
-    @RequiresPermissions("system:user:add")
     @GetMapping("/add")
     public String add(ModelMap mmap)
     {
@@ -243,7 +242,6 @@
     /**
      * 进入授权角色页
      */
-    @RequiresPermissions("system:user:edit")
     @GetMapping("/authRole/{userId}")
     public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
     {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoDialogController.java
similarity index 96%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoDialogController.java
index 3030057..84ef156 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoDialogController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoFormController.java
similarity index 99%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoFormController.java
index 7cc6faa..a9cf5f7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoFormController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoIconController.java
similarity index 92%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoIconController.java
index b6884cc..8734e0d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoIconController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoOperateController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoOperateController.java
index 18cb90a..b77ca8c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoOperateController.java
@@ -1,9 +1,12 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+
+import com.ruoyi.web.system.demo.domain.CustomerModel;
+import com.ruoyi.web.system.demo.domain.UserOperateModel;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -21,8 +24,6 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.web.controller.demo.domain.CustomerModel;
-import com.ruoyi.web.controller.demo.domain.UserOperateModel;
 
 /**
  * 操作控制
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoReportController.java
similarity index 94%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoReportController.java
index 6101008..6f5e381 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoReportController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoTableController.java
similarity index 99%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoTableController.java
index bd15891..ab168bd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/controller/DemoTableController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.controller;
+package com.ruoyi.web.system.demo.controller;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/CustomerModel.java
similarity index 97%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/CustomerModel.java
index 5e7d6e5..ecde0f6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/CustomerModel.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.domain;
+package com.ruoyi.web.system.demo.domain;
 
 import java.util.List;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/GoodsModel.java
similarity index 96%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/GoodsModel.java
index b25542a..37280a5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/GoodsModel.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.domain;
+package com.ruoyi.web.system.demo.domain;
 
 import java.util.Date;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/UserOperateModel.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/UserOperateModel.java
index 8b158aa..7fc1963 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/demo/domain/UserOperateModel.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.demo.domain;
+package com.ruoyi.web.system.demo.domain;
 
 import java.util.Date;
 import com.ruoyi.common.annotation.Excel;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/CacheController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/CacheController.java
index baeb2b8..2434803 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/CacheController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/DruidController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/DruidController.java
similarity index 93%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/DruidController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/DruidController.java
index a51bf20..ca52b6b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/DruidController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/DruidController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/ServerController.java
similarity index 95%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/ServerController.java
index 386b5c7..1c0ee63 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/ServerController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysLogininforController.java
similarity index 95%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysLogininforController.java
index 0d30e42..9e89da0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysLogininforController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import java.util.List;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
@@ -15,8 +15,8 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysLogininfor;
-import com.ruoyi.system.service.ISysLogininforService;
+import com.ruoyi.web.domain.system.SysLogininfor;
+import com.ruoyi.web.server.system.ISysLogininforService;
 
 /**
  * 系统访问记录
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysOperlogController.java
similarity index 94%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysOperlogController.java
index cddd972..5f69e57 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysOperlogController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -16,8 +16,8 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysOperLog;
-import com.ruoyi.system.service.ISysOperLogService;
+import com.ruoyi.web.domain.system.SysOperLog;
+import com.ruoyi.web.server.system.ISysOperLogService;
 
 /**
  * 操作日志记录
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysUserOnlineController.java
similarity index 95%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysUserOnlineController.java
index 19435e9..731807d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/system/monitor/SysUserOnlineController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.monitor;
+package com.ruoyi.web.system.monitor;
 
 import java.util.List;
 import org.apache.shiro.authz.annotation.Logical;
@@ -19,8 +19,8 @@
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.framework.shiro.session.OnlineSession;
 import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
+import com.ruoyi.web.domain.system.SysUserOnline;
+import com.ruoyi.web.server.system.ISysUserOnlineService;
 
 /**
  * 在线用户监控
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BuildController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/BuildController.java
similarity index 93%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BuildController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/tool/BuildController.java
index 4d3c128..428b864 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BuildController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/BuildController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.tool;
+package com.ruoyi.web.tool;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/CacheUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/CacheUtil.java
new file mode 100644
index 0000000..2c6ddd7
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/CacheUtil.java
@@ -0,0 +1,19 @@
+package com.ruoyi.web.tool;
+
+
+import java.util.*;
+
+/**
+ * 缓存工具类
+ */
+public class CacheUtil {
+
+    public static Map<String, String> markets = new HashMap<>();
+
+    public static Set<Integer> securitiesIds = new HashSet<>();
+
+    public static Map<String, Thread> threads = new HashMap<>();
+
+
+    public static boolean tradingDay = false;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDModel.java
new file mode 100644
index 0000000..9c53084
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDModel.java
@@ -0,0 +1,50 @@
+package com.ruoyi.web.tool;
+
+import lombok.Data;
+
+/**
+ * 分布式id模型
+ */
+@Data
+public class IDModel {
+    /**
+     * 时针回拨变量(全域值)
+     */
+    int hourHandVariable;
+    /**
+     * 最大时针回拨变量
+     */
+    int maxHourHandVariable;
+    /**
+     * 自增长变量
+     */
+    int selfGrowth;
+    /**
+     * 最大自增长变量
+     */
+    int maxSelfGrowth;
+    /**
+     * 返回的唯一id
+     */
+    long id;
+
+    public IDModel() {
+    }
+
+    public IDModel(int hourHandVariable, int maxHourHandVariable, int selfGrowth, int maxSelfGrowth) {
+        this.hourHandVariable = hourHandVariable;
+        this.maxHourHandVariable = maxHourHandVariable;
+        this.selfGrowth = selfGrowth;
+        this.maxSelfGrowth = maxSelfGrowth;
+    }
+
+
+    public IDModel setIDModel(int hourHandVariable, int maxHourHandVariable, int selfGrowth, int maxSelfGrowth, long id){
+        this.setHourHandVariable(hourHandVariable);
+        this.setMaxHourHandVariable(maxHourHandVariable);
+        this.setSelfGrowth(selfGrowth);
+        this.setMaxSelfGrowth(maxSelfGrowth);
+        this.setId(id);
+        return this;
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDUtil.java
new file mode 100644
index 0000000..bf3bab8
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/IDUtil.java
@@ -0,0 +1,102 @@
+package com.ruoyi.web.tool;
+
+
+/**
+ * id生成器
+ */
+public class IDUtil {
+    /**
+     * 存储时间戳
+     */
+    private static long timestamp = System.currentTimeMillis();
+    /**
+     * 自增长值
+     */
+    private static int self = 0;
+    /**
+     * 最大自增长值
+     */
+    private static int max_self = 9999;
+    /**
+     * 设备号
+     */
+    private static int device = 0;
+    /**
+     * 时针回拨增长值
+     */
+    private static int hour_hand_variable = 0;
+    /**
+     * 时针回拨最大增长值
+     */
+    private static int max_hour_hand_variable = 999;
+
+
+    /**
+     * 时间戳id
+     * @return
+     */
+    public static long timestamp_id(){
+        return timestamp;
+    }
+
+    /**
+     * 生成唯一ID
+     * @return
+     */
+    public static long sole_id(){
+        return sole_id(null);
+    }
+
+
+    /**
+     * 唯一ID生成
+     * @param workId    工作ID
+     * @return
+     */
+    public synchronized static long sole_id(Integer workId){
+        if(null != workId){
+            device = workId;
+        }
+        long timeMillis = System.currentTimeMillis();
+        /**
+         * 时间戳相同
+         * 自增长值使用完后,休眠等待时间戳更新
+         */
+        if(timeMillis == timestamp && self > max_self){
+            try {
+                Thread.sleep(1);
+                self = 0;
+                return sole_id(workId);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        //处理时针回拨的情况
+        if(timeMillis < timestamp) {
+            if (hour_hand_variable >= max_hour_hand_variable) {
+                hour_hand_variable = 0;
+            } else {
+                hour_hand_variable++;
+            }
+        }
+        //处理
+        if(timeMillis > timestamp){
+            timestamp = timeMillis;
+            self = 0;
+        }
+        return splice();
+    }
+
+
+    /**
+     * 拼接最终的id
+     * @return
+     */
+    private static long splice(){
+        //格式化自增长数据格式,前位补0
+        String format = String.format("%04d", self);
+        Long id = Long.valueOf(timestamp + "" + hour_hand_variable + "" + device + format);
+        self++;
+        return id;
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/R.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/R.java
new file mode 100644
index 0000000..8efc365
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/R.java
@@ -0,0 +1,28 @@
+package com.ruoyi.web.tool;
+
+/**
+ * 返回结果枚举接口
+ * @param <T>
+ */
+public interface R<T> {
+    /**
+     * 状态码
+     */
+    Integer code = 200;
+    /**
+     * 返回结果说明
+     */
+    String msg = "";
+
+    /**
+     * 返回状态码
+     * @return
+     */
+    Integer getCode();
+
+    /**
+     * 返回结果说明
+     * @return
+     */
+    String getMsg();
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/RedisLock.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/RedisLock.java
new file mode 100644
index 0000000..abe783e
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/RedisLock.java
@@ -0,0 +1,46 @@
+package com.ruoyi.web.tool;
+
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/26 18:43
+ */
+public class RedisLock {
+	private RedisTemplate redisTemplate;
+	private String lockKey;
+	private int expireTime; // 锁的超时时间
+	private int timeout; // 获取锁的超时时间
+	
+	
+	public RedisLock(RedisTemplate redisTemplate, String lockKey, int expireTime, int timeout) {
+		this.redisTemplate = redisTemplate;
+		this.lockKey = lockKey;
+		this.expireTime = expireTime;
+		this.timeout = timeout;
+	}
+	
+	public boolean lock() {
+		String identifier = UUID.randomUUID().toString();
+		long end = System.currentTimeMillis() + timeout;
+		while (System.currentTimeMillis() < end) {
+			if (redisTemplate.opsForValue().setIfAbsent(lockKey, identifier, expireTime, TimeUnit.SECONDS)) {
+				return true;
+			}
+			// 可以使用延时来减少CPU占用
+			try {
+				Thread.sleep(100);
+			} catch (InterruptedException e) {
+				Thread.currentThread().interrupt();
+			}
+		}
+		return false;
+	}
+	
+	public void unlock() {
+		redisTemplate.delete(lockKey);
+	}
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/Result.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/Result.java
new file mode 100644
index 0000000..c3c922b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/Result.java
@@ -0,0 +1,127 @@
+package com.ruoyi.web.tool;
+
+
+import cn.hutool.json.JSONObject;
+
+/**
+ * 统一返回结果类
+ * @param <T>
+ */
+public class Result<T> {
+    /**
+     * 状态码
+     */
+    private Integer code;
+    /**
+     * 返回说明
+     */
+    private String msg;
+    /**
+     * 返回结果
+     */
+    private T data;
+
+    public Result() {
+    }
+
+    public Result(Integer code, String msg, T data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    /**
+     * 成功
+     * @param t
+     * @return
+     * @param <T>
+     */
+    public static  <T> Result<T> success(T t){
+        return new Result(200, "成功", t);
+    }
+
+    /**
+     * 返回
+     * @return
+     */
+    public static Result success(){
+        return new Result(200, "成功", new JSONObject());
+    }
+
+    /**
+     * 提示信息
+     * @param r
+     * @param t
+     * @return
+     * @param <T>
+     */
+    public static <T> Result<T> tip(R r, T t){
+        return new Result(r.getCode(), r.getMsg(), t);
+    }
+
+    /**
+     * 提示信息
+     * @param r
+     * @return
+     * @param <T>
+     */
+    public static <T> Result<T> tip(R r){
+        return new Result(r.getCode(), r.getMsg(), new JSONObject());
+    }
+
+    /**
+     * 失败
+     * @return
+     * @param <T>
+     */
+    public static <T> Result<T> fail(){
+        return new Result(500, "失败", new JSONObject());
+    }
+
+    /**
+     * 失败
+     * @param t
+     * @return
+     * @param <T>
+     */
+    public static <T> Result<T> fail(T t){
+        return new Result(500, "失败", t);
+    }
+
+    /**
+     * 失败
+     * @param r
+     * @param t
+     * @return
+     * @param <T>
+     */
+    public static <T> Result<T> fail(R r, T t){
+        return new Result(500, r.getMsg(), t);
+    }
+
+
+
+    @Override
+    public String toString() {
+        return "Result{" +
+                "code=" + code +
+                ", msg='" + msg + '\'' +
+                ", data=" + data +
+                '}';
+    }
+
+
+
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/StringUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/StringUtils.java
new file mode 100644
index 0000000..fc79e62
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/StringUtils.java
@@ -0,0 +1,26 @@
+package com.ruoyi.web.tool;
+
+/**
+ * 字符串工具类
+ */
+public class StringUtils {
+
+
+    /**
+     * 空字符串
+     * @param str
+     * @return
+     */
+    public static boolean isEmpty(String str){
+        return null == str || "".equals(str);
+    }
+
+    /**
+     * 非空字符串
+     * @param str
+     * @return
+     */
+    public static boolean isNotEmpty(String str){
+        return !isEmpty(str);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/SwaggerController.java
similarity index 93%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/tool/SwaggerController.java
index de2ae6c..62e08dc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/SwaggerController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.tool;
+package com.ruoyi.web.tool;
 
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/TestController.java
similarity index 98%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/tool/TestController.java
index b4f6bac..7385572 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/TestController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.web.controller.tool;
+package com.ruoyi.web.tool;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/tool/UUIDUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/UUIDUtil.java
new file mode 100644
index 0000000..829a121
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/tool/UUIDUtil.java
@@ -0,0 +1,97 @@
+package com.ruoyi.web.tool;
+
+
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * 定义生成随机码的工具类
+ */
+public class UUIDUtil {
+
+
+
+    /**
+     * 定义生成原生的UUID随机码
+     * @return
+     */
+    public static String getNativeUUID(){
+        return UUID.randomUUID().toString();
+    }
+
+
+    /**
+     * 生成32位随机码
+     * @return
+     */
+    public static String getRandomCode(){
+        return UUIDUtil.getNativeUUID().replaceAll("-", "");
+    }
+
+
+    /**
+     * 获取给定长度的随机码
+     * @param num
+     * @return
+     * @throws Exception
+     */
+    public static String getRandomCode(Integer num) throws Exception {
+        String str = null;
+        if(0 < num){
+            if(num % 32 > 0){
+                Integer s = num / 32;
+                Integer l = num % 32;
+                StringBuffer sb = new StringBuffer();
+                for(int i = 0; i < s; i++){
+                    sb.append(UUIDUtil.getRandomCode());
+                }
+                sb.append(UUIDUtil.getRandomCode().substring(0, l));
+                str = sb.toString();
+            }else if(num % 32 == 0){
+                Integer s = num / 32;
+                StringBuffer sb = new StringBuffer();
+                for(int i = 0; i < s; i++){
+                    sb.append(UUIDUtil.getRandomCode());
+                }
+                str = sb.toString();
+            }else{
+                str = UUIDUtil.getRandomCode().substring(0, num);
+            }
+        }else{
+            throw new Exception("参数只能大于0");
+        }
+        return str;
+    }
+
+
+    /**
+     * 获取根据当前时间的字符串数据
+     * @return
+     */
+    public synchronized static String getTimeStr(){
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        return simpleDateFormat.format(new Date());
+    }
+
+
+    /**
+    * @Description: 获取数字随机码
+    * @Author pzb
+    * @Date 2021/8/11 16:52
+    * @Param
+    * @Return
+    * @Exception
+    */
+    public static String getNumberRandom(Integer num){
+        if(null == num){
+            num = 32;
+        }
+        StringBuffer sb = new StringBuffer();
+        for(int i = 0; i < num; i++){
+            sb.append(Double.valueOf(Math.random() * 10).intValue());
+        }
+        return sb.toString();
+    }
+}
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 4a56a6a..55d3476 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,7 +6,7 @@
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://192.168.110.80:3306/sangeshenbian?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://127.0.0.1:3306/sangeshenbian?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
                 password: 123456
             # 从库数据源
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 8fee864..91217c5 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -3,9 +3,9 @@
   # 名称
   name: RuoYi
   # 版本
-  version: 4.8.0
+  version: 4.7.9
   # 版权年份
-  copyrightYear: 2025
+  copyrightYear: 2024
   # 实例演示开关
   demoEnabled: true
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
@@ -16,7 +16,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为80
-  port: 80
+  port: 3000
   servlet:
     # 应用的访问路径
     context-path: /
@@ -45,6 +45,11 @@
 
 # Spring配置
 spring:
+  application:
+    name: ruoyi
+  # 循环依赖
+  main:
+    allow-circular-references: true
   # 模板引擎
   thymeleaf:
     mode: HTML
@@ -72,15 +77,13 @@
     restart:
       # 热部署开关
       enabled: true
+      
+      
+mybatis-plus:
+  type-aliases-package: com.ruoyi.**.domain
+  mapper-locations: classpath*:mapper/**/**.xml
 
-# MyBatis
-mybatis:
-  # 搜索指定包别名
-  typeAliasesPackage: com.ruoyi.**.domain
-  # 配置mapper的扫描,找到所有的mapper.xml映射文件
-  mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 加载全局的配置文件
-  configLocation: classpath:mybatis/mybatis-config.xml
+
 
 # PageHelper分页插件
 pagehelper:
@@ -126,6 +129,7 @@
   rememberMe:
     # 是否开启记住我
     enabled: true
+  
 
 # 防止XSS攻击
 xss:
@@ -140,3 +144,18 @@
 swagger:
   # 是否开启swagger
   enabled: true
+
+## redis
+---
+spring:
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
+    jedis:
+      pool:
+        max-active: 20
+        max-idle: 20
+        max-wait: 60s
+        min-idle: 5
diff --git a/ruoyi-admin/src/main/resources/mapper/sange/TestMapper.xml b/ruoyi-admin/src/main/resources/mapper/sange/TestMapper.xml
deleted file mode 100644
index 890fc1f..0000000
--- a/ruoyi-admin/src/main/resources/mapper/sange/TestMapper.xml
+++ /dev/null
@@ -1,6 +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.sange.mapper.TestMapper">
-
-
-</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysConfigMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysConfigMapper.xml
index bb15593..5d04ed4 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysConfigMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysConfigMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysConfigMapper">
     
     <resultMap type="SysConfig" id="SysConfigResult">
     	<id     property="configId"      column="config_id"      />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysDeptMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysDeptMapper.xml
index 8f880f1..d4bdefb 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysDeptMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysDeptMapper">
 
 	<resultMap type="SysDept" id="SysDeptResult">
 		<id     property="deptId"     column="dept_id"     />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysDictDataMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysDictDataMapper.xml
index deff41d..70d0ea8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysDictDataMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysDictDataMapper">
 	
 	<resultMap type="SysDictData" id="SysDictDataResult">
 		<id     property="dictCode"   column="dict_code"   />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysDictTypeMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysDictTypeMapper.xml
index 0cd036e..c6ef5f8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysDictTypeMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysDictTypeMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysDictTypeMapper">
 
 	<resultMap type="SysDictType" id="SysDictTypeResult">
 		<id     property="dictId"     column="dict_id"     />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysLogininforMapper.xml
similarity index 96%
rename from ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysLogininforMapper.xml
index ac0afb7..988767c 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysLogininforMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysLogininforMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysLogininforMapper">
 
 	<resultMap type="SysLogininfor" id="SysLogininforResult">
 		<id     property="infoId"        column="info_id"           />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMenuMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysMenuMapper.xml
index 1f08c56..4550df0 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysMenuMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysMenuMapper">
 
 	<resultMap type="SysMenu" id="SysMenuResult">
 		<id     property="menuId"         column="menu_id"        />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysNoticeMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysNoticeMapper.xml
index a960ff0..8dbd086 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysNoticeMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysNoticeMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysNoticeMapper">
     
     <resultMap type="SysNotice" id="SysNoticeResult">
         <result property="noticeId"       column="notice_id"       />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysOperLogMapper.xml
similarity index 97%
rename from ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysOperLogMapper.xml
index 388625e..e837ba4 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysOperLogMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysOperLogMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysOperLogMapper">
 
 	<resultMap type="SysOperLog" id="SysOperLogResult">
 		<id     property="operId"         column="oper_id"        />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysPostMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysPostMapper.xml
index 86e4751..ddc72de 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysPostMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysPostMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysPostMapper">
 
 	<resultMap type="SysPost" id="SysPostResult">
 		<id     property="postId"        column="post_id"       />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysRoleDeptMapper.xml
similarity index 93%
rename from ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysRoleDeptMapper.xml
index 7c4139b..0378dc8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysRoleDeptMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysRoleDeptMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysRoleDeptMapper">
 
 	<resultMap type="SysRoleDept" id="SysRoleDeptResult">
 		<result property="roleId"     column="role_id"      />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysRoleMapper.xml
similarity index 98%
rename from ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysRoleMapper.xml
index a168beb..caf3052 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysRoleMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysRoleMapper">
 
 	<resultMap type="SysRole" id="SysRoleResult">
 		<id     property="roleId"       column="role_id"        />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysRoleMenuMapper.xml
similarity index 93%
rename from ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysRoleMenuMapper.xml
index d213bdd..5517532 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysRoleMenuMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysRoleMenuMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysRoleMenuMapper">
 
 	<resultMap type="SysRoleMenu" id="SysRoleMenuResult">
 		<result property="roleId"     column="role_id"      />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserMapper.xml
similarity index 99%
rename from ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysUserMapper.xml
index 40798d3..619a056 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysUserMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysUserMapper">
 
 	<resultMap type="SysUser" id="SysUserResult">
 		<id     property="userId"        column="user_id"         />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserOnlineMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserOnlineMapper.xml
similarity index 97%
rename from ruoyi-system/src/main/resources/mapper/system/SysUserOnlineMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysUserOnlineMapper.xml
index ff85fd8..35dce5d 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserOnlineMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserOnlineMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysUserOnlineMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysUserOnlineMapper">
 
 	<resultMap type="SysUserOnline" id="SysUserOnlineResult">
 		<id     property="sessionId"         column="sessionId"         />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserPostMapper.xml
similarity index 93%
rename from ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysUserPostMapper.xml
index 2b90bc4..7cbee7f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserPostMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysUserPostMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysUserPostMapper">
 
 	<resultMap type="SysUserPost" id="SysUserPostResult">
 		<result property="userId"     column="user_id"      />
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserRoleMapper.xml
similarity index 95%
rename from ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
rename to ruoyi-admin/src/main/resources/mapper/system/SysUserRoleMapper.xml
index 7606692..603148f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysUserRoleMapper">
+<mapper namespace="com.ruoyi.web.mapper.system.SysUserRoleMapper">
 
 	<resultMap type="SysUserRole" id="SysUserRoleResult">
 		<result property="userId"     column="user_id"      />
diff --git a/ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js b/ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js
index 6f6064e..be79f7a 100644
--- a/ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js
+++ b/ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js
@@ -1,4 +1,4 @@
-/*! jQuery Validation Plugin - v1.21.0 - 7/17/2024
+/*! jQuery Validation Plugin - v1.19.3 - 1/9/2021
  * https://jqueryvalidation.org/
- * Copyright (c) 2024 Jörn Zaefferer; Licensed MIT */
-!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,customElements:[],onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)});var f=[":text","[type='password']","[type='file']","select","textarea","[type='number']","[type='search']","[type='tel']","[type='url']","[type='email']","[type='datetime']","[type='date']","[type='month']","[type='week']","[type='time']","[type='datetime-local']","[type='range']","[type='color']","[type='radio']","[type='checkbox']","[contenteditable]","[type='button']"],g=["select","option","[type='radio']","[type='checkbox']"];a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",f.concat(this.settings.customElements).join(", "),b).on("click.validate",g.concat(this.settings.customElements).join(", "),b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={},d=["input","select","textarea","[contenteditable]"];return a(this.currentForm).find(d.concat(this.settings.customElements).join(", ")).not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);this.abortRequest(b),"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=".  Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),this.settings&&this.settings.escapeHtml?h.text(c||""):h.html(c||"")):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass),this.settings&&this.settings.escapeHtml?h.text(c||""):h.html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},elementAjaxPort:function(a){return"validate"+a.name},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},abortRequest:function(b){var c;this.pending[b.name]&&(c=this.elementAjaxPort(b),a.ajaxAbort(c),this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass))},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:-?\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),null!==i.valid&&i.old===h?i.valid:(i.old=h,i.valid=null,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:this.elementAjaxPort(c),dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(b,c,e){var f=b.port;"abort"===b.mode&&(a.ajaxAbort(f),d[f]=e)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(a.ajaxAbort(f),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a.ajaxAbort=function(a){d[a]&&(d[a].abort(),delete d[a])},a});
+ * Copyright (c) 2021 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=".  Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){if(a!==undefined){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")}},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a});
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/css/style.css b/ruoyi-admin/src/main/resources/static/css/style.css
index 897b219..0a7cae4 100644
--- a/ruoyi-admin/src/main/resources/static/css/style.css
+++ b/ruoyi-admin/src/main/resources/static/css/style.css
@@ -3036,6 +3036,11 @@
     display: block;
 }
 
+.clear {
+    display: block;
+    overflow: hidden;
+}
+
 a {
     cursor: pointer;
 }
diff --git a/ruoyi-admin/src/main/resources/static/css/style.min.css b/ruoyi-admin/src/main/resources/static/css/style.min.css
index 7fb8ef3..2303a27 100644
--- a/ruoyi-admin/src/main/resources/static/css/style.min.css
+++ b/ruoyi-admin/src/main/resources/static/css/style.min.css
@@ -1 +1 @@
-h1,h2,h3,h4,h5,h6{font-weight:100}h1{font-size:30px}h2{font-size:24px}h3{font-size:16px}h4{font-size:14px}h5{font-size:12px}h6{font-size:10px}h3,h4,h5{margin-top:5px;font-weight:600}a:focus{outline:0}.nav>li>a{color:#a7b1c2;font-weight:600;padding:14px 20px 14px 25px}.nav li>a{display:block}.nav.navbar-right>li>a,.nav.navbar-left>li>a{color:#fff;font-size:14px;height:50px;padding:15px 15px}.nav>li.active>a{color:#fff}.nav.navbar-right>li>a>.label,.nav.navbar-left>li>a>.label{position:absolute;top:9px;right:5px;text-align:center;font-size:9px;padding:2px 4px;line-height:.9}.nav.navbar-right>li>a:hover,.nav.navbar-left>li>a:hover{background-color:#367fa9;color:#fff}.navbar-default .nav>li>a:hover,.navbar-default .nav>li>a:focus{background-color:#293846;color:white}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background:#fff}.navbar{border:0}.navbar-default{background-color:transparent;border-color:#2f4050;position:relative}.nav.navbar-top-links li{display:inline-block}.navbar-top-links li:last-child{margin-right:16px}body.body-small .navbar-top-links li:last-child{margin-right:10px}.navbar-top-links li a{padding:20px 10px;min-height:50px}.dropdown-menu{border:medium none;display:none;float:left;font-size:12px;left:0;list-style:none outside none;padding:0;position:absolute;text-shadow:none;top:100%;z-index:1000;border-radius:0;box-shadow:0 0 3px rgba(86,96,117,0.3)}.dropdown-menu>li>a{border-radius:3px;color:inherit;line-height:25px;margin:4px;text-align:left;font-weight:normal}.dropdown-menu>li>a.font-bold{font-weight:600}.navbar-top-links .dropdown-menu li{display:block}.navbar-top-links .dropdown-menu li:last-child{margin-right:0}.navbar-top-links .dropdown-menu li a{padding:3px 20px;min-height:0}.navbar-top-links .dropdown-menu li a div{white-space:normal}.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks,.navbar-top-links .dropdown-alerts{width:310px;min-width:0}.navbar-top-links .dropdown-messages{margin-left:5px}.navbar-top-links .dropdown-tasks{margin-left:-59px}.navbar-top-links .dropdown-alerts{margin-left:-123px}.navbar-top-links .dropdown-user{right:0;left:auto}.dropdown-messages,.dropdown-alerts{padding:10px 10px 10px 10px}.dropdown-messages li a,.dropdown-alerts li a{font-size:12px}.dropdown-messages li em,.dropdown-alerts li em{font-size:10px}.nav.navbar-top-links .dropdown-alerts a{font-size:12px}.nav>li.active{border-left:4px solid #19aa8d;background:#293846}.nav.nav-second-level>li.active{border:0}.nav.nav-second-level.collapse[style]{height:auto!important}.nav-header a{color:#dfe4ed}.nav-header .text-muted{color:#8095a8}.minimalize-styl-2{padding:4px 12px;margin:12px 5px 5px 15px;font-size:14px;float:left}.navbar-form-custom{float:left;height:50px;padding:0;width:200px;display:inline-table}.navbar-form-custom .form-group{margin-bottom:0}.nav.navbar-top-links a{font-size:14px}.navbar-form-custom .form-control{background:none repeat scroll 0 0 rgba(0,0,0,0);border:medium none;font-size:14px;height:60px;margin:0;z-index:2000}.count-info .label{line-height:12px;padding:1px 5px;position:absolute;right:6px;top:12px}.arrow{float:right;margin-top:2px}.fa.arrow:before{content:"\f104"}.active>a>.fa.arrow:before{content:"\f107"}.nav-second-level li,.nav-third-level li{border-bottom:none!important;padding-left:2px;padding-right:2px}.nav-second-level li a{padding:7px 15px 7px 10px;padding-left:52px}.nav-third-level li a{padding-left:70px}.nav-second-level li:last-child{margin-bottom:10px}body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav li:hover>.nav-second-level,.mini-navbar .nav li:focus>.nav-second-level{display:block;border-radius:0 2px 2px 0;min-width:140px;height:auto}body.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:0 2px 2px 0}body.mini-navbar .navbar-default .nav>li>.nav-third-level li a{padding-left:31px}.fixed-nav .slimScrollDiv #side-menu{padding-bottom:60px;position:relative}.fixed-sidebar.mini-navbar .slimScrollDiv>*{overflow:visible!important}.fixed-sidebar .slimScrollDiv>*{overflow-y:hidden;overflow-x:visible}.mini-navbar .nav-second-level li a{padding:10px 10px 10px 15px}.canvas-menu.mini-navbar .nav-second-level{background:#293846}.mini-navbar li.active .nav-second-level{left:65px}.navbar-default .special_link a{background:#1ab394;color:white}.navbar-default .special_link a:hover{background:#17987e!important;color:white}.navbar-default .special_link a span.label{background:#fff;color:#1ab394}.navbar-default .landing_link a{background:#1cc09f;color:white}.navbar-default .landing_link a:hover{background:#1ab394!important;color:white}.navbar-default .landing_link a span.label{background:#fff;color:#1cc09f}.logo-element{text-align:center;font-size:18px;font-weight:600;color:white;display:none;padding:18px 0}.navbar-fixed-top{background:#fff;-webkit-transition-duration:.5s;transition-duration:.5s;z-index:2030}.fixed-nav #wrapper{padding-top:60px;box-sizing:border-box}.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.body-small .navbar-fixed-top{margin-left:0}body.mini-navbar .navbar-static-side{width:70px}body.mini-navbar .profile-element,body.mini-navbar .nav-label,body.mini-navbar .navbar-default .nav li a span{display:none}body.canvas-menu .profile-element{display:block}body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav-second-level{display:none}body.mini-navbar .navbar-default .nav>li>a{font-size:16px}body.mini-navbar .logo-element{display:block}body.canvas-menu .logo-element{display:none}body.mini-navbar .nav-header{padding:0;background-color:#1ab394}body.canvas-menu .nav-header{padding:33px 25px}body.mini-navbar #page-wrapper{margin:0 0 0 70px}body.canvas-menu.mini-navbar #page-wrapper,body.canvas-menu.mini-navbar .footer{margin:0}body.fixed-sidebar .navbar-static-side,body.canvas-menu .navbar-static-side{position:fixed;width:200px;z-index:2001;height:100%}body.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}body.fixed-sidebar.mini-navbar #page-wrapper{margin:0 0 0 70px}body.body-small.fixed-sidebar.mini-navbar #page-wrapper{margin:0 0 0 70px}body.body-small.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}.fixed-sidebar.mini-navbar .nav li>.nav-second-level{display:none}.fixed-sidebar.mini-navbar .nav li.active{border-left-width:0}.fixed-sidebar.mini-navbar .nav li:hover>a>span.nav-label{top:0;padding:10px 10px 10px 10px;text-align:center;background-color:#243747}.fixed-sidebar.mini-navbar .nav li:hover>.nav-second-level{top:40px;font-size:12px;background-color:#2f4050}.fixed-sidebar.mini-navbar .nav li:hover>.nav-second-level,.fixed-sidebar.mini-navbar .nav li:hover>a>span.nav-label{position:absolute;left:70px;display:block;min-width:140px;border-radius:2px}.fixed-sidebar.mini-navbar .nav li.active:hover>.nav-second-level,.fixed-sidebar.mini-navbar .nav li.active:hover>a>span.nav-label{left:67px}.fixed-sidebar.mini-navbar .nav .nav-second-level a>span,.fixed-sidebar.mini-navbar .nav .nav-third-level a>span{display:inline-block}body.fixed-sidebar.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:3px}body.canvas-menu.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:13px;border-radius:3px}.fixed-sidebar.mini-navbar .nav-second-level li a,.canvas-menu.mini-navbar .nav-second-level li a{padding:10px 10px 10px 15px}.fixed-sidebar.mini-navbar .nav-second-level,.canvas-menu.mini-navbar .nav-second-level{position:relative;padding:0;font-size:13px}.fixed-sidebar.mini-navbar li.active .nav-second-level,.canvas-menu.mini-navbar li.active .nav-second-level{left:0}body.canvas-menu nav.navbar-static-side{z-index:2001;background:#2f4050;height:100%;position:fixed;display:none}body.canvas-menu.mini-navbar nav.navbar-static-side{display:block;width:70px}.top-navigation #page-wrapper{margin-left:0}.top-navigation .navbar-nav .dropdown-menu>.active>a{background:white;color:#1ab394;font-weight:bold}.white-bg .navbar-fixed-top,.white-bg .navbar-static-top{background:#fff}.top-navigation .navbar{margin-bottom:0}.top-navigation .nav>li>a{padding:15px 20px;color:#676a6c}.top-navigation .nav>li a:hover,.top-navigation .nav>li a:focus{background:#fff;color:#1ab394}.top-navigation .nav>li.active{background:#fff;border:0}.top-navigation .nav>li.active>a{color:#1ab394}.top-navigation .navbar-right{padding-right:10px}.top-navigation .navbar-nav .dropdown-menu{box-shadow:none;border:1px solid #e7eaec}.top-navigation .dropdown-menu>li>a{margin:0;padding:7px 20px}.navbar .dropdown-menu{margin-top:0}.top-navigation .navbar-brand{background:#1ab394;color:#fff;padding:15px 25px}.top-navigation .navbar-top-links li:last-child{margin-right:0}.top-navigation.mini-navbar #page-wrapper,.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper,.mini-navbar .top-navigation #page-wrapper,.body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper,.canvas-menu #page-wrapper{margin:0}.top-navigation.fixed-nav #wrapper,.fixed-nav #wrapper.top-navigation{margin-top:50px}.top-navigation .footer.fixed{margin-left:0!important}.top-navigation .wrapper.wrapper-content{padding:40px}.top-navigation.body-small .wrapper.wrapper-content,.body-small .top-navigation .wrapper.wrapper-content{padding:40px 0 40px 0}.navbar-toggle{background-color:#1ab394;color:#fff;padding:6px 12px;font-size:14px}.top-navigation .navbar-nav .open .dropdown-menu>li>a,.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header{padding:10px 15px 10px 20px}@media(max-width :768px){.top-navigation .navbar-header{display:block;float:none}}.menu-visible-lg,.menu-visible-md{display:none!important}@media(min-width :1200px){.menu-visible-lg{display:block!important}}@media(min-width :992px){.menu-visible-md{display:block!important}}@media(max-width :767px){.menu-visible-md{display:block!important}.menu-visible-lg{display:block!important}}.btn{border-radius:3px}.float-e-margins .btn{margin-bottom:5px}.btn-w-m{min-width:120px}.btn-primary.btn-outline{color:#1ab394}.btn-success.btn-outline{color:#1c84c6}.btn-info.btn-outline{color:#23c6c8}.btn-warning.btn-outline{color:#f8ac59}.btn-danger.btn-outline{color:#ed5565}.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-info.btn-outline:hover,.btn-warning.btn-outline:hover,.btn-danger.btn-outline:hover{color:#fff}.btn-primary{background-color:#1ab394;border-color:#1ab394;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-color:#18a689;border-color:#18a689;color:#fff}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:active,.btn-primary.active[disabled],fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#1dc5a3;border-color:#1dc5a3}.btn-success{background-color:#1c84c6;border-color:#1c84c6;color:#fff}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-color:#1a7bb9!important;border-color:#1a7bb9!important;color:#fff}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success.active[disabled],fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#1f90d8;border-color:#1f90d8}.btn-info{background-color:#23c6c8;border-color:#23c6c8;color:#fff}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-color:#21b9bb;border-color:#21b9bb;color:#fff}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info.active[disabled],fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#26d7d9;border-color:#26d7d9}.btn-default{background-color:#f4f4f4;border-color:#ddd;color:#444}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-color:#e7e7e7;border-color:#e7e7e7;color:#444}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default.active[disabled],fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#ccc;border-color:#ccc}.btn-warning{background-color:#f8ac59;border-color:#f8ac59;color:#fff}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-color:#f7a54a;border-color:#f7a54a;color:#fff}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning.active[disabled],fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f9b66d;border-color:#f9b66d}.btn-danger{background-color:#ed5565;border-color:#ed5565;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-color:#ec4758;border-color:#ec4758;color:#fff}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger.active[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#ef6776;border-color:#ef6776}.btn-link{color:inherit}.btn-link:hover,.btn-link:focus,.btn-link:active,.btn-link.active,.open .dropdown-toggle.btn-link{color:#1ab394;text-decoration:none}.btn-link:active,.btn-link.active,.open .dropdown-toggle.btn-link{background-image:none}.btn-link.disabled,.btn-link.disabled:hover,.btn-link.disabled:focus,.btn-link.disabled:active,.btn-link.disabled.active,.btn-link[disabled],.btn-link[disabled]:hover,.btn-link[disabled]:focus,.btn-link[disabled]:active,.btn-link.active[disabled],fieldset[disabled] .btn-link,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:active,fieldset[disabled] .btn-link.active{color:#cacaca}.btn-white{color:inherit;background:white;border:1px solid #e7eaec}.btn-white:hover,.btn-white:focus,.btn-white:active,.btn-white.active,.open .dropdown-toggle.btn-white{color:inherit;border:1px solid #d2d2d2}.btn-white:active,.btn-white.active{box-shadow:0 2px 5px rgba(0,0,0,0.15) inset}.btn-white:active,.btn-white.active,.open .dropdown-toggle.btn-white{background-image:none}.btn-white.disabled,.btn-white.disabled:hover,.btn-white.disabled:focus,.btn-white.disabled:active,.btn-white.disabled.active,.btn-white[disabled],.btn-white[disabled]:hover,.btn-white[disabled]:focus,.btn-white[disabled]:active,.btn-white.active[disabled],fieldset[disabled] .btn-white,fieldset[disabled] .btn-white:hover,fieldset[disabled] .btn-white:focus,fieldset[disabled] .btn-white:active,fieldset[disabled] .btn-white.active{color:#cacaca}.form-control,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.btn-outline{color:inherit;background-color:transparent;-webkit-transition:all .5s;transition:all .5s}.btn-rounded{border-radius:50px}.btn-large-dim{width:90px;height:90px;font-size:42px}button.dim{display:inline-block;color:#fff;text-decoration:none;text-transform:uppercase;text-align:center;padding-top:6px;margin-right:10px;position:relative;cursor:pointer;border-radius:5px;font-weight:600;margin-bottom:20px!important}button.dim:active{top:3px}button.btn-primary.dim{box-shadow:inset 0 0 0 #16987e,0px 5px 0 0 #16987e,0px 10px 5px #999}button.btn-primary.dim:active{box-shadow:inset 0 0 0 #16987e,0px 2px 0 0 #16987e,0px 5px 3px #999}button.btn-default.dim{box-shadow:inset 0 0 0 #b3b3b3,0px 5px 0 0 #b3b3b3,0px 10px 5px #999}button.btn-default.dim:active{box-shadow:inset 0 0 0 #b3b3b3,0px 2px 0 0 #b3b3b3,0px 5px 3px #999}button.btn-warning.dim{box-shadow:inset 0 0 0 #f79d3c,0px 5px 0 0 #f79d3c,0px 10px 5px #999}button.btn-warning.dim:active{box-shadow:inset 0 0 0 #f79d3c,0px 2px 0 0 #f79d3c,0px 5px 3px #999}button.btn-info.dim{box-shadow:inset 0 0 0 #1eacae,0px 5px 0 0 #1eacae,0px 10px 5px #999}button.btn-info.dim:active{box-shadow:inset 0 0 0 #1eacae,0px 2px 0 0 #1eacae,0px 5px 3px #999}button.btn-success.dim{box-shadow:inset 0 0 0 #1872ab,0px 5px 0 0 #1872ab,0px 10px 5px #999}button.btn-success.dim:active{box-shadow:inset 0 0 0 #1872ab,0px 2px 0 0 #1872ab,0px 5px 3px #999}button.btn-danger.dim{box-shadow:inset 0 0 0 #ea394c,0px 5px 0 0 #ea394c,0px 10px 5px #999}button.btn-danger.dim:active{box-shadow:inset 0 0 0 #ea394c,0px 2px 0 0 #ea394c,0px 5px 3px #999}button.dim:before{font-size:50px;line-height:1em;font-weight:normal;color:#fff;display:block;padding-top:10px}button.dim:active:before{top:7px;font-size:50px}.label{background-color:#d1dade;color:#5e5e5e;font-size:10px;font-weight:600;padding:3px 8px;text-shadow:none}.badge{background-color:#d1dade;color:#5e5e5e;font-size:11px;font-weight:600;padding-bottom:4px;padding-left:6px;padding-right:6px;text-shadow:none}.label-primary,.badge-primary{background-color:#1ab394;color:#fff}.label-success,.badge-success{background-color:#1c84c6;color:#fff}.label-warning,.badge-warning{background-color:#f8ac59;color:#fff}.label-warning-light,.badge-warning-light{background-color:#f8ac59;color:#fff}.label-danger,.badge-danger{background-color:#ed5565;color:#fff}.label-info,.badge-info{background-color:#23c6c8;color:#fff}.label-inverse,.badge-inverse{background-color:#262626;color:#fff}.label-white,.badge-white{background-color:#fff;color:#5e5e5e}.label-white,.badge-disable{background-color:#2a2e36;color:#8b91a0}.onoffswitch{position:relative;width:64px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #1ab394;border-radius:2px}.onoffswitch-inner{width:200%;margin-left:-100%;-webkit-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{float:left;width:50%;height:20px;padding:0;line-height:20px;font-size:12px;color:white;font-family:Trebuchet,Arial,sans-serif;font-weight:bold;box-sizing:border-box}.onoffswitch-inner:before{content:"ON";padding-left:10px;background-color:#1ab394;color:#fff}.onoffswitch-inner:after{content:"OFF";padding-right:10px;background-color:#fff;color:#999;text-align:right}.onoffswitch-switch{width:20px;margin:0;background:#fff;border:2px solid #1ab394;border-radius:2px;position:absolute;top:0;bottom:0;right:44px;-webkit-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.chosen-container-single .chosen-single{background:#fff;box-shadow:none;-moz-box-sizing:border-box;background-color:#fff;border:1px solid #cbd5dd;border-radius:2px;cursor:text;height:auto!important;margin:0;min-height:30px;overflow:hidden;padding:4px 12px;position:relative;width:100%}.chosen-container-multi .chosen-choices li.search-choice{background:#f1f1f1;border:1px solid #ededed;border-radius:2px;box-shadow:none;color:#333;cursor:default;line-height:13px;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;position:relative}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{background-color:#f4f4f4;border-color:#ddd;color:inherit;cursor:default;z-index:2}.pagination>li>a,.pagination>li>span{background-color:#fff;border:1px solid #ddd;color:inherit;float:left;line-height:1.42857;margin-left:-1px;padding:4px 10px;position:relative;text-decoration:none}.tooltip-inner{background-color:#2f4050;word-break:break-all;overflow-wrap:break-word}.tooltip.top .tooltip-arrow{border-top-color:#2f4050}.tooltip.right .tooltip-arrow{border-right-color:#2f4050}.tooltip.bottom .tooltip-arrow{border-bottom-color:#2f4050}.tooltip.left .tooltip-arrow{border-left-color:#2f4050}.easypiechart{position:relative;text-align:center}.easypiechart .h2{margin-left:10px;margin-top:10px;display:inline-block}.easypiechart canvas{top:0;left:0}.easypiechart .easypie-text{line-height:1;position:absolute;top:33px;width:100%;z-index:1}.easypiechart img{margin-top:-4px}.jqstooltip{box-sizing:content-box}.fc-state-default{background-color:#fff;background-image:none;background-repeat:repeat-x;box-shadow:none;color:#333;text-shadow:none}.fc-state-default{border:1px solid}.fc-button{color:inherit;border:1px solid #e7eaec;cursor:pointer;display:inline-block;height:1.9em;line-height:1.9em;overflow:hidden;padding:0 .6em;position:relative;white-space:nowrap}.fc-state-active{background-color:#1ab394;border-color:#1ab394;color:#fff}.fc-header-title h2{font-size:16px;font-weight:600;color:inherit}.fc-content .fc-widget-header,.fc-content .fc-widget-content{border-color:#e7eaec;font-weight:normal}.fc-border-separate tbody{background-color:#f8f8f8}.fc-state-highlight{background:none repeat scroll 0 0 #fcf8e3}.external-event{padding:5px 10px;border-radius:2px;cursor:pointer;margin-bottom:5px}.fc-ltr .fc-event-hori.fc-event-end,.fc-rtl .fc-event-hori.fc-event-start{border-radius:2px}.fc-event,.fc-agenda .fc-event-time,.fc-event a{padding:4px 6px;background-color:#1ab394;border-color:#1ab394}.fc-event-time,.fc-event-title{color:#717171;padding:0 1px}.ui-calendar .fc-event-time,.ui-calendar .fc-event-title{color:#fff}.chat-activity-list .chat-element{border-bottom:1px solid #e7eaec}.chat-element:first-child{margin-top:0}.chat-element{padding-bottom:15px}.chat-element,.chat-element .media{margin-top:15px}.chat-element,.media-body{overflow:hidden}.media-body{display:block;width:auto}.chat-element>.pull-left{margin-right:10px}.chat-element img.img-circle,.dropdown-messages-box img.img-circle{width:38px;height:38px}.chat-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.chat-element .actions{margin-top:10px}.chat-element .photos{margin:10px 0}.right.chat-element>.pull-right{margin-left:10px}.chat-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.chat{margin:0;padding:0;list-style:none}.chat li{margin-bottom:10px;padding-bottom:5px;border-bottom:1px dotted #b3a9a9}.chat li.left .chat-body{margin-left:60px}.chat li.right .chat-body{margin-right:60px}.chat li .chat-body p{margin:0;color:#777}.panel .slidedown .glyphicon,.chat .glyphicon{margin-right:5px}.chat-panel .panel-body{height:350px;overflow-y:scroll}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{background-color:#1ab394;border-color:#1ab394;color:#fff;z-index:2}.list-group-item-heading{margin-top:10px}.list-group-item-text{margin:0 0 10px;color:inherit;font-size:12px;line-height:inherit}.no-padding .list-group-item{border-left:none;border-right:0;border-bottom:0}.no-padding .list-group-item:first-child{border-left:none;border-right:0;border-bottom:0;border-top:0}.no-padding .list-group{margin-bottom:0}.list-group-item{background-color:inherit;border:1px solid #e7eaec;display:block;margin-bottom:-1px;padding:10px 15px;position:relative}.elements-list .list-group-item{border-left:none;border-right:0;padding:15px 25px}.elements-list .list-group-item:first-child{border-left:none;border-right:0;border-top:none!important}.elements-list .list-group{margin-bottom:0}.elements-list a{color:inherit}.elements-list .list-group-item.active,.elements-list .list-group-item:hover{background:#f3f3f4;color:inherit;border-color:#e7eaec;border-radius:0}.elements-list li.active{-webkit-transition:none;transition:none}.element-detail-box{padding:25px}.flot-chart{display:block;height:200px}.widget .flot-chart.dashboard-chart{display:block;height:120px;margin-top:40px}.flot-chart.dashboard-chart{display:block;height:180px;margin-top:40px}.flot-chart-content{width:100%;height:100%}.flot-chart-pie-content{width:200px;height:200px;margin:auto}.jqstooltip{position:absolute;display:block;left:0;top:0;visibility:hidden;background:#2b303a;background-color:rgba(43,48,58,0.8);color:white;text-align:left;white-space:nowrap;z-index:10000;padding:5px 5px 5px 5px;min-height:22px;border-radius:3px}.jqsfield{color:white;text-align:left}.h-200{min-height:200px}.legendLabel{padding-left:5px}.stat-list li:first-child{margin-top:0}.stat-list{list-style:none;padding:0;margin:0}.stat-percent{float:right}.stat-list li{margin-top:15px;position:relative}table.dataTable thead .sorting,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background:transparent}table.dataTable thead .sorting_asc:after{float:right;font-family:fontawesome}table.dataTable thead .sorting_desc:after{content:"\f0dd";float:right;font-family:fontawesome}table.dataTable thead .sorting:after{content:"\f0dc";float:right;font-family:fontawesome;color:rgba(50,50,50,0.5)}.dataTables_wrapper{padding-bottom:30px}.img-circle{border-radius:50%}.btn-circle{width:30px;height:30px;padding:6px 0;border-radius:15px;text-align:center;font-size:12px;line-height:1.428571429}.btn-circle.btn-lg{width:50px;height:50px;padding:10px 16px;border-radius:25px;font-size:18px;line-height:1.33}.btn-circle.btn-xl{width:70px;height:70px;padding:10px 16px;border-radius:35px;font-size:24px;line-height:1.33}.show-grid [class^="col-"]{padding-top:10px;padding-bottom:10px;border:1px solid #ddd;background-color:#eee!important}.show-grid{margin:15px 0}.css-animation-box h1{font-size:44px}.animation-efect-links a{padding:4px 6px;font-size:12px}#animation_box{background-color:#f9f8f8;border-radius:16px;width:80%;margin:0 auto;padding-top:80px}.animation-text-box{position:absolute;margin-top:40px;left:50%;margin-left:-100px;width:200px}.animation-text-info{position:absolute;margin-top:-60px;left:50%;margin-left:-100px;width:200px;font-size:10px}.animation-text-box h2{font-size:54px;font-weight:600;margin-bottom:5px}.animation-text-box p{font-size:12px;text-transform:uppercase}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#1ab394;position:fixed;z-index:2000;top:0;width:100%;height:2px}.pace-inactive{display:none}.widget{border-radius:5px;padding:15px 20px;margin-bottom:10px;margin-top:10px}.widget.style1 h2{font-size:30px}.widget h2,.widget h3{margin-top:5px;margin-bottom:0}.widget-text-box{padding:20px;border:1px solid #e7eaec;background:#fff}.widget-head-color-box{border-radius:5px 5px 0 0;margin-top:10px}.widget .flot-chart{height:100px}.vertical-align div{display:inline-block;vertical-align:middle}.vertical-align h2,.vertical-align h3{margin:0}.todo-list{list-style:none outside none;margin:0;padding:0;font-size:14px}.todo-list.small-list{font-size:12px}.todo-list.small-list>li{background:#f3f3f4;border-left:none;border-right:0;border-radius:4px;color:inherit;margin-bottom:2px;padding:6px 6px 6px 12px}.todo-list.small-list .btn-xs,.todo-list.small-list .btn-group-xs>.btn{border-radius:5px;font-size:10px;line-height:1.5;padding:1px 2px 1px 5px}.todo-list>li{background:#f3f3f4;border-left:6px solid #e7eaec;border-right:6px solid #e7eaec;border-radius:4px;color:inherit;margin-bottom:2px;padding:10px}.todo-list .handle{cursor:move;display:inline-block;font-size:16px;margin:0 5px}.todo-list>li .label{font-size:9px;margin-left:10px}.check-link{font-size:16px}.todo-completed{text-decoration:line-through}.geo-statistic h1{font-size:36px;margin-bottom:0}.glyphicon.fa{font-family:"FontAwesome"}.inline{display:inline-block!important}.input-s-sm{width:120px}.input-s{width:200px}.input-s-lg{width:250px}.i-checks{padding-left:0}.form-control,.single-line{background:#fff none;border:1px solid #e5e6e7;border-radius:4px;color:inherit;display:block;padding:3px 6px 4px;-webkit-transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;width:100%;height:31px;font-size:14px}.form-control.kv-fileinput-caption{height:34px!important}.form-control:focus,.single-line:focus{border-color:#3c8dbc!important}.has-success .form-control{border-color:#1ab394}.has-warning .form-control{border-color:#f8ac59}.has-error .form-control{border-color:#ed5565}.has-success .control-label{color:#1ab394}.has-warning .control-label{color:#f8ac59}.has-error .control-label{color:#ed5565}.input-group-addon{background-color:#fff;border:1px solid #e5e6e7;border-radius:4px;color:inherit;font-size:14px;font-weight:400;line-height:1;padding:6px 12px;text-align:center}.spinner-buttons.input-group-btn .btn-xs{line-height:1.13}.spinner-buttons.input-group-btn{width:20%}.noUi-connect{background:none repeat scroll 0 0 #1ab394;box-shadow:none}.slider_red .noUi-connect{background:none repeat scroll 0 0 #ed5565;box-shadow:none}.ui-sortable .ibox-title{cursor:move}.ui-sortable-placeholder{border:1px dashed #cecece!important;visibility:visible!important;background:#e7eaec}.ibox.ui-sortable-placeholder{margin:0 0 23px!important}.tabs-container .panel-body{background:#fff;border:1px solid #e7eaec;border-radius:2px;padding:20px;position:relative}.tabs-container .nav-tabs>li.active>a,.tabs-container .nav-tabs>li.active>a:hover,.tabs-container .nav-tabs>li.active>a:focus{border:1px solid #e7eaec;border-bottom-color:transparent;background-color:#fff}.tabs-container .nav-tabs>li{float:left;margin-bottom:-1px}.tabs-container .tab-pane .panel-body{border-top:0}.tabs-container .nav-tabs>li.active>a,.tabs-container .nav-tabs>li.active>a:hover,.tabs-container .nav-tabs>li.active>a:focus{border:1px solid #e7eaec;border-bottom-color:transparent}.tabs-container .nav-tabs{border-bottom:1px solid #e7eaec}.tabs-container .tab-pane .panel-body{border-top:0}.tabs-container .tabs-left .tab-pane .panel-body,.tabs-container .tabs-right .tab-pane .panel-body{border-top:1px solid #e7eaec}.tabs-container .nav-tabs>li a:hover{background:transparent;border-color:transparent}.tabs-container .tabs-below>.nav-tabs,.tabs-container .tabs-right>.nav-tabs,.tabs-container .tabs-left>.nav-tabs{border-bottom:0}.tabs-container .tabs-left .panel-body{position:static}.tabs-container .tabs-left>.nav-tabs,.tabs-container .tabs-right>.nav-tabs{width:20%}.tabs-container .tabs-left .panel-body{width:80%;margin-left:20%}.tabs-container .tabs-right .panel-body{width:80%;margin-right:20%}.tabs-container .tab-content>.tab-pane,.tabs-container .pill-content>.pill-pane{display:none}.tabs-container .tab-content>.active,.tabs-container .pill-content>.active{display:block}.tabs-container .tabs-below>.nav-tabs{border-top:1px solid #e7eaec}.tabs-container .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-container .tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px}.tabs-container .tabs-below>.nav-tabs>li>a:hover,.tabs-container .tabs-below>.nav-tabs>li>a:focus{border-top-color:#e7eaec;border-bottom-color:transparent}.tabs-container .tabs-left>.nav-tabs>li,.tabs-container .tabs-right>.nav-tabs>li{float:none}.tabs-container .tabs-left>.nav-tabs>li>a,.tabs-container .tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-container .tabs-left>.nav-tabs{float:left;margin-right:19px}.tabs-container .tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px}.tabs-container .tabs-left>.nav-tabs .active>a,.tabs-container .tabs-left>.nav-tabs .active>a:hover,.tabs-container .tabs-left>.nav-tabs .active>a:focus{border-color:#e7eaec transparent #e7eaec #e7eaec;border-right-color:#fff}.tabs-container .tabs-right>.nav-tabs{float:right;margin-left:19px}.tabs-container .tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0}.tabs-container .tabs-right>.nav-tabs .active>a,.tabs-container .tabs-right>.nav-tabs .active>a:hover,.tabs-container .tabs-right>.nav-tabs .active>a:focus{border-color:#e7eaec #e7eaec #e7eaec transparent;border-left-color:#fff;z-index:1}.onoffswitch{position:relative;width:54px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #1ab394;border-radius:3px}.onoffswitch-inner{display:block;width:200%;margin-left:-100%;-webkit-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{display:block;float:left;width:50%;padding:0;font-size:10px;color:white;font-family:Trebuchet,Arial,sans-serif;font-weight:bold;box-sizing:border-box}.onoffswitch-inner:before{content:"ON";padding-left:7px;background-color:#1ab394;color:#fff}.onoffswitch-inner:after{content:"OFF";padding-right:7px;background-color:#fff;color:#919191;text-align:right}.onoffswitch-switch{display:block;width:18px;margin:0;background:#fff;border:2px solid #1ab394;border-radius:3px;position:absolute;top:0;bottom:0;right:36px;-webkit-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.dd{position:relative;display:block;margin:0;padding:0;list-style:none;font-size:13px;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-item,.dd-empty,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;margin:5px 0;padding:5px 10px;color:#333;text-decoration:none;border:1px solid #e7eaec;background:#f5f5f5;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box}.dd-handle span{font-weight:bold}.dd-handle:hover{background:#f0f0f0;cursor:pointer;font-weight:bold}.dd-item>button{display:block;position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:5px 0;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:transparent;font-size:12px;line-height:1;text-align:center;font-weight:bold}.dd-item>button:before{content:'+';display:block;position:absolute;width:100%;text-align:center;text-indent:0}.dd-item>button[data-action="collapse"]:before{content:'-'}#nestable2 .dd-item>button{font-family:FontAwesome;height:34px;width:33px;color:#c1c1c1}#nestable2 .dd-item>button:before{content:"\f067"}#nestable2 .dd-item>button[data-action="collapse"]:before{content:"\f068"}.dd-placeholder,.dd-empty{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#e5e5e5;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;z-index:9999;pointer-events:none}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{box-shadow:2px 4px 6px 0 rgba(0,0,0,0.1)}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #ddd;border-bottom:2px solid #ddd}#nestable-menu{padding:0;margin:10px 0 20px 0}#nestable-output,#nestable2-output{width:100%;font-size:.75em;line-height:1.333333em;font-family:lucida grande,lucida sans unicode,helvetica,arial,sans-serif;padding:5px;box-sizing:border-box;-moz-box-sizing:border-box}#nestable2 .dd-handle{color:inherit;border:1px dashed #e7eaec;background:#f3f3f4;padding:10px}#nestable2 span.label{margin-right:10px}#nestable-output,#nestable2-output{font-size:12px;padding:25px;box-sizing:border-box;-moz-box-sizing:border-box}.CodeMirror{border:1px solid #eee;height:auto}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.google-map{height:300px}.gridStyle{border:1px solid #d4d4d4;width:100%;height:400px}.gridStyle2{border:1px solid #d4d4d4;width:500px;height:300px}.ngH eaderCell{border-right:0;border-bottom:1px solid #e7eaec}.ngCell{border-right:0}.ngTopPanel{background:#f5f5f6}.ngRow.even{background:#f9f9f9}.ngRow.selected{background:#ebf2f1}.ngRow{border-bottom:1px solid #e7eaec}.ngCell{background-color:transparent}.ngHeaderCell{border-right:0}#toast-container>.toast{background-image:none!important}#toast-container>.toast:before{position:fixed;font-family:FontAwesome;font-size:24px;line-height:24px;float:left;color:#FFF;padding-right:.5em;margin:auto .5em auto -1.5em}#toast-container>div{box-shadow:0 0 3px #999;opacity:.9;-ms-filter:alpha(opacity = 90);filter:alpha(opacity = 90)}#toast-container>:hover{box-shadow:0 0 4px #999;opacity:1;-ms-filter:alpha(opacity = 100);filter:alpha(opacity = 100);cursor:pointer}.toast{background-color:#1ab394}.toast-success{background-color:#1ab394}.toast-error{background-color:#ed5565}.toast-info{background-color:#23c6c8}.toast-warning{background-color:#f8ac59}.toast-top-full-width{margin-top:20px}.toast-bottom-full-width{margin-bottom:20px}.img-container,.img-preview{overflow:hidden;text-align:center;width:100%}.img-preview-sm{height:130px;width:200px}.forum-post-container .media{margin:10px 10px 10px 10px;padding:20px 10px 20px 10px;border-bottom:1px solid #f1f1f1}.forum-avatar{float:left;margin-right:20px;text-align:center;width:110px}.forum-avatar .img-circle{height:48px;width:48px}.author-info{color:#676a6c;font-size:11px;margin-top:5px;text-align:center}.forum-post-info{padding:9px 12px 6px 12px;background:#f9f9f9;border:1px solid #f1f1f1}.media-body>.media{background:#f9f9f9;border-radius:3px;border:1px solid #f1f1f1}.forum-post-container .media-body .photos{margin:10px 0}.forum-photo{max-width:140px;border-radius:3px}.media-body>.media .forum-avatar{width:70px;margin-right:10px}.media-body>.media .forum-avatar .img-circle{height:38px;width:38px}.mid-icon{font-size:66px}.forum-item{margin:10px 0;padding:10px 0 20px;border-bottom:1px solid #f1f1f1}.views-number{font-size:24px;line-height:18px;font-weight:400}.forum-container,.forum-post-container{padding:30px!important}.forum-item small{color:#999}.forum-item .forum-sub-title{color:#999;margin-left:50px}.forum-title{margin:15px 0 15px 0}.forum-info{text-align:center}.forum-desc{color:#999}.forum-icon{float:left;width:30px;margin-right:20px;text-align:center}a.forum-item-title{color:inherit;display:block;font-size:18px;font-weight:600}a.forum-item-title:hover{color:inherit}.forum-icon .fa{font-size:30px;margin-top:8px;color:#9b9b9b}.forum-item.active .fa{color:#1ab394}.forum-item.active a.forum-item-title{color:#1ab394}@media(max-width :992px){.forum-info{margin:15px 0 10px 0;display:none}.forum-desc{float:none!important}}.vertical-container{width:90%;max-width:1170px;margin:0 auto}.vertical-container::after{content:'';display:table;clear:both}#vertical-timeline{position:relative;padding:0;margin-top:2em;margin-bottom:2em}#vertical-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#f1f1f1}.vertical-timeline-content .btn{float:right}#vertical-timeline.light-timeline:before{background:#e7eaec}.dark-timeline .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}.dark-timeline.center-orientation .vertical-timeline-content:before{border-color:transparent transparent transparent #f5f5f5}.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before,.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}.dark-timeline .vertical-timeline-content,.dark-timeline.center-orientation .vertical-timeline-content{background:#f5f5f5}@media only screen and (min-width:1170px){#vertical-timeline.center-orientation{margin-top:3em;margin-bottom:3em}#vertical-timeline.center-orientation:before{left:50%;margin-left:-2px}}@media only screen and (max-width:1170px){.center-orientation.dark-timeline .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}}.vertical-timeline-block{position:relative;margin:2em 0}.vertical-timeline-block:after{content:"";display:table;clear:both}.vertical-timeline-block:first-child{margin-top:0}.vertical-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-block{margin:4em 0}.center-orientation .vertical-timeline-block:first-child{margin-top:0}.center-orientation .vertical-timeline-block:last-child{margin-bottom:0}}.vertical-timeline-icon{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;font-size:16px;border:3px solid #f1f1f1;text-align:center}.vertical-timeline-icon i{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-9px}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-icon{width:50px;height:50px;left:50%;margin-left:-25px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden;font-size:19px}.center-orientation .vertical-timeline-icon i{margin-left:-12px;margin-top:-10px}.center-orientation .cssanimations .vertical-timeline-icon.is-hidden{visibility:hidden}}.vertical-timeline-content{position:relative;margin-left:60px;background:white;border-radius:.25em;padding:1em}.vertical-timeline-content:after{content:"";display:table;clear:both}.vertical-timeline-content h2{font-weight:400;margin-top:4px}.vertical-timeline-content p{margin:1em 0;line-height:1.6}.vertical-timeline-content .vertical-date{float:left;font-weight:500}.vertical-date small{color:#1ab394;font-weight:400}.vertical-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid white}@media only screen and (min-width:768px){.vertical-timeline-content h2{font-size:18px}.vertical-timeline-content p{font-size:13px}}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-content{margin-left:0;padding:1.6em;width:45%}.center-orientation .vertical-timeline-content::before{top:24px;left:100%;border-color:transparent;border-left-color:white}.center-orientation .vertical-timeline-content .btn{float:left}.center-orientation .vertical-timeline-content .vertical-date{position:absolute;width:100%;left:122%;top:2px;font-size:14px}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content{float:right}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent;border-right-color:white}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn{float:right}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date{left:auto;right:122%;text-align:right}.center-orientation .cssanimations .vertical-timeline-content.is-hidden{visibility:hidden}}.sidebard-panel{width:220px;background:#ebebed;padding:10px 20px;position:absolute;right:0}.sidebard-panel .feed-element img.img-circle{width:32px;height:32px}.sidebard-panel .feed-element,.media-body,.sidebard-panel p{font-size:12px}.sidebard-panel .feed-element{margin-top:20px;padding-bottom:0}.sidebard-panel .list-group{margin-bottom:10px}.sidebard-panel .list-group .list-group-item{padding:5px 0;font-size:12px;border:0}.sidebar-content .wrapper,.wrapper.sidebar-content{padding-right:240px!important}#right-sidebar{background-color:#fff;border-left:1px solid #e7eaec;border-top:1px solid #e7eaec;overflow:hidden;position:fixed;top:60px;width:260px!important;z-index:1009;bottom:0;right:-260px}#right-sidebar.sidebar-open{right:0}#right-sidebar.sidebar-open.sidebar-top{top:0;border-top:0}.sidebar-container ul.nav-tabs{border:0}.sidebar-container ul.nav-tabs.navs-4 li{width:25%}.sidebar-container ul.nav-tabs.navs-3 li{width:33.3333%}.sidebar-container ul.nav-tabs.navs-2 li{width:50%}.sidebar-container ul.nav-tabs li{border:0}.sidebar-container ul.nav-tabs li a{border:0;padding:12px 10px;margin:0;border-radius:0;background:#2f4050;color:#fff;text-align:center;border-right:1px solid #334556}.sidebar-container ul.nav-tabs li.active a{border:0;background:#f9f9f9;color:#676a6c;font-weight:bold}.sidebar-container .nav-tabs>li.active>a:hover,.sidebar-container .nav-tabs>li.active>a:focus{border:0}.sidebar-container ul.sidebar-list{margin:0;padding:0}.sidebar-container ul.sidebar-list li{border-bottom:1px solid #e7eaec;padding:15px 20px;list-style:none;font-size:12px}.sidebar-container .sidebar-message:nth-child(2n+2){background:#f9f9f9}.sidebar-container ul.sidebar-list li a{text-decoration:none;color:inherit}.sidebar-container .sidebar-content{padding:15px 20px;font-size:12px}.sidebar-container .sidebar-title{background:#f9f9f9;padding:20px;border-bottom:1px solid #e7eaec}.sidebar-container .sidebar-title h3{margin-bottom:3px;padding-left:2px}.sidebar-container .tab-content h4{margin-bottom:5px}.sidebar-container .sidebar-message>a>.pull-left{margin-right:10px}.sidebar-container .sidebar-message>a{text-decoration:none;color:inherit}.sidebar-container .sidebar-message{padding:15px 20px}.sidebar-container .sidebar-message .message-avatar{height:38px;width:38px;border-radius:50%}.sidebar-container .setings-item{padding:15px 20px;border-bottom:1px solid #e7eaec}body{font-family:"open sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;color:#676a6c;overflow-x:hidden}html,body{height:100%}body.full-height-layout #wrapper,body.full-height-layout #page-wrapper{height:100%}#page-wrapper{min-height:auto}body.boxed-layout #wrapper{background-color:#2f4050;max-width:1200px;margin:0 auto}.top-navigation.boxed-layout #wrapper,.boxed-layout #wrapper.top-navigation{max-width:1300px!important}.block{display:block}a{cursor:pointer}a:hover,a:focus{text-decoration:none}.border-bottom{border-bottom:1px solid #e7eaec!important}.font-bold{font-weight:600}.font-noraml{font-weight:400}.text-uppercase{text-transform:uppercase}.b-r{border-right:1px solid #e7eaec}.hr-line-dashed{border-top:1px dashed #e7eaec;color:#fff;background-color:#fff;height:1px;margin:20px 0}.hr-line-solid{border-bottom:1px solid #e7eaec;background-color:rgba(0,0,0,0);border-style:solid!important;margin-top:15px;margin-bottom:15px}video{width:100%!important;height:auto!important}.gallery>.row>div{margin-bottom:15px}.fancybox img{margin-bottom:5px;width:24%}.note-editor{height:auto!important;min-height:100px;border:solid 1px #e5e6e7}.modal-content{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,0);border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.3);outline:0 none}.modal-dialog{z-index:1200}.modal-body{padding:20px 30px 30px 30px}.inmodal .modal-body{background:#f8fafb}.inmodal .modal-header{padding:30px 15px;text-align:center}.animated.modal.fade .modal-dialog{-webkit-transform:none;-ms-transform:none;transform:none}.inmodal .modal-title{font-size:26px}.inmodal .modal-icon{font-size:84px;color:#e2e3e3}.modal-footer{margin-top:0}#wrapper{width:100%;overflow-x:hidden;background-color:#2f4050}.wrapper{padding:0 20px}.wrapper-content{padding:20px}#page-wrapper{padding:0 15px;position:inherit;margin:0 0 0 200px}.title-action{text-align:right;padding-top:30px}.ibox-content h1,.ibox-content h2,.ibox-content h3,.ibox-content h4,.ibox-content h5,.ibox-title h1,.ibox-title h2,.ibox-title h3,.ibox-title h4,.ibox-title h5{margin-top:5px}ul.unstyled,ol.unstyled{list-style:none outside none;margin-left:0}.big-icon{font-size:160px;color:#e5e6e7}.footer{background:none repeat scroll 0 0 white;border-top:1px solid #e7eaec;overflow:hidden;padding:10px 20px;margin:0 -15px;height:36px}.footer.fixed_full{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:white;border-top:1px solid #e7eaec}.footer.fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:white;border-top:1px solid #e7eaec;margin-left:220px}body.mini-navbar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0 0 0 70px}body.mini-navbar.canvas-menu .footer.fixed,body.canvas-menu .footer.fixed{margin:0!important}body.fixed-sidebar.body-small.mini-navbar .footer.fixed{margin:0 0 0 220px}body.body-small .footer.fixed{margin-left:0}.page-heading{border-top:0;padding:0 20px 20px}.panel-heading h1,.panel-heading h2{margin-bottom:5px}.content-tabs{position:relative;height:39px;background:#fafafa;line-height:39px}.content-tabs .roll-nav,.page-tabs-list{position:absolute;width:30px;height:38px;text-align:center;color:#999;z-index:2;top:0}.content-tabs .roll-left{left:0;border-right:solid 1px #eee}.content-tabs .roll-right{right:0;border-left:solid 1px #eee}.content-tabs button{background:#fff;border:0;height:40px;width:40px;outline:0}.content-tabs button:hover{background:#fafafa}nav.page-tabs{margin-left:30px;width:100000px;height:39px;overflow:hidden}nav.page-tabs .page-tabs-content{float:left}.page-tabs a{display:block;float:left;border-right:solid 1px #eee;padding:0 15px}.page-tabs a i:hover{color:#c00}.page-tabs a:hover,.content-tabs .roll-nav:hover{color:#777;background:#f2f2f2;cursor:pointer}.roll-right.tabRight{right:60px}.roll-right.btn-group{right:60px;width:80px;padding:0}.roll-right.btn-group button{width:80px}.roll-right.tabReload{background:#fff;height:38px;width:60px;outline:0}.dropdown-menu-right{left:auto}#content-main{height:calc(100% - 127px);overflow:hidden}.tagsview-hide#content-main{height:calc(100% - 88px);overflow:hidden}.footer-hide#content-main{height:calc(100% - 91px);overflow:hidden}.tagsview-footer-hide#content-main{height:calc(100% - 52px);overflow:hidden}.fixed-nav #content-main{height:calc(100% - 80px);overflow:hidden}.table-bordered{border:1px solid #ebebeb}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{background-color:#f5f5f6;border-bottom-width:1px}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #e7e7e7}.table>thead>tr>th{border-bottom:1px solid #ddd;vertical-align:bottom}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #e7eaec;line-height:1.42857;padding:8px;vertical-align:middle}.panel.blank-panel{background:0;margin:0}.blank-panel .panel-heading{padding-bottom:0}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:0;border-color:#ddd #ddd rgba(0,0,0,0);border-bottom:#f3f3f4;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid;border-width:1px;color:#555;cursor:default}.nav.nav-tabs li{background:0;border:0}.nav-tabs>li>a{color:#a7b1c2;font-weight:600;padding:10px 20px 10px 25px}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{background-color:#e6e6e6;color:#676a6c}.ui-tab .tab-content{padding:20px 0}.no-padding{padding:0!important}.no-borders{border:none!important}.no-margins{margin:0!important}.no-top-border{border-top:0!important}.ibox-content.text-box{padding-bottom:0;padding-top:15px}.border-left-right{border-left:1px solid #e7eaec;border-right:1px solid #e7eaec;border-top:0;border-bottom:0}.border-left{border-left:1px solid #e7eaec;border-right:0;border-top:0;border-bottom:0}.border-right{border-left:none;border-right:1px solid #e7eaec;border-top:0;border-bottom:0}.full-width{width:100%!important}.link-block{font-size:12px;padding:10px}.nav.navbar-top-links .link-block a{font-size:12px}.link-block a{font-size:10px;color:inherit}body.mini-navbar .branding{display:none}img.circle-border{border:6px solid #fff;border-radius:50%}.branding{float:left;color:#fff;font-size:18px;font-weight:600;padding:17px 20px;text-align:center;background-color:#1ab394}.login-panel{margin-top:25%}.page-header{padding:20px 0 9px;margin:0 0 20px;border-bottom:1px solid #eee}.fontawesome-icon-list{margin-top:22px}.fontawesome-icon-list .fa-hover a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;color:#222;line-height:32px;height:32px;padding-left:10px;border-radius:4px}.fontawesome-icon-list .fa-hover a .fa{width:32px;font-size:14px;display:inline-block;text-align:right;margin-right:10px}.fontawesome-icon-list .fa-hover a:hover{background-color:#1d9d74;color:#fff;text-decoration:none}.fontawesome-icon-list .fa-hover a:hover .fa{font-size:30px;vertical-align:-6px}.fontawesome-icon-list .fa-hover a:hover .text-muted{color:#bbe2d5}.feature-list .col-md-4{margin-bottom:22px}.feature-list h4 .fa:before{vertical-align:-10%;font-size:28px;display:inline-block;width:1.07142857em;text-align:center;margin-right:5px}.ui-draggable .ibox-title{cursor:move}.breadcrumb{background-color:#fff;padding:0;margin-bottom:0}.breadcrumb>li a{color:inherit}.breadcrumb>.active{color:inherit}code{background-color:#f9f2f4;border-radius:4px;color:#ca4440;font-size:90%;padding:2px 4px;white-space:nowrap}.ibox{clear:both;margin-bottom:25px;margin-top:0;padding:0}.ibox.collapsed .ibox-content{display:none}.ibox.collapsed .fa.fa-chevron-up:before{content:"\f078"}.ibox.collapsed .fa.fa-chevron-down:before{content:"\f077"}.ibox:after,.ibox:before{display:table}.ibox-title{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background-color:#fff;border-color:#e7eaec;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid solid none;border-width:0;color:inherit;margin-bottom:0;padding:14px 15px 7px;min-height:40px}.ibox-content{background-color:#fff;color:inherit;padding:15px 20px 20px 20px;border-color:#e7eaec;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid solid none;border-width:1px 0}table.table-mail tr td{padding:12px}.table-mail .check-mail{padding-left:20px}.table-mail .mail-date{padding-right:20px}.star-mail,.check-mail{width:40px}.unread td a,.unread td{font-weight:600;color:inherit}.read td a,.read td{font-weight:normal;color:inherit}.unread td{background-color:#f9f8f8}.ibox-content{clear:both}.ibox-heading{background-color:#f3f6fb;border-bottom:0}.ibox-heading h3{font-weight:200;font-size:24px}.ibox-title h5{display:inline-block;font-size:14px;margin:0 0 7px;padding:0;text-overflow:ellipsis;float:left}.ibox-title .label{float:left;margin-left:4px}.ibox-tools{display:inline-block;float:right;margin-top:0;position:relative;padding:0}.ibox-tools a{cursor:pointer;margin-left:5px;color:#676a6c}.ibox-tools a.btn-primary{color:#fff}.ibox-tools .dropdown-menu>li>a{padding:4px 10px;font-size:12px}.ibox .open>.dropdown-menu{left:auto;right:0}.gray-bg{background-color:#f3f3f4}.white-bg{background-color:#fff}.navy-bg{background-color:#1ab394;color:#fff}.blue-bg{background-color:#1c84c6;color:#fff}.lazur-bg{background-color:#23c6c8;color:#fff}.yellow-bg{background-color:#f8ac59;color:#fff}.red-bg{background-color:#ed5565;color:#fff}.black-bg{background-color:#262626}.panel-primary{border-color:#1ab394}.panel-primary>.panel-heading{background-color:#1ab394;border-color:#1ab394}.panel-success{border-color:#1c84c6}.panel-success>.panel-heading{background-color:#1c84c6;border-color:#1c84c6;color:#fff}.panel-info{border-color:#23c6c8}.panel-info>.panel-heading{background-color:#23c6c8;border-color:#23c6c8;color:#fff}.panel-warning{border-color:#f8ac59}.panel-warning>.panel-heading{background-color:#f8ac59;border-color:#f8ac59;color:#fff}.panel-danger{border-color:#ed5565}.panel-danger>.panel-heading{background-color:#ed5565;border-color:#ed5565;color:#fff}.progress-bar{background-color:#1ab394}.progress-small,.progress-small .progress-bar{height:10px}.progress-small,.progress-mini{margin-top:5px}.progress-mini,.progress-mini .progress-bar{height:5px;margin-bottom:0}.progress-bar-navy-light{background-color:#3dc7ab}.progress-bar-success{background-color:#1c84c6}.progress-bar-info{background-color:#23c6c8}.progress-bar-warning{background-color:#f8ac59}.progress-bar-danger{background-color:#ed5565}.panel-title{font-size:inherit}.jumbotron{border-radius:6px;padding:40px}.jumbotron h1{margin-top:0}.text-navy{color:#1ab394}.text-primary{color:inherit}.text-success{color:#1c84c6}.text-info{color:#23c6c8}.text-warning{color:#f8ac59}.text-danger{color:#ed5565}.text-muted{color:#888}.simple_tag{background-color:#f3f3f4;border:1px solid #e7eaec;border-radius:2px;color:inherit;font-size:10px;margin-right:5px;margin-top:5px;padding:5px 12px;display:inline-block}.img-shadow{box-shadow:0 0 3px 0 #919191}.dashboards\.dashboard_2 nav.navbar,.dashboards\.dashboard_3 nav.navbar,.mailbox\.inbox nav.navbar,.mailbox\.email_view nav.navbar,.mailbox\.email_compose nav.navbar,.dashboards\.dashboard_4_1 nav.navbar{background:#fff}.Dashboard_2 .navbar.navbar-static-top,.Dashboard_3 .navbar.navbar-static-top,.Dashboard_4_1 .navbar.navbar-static-top,.ComposeEmail .navbar.navbar-static-top,.EmailView .navbar.navbar-static-top,.Inbox .navbar.navbar-static-top{background:#fff}a.close-canvas-menu{position:absolute;top:10px;right:15px;z-index:1011;color:#a7b1c2}a.close-canvas-menu:hover{color:#fff}.full-height{height:100%}.fh-breadcrumb{height:calc(100% - 196px);margin:0 -15px;position:relative}.fh-no-breadcrumb{height:calc(100% - 99px);margin:0 -15px;position:relative}.fh-column{background:#fff;height:100%;width:240px;float:left}.modal-backdrop{z-index:2040!important}.modal{z-index:2050!important}.spiner-example{height:200px;padding-top:70px}.p-xxs{padding:5px}.p-xs{padding:10px}.p-sm{padding:15px}.p-m{padding:20px}.p-md{padding:25px}.p-lg{padding:30px}.p-xl{padding:40px}.m-xxs{margin:2px 4px}.m-xs{margin:5px}.m-sm{margin:10px}.m{margin:15px}.m-md{margin:20px}.m-lg{margin:30px}.m-xl{margin:50px}.m-n{margin:0!important}.m-l-none{margin-left:0}.m-l-xs{margin-left:5px}.m-l-sm{margin-left:10px}.m-l{margin-left:15px}.m-l-md{margin-left:20px}.m-l-lg{margin-left:30px}.m-l-xl{margin-left:40px}.m-l-n-xxs{margin-left:-1px}.m-l-n-xs{margin-left:-5px}.m-l-n-sm{margin-left:-10px}.m-l-n{margin-left:-15px}.m-l-n-md{margin-left:-20px}.m-l-n-lg{margin-left:-30px}.m-l-n-xl{margin-left:-40px}.m-t-none{margin-top:0}.m-t-xxs{margin-top:1px}.m-t-xs{margin-top:5px}.m-t-sm{margin-top:10px}.m-t{margin-top:15px}.m-t-md{margin-top:20px}.m-t-lg{margin-top:30px}.m-t-xl{margin-top:40px}.m-t-n-xxs{margin-top:-1px}.m-t-n-xs{margin-top:-5px}.m-t-n-sm{margin-top:-10px}.m-t-n{margin-top:-15px}.m-t-n-md{margin-top:-20px}.m-t-n-lg{margin-top:-30px}.m-t-n-xl{margin-top:-40px}.m-r-none{margin-right:0}.m-r-xxs{margin-right:1px}.m-r-xs{margin-right:5px}.m-r-sm{margin-right:10px}.m-r{margin-right:15px}.m-r-md{margin-right:20px}.m-r-lg{margin-right:30px}.m-r-xl{margin-right:40px}.m-r-n-xxs{margin-right:-1px}.m-r-n-xs{margin-right:-5px}.m-r-n-sm{margin-right:-10px}.m-r-n{margin-right:-15px}.m-r-n-md{margin-right:-20px}.m-r-n-lg{margin-right:-30px}.m-r-n-xl{margin-right:-40px}.m-b-none{margin-bottom:0}.m-b-xxs{margin-bottom:1px}.m-b-xs{margin-bottom:5px}.m-b-sm{margin-bottom:10px}.m-b{margin-bottom:15px}.m-b-md{margin-bottom:20px}.m-b-lg{margin-bottom:30px}.m-b-xl{margin-bottom:40px}.m-b-n-xxs{margin-bottom:-1px}.m-b-n-xs{margin-bottom:-5px}.m-b-n-sm{margin-bottom:-10px}.m-b-n{margin-bottom:-15px}.m-b-n-md{margin-bottom:-20px}.m-b-n-lg{margin-bottom:-30px}.m-b-n-xl{margin-bottom:-40px}.space-15{margin:15px 0}.space-20{margin:20px 0}.space-25{margin:25px 0}.space-30{margin:30px 0}body.modal-open{padding-right:inherit!important}.search-form{margin-top:10px}.search-result h3{margin-bottom:0;color:#1e0fbe}.search-result .search-link{color:#006621}.search-result p{font-size:12px;margin-top:5px}.contact-box{background-color:#fff;border:1px solid #e7eaec;padding:20px;margin-bottom:20px}.contact-box a{color:inherit}.invoice-table tbody>tr>td:last-child,.invoice-table tbody>tr>td:nth-child(4),.invoice-table tbody>tr>td:nth-child(3),.invoice-table tbody>tr>td:nth-child(2){text-align:right}.invoice-table thead>tr>th:last-child,.invoice-table thead>tr>th:nth-child(4),.invoice-table thead>tr>th:nth-child(3),.invoice-table thead>tr>th:nth-child(2){text-align:right}.invoice-total>tbody>tr>td:first-child{text-align:right}.invoice-total>tbody>tr>td{border:0 none}.invoice-total>tbody>tr>td:last-child{border-bottom:1px solid #ddd;text-align:right;width:15%}.middle-box{max-width:400px;z-index:100;margin:0 auto;padding-top:40px}.lockscreen.middle-box{width:200px;padding-top:110px}.loginscreen.middle-box{width:300px}.loginColumns{max-width:800px;margin:0 auto;padding:100px 20px 20px 20px}.passwordBox{max-width:460px;margin:0 auto;padding:100px 20px 20px 20px}.logo-name{color:#e6e6e6;font-size:180px;font-weight:800;letter-spacing:-10px;margin-bottom:0}.middle-box h1{font-size:170px}.wrapper .middle-box{margin-top:140px}.lock-word{z-index:10;position:absolute;top:110px;left:50%;margin-left:-470px}.lock-word span{font-size:100px;font-weight:600;color:#e9e9e9;display:inline-block}.lock-word .first-word{margin-right:160px}.dashboard-header{border-top:0;padding:20px 20px 20px 20px}.dashboard-header h2{margin-top:10px;font-size:26px}.fist-item{border-top:none!important}.statistic-box{margin-top:40px}.dashboard-header .list-group-item span.label{margin-right:10px}.list-group.clear-list .list-group-item{border-top:1px solid #e7eaec;border-bottom:0;border-right:0;border-left:0;padding:10px 0}ul.clear-list:first-child{border-top:none!important}.timeline-item .date i{position:absolute;top:0;right:0;padding:5px;width:30px;text-align:center;border-top:1px solid #e7eaec;border-bottom:1px solid #e7eaec;border-left:1px solid #e7eaec;background:#f8f8f8}.timeline-item .date{text-align:right;width:110px;position:relative;padding-top:30px}.timeline-item .content{border-left:1px solid #e7eaec;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.timeline-item .content:hover{background:#f6f6f6}ul.notes li,ul.tag-list li{list-style:none}ul.notes li h4{margin-top:20px;font-size:16px}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:140px;width:140px;padding:1em;position:relative}ul.notes li div small{position:absolute;top:5px;right:5px;font-size:10px}ul.notes li div a{position:absolute;right:10px;bottom:10px;color:inherit}ul.notes li{margin:10px 40px 50px 0;float:left}ul.notes li div p{font-size:12px}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:140px;width:140px;padding:1em;box-shadow:5px 5px 2px rgba(33,33,33,0.7)}ul.notes li div{-webkit-transform:rotate(-6deg);-o-transform:rotate(-6deg);-moz-transform:rotate(-6deg)}ul.notes li:nth-child(even) div{-o-transform:rotate(4deg);-webkit-transform:rotate(4deg);-moz-transform:rotate(4deg);position:relative;top:5px}ul.notes li:nth-child(3n) div{-o-transform:rotate(-3deg);-webkit-transform:rotate(-3deg);-moz-transform:rotate(-3deg);position:relative;top:-5px}ul.notes li:nth-child(5n) div{-o-transform:rotate(5deg);-webkit-transform:rotate(5deg);-moz-transform:rotate(5deg);position:relative;top:-10px}ul.notes li div:hover,ul.notes li div:focus{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);position:relative;z-index:5}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:210px;width:210px;padding:1em;box-shadow:5px 5px 7px rgba(33,33,33,0.7);-webkit-transition:-webkit-transform .15s linear}.file-box{float:left;width:220px}.file-manager h5{text-transform:uppercase}.file-manager{list-style:none outside none;margin:0;padding:0}.folder-list li a{color:#666;display:block;padding:5px 0}.folder-list li{border-bottom:1px solid #e7eaec;display:block}.folder-list li i{margin-right:8px;color:#3d4d5d}.category-list li a{color:#666;display:block;padding:5px 0}.category-list li{display:block}.category-list li i{margin-right:8px;color:#3d4d5d}.category-list li a .text-navy{color:#1ab394}.category-list li a .text-primary{color:#1c84c6}.category-list li a .text-info{color:#23c6c8}.category-list li a .text-danger{color:#ef5352}.category-list li a .text-warning{color:#f8ac59}.file-manager h5.tag-title{margin-top:20px}.tag-list li{float:left}.tag-list li a{font-size:10px;background-color:#f3f3f4;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.file{border:1px solid #e7eaec;padding:0;background-color:#fff;position:relative;margin-bottom:20px;margin-right:20px}.file-manager .hr-line-dashed{margin:15px 0}.file .icon,.file .image{height:100px;overflow:hidden}.file .icon{padding:15px 10px;text-align:center}.file-control{color:inherit;font-size:14px;margin-right:10px}.file-control.active{text-decoration:underline}.file .icon i{font-size:70px;color:#dadada}.file .file-name{padding:10px;background-color:#f8f8f8;border-top:1px solid #e7eaec}.file-name small{color:#676a6c}.corner{position:absolute;display:inline-block;width:0;height:0;line-height:0;border:.6em solid transparent;border-right:.6em solid #f1f1f1;border-bottom:.6em solid #f1f1f1;right:0;bottom:0}a.compose-mail{padding:8px 10px}.mail-search{max-width:300px}.profile-content{border-top:none!important}.feed-activity-list .feed-element{border-bottom:1px solid #e7eaec}.feed-element:first-child{margin-top:0}.feed-element{padding-bottom:15px}.feed-element,.feed-element .media{margin-top:15px}.feed-element,.media-body{overflow:hidden}.feed-element>.pull-left{margin-right:10px}.feed-element img.img-circle,.dropdown-messages-box img.img-circle{width:38px;height:38px}.feed-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.feed-element .actions{margin-top:10px}.feed-element .photos{margin:10px 0}.feed-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.mail-box{background-color:#fff;border:1px solid #e7eaec;border-top:0;padding:0;margin-bottom:20px}.mail-box-header{background-color:#fff;border:1px solid #e7eaec;border-bottom:0;padding:30px 20px 20px 20px}.mail-box-header h2{margin-top:0}.mailbox-content .tag-list li a{background:#fff}.mail-body{border-top:1px solid #e7eaec;padding:20px}.mail-text{border-top:1px solid #e7eaec}.mail-text .note-toolbar{padding:10px 15px}.mail-body .form-group{margin-bottom:5px}.mail-text .note-editor .note-toolbar{background-color:#f9f8f8}.mail-attachment{border-top:1px solid #e7eaec;padding:20px;font-size:12px}.mailbox-content{background:0;border:0;padding:10px}.mail-ontact{width:23%}.project-people,.project-actions{text-align:right;vertical-align:middle}dd.project-people{text-align:left;margin-top:5px}.project-people img{width:32px;height:32px}.project-title a{font-size:14px;color:#676a6c;font-weight:600}.project-list table tr td{border-top:0;border-bottom:1px solid #e7eaec;padding:15px 10px;vertical-align:middle}.project-manager .tag-list li a{font-size:10px;background-color:white;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.project-files li a{font-size:11px;color:#676a6c;margin-left:10px;line-height:22px}.faq-item{padding:20px;margin-bottom:2px;background:#fff}.faq-question{font-size:18px;font-weight:600;color:#1ab394;display:block}.faq-question:hover{color:#179d82}.faq-answer{margin-top:10px;background:#f3f3f4;border:1px solid #e7eaec;border-radius:3px;padding:15px}.faq-item .tag-item{background:#f3f3f4;padding:2px 6px;font-size:10px;text-transform:uppercase}.message-input{height:90px!important}.chat-avatar{width:36px;height:36px;float:left;margin-right:10px}.chat-user-name{padding:10px}.chat-user{padding:8px 10px;border-bottom:1px solid #e7eaec}.chat-user a{color:inherit}.chat-view{z-index:20012}.chat-users,.chat-statistic{margin-left:-30px}@media(max-width:992px){.chat-users,.chat-statistic{margin-left:0}}.chat-view .ibox-content{padding:0}.chat-message{padding:10px 20px}.message-avatar{height:48px;width:48px;border:1px solid #e7eaec;border-radius:4px;margin-top:1px}.chat-discussion .chat-message.left .message-avatar{float:left;margin-right:10px}.chat-discussion .chat-message.right .message-avatar{float:right;margin-left:10px}.message{background-color:#fff;border:1px solid #e7eaec;text-align:left;display:block;padding:10px 20px;position:relative;border-radius:4px}.chat-discussion .chat-message.left .message-date{float:right}.chat-discussion .chat-message.right .message-date{float:left}.chat-discussion .chat-message.left .message{text-align:left;margin-left:55px}.chat-discussion .chat-message.right .message{text-align:right;margin-right:55px}.message-date{font-size:10px;color:#888}.message-content{display:block}.chat-discussion{background:#eee;padding:15px;height:400px;overflow-y:auto}.chat-users{overflow-y:auto;height:400px}.chat-message-form .form-group{margin-bottom:0}.jstree-open>.jstree-anchor>.fa-folder:before{content:"\f07c"}.jstree-default .jstree-icon.none{width:0}.clients-list{margin-top:20px}.clients-list .tab-pane{position:relative;height:600px}.client-detail{position:relative;height:620px}.clients-list table tr td{height:46px;vertical-align:middle;border:0}.client-link{font-weight:600;color:inherit}.client-link:hover{color:inherit}.client-avatar{width:42px}.client-avatar img{width:28px;height:28px;border-radius:50%}.contact-type{width:20px;color:#c1c3c4}.client-status{text-align:left}.client-detail .vertical-timeline-content p{margin:0}.client-detail .vertical-timeline-icon.gray-bg{color:#a7aaab}.clients-list .nav-tabs>li.active>a,.clients-list .nav-tabs>li.active>a:hover,.clients-list .nav-tabs>li.active>a:focus{border-bottom:1px solid #fff}.blog h2{font-weight:700}.blog h5{margin:0 0 5px 0}.blog .btn{margin:0 0 5px 0}.article h1{font-size:48px;font-weight:700;color:#2f4050}.article p{font-size:15px;line-height:26px}.article-title{text-align:center;margin:60px 0 40px 0}.article .ibox-content{padding:40px}.issue-tracker .btn-link{color:#1ab394}table.issue-tracker tbody tr td{vertical-align:middle;height:50px}.issue-info{width:50%}.issue-info a{font-weight:600;color:#676a6c}.issue-info small{display:block}.team-members{margin:10px 0}.team-members img.img-circle{width:42px;height:42px;margin-bottom:5px}.sortable-list{padding:10px 0}.agile-list{list-style:none;margin:0}.agile-list li{background:#fafafb;border:1px solid #e7eaec;margin:0 0 10px 0;padding:10px;border-radius:2px}.agile-list li:hover{cursor:pointer;background:#fff}.agile-list li.warning-element{border-left:3px solid #f8ac59}.agile-list li.danger-element{border-left:3px solid #ed5565}.agile-list li.info-element{border-left:3px solid #1c84c6}.agile-list li.success-element{border-left:3px solid #1ab394}.agile-detail{margin-top:5px;font-size:12px}ins{background-color:#c6ffc6;text-decoration:none}del{background-color:#ffc6c6}#small-chat{position:fixed;bottom:50px;right:26px;z-index:100}#small-chat .badge{position:absolute;top:-3px;right:-4px}.open-small-chat{height:38px;width:38px;display:block;background:#1ab394;padding:9px 8px;text-align:center;color:#fff;border-radius:50%}.open-small-chat:hover{color:white;background:#1ab394}.small-chat-box{display:none;position:fixed;bottom:50px;right:80px;background:#fff;border:1px solid #e7eaec;width:230px;height:320px;border-radius:4px}.small-chat-box.ng-small-chat{display:block}.body-small .small-chat-box{bottom:70px;right:20px}.small-chat-box.active{display:block}.small-chat-box .heading{background:#2f4050;padding:8px 15px;font-weight:bold;color:#fff}.small-chat-box .chat-date{opacity:.6;font-size:10px;font-weight:normal}.small-chat-box .content{padding:15px 15px}.small-chat-box .content .author-name{font-weight:bold;margin-bottom:3px;font-size:11px}.small-chat-box .content>div{padding-bottom:20px}.small-chat-box .content .chat-message{padding:5px 10px;border-radius:6px;font-size:11px;line-height:14px;max-width:80%;background:#f3f3f4;margin-bottom:10px}.small-chat-box .content .chat-message.active{background:#1ab394;color:#fff}.small-chat-box .content .left{text-align:left;clear:both}.small-chat-box .content .left .chat-message{float:left}.small-chat-box .content .right{text-align:right;clear:both}.small-chat-box .content .right .chat-message{float:right}.small-chat-box .form-chat{padding:10px 10px}.sk-spinner-rotating-plane.sk-spinner{width:30px;height:30px;background-color:#1ab394;margin:0 auto;-webkit-animation:sk-rotatePlane 1.2s infinite ease-in-out;animation:sk-rotatePlane 1.2s infinite ease-in-out}@-webkit-keyframes sk-rotatePlane{0%{-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg);transform:perspective(120px) rotateX(0deg) rotateY(0deg)}50%{-webkit-transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg);transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-180deg);transform:perspective(120px) rotateX(-180deg) rotateY(-180deg)}}@keyframes sk-rotatePlane{0%{-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg);transform:perspective(120px) rotateX(0deg) rotateY(0deg)}50%{-webkit-transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg);transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-179 .9deg);transform:perspective(120px) rotateX(-180deg) rotateY(-179 .9deg)}}.sk-spinner-double-bounce.sk-spinner{width:40px;height:40px;position:relative;margin:0 auto}.sk-spinner-double-bounce .sk-double-bounce1,.sk-spinner-double-bounce .sk-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#1ab394;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-doubleBounce 2s infinite ease-in-out;animation:sk-doubleBounce 2s infinite ease-in-out}.sk-spinner-double-bounce .sk-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-wave.sk-spinner{margin:0 auto;width:50px;height:30px;text-align:center;font-size:10px}.sk-spinner-wave div{background-color:#1ab394;height:100%;width:6px;display:inline-block;-webkit-animation:sk-waveStretchDelay 1.2s infinite ease-in-out;animation:sk-waveStretchDelay 1.2s infinite ease-in-out}.sk-spinner-wave .sk-rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-wave .sk-rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-wave .sk-rect4{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-wave .sk-rect5{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}@-webkit-keyframes sk-waveStretchDelay{0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes sk-waveStretchDelay{0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}.sk-spinner-wandering-cubes.sk-spinner{margin:0 auto;width:32px;height:32px;position:relative}.sk-spinner-wandering-cubes .sk-cube1,.sk-spinner-wandering-cubes .sk-cube2{background-color:#1ab394;width:10px;height:10px;position:absolute;top:0;left:0;-webkit-animation:sk-wanderingCubeMove 1.8s infinite ease-in-out;animation:sk-wanderingCubeMove 1.8s infinite ease-in-out}.sk-spinner-wandering-cubes .sk-cube2{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}@-webkit-keyframes sk-wanderingCubeMove{25%{-webkit-transform:translateX(42px) rotate(-90deg) scale(0.5);transform:translateX(42px) rotate(-90deg) scale(0.5)}50%{-webkit-transform:translateX(42px) translateY(42px) rotate(-179deg);transform:translateX(42px) translateY(42px) rotate(-179deg)}50.1%{-webkit-transform:translateX(42px) translateY(42px) rotate(-180deg);transform:translateX(42px) translateY(42px) rotate(-180deg)}75%{-webkit-transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5);transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes sk-wanderingCubeMove{25%{-webkit-transform:translateX(42px) rotate(-90deg) scale(0.5);transform:translateX(42px) rotate(-90deg) scale(0.5)}50%{-webkit-transform:translateX(42px) translateY(42px) rotate(-179deg);transform:translateX(42px) translateY(42px) rotate(-179deg)}50.1%{-webkit-transform:translateX(42px) translateY(42px) rotate(-180deg);transform:translateX(42px) translateY(42px) rotate(-180deg)}75%{-webkit-transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5);transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.sk-spinner-pulse.sk-spinner{width:40px;height:40px;margin:0 auto;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-pulseScaleOut 1s infinite ease-in-out;animation:sk-pulseScaleOut 1s infinite ease-in-out}@-webkit-keyframes sk-pulseScaleOut{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}}@keyframes sk-pulseScaleOut{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}}.sk-spinner-chasing-dots.sk-spinner{margin:0 auto;width:40px;height:40px;position:relative;text-align:center;-webkit-animation:sk-chasingDotsRotate 2s infinite linear;animation:sk-chasingDotsRotate 2s infinite linear}.sk-spinner-chasing-dots .sk-dot1,.sk-spinner-chasing-dots .sk-dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-chasingDotsBounce 2s infinite ease-in-out;animation:sk-chasingDotsBounce 2s infinite ease-in-out}.sk-spinner-chasing-dots .sk-dot2{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-chasingDotsRotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-chasingDotsRotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes sk-chasingDotsBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-chasingDotsBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-three-bounce.sk-spinner{margin:0 auto;width:70px;text-align:center}.sk-spinner-three-bounce div{width:18px;height:18px;background-color:#1ab394;border-radius:100%;display:inline-block;-webkit-animation:sk-threeBounceDelay 1.4s infinite ease-in-out;animation:sk-threeBounceDelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-three-bounce .sk-bounce1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.sk-spinner-three-bounce .sk-bounce2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}@-webkit-keyframes sk-threeBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-threeBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-circle.sk-spinner{margin:0 auto;width:22px;height:22px;position:relative}.sk-spinner-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-spinner-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:20%;height:20%;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-circleBounceDelay 1.2s infinite ease-in-out;animation:sk-circleBounceDelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-spinner-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-spinner-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-spinner-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-spinner-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-spinner-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-spinner-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-spinner-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-spinner-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-spinner-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-spinner-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-spinner-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-spinner-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-spinner-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-spinner-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-spinner-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-spinner-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-spinner-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-spinner-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-circleBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-cube-grid.sk-spinner{width:30px;height:30px;margin:0 auto}.sk-spinner-cube-grid .sk-cube{width:33%;height:33%;background-color:#1ab394;float:left;-webkit-animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-spinner-cube-grid .sk-cube:nth-child(1){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-spinner-cube-grid .sk-cube:nth-child(2){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-spinner-cube-grid .sk-cube:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.sk-spinner-cube-grid .sk-cube:nth-child(4){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-spinner-cube-grid .sk-cube:nth-child(5){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-spinner-cube-grid .sk-cube:nth-child(6){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-spinner-cube-grid .sk-cube:nth-child(7){-webkit-animation-delay:0s;animation-delay:0s}.sk-spinner-cube-grid .sk-cube:nth-child(8){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-spinner-cube-grid .sk-cube:nth-child(9){-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGridScaleDelay{0%,70%,100%{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}@keyframes sk-cubeGridScaleDelay{0%,70%,100%{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}.sk-spinner-wordpress.sk-spinner{background-color:#1ab394;width:30px;height:30px;border-radius:30px;position:relative;margin:0 auto;-webkit-animation:sk-innerCircle 1s linear infinite;animation:sk-innerCircle 1s linear infinite}.sk-spinner-wordpress .sk-inner-circle{display:block;background-color:#fff;width:8px;height:8px;position:absolute;border-radius:8px;top:5px;left:5px}@-webkit-keyframes sk-innerCircle{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-innerCircle{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sk-spinner-fading-circle.sk-spinner{margin:0 auto;width:22px;height:22px;position:relative}.sk-spinner-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-spinner-fading-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:18%;height:18%;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out;animation:sk-circleFadeDelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-spinner-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-spinner-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-spinner-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-spinner-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-spinner-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-spinner-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-spinner-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-spinner-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-spinner-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-spinner-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-spinner-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-spinner-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-spinner-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-spinner-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-spinner-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-spinner-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-spinner-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-spinner-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}body.rtls #page-wrapper{margin:0 220px 0 0}body.rtls .nav-second-level li a{padding:7px 35px 7px 10px}body.rtls .ibox-title h5{float:right}body.rtls .pull-right{float:left!important}body.rtls .pull-left{float:right!important}body.rtls .ibox-tools{float:left}body.rtls .stat-percent{float:left}body.rtls .navbar-right{float:left!important}body.rtls .navbar-top-links li:last-child{margin-left:40px;margin-right:0}body.rtls .minimalize-styl-2{float:right;margin:14px 20px 5px 5px}body.rtls .feed-element>.pull-left{margin-left:10px;margin-right:0}body.rtls .timeline-item .date{text-align:left}body.rtls .timeline-item .date i{left:0;right:auto}body.rtls .timeline-item .content{border-right:1px solid #e7eaec;border-left:none}body.rtls .toast-close-button{float:left}body.rtls #toast-container>.toast:before{margin:auto -1.5em auto .5em}body.rtls #toast-container>div{padding:15px 50px 15px 15px}body.rtls .center-orientation .vertical-timeline-icon i{margin-left:0;margin-right:-12px}body.rtls .vertical-timeline-icon i{right:50%;left:auto;margin-left:auto;margin-right:-12px}body.rtls .file-box{float:right}body.rtls ul.notes li{float:right}body.rtls .chat-users,body.rtls .chat-statistic{margin-right:-30px;margin-left:auto}body.rtls .dropdown-menu>li>a{text-align:right}body.rtls .b-r{border-left:1px solid #e7eaec;border-right:0}body.rtls .dd-list .dd-list{padding-right:30px;padding-left:0}body.rtls .dd-item>button{float:right}body.rtls .skin-setttings{margin-right:40px;margin-left:0}body.rtls .skin-setttings{direction:ltr}body.rtls .footer.fixed{margin-right:220px;margin-left:0}@media(max-width :992px){body.rtls .chat-users,body.rtls .chat-statistic{margin-right:0}}body.rtls.mini-navbar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0 70px 0 0}body.rtls.mini-navbar.fixed-sidebar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0}body.rtls.top-navigation .navbar-toggle{float:right;margin-left:15px;margin-right:15px}.body-small.rtls.top-navigation .navbar-header{float:none}body.rtls.top-navigation #page-wrapper{margin:0}body.rtls.mini-navbar #page-wrapper{margin:0 70px 0 0}body.rtls.mini-navbar.fixed-sidebar #page-wrapper{margin:0}body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper{margin:0 220px 0 0}body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side{width:220px}.body-small.rtls .navbar-fixed-top{margin-right:0}.body-small.rtls .navbar-header{float:right}body.rtls .navbar-top-links li:last-child{margin-left:20px}body.rtls .top-navigation #page-wrapper,body.rtls.mini-navbar .top-navigation #page-wrapper,body.rtls.mini-navbar.top-navigation #page-wrapper{margin:0}body.rtls .top-navigation .footer.fixed,body.rtls.top-navigation .footer.fixed{margin:0}@media(max-width :768px){body.rtls .navbar-top-links li:last-child{margin-left:20px}.body-small.rtls #page-wrapper{position:inherit;margin:0;min-height:1000px}.body-small.rtls .navbar-static-side{display:none;z-index:2001;position:absolute;width:70px}.body-small.rtls.mini-navbar .navbar-static-side{display:block}.rtls.fixed-sidebar.body-small .navbar-static-side{display:none;z-index:2001;position:fixed;width:220px}.rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side{display:block}}.rtls .ltr-support{direction:ltr}.page-tabs a{color:#999}.page-tabs a i{color:#ccc;margin-left:2px;font-size:13px}.page-tabs a.active{background:#eaedf1;color:#23508e}.page-tabs a.active:hover,.page-tabs a.active i:hover{background:#eaedf1;color:#23508e}@media(min-width :768px){.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks,.navbar-top-links .dropdown-alerts{margin-left:auto}}@media(max-width :768px){body.fixed-sidebar .navbar-static-side{display:none}body.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}.lock-word{display:none}.navbar-form-custom{display:none}.navbar-header{display:inline;float:left}.sidebard-panel{z-index:2;position:relative;width:auto;min-height:100%!important}.sidebar-content .wrapper{padding-right:0;z-index:1}.fixed-sidebar.body-small .navbar-static-side{display:none;z-index:2001;position:fixed;width:220px}.fixed-sidebar.body-small.mini-navbar .navbar-static-side{display:block}.ibox-tools{float:none;text-align:right;display:block}.content-tabs{display:none}#content-main{height:calc(100% - 100px)}.fixed-nav #content-main{height:calc(100% - 38px)}}.navbar-static-side{background:#2f4050}.nav-close{padding:10px;display:block;position:absolute;right:5px;top:5px;font-size:1.4em;cursor:pointer;z-index:10;display:none;color:rgba(255,255,255,.3)}@media(max-width :350px){body.fixed-sidebar.mini-navbar .navbar-static-side{width:0}.nav-close{display:block}#page-wrapper{margin-left:0!important}.timeline-item .date{text-align:left;width:110px;position:relative;padding-top:30px}.timeline-item .date i{position:absolute;top:0;left:15px;padding:5px;width:30px;text-align:center;border:1px solid #e7eaec;background:#f8f8f8}.timeline-item .content{border-left:none;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.nav.navbar-top-links li.dropdown{display:none}.ibox-tools{float:none;text-align:left;display:inline-block}}.ui-jqgrid-titlebar{height:40px;line-height:24px;color:#676a6c;background-color:#f9f9f9;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.ui-jqgrid .ui-jqgrid-title{float:left;margin-left:5px;font-weight:700}.ui-jqgrid .ui-jqgrid-titlebar{position:relative;border-left:0 solid;border-right:0 solid;border-top:0 solid}.social-feed-separated .social-feed-box{margin-left:62px}.social-feed-separated .social-avatar{float:left;padding:0}.social-feed-separated .social-avatar img{width:52px;height:52px;border:1px solid #e7eaec}.social-feed-separated .social-feed-box .social-avatar{padding:15px 15px 0 15px;float:none}.social-feed-box{border:1px solid #e7eaec;background:#fff;margin-bottom:15px}.article .social-feed-box{margin-bottom:0;border-bottom:0}.article .social-feed-box:last-child{margin-bottom:0;border-bottom:1px solid #e7eaec}.article .social-feed-box p{font-size:13px;line-height:18px}.social-action{margin:15px}.social-avatar{padding:15px 15px 0 15px}.social-comment .social-comment{margin-left:45px}.social-avatar img{height:40px;width:40px;margin-right:10px}.social-avatar .media-body a{font-size:14px;display:block}.social-body{padding:15px}.social-body img{margin-bottom:10px}.social-footer{border-top:1px solid #e7eaec;padding:10px 15px;background:#f9f9f9}.social-footer .social-comment img{width:32px;margin-right:10px}.social-comment:first-child{margin-top:0}.social-comment{margin-top:15px}.social-comment textarea{font-size:12px}@media(max-width :1000px){.welcome-message{display:none}}.echarts{height:240px}.checkbox-inline,.radio-inline,.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin:0 15px 0 0;font-size:14px}.navbar-toggle{background-color:#fff}.menuTab{-webkit-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}@media only screen and (-webkit-min-device-pixel-ratio :2){#content-main{-webkit-overflow-scrolling:touch}}.navbar-header{height:50px}.bs-glyphicons{margin:0 -10px 20px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;background-color:#f9f9f9;border:1px solid #fff}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#1ab394}@media(min-width :768px){.bs-glyphicons{margin-right:0;margin-left:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.t-bar{padding-bottom:10px}.nopadding{padding:0}.note-editor .btn-default{color:#333!important;background-color:#fff!important;border-color:#ccc!important}.folder-list li.active a{color:#2791df;background:#f5f5f5}nav .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent;-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;height:50px;font-size:20px;line-height:50px;text-align:center;width:200px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.logo-mini{display:none}.logo-lg{display:block}.roleList{color:#d5d5d5;margin-right:10px;padding-top:10px;line-height:1;white-space:nowrap;overflow:hidden;width:110px}.sidebar-collapse .user-panel{white-space:nowrap;position:relative;width:100%;padding:15px;overflow:hidden}.sidebar-collapse .user-panel .image>img{width:100%;max-width:45px;height:auto}.sidebar-collapse .user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.sidebar-collapse .user-panel>.info a{color:#fff;font-size:12px}.sidebar-collapse .user-panel>.info>p{font-weight:600;margin-bottom:9px;color:#fff;font-size:12px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.nav>li:hover .dropdown-menu{display:block}#content-main.max{height:calc(100% - 110px);overflow:hidden;width:100%;height:100%;left:0;position:absolute;top:0;z-index:9998;margin:0}
\ No newline at end of file
+h1,h2,h3,h4,h5,h6{font-weight:100}h1{font-size:30px}h2{font-size:24px}h3{font-size:16px}h4{font-size:14px}h5{font-size:12px}h6{font-size:10px}h3,h4,h5{margin-top:5px;font-weight:600}a:focus{outline:0}.nav>li>a{color:#a7b1c2;font-weight:600;padding:14px 20px 14px 25px}.nav li>a{display:block}.nav.navbar-right>li>a,.nav.navbar-left>li>a{color:#fff;font-size:14px;height:50px;padding:15px 15px}.nav>li.active>a{color:#fff}.nav.navbar-right>li>a>.label,.nav.navbar-left>li>a>.label{position:absolute;top:9px;right:5px;text-align:center;font-size:9px;padding:2px 4px;line-height:.9}.nav.navbar-right>li>a:hover,.nav.navbar-left>li>a:hover{background-color:#367fa9;color:#fff}.navbar-default .nav>li>a:hover,.navbar-default .nav>li>a:focus{background-color:#293846;color:white}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background:#fff}.navbar{border:0}.navbar-default{background-color:transparent;border-color:#2f4050;position:relative}.nav.navbar-top-links li{display:inline-block}.navbar-top-links li:last-child{margin-right:16px}body.body-small .navbar-top-links li:last-child{margin-right:10px}.navbar-top-links li a{padding:20px 10px;min-height:50px}.dropdown-menu{border:medium none;display:none;float:left;font-size:12px;left:0;list-style:none outside none;padding:0;position:absolute;text-shadow:none;top:100%;z-index:1000;border-radius:0;box-shadow:0 0 3px rgba(86,96,117,0.3)}.dropdown-menu>li>a{border-radius:3px;color:inherit;line-height:25px;margin:4px;text-align:left;font-weight:normal}.dropdown-menu>li>a.font-bold{font-weight:600}.navbar-top-links .dropdown-menu li{display:block}.navbar-top-links .dropdown-menu li:last-child{margin-right:0}.navbar-top-links .dropdown-menu li a{padding:3px 20px;min-height:0}.navbar-top-links .dropdown-menu li a div{white-space:normal}.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks,.navbar-top-links .dropdown-alerts{width:310px;min-width:0}.navbar-top-links .dropdown-messages{margin-left:5px}.navbar-top-links .dropdown-tasks{margin-left:-59px}.navbar-top-links .dropdown-alerts{margin-left:-123px}.navbar-top-links .dropdown-user{right:0;left:auto}.dropdown-messages,.dropdown-alerts{padding:10px 10px 10px 10px}.dropdown-messages li a,.dropdown-alerts li a{font-size:12px}.dropdown-messages li em,.dropdown-alerts li em{font-size:10px}.nav.navbar-top-links .dropdown-alerts a{font-size:12px}.nav>li.active{border-left:4px solid #19aa8d;background:#293846}.nav.nav-second-level>li.active{border:0}.nav.nav-second-level.collapse[style]{height:auto!important}.nav-header a{color:#dfe4ed}.nav-header .text-muted{color:#8095a8}.minimalize-styl-2{padding:4px 12px;margin:12px 5px 5px 15px;font-size:14px;float:left}.navbar-form-custom{float:left;height:50px;padding:0;width:200px;display:inline-table}.navbar-form-custom .form-group{margin-bottom:0}.nav.navbar-top-links a{font-size:14px}.navbar-form-custom .form-control{background:none repeat scroll 0 0 rgba(0,0,0,0);border:medium none;font-size:14px;height:60px;margin:0;z-index:2000}.count-info .label{line-height:12px;padding:1px 5px;position:absolute;right:6px;top:12px}.arrow{float:right;margin-top:2px}.fa.arrow:before{content:"\f104"}.active>a>.fa.arrow:before{content:"\f107"}.nav-second-level li,.nav-third-level li{border-bottom:none!important;padding-left:2px;padding-right:2px}.nav-second-level li a{padding:7px 15px 7px 10px;padding-left:52px}.nav-third-level li a{padding-left:70px}.nav-second-level li:last-child{margin-bottom:10px}body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav li:hover>.nav-second-level,.mini-navbar .nav li:focus>.nav-second-level{display:block;border-radius:0 2px 2px 0;min-width:140px;height:auto}body.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:0 2px 2px 0}body.mini-navbar .navbar-default .nav>li>.nav-third-level li a{padding-left:31px}.fixed-nav .slimScrollDiv #side-menu{padding-bottom:60px;position:relative}.fixed-sidebar.mini-navbar .slimScrollDiv>*{overflow:visible!important}.fixed-sidebar .slimScrollDiv>*{overflow-y:hidden;overflow-x:visible}.mini-navbar .nav-second-level li a{padding:10px 10px 10px 15px}.canvas-menu.mini-navbar .nav-second-level{background:#293846}.mini-navbar li.active .nav-second-level{left:65px}.navbar-default .special_link a{background:#1ab394;color:white}.navbar-default .special_link a:hover{background:#17987e!important;color:white}.navbar-default .special_link a span.label{background:#fff;color:#1ab394}.navbar-default .landing_link a{background:#1cc09f;color:white}.navbar-default .landing_link a:hover{background:#1ab394!important;color:white}.navbar-default .landing_link a span.label{background:#fff;color:#1cc09f}.logo-element{text-align:center;font-size:18px;font-weight:600;color:white;display:none;padding:18px 0}.navbar-fixed-top{background:#fff;-webkit-transition-duration:.5s;transition-duration:.5s;z-index:2030}.fixed-nav #wrapper{padding-top:60px;box-sizing:border-box}.fixed-nav .minimalize-styl-2{margin:14px 5px 5px 15px}.body-small .navbar-fixed-top{margin-left:0}body.mini-navbar .navbar-static-side{width:70px}body.mini-navbar .profile-element,body.mini-navbar .nav-label,body.mini-navbar .navbar-default .nav li a span{display:none}body.canvas-menu .profile-element{display:block}body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav-second-level{display:none}body.mini-navbar .navbar-default .nav>li>a{font-size:16px}body.mini-navbar .logo-element{display:block}body.canvas-menu .logo-element{display:none}body.mini-navbar .nav-header{padding:0;background-color:#1ab394}body.canvas-menu .nav-header{padding:33px 25px}body.mini-navbar #page-wrapper{margin:0 0 0 70px}body.canvas-menu.mini-navbar #page-wrapper,body.canvas-menu.mini-navbar .footer{margin:0}body.fixed-sidebar .navbar-static-side,body.canvas-menu .navbar-static-side{position:fixed;width:200px;z-index:2001;height:100%}body.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}body.fixed-sidebar.mini-navbar #page-wrapper{margin:0 0 0 70px}body.body-small.fixed-sidebar.mini-navbar #page-wrapper{margin:0 0 0 70px}body.body-small.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}.fixed-sidebar.mini-navbar .nav li>.nav-second-level{display:none}.fixed-sidebar.mini-navbar .nav li.active{border-left-width:0}.fixed-sidebar.mini-navbar .nav li:hover>a>span.nav-label{top:0;padding:10px 10px 10px 10px;text-align:center;background-color:#243747}.fixed-sidebar.mini-navbar .nav li:hover>.nav-second-level{top:40px;font-size:12px;background-color:#2f4050}.fixed-sidebar.mini-navbar .nav li:hover>.nav-second-level,.fixed-sidebar.mini-navbar .nav li:hover>a>span.nav-label{position:absolute;left:70px;display:block;min-width:140px;border-radius:2px}.fixed-sidebar.mini-navbar .nav li.active:hover>.nav-second-level,.fixed-sidebar.mini-navbar .nav li.active:hover>a>span.nav-label{left:67px}.fixed-sidebar.mini-navbar .nav .nav-second-level a>span,.fixed-sidebar.mini-navbar .nav .nav-third-level a>span{display:inline-block}body.fixed-sidebar.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:12px;border-radius:3px}body.canvas-menu.mini-navbar .navbar-default .nav>li>.nav-second-level li a{font-size:13px;border-radius:3px}.fixed-sidebar.mini-navbar .nav-second-level li a,.canvas-menu.mini-navbar .nav-second-level li a{padding:10px 10px 10px 15px}.fixed-sidebar.mini-navbar .nav-second-level,.canvas-menu.mini-navbar .nav-second-level{position:relative;padding:0;font-size:13px}.fixed-sidebar.mini-navbar li.active .nav-second-level,.canvas-menu.mini-navbar li.active .nav-second-level{left:0}body.canvas-menu nav.navbar-static-side{z-index:2001;background:#2f4050;height:100%;position:fixed;display:none}body.canvas-menu.mini-navbar nav.navbar-static-side{display:block;width:70px}.top-navigation #page-wrapper{margin-left:0}.top-navigation .navbar-nav .dropdown-menu>.active>a{background:white;color:#1ab394;font-weight:bold}.white-bg .navbar-fixed-top,.white-bg .navbar-static-top{background:#fff}.top-navigation .navbar{margin-bottom:0}.top-navigation .nav>li>a{padding:15px 20px;color:#676a6c}.top-navigation .nav>li a:hover,.top-navigation .nav>li a:focus{background:#fff;color:#1ab394}.top-navigation .nav>li.active{background:#fff;border:0}.top-navigation .nav>li.active>a{color:#1ab394}.top-navigation .navbar-right{padding-right:10px}.top-navigation .navbar-nav .dropdown-menu{box-shadow:none;border:1px solid #e7eaec}.top-navigation .dropdown-menu>li>a{margin:0;padding:7px 20px}.navbar .dropdown-menu{margin-top:0}.top-navigation .navbar-brand{background:#1ab394;color:#fff;padding:15px 25px}.top-navigation .navbar-top-links li:last-child{margin-right:0}.top-navigation.mini-navbar #page-wrapper,.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper,.mini-navbar .top-navigation #page-wrapper,.body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper,.canvas-menu #page-wrapper{margin:0}.top-navigation.fixed-nav #wrapper,.fixed-nav #wrapper.top-navigation{margin-top:50px}.top-navigation .footer.fixed{margin-left:0!important}.top-navigation .wrapper.wrapper-content{padding:40px}.top-navigation.body-small .wrapper.wrapper-content,.body-small .top-navigation .wrapper.wrapper-content{padding:40px 0 40px 0}.navbar-toggle{background-color:#1ab394;color:#fff;padding:6px 12px;font-size:14px}.top-navigation .navbar-nav .open .dropdown-menu>li>a,.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header{padding:10px 15px 10px 20px}@media(max-width :768px){.top-navigation .navbar-header{display:block;float:none}}.menu-visible-lg,.menu-visible-md{display:none!important}@media(min-width :1200px){.menu-visible-lg{display:block!important}}@media(min-width :992px){.menu-visible-md{display:block!important}}@media(max-width :767px){.menu-visible-md{display:block!important}.menu-visible-lg{display:block!important}}.btn{border-radius:3px}.float-e-margins .btn{margin-bottom:5px}.btn-w-m{min-width:120px}.btn-primary.btn-outline{color:#1ab394}.btn-success.btn-outline{color:#1c84c6}.btn-info.btn-outline{color:#23c6c8}.btn-warning.btn-outline{color:#f8ac59}.btn-danger.btn-outline{color:#ed5565}.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-info.btn-outline:hover,.btn-warning.btn-outline:hover,.btn-danger.btn-outline:hover{color:#fff}.btn-primary{background-color:#1ab394;border-color:#1ab394;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-color:#18a689;border-color:#18a689;color:#fff}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:active,.btn-primary.active[disabled],fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#1dc5a3;border-color:#1dc5a3}.btn-success{background-color:#1c84c6;border-color:#1c84c6;color:#fff}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-color:#1a7bb9;border-color:#1a7bb9;color:#fff}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success.active[disabled],fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#1f90d8;border-color:#1f90d8}.btn-info{background-color:#23c6c8;border-color:#23c6c8;color:#fff}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-color:#21b9bb;border-color:#21b9bb;color:#fff}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info.active[disabled],fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#26d7d9;border-color:#26d7d9}.btn-default{background-color:#f4f4f4;border-color:#ddd;color:#444}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-color:#e7e7e7;border-color:#e7e7e7;color:#444}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default.active[disabled],fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#ccc;border-color:#ccc}.btn-warning{background-color:#f8ac59;border-color:#f8ac59;color:#fff}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-color:#f7a54a;border-color:#f7a54a;color:#fff}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning.active[disabled],fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f9b66d;border-color:#f9b66d}.btn-danger{background-color:#ed5565;border-color:#ed5565;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-color:#ec4758;border-color:#ec4758;color:#fff}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger.active[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#ef6776;border-color:#ef6776}.btn-link{color:inherit}.btn-link:hover,.btn-link:focus,.btn-link:active,.btn-link.active,.open .dropdown-toggle.btn-link{color:#1ab394;text-decoration:none}.btn-link:active,.btn-link.active,.open .dropdown-toggle.btn-link{background-image:none}.btn-link.disabled,.btn-link.disabled:hover,.btn-link.disabled:focus,.btn-link.disabled:active,.btn-link.disabled.active,.btn-link[disabled],.btn-link[disabled]:hover,.btn-link[disabled]:focus,.btn-link[disabled]:active,.btn-link.active[disabled],fieldset[disabled] .btn-link,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:active,fieldset[disabled] .btn-link.active{color:#cacaca}.btn-white{color:inherit;background:white;border:1px solid #e7eaec}.btn-white:hover,.btn-white:focus,.btn-white:active,.btn-white.active,.open .dropdown-toggle.btn-white{color:inherit;border:1px solid #d2d2d2}.btn-white:active,.btn-white.active{box-shadow:0 2px 5px rgba(0,0,0,0.15) inset}.btn-white:active,.btn-white.active,.open .dropdown-toggle.btn-white{background-image:none}.btn-white.disabled,.btn-white.disabled:hover,.btn-white.disabled:focus,.btn-white.disabled:active,.btn-white.disabled.active,.btn-white[disabled],.btn-white[disabled]:hover,.btn-white[disabled]:focus,.btn-white[disabled]:active,.btn-white.active[disabled],fieldset[disabled] .btn-white,fieldset[disabled] .btn-white:hover,fieldset[disabled] .btn-white:focus,fieldset[disabled] .btn-white:active,fieldset[disabled] .btn-white.active{color:#cacaca}.form-control,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.btn-outline{color:inherit;background-color:transparent;-webkit-transition:all .5s;transition:all .5s}.btn-rounded{border-radius:50px}.btn-large-dim{width:90px;height:90px;font-size:42px}button.dim{display:inline-block;color:#fff;text-decoration:none;text-transform:uppercase;text-align:center;padding-top:6px;margin-right:10px;position:relative;cursor:pointer;border-radius:5px;font-weight:600;margin-bottom:20px!important}button.dim:active{top:3px}button.btn-primary.dim{box-shadow:inset 0 0 0 #16987e,0px 5px 0 0 #16987e,0px 10px 5px #999}button.btn-primary.dim:active{box-shadow:inset 0 0 0 #16987e,0px 2px 0 0 #16987e,0px 5px 3px #999}button.btn-default.dim{box-shadow:inset 0 0 0 #b3b3b3,0px 5px 0 0 #b3b3b3,0px 10px 5px #999}button.btn-default.dim:active{box-shadow:inset 0 0 0 #b3b3b3,0px 2px 0 0 #b3b3b3,0px 5px 3px #999}button.btn-warning.dim{box-shadow:inset 0 0 0 #f79d3c,0px 5px 0 0 #f79d3c,0px 10px 5px #999}button.btn-warning.dim:active{box-shadow:inset 0 0 0 #f79d3c,0px 2px 0 0 #f79d3c,0px 5px 3px #999}button.btn-info.dim{box-shadow:inset 0 0 0 #1eacae,0px 5px 0 0 #1eacae,0px 10px 5px #999}button.btn-info.dim:active{box-shadow:inset 0 0 0 #1eacae,0px 2px 0 0 #1eacae,0px 5px 3px #999}button.btn-success.dim{box-shadow:inset 0 0 0 #1872ab,0px 5px 0 0 #1872ab,0px 10px 5px #999}button.btn-success.dim:active{box-shadow:inset 0 0 0 #1872ab,0px 2px 0 0 #1872ab,0px 5px 3px #999}button.btn-danger.dim{box-shadow:inset 0 0 0 #ea394c,0px 5px 0 0 #ea394c,0px 10px 5px #999}button.btn-danger.dim:active{box-shadow:inset 0 0 0 #ea394c,0px 2px 0 0 #ea394c,0px 5px 3px #999}button.dim:before{font-size:50px;line-height:1em;font-weight:normal;color:#fff;display:block;padding-top:10px}button.dim:active:before{top:7px;font-size:50px}.label{background-color:#d1dade;color:#5e5e5e;font-size:10px;font-weight:600;padding:3px 8px;text-shadow:none}.badge{background-color:#d1dade;color:#5e5e5e;font-size:11px;font-weight:600;padding-bottom:4px;padding-left:6px;padding-right:6px;text-shadow:none}.label-primary,.badge-primary{background-color:#1ab394;color:#fff}.label-success,.badge-success{background-color:#1c84c6;color:#fff}.label-warning,.badge-warning{background-color:#f8ac59;color:#fff}.label-warning-light,.badge-warning-light{background-color:#f8ac59;color:#fff}.label-danger,.badge-danger{background-color:#ed5565;color:#fff}.label-info,.badge-info{background-color:#23c6c8;color:#fff}.label-inverse,.badge-inverse{background-color:#262626;color:#fff}.label-white,.badge-white{background-color:#fff;color:#5e5e5e}.label-white,.badge-disable{background-color:#2a2e36;color:#8b91a0}.onoffswitch{position:relative;width:64px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #1ab394;border-radius:2px}.onoffswitch-inner{width:200%;margin-left:-100%;-webkit-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{float:left;width:50%;height:20px;padding:0;line-height:20px;font-size:12px;color:white;font-family:Trebuchet,Arial,sans-serif;font-weight:bold;box-sizing:border-box}.onoffswitch-inner:before{content:"ON";padding-left:10px;background-color:#1ab394;color:#fff}.onoffswitch-inner:after{content:"OFF";padding-right:10px;background-color:#fff;color:#999;text-align:right}.onoffswitch-switch{width:20px;margin:0;background:#fff;border:2px solid #1ab394;border-radius:2px;position:absolute;top:0;bottom:0;right:44px;-webkit-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.chosen-container-single .chosen-single{background:#fff;box-shadow:none;-moz-box-sizing:border-box;background-color:#fff;border:1px solid #cbd5dd;border-radius:2px;cursor:text;height:auto!important;margin:0;min-height:30px;overflow:hidden;padding:4px 12px;position:relative;width:100%}.chosen-container-multi .chosen-choices li.search-choice{background:#f1f1f1;border:1px solid #ededed;border-radius:2px;box-shadow:none;color:#333;cursor:default;line-height:13px;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;position:relative}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{background-color:#f4f4f4;border-color:#ddd;color:inherit;cursor:default;z-index:2}.pagination>li>a,.pagination>li>span{background-color:#fff;border:1px solid #ddd;color:inherit;float:left;line-height:1.42857;margin-left:-1px;padding:4px 10px;position:relative;text-decoration:none}.tooltip-inner{background-color:#2f4050;word-break:break-all;overflow-wrap:break-word}.tooltip.top .tooltip-arrow{border-top-color:#2f4050}.tooltip.right .tooltip-arrow{border-right-color:#2f4050}.tooltip.bottom .tooltip-arrow{border-bottom-color:#2f4050}.tooltip.left .tooltip-arrow{border-left-color:#2f4050}.easypiechart{position:relative;text-align:center}.easypiechart .h2{margin-left:10px;margin-top:10px;display:inline-block}.easypiechart canvas{top:0;left:0}.easypiechart .easypie-text{line-height:1;position:absolute;top:33px;width:100%;z-index:1}.easypiechart img{margin-top:-4px}.jqstooltip{box-sizing:content-box}.fc-state-default{background-color:#fff;background-image:none;background-repeat:repeat-x;box-shadow:none;color:#333;text-shadow:none}.fc-state-default{border:1px solid}.fc-button{color:inherit;border:1px solid #e7eaec;cursor:pointer;display:inline-block;height:1.9em;line-height:1.9em;overflow:hidden;padding:0 .6em;position:relative;white-space:nowrap}.fc-state-active{background-color:#1ab394;border-color:#1ab394;color:#fff}.fc-header-title h2{font-size:16px;font-weight:600;color:inherit}.fc-content .fc-widget-header,.fc-content .fc-widget-content{border-color:#e7eaec;font-weight:normal}.fc-border-separate tbody{background-color:#f8f8f8}.fc-state-highlight{background:none repeat scroll 0 0 #fcf8e3}.external-event{padding:5px 10px;border-radius:2px;cursor:pointer;margin-bottom:5px}.fc-ltr .fc-event-hori.fc-event-end,.fc-rtl .fc-event-hori.fc-event-start{border-radius:2px}.fc-event,.fc-agenda .fc-event-time,.fc-event a{padding:4px 6px;background-color:#1ab394;border-color:#1ab394}.fc-event-time,.fc-event-title{color:#717171;padding:0 1px}.ui-calendar .fc-event-time,.ui-calendar .fc-event-title{color:#fff}.chat-activity-list .chat-element{border-bottom:1px solid #e7eaec}.chat-element:first-child{margin-top:0}.chat-element{padding-bottom:15px}.chat-element,.chat-element .media{margin-top:15px}.chat-element,.media-body{overflow:hidden}.media-body{display:block;width:auto}.chat-element>.pull-left{margin-right:10px}.chat-element img.img-circle,.dropdown-messages-box img.img-circle{width:38px;height:38px}.chat-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.chat-element .actions{margin-top:10px}.chat-element .photos{margin:10px 0}.right.chat-element>.pull-right{margin-left:10px}.chat-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.chat{margin:0;padding:0;list-style:none}.chat li{margin-bottom:10px;padding-bottom:5px;border-bottom:1px dotted #b3a9a9}.chat li.left .chat-body{margin-left:60px}.chat li.right .chat-body{margin-right:60px}.chat li .chat-body p{margin:0;color:#777}.panel .slidedown .glyphicon,.chat .glyphicon{margin-right:5px}.chat-panel .panel-body{height:350px;overflow-y:scroll}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{background-color:#1ab394;border-color:#1ab394;color:#fff;z-index:2}.list-group-item-heading{margin-top:10px}.list-group-item-text{margin:0 0 10px;color:inherit;font-size:12px;line-height:inherit}.no-padding .list-group-item{border-left:none;border-right:0;border-bottom:0}.no-padding .list-group-item:first-child{border-left:none;border-right:0;border-bottom:0;border-top:0}.no-padding .list-group{margin-bottom:0}.list-group-item{background-color:inherit;border:1px solid #e7eaec;display:block;margin-bottom:-1px;padding:10px 15px;position:relative}.elements-list .list-group-item{border-left:none;border-right:0;padding:15px 25px}.elements-list .list-group-item:first-child{border-left:none;border-right:0;border-top:none!important}.elements-list .list-group{margin-bottom:0}.elements-list a{color:inherit}.elements-list .list-group-item.active,.elements-list .list-group-item:hover{background:#f3f3f4;color:inherit;border-color:#e7eaec;border-radius:0}.elements-list li.active{-webkit-transition:none;transition:none}.element-detail-box{padding:25px}.flot-chart{display:block;height:200px}.widget .flot-chart.dashboard-chart{display:block;height:120px;margin-top:40px}.flot-chart.dashboard-chart{display:block;height:180px;margin-top:40px}.flot-chart-content{width:100%;height:100%}.flot-chart-pie-content{width:200px;height:200px;margin:auto}.jqstooltip{position:absolute;display:block;left:0;top:0;visibility:hidden;background:#2b303a;background-color:rgba(43,48,58,0.8);color:white;text-align:left;white-space:nowrap;z-index:10000;padding:5px 5px 5px 5px;min-height:22px;border-radius:3px}.jqsfield{color:white;text-align:left}.h-200{min-height:200px}.legendLabel{padding-left:5px}.stat-list li:first-child{margin-top:0}.stat-list{list-style:none;padding:0;margin:0}.stat-percent{float:right}.stat-list li{margin-top:15px;position:relative}table.dataTable thead .sorting,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background:transparent}table.dataTable thead .sorting_asc:after{float:right;font-family:fontawesome}table.dataTable thead .sorting_desc:after{content:"\f0dd";float:right;font-family:fontawesome}table.dataTable thead .sorting:after{content:"\f0dc";float:right;font-family:fontawesome;color:rgba(50,50,50,0.5)}.dataTables_wrapper{padding-bottom:30px}.img-circle{border-radius:50%}.btn-circle{width:30px;height:30px;padding:6px 0;border-radius:15px;text-align:center;font-size:12px;line-height:1.428571429}.btn-circle.btn-lg{width:50px;height:50px;padding:10px 16px;border-radius:25px;font-size:18px;line-height:1.33}.btn-circle.btn-xl{width:70px;height:70px;padding:10px 16px;border-radius:35px;font-size:24px;line-height:1.33}.show-grid [class^="col-"]{padding-top:10px;padding-bottom:10px;border:1px solid #ddd;background-color:#eee!important}.show-grid{margin:15px 0}.css-animation-box h1{font-size:44px}.animation-efect-links a{padding:4px 6px;font-size:12px}#animation_box{background-color:#f9f8f8;border-radius:16px;width:80%;margin:0 auto;padding-top:80px}.animation-text-box{position:absolute;margin-top:40px;left:50%;margin-left:-100px;width:200px}.animation-text-info{position:absolute;margin-top:-60px;left:50%;margin-left:-100px;width:200px;font-size:10px}.animation-text-box h2{font-size:54px;font-weight:600;margin-bottom:5px}.animation-text-box p{font-size:12px;text-transform:uppercase}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#1ab394;position:fixed;z-index:2000;top:0;width:100%;height:2px}.pace-inactive{display:none}.widget{border-radius:5px;padding:15px 20px;margin-bottom:10px;margin-top:10px}.widget.style1 h2{font-size:30px}.widget h2,.widget h3{margin-top:5px;margin-bottom:0}.widget-text-box{padding:20px;border:1px solid #e7eaec;background:#fff}.widget-head-color-box{border-radius:5px 5px 0 0;margin-top:10px}.widget .flot-chart{height:100px}.vertical-align div{display:inline-block;vertical-align:middle}.vertical-align h2,.vertical-align h3{margin:0}.todo-list{list-style:none outside none;margin:0;padding:0;font-size:14px}.todo-list.small-list{font-size:12px}.todo-list.small-list>li{background:#f3f3f4;border-left:none;border-right:0;border-radius:4px;color:inherit;margin-bottom:2px;padding:6px 6px 6px 12px}.todo-list.small-list .btn-xs,.todo-list.small-list .btn-group-xs>.btn{border-radius:5px;font-size:10px;line-height:1.5;padding:1px 2px 1px 5px}.todo-list>li{background:#f3f3f4;border-left:6px solid #e7eaec;border-right:6px solid #e7eaec;border-radius:4px;color:inherit;margin-bottom:2px;padding:10px}.todo-list .handle{cursor:move;display:inline-block;font-size:16px;margin:0 5px}.todo-list>li .label{font-size:9px;margin-left:10px}.check-link{font-size:16px}.todo-completed{text-decoration:line-through}.geo-statistic h1{font-size:36px;margin-bottom:0}.glyphicon.fa{font-family:"FontAwesome"}.inline{display:inline-block!important}.input-s-sm{width:120px}.input-s{width:200px}.input-s-lg{width:250px}.i-checks{padding-left:0}.form-control,.single-line{background:#fff none;border:1px solid #e5e6e7;border-radius:4px;color:inherit;display:block;padding:3px 6px 4px;-webkit-transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;width:100%;height:31px;font-size:14px}.form-control.kv-fileinput-caption{height:34px!important}.form-control:focus,.single-line:focus{border-color:#3c8dbc!important}.has-success .form-control{border-color:#1ab394}.has-warning .form-control{border-color:#f8ac59}.has-error .form-control{border-color:#ed5565}.has-success .control-label{color:#1ab394}.has-warning .control-label{color:#f8ac59}.has-error .control-label{color:#ed5565}.input-group-addon{background-color:#fff;border:1px solid #e5e6e7;border-radius:4px;color:inherit;font-size:14px;font-weight:400;line-height:1;padding:6px 12px;text-align:center}.spinner-buttons.input-group-btn .btn-xs{line-height:1.13}.spinner-buttons.input-group-btn{width:20%}.noUi-connect{background:none repeat scroll 0 0 #1ab394;box-shadow:none}.slider_red .noUi-connect{background:none repeat scroll 0 0 #ed5565;box-shadow:none}.ui-sortable .ibox-title{cursor:move}.ui-sortable-placeholder{border:1px dashed #cecece!important;visibility:visible!important;background:#e7eaec}.ibox.ui-sortable-placeholder{margin:0 0 23px!important}.tabs-container .panel-body{background:#fff;border:1px solid #e7eaec;border-radius:2px;padding:20px;position:relative}.tabs-container .nav-tabs>li.active>a,.tabs-container .nav-tabs>li.active>a:hover,.tabs-container .nav-tabs>li.active>a:focus{border:1px solid #e7eaec;border-bottom-color:transparent;background-color:#fff}.tabs-container .nav-tabs>li{float:left;margin-bottom:-1px}.tabs-container .tab-pane .panel-body{border-top:0}.tabs-container .nav-tabs>li.active>a,.tabs-container .nav-tabs>li.active>a:hover,.tabs-container .nav-tabs>li.active>a:focus{border:1px solid #e7eaec;border-bottom-color:transparent}.tabs-container .nav-tabs{border-bottom:1px solid #e7eaec}.tabs-container .tab-pane .panel-body{border-top:0}.tabs-container .tabs-left .tab-pane .panel-body,.tabs-container .tabs-right .tab-pane .panel-body{border-top:1px solid #e7eaec}.tabs-container .nav-tabs>li a:hover{background:transparent;border-color:transparent}.tabs-container .tabs-below>.nav-tabs,.tabs-container .tabs-right>.nav-tabs,.tabs-container .tabs-left>.nav-tabs{border-bottom:0}.tabs-container .tabs-left .panel-body{position:static}.tabs-container .tabs-left>.nav-tabs,.tabs-container .tabs-right>.nav-tabs{width:20%}.tabs-container .tabs-left .panel-body{width:80%;margin-left:20%}.tabs-container .tabs-right .panel-body{width:80%;margin-right:20%}.tabs-container .tab-content>.tab-pane,.tabs-container .pill-content>.pill-pane{display:none}.tabs-container .tab-content>.active,.tabs-container .pill-content>.active{display:block}.tabs-container .tabs-below>.nav-tabs{border-top:1px solid #e7eaec}.tabs-container .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-container .tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px}.tabs-container .tabs-below>.nav-tabs>li>a:hover,.tabs-container .tabs-below>.nav-tabs>li>a:focus{border-top-color:#e7eaec;border-bottom-color:transparent}.tabs-container .tabs-left>.nav-tabs>li,.tabs-container .tabs-right>.nav-tabs>li{float:none}.tabs-container .tabs-left>.nav-tabs>li>a,.tabs-container .tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-container .tabs-left>.nav-tabs{float:left;margin-right:19px}.tabs-container .tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px}.tabs-container .tabs-left>.nav-tabs .active>a,.tabs-container .tabs-left>.nav-tabs .active>a:hover,.tabs-container .tabs-left>.nav-tabs .active>a:focus{border-color:#e7eaec transparent #e7eaec #e7eaec;border-right-color:#fff}.tabs-container .tabs-right>.nav-tabs{float:right;margin-left:19px}.tabs-container .tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0}.tabs-container .tabs-right>.nav-tabs .active>a,.tabs-container .tabs-right>.nav-tabs .active>a:hover,.tabs-container .tabs-right>.nav-tabs .active>a:focus{border-color:#e7eaec #e7eaec #e7eaec transparent;border-left-color:#fff;z-index:1}.onoffswitch{position:relative;width:54px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:2px solid #1ab394;border-radius:3px}.onoffswitch-inner{display:block;width:200%;margin-left:-100%;-webkit-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.onoffswitch-inner:before,.onoffswitch-inner:after{display:block;float:left;width:50%;padding:0;font-size:10px;color:white;font-family:Trebuchet,Arial,sans-serif;font-weight:bold;box-sizing:border-box}.onoffswitch-inner:before{content:"ON";padding-left:7px;background-color:#1ab394;color:#fff}.onoffswitch-inner:after{content:"OFF";padding-right:7px;background-color:#fff;color:#919191;text-align:right}.onoffswitch-switch{display:block;width:18px;margin:0;background:#fff;border:2px solid #1ab394;border-radius:3px;position:absolute;top:0;bottom:0;right:36px;-webkit-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.dd{position:relative;display:block;margin:0;padding:0;list-style:none;font-size:13px;line-height:20px}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-item,.dd-empty,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;margin:5px 0;padding:5px 10px;color:#333;text-decoration:none;border:1px solid #e7eaec;background:#f5f5f5;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box}.dd-handle span{font-weight:bold}.dd-handle:hover{background:#f0f0f0;cursor:pointer;font-weight:bold}.dd-item>button{display:block;position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:5px 0;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:transparent;font-size:12px;line-height:1;text-align:center;font-weight:bold}.dd-item>button:before{content:'+';display:block;position:absolute;width:100%;text-align:center;text-indent:0}.dd-item>button[data-action="collapse"]:before{content:'-'}#nestable2 .dd-item>button{font-family:FontAwesome;height:34px;width:33px;color:#c1c1c1}#nestable2 .dd-item>button:before{content:"\f067"}#nestable2 .dd-item>button[data-action="collapse"]:before{content:"\f068"}.dd-placeholder,.dd-empty{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#e5e5e5;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-size:60px 60px;background-position:0 0,30px 30px}.dd-dragel{position:absolute;z-index:9999;pointer-events:none}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel .dd-handle{box-shadow:2px 4px 6px 0 rgba(0,0,0,0.1)}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #ddd;border-bottom:2px solid #ddd}#nestable-menu{padding:0;margin:10px 0 20px 0}#nestable-output,#nestable2-output{width:100%;font-size:.75em;line-height:1.333333em;font-family:lucida grande,lucida sans unicode,helvetica,arial,sans-serif;padding:5px;box-sizing:border-box;-moz-box-sizing:border-box}#nestable2 .dd-handle{color:inherit;border:1px dashed #e7eaec;background:#f3f3f4;padding:10px}#nestable2 span.label{margin-right:10px}#nestable-output,#nestable2-output{font-size:12px;padding:25px;box-sizing:border-box;-moz-box-sizing:border-box}.CodeMirror{border:1px solid #eee;height:auto}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.google-map{height:300px}.gridStyle{border:1px solid #d4d4d4;width:100%;height:400px}.gridStyle2{border:1px solid #d4d4d4;width:500px;height:300px}.ngH eaderCell{border-right:0;border-bottom:1px solid #e7eaec}.ngCell{border-right:0}.ngTopPanel{background:#f5f5f6}.ngRow.even{background:#f9f9f9}.ngRow.selected{background:#ebf2f1}.ngRow{border-bottom:1px solid #e7eaec}.ngCell{background-color:transparent}.ngHeaderCell{border-right:0}#toast-container>.toast{background-image:none!important}#toast-container>.toast:before{position:fixed;font-family:FontAwesome;font-size:24px;line-height:24px;float:left;color:#FFF;padding-right:.5em;margin:auto .5em auto -1.5em}#toast-container>div{box-shadow:0 0 3px #999;opacity:.9;-ms-filter:alpha(opacity = 90);filter:alpha(opacity = 90)}#toast-container>:hover{box-shadow:0 0 4px #999;opacity:1;-ms-filter:alpha(opacity = 100);filter:alpha(opacity = 100);cursor:pointer}.toast{background-color:#1ab394}.toast-success{background-color:#1ab394}.toast-error{background-color:#ed5565}.toast-info{background-color:#23c6c8}.toast-warning{background-color:#f8ac59}.toast-top-full-width{margin-top:20px}.toast-bottom-full-width{margin-bottom:20px}.img-container,.img-preview{overflow:hidden;text-align:center;width:100%}.img-preview-sm{height:130px;width:200px}.forum-post-container .media{margin:10px 10px 10px 10px;padding:20px 10px 20px 10px;border-bottom:1px solid #f1f1f1}.forum-avatar{float:left;margin-right:20px;text-align:center;width:110px}.forum-avatar .img-circle{height:48px;width:48px}.author-info{color:#676a6c;font-size:11px;margin-top:5px;text-align:center}.forum-post-info{padding:9px 12px 6px 12px;background:#f9f9f9;border:1px solid #f1f1f1}.media-body>.media{background:#f9f9f9;border-radius:3px;border:1px solid #f1f1f1}.forum-post-container .media-body .photos{margin:10px 0}.forum-photo{max-width:140px;border-radius:3px}.media-body>.media .forum-avatar{width:70px;margin-right:10px}.media-body>.media .forum-avatar .img-circle{height:38px;width:38px}.mid-icon{font-size:66px}.forum-item{margin:10px 0;padding:10px 0 20px;border-bottom:1px solid #f1f1f1}.views-number{font-size:24px;line-height:18px;font-weight:400}.forum-container,.forum-post-container{padding:30px!important}.forum-item small{color:#999}.forum-item .forum-sub-title{color:#999;margin-left:50px}.forum-title{margin:15px 0 15px 0}.forum-info{text-align:center}.forum-desc{color:#999}.forum-icon{float:left;width:30px;margin-right:20px;text-align:center}a.forum-item-title{color:inherit;display:block;font-size:18px;font-weight:600}a.forum-item-title:hover{color:inherit}.forum-icon .fa{font-size:30px;margin-top:8px;color:#9b9b9b}.forum-item.active .fa{color:#1ab394}.forum-item.active a.forum-item-title{color:#1ab394}@media(max-width :992px){.forum-info{margin:15px 0 10px 0;display:none}.forum-desc{float:none!important}}.vertical-container{width:90%;max-width:1170px;margin:0 auto}.vertical-container::after{content:'';display:table;clear:both}#vertical-timeline{position:relative;padding:0;margin-top:2em;margin-bottom:2em}#vertical-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#f1f1f1}.vertical-timeline-content .btn{float:right}#vertical-timeline.light-timeline:before{background:#e7eaec}.dark-timeline .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}.dark-timeline.center-orientation .vertical-timeline-content:before{border-color:transparent transparent transparent #f5f5f5}.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before,.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}.dark-timeline .vertical-timeline-content,.dark-timeline.center-orientation .vertical-timeline-content{background:#f5f5f5}@media only screen and (min-width:1170px){#vertical-timeline.center-orientation{margin-top:3em;margin-bottom:3em}#vertical-timeline.center-orientation:before{left:50%;margin-left:-2px}}@media only screen and (max-width:1170px){.center-orientation.dark-timeline .vertical-timeline-content:before{border-color:transparent #f5f5f5 transparent transparent}}.vertical-timeline-block{position:relative;margin:2em 0}.vertical-timeline-block:after{content:"";display:table;clear:both}.vertical-timeline-block:first-child{margin-top:0}.vertical-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-block{margin:4em 0}.center-orientation .vertical-timeline-block:first-child{margin-top:0}.center-orientation .vertical-timeline-block:last-child{margin-bottom:0}}.vertical-timeline-icon{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;font-size:16px;border:3px solid #f1f1f1;text-align:center}.vertical-timeline-icon i{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-9px}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-icon{width:50px;height:50px;left:50%;margin-left:-25px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden;font-size:19px}.center-orientation .vertical-timeline-icon i{margin-left:-12px;margin-top:-10px}.center-orientation .cssanimations .vertical-timeline-icon.is-hidden{visibility:hidden}}.vertical-timeline-content{position:relative;margin-left:60px;background:white;border-radius:.25em;padding:1em}.vertical-timeline-content:after{content:"";display:table;clear:both}.vertical-timeline-content h2{font-weight:400;margin-top:4px}.vertical-timeline-content p{margin:1em 0;line-height:1.6}.vertical-timeline-content .vertical-date{float:left;font-weight:500}.vertical-date small{color:#1ab394;font-weight:400}.vertical-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid white}@media only screen and (min-width:768px){.vertical-timeline-content h2{font-size:18px}.vertical-timeline-content p{font-size:13px}}@media only screen and (min-width:1170px){.center-orientation .vertical-timeline-content{margin-left:0;padding:1.6em;width:45%}.center-orientation .vertical-timeline-content::before{top:24px;left:100%;border-color:transparent;border-left-color:white}.center-orientation .vertical-timeline-content .btn{float:left}.center-orientation .vertical-timeline-content .vertical-date{position:absolute;width:100%;left:122%;top:2px;font-size:14px}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content{float:right}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent;border-right-color:white}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn{float:right}.center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date{left:auto;right:122%;text-align:right}.center-orientation .cssanimations .vertical-timeline-content.is-hidden{visibility:hidden}}.sidebard-panel{width:220px;background:#ebebed;padding:10px 20px;position:absolute;right:0}.sidebard-panel .feed-element img.img-circle{width:32px;height:32px}.sidebard-panel .feed-element,.media-body,.sidebard-panel p{font-size:12px}.sidebard-panel .feed-element{margin-top:20px;padding-bottom:0}.sidebard-panel .list-group{margin-bottom:10px}.sidebard-panel .list-group .list-group-item{padding:5px 0;font-size:12px;border:0}.sidebar-content .wrapper,.wrapper.sidebar-content{padding-right:240px!important}#right-sidebar{background-color:#fff;border-left:1px solid #e7eaec;border-top:1px solid #e7eaec;overflow:hidden;position:fixed;top:60px;width:260px!important;z-index:1009;bottom:0;right:-260px}#right-sidebar.sidebar-open{right:0}#right-sidebar.sidebar-open.sidebar-top{top:0;border-top:0}.sidebar-container ul.nav-tabs{border:0}.sidebar-container ul.nav-tabs.navs-4 li{width:25%}.sidebar-container ul.nav-tabs.navs-3 li{width:33.3333%}.sidebar-container ul.nav-tabs.navs-2 li{width:50%}.sidebar-container ul.nav-tabs li{border:0}.sidebar-container ul.nav-tabs li a{border:0;padding:12px 10px;margin:0;border-radius:0;background:#2f4050;color:#fff;text-align:center;border-right:1px solid #334556}.sidebar-container ul.nav-tabs li.active a{border:0;background:#f9f9f9;color:#676a6c;font-weight:bold}.sidebar-container .nav-tabs>li.active>a:hover,.sidebar-container .nav-tabs>li.active>a:focus{border:0}.sidebar-container ul.sidebar-list{margin:0;padding:0}.sidebar-container ul.sidebar-list li{border-bottom:1px solid #e7eaec;padding:15px 20px;list-style:none;font-size:12px}.sidebar-container .sidebar-message:nth-child(2n+2){background:#f9f9f9}.sidebar-container ul.sidebar-list li a{text-decoration:none;color:inherit}.sidebar-container .sidebar-content{padding:15px 20px;font-size:12px}.sidebar-container .sidebar-title{background:#f9f9f9;padding:20px;border-bottom:1px solid #e7eaec}.sidebar-container .sidebar-title h3{margin-bottom:3px;padding-left:2px}.sidebar-container .tab-content h4{margin-bottom:5px}.sidebar-container .sidebar-message>a>.pull-left{margin-right:10px}.sidebar-container .sidebar-message>a{text-decoration:none;color:inherit}.sidebar-container .sidebar-message{padding:15px 20px}.sidebar-container .sidebar-message .message-avatar{height:38px;width:38px;border-radius:50%}.sidebar-container .setings-item{padding:15px 20px;border-bottom:1px solid #e7eaec}body{font-family:"open sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;color:#676a6c;overflow-x:hidden}html,body{height:100%}body.full-height-layout #wrapper,body.full-height-layout #page-wrapper{height:100%}#page-wrapper{min-height:auto}body.boxed-layout #wrapper{background-color:#2f4050;max-width:1200px;margin:0 auto}.top-navigation.boxed-layout #wrapper,.boxed-layout #wrapper.top-navigation{max-width:1300px!important}.block{display:block}.clear{display:block;overflow:hidden}a{cursor:pointer}a:hover,a:focus{text-decoration:none}.border-bottom{border-bottom:1px solid #e7eaec!important}.font-bold{font-weight:600}.font-noraml{font-weight:400}.text-uppercase{text-transform:uppercase}.b-r{border-right:1px solid #e7eaec}.hr-line-dashed{border-top:1px dashed #e7eaec;color:#fff;background-color:#fff;height:1px;margin:20px 0}.hr-line-solid{border-bottom:1px solid #e7eaec;background-color:rgba(0,0,0,0);border-style:solid!important;margin-top:15px;margin-bottom:15px}video{width:100%!important;height:auto!important}.gallery>.row>div{margin-bottom:15px}.fancybox img{margin-bottom:5px;width:24%}.note-editor{height:auto!important;min-height:100px;border:solid 1px #e5e6e7}.modal-content{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,0);border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.3);outline:0 none}.modal-dialog{z-index:1200}.modal-body{padding:20px 30px 30px 30px}.inmodal .modal-body{background:#f8fafb}.inmodal .modal-header{padding:30px 15px;text-align:center}.animated.modal.fade .modal-dialog{-webkit-transform:none;-ms-transform:none;transform:none}.inmodal .modal-title{font-size:26px}.inmodal .modal-icon{font-size:84px;color:#e2e3e3}.modal-footer{margin-top:0}#wrapper{width:100%;overflow-x:hidden;background-color:#2f4050}.wrapper{padding:0 20px}.wrapper-content{padding:20px}#page-wrapper{padding:0 15px;position:inherit;margin:0 0 0 200px}.title-action{text-align:right;padding-top:30px}.ibox-content h1,.ibox-content h2,.ibox-content h3,.ibox-content h4,.ibox-content h5,.ibox-title h1,.ibox-title h2,.ibox-title h3,.ibox-title h4,.ibox-title h5{margin-top:5px}ul.unstyled,ol.unstyled{list-style:none outside none;margin-left:0}.big-icon{font-size:160px;color:#e5e6e7}.footer{background:none repeat scroll 0 0 white;border-top:1px solid #e7eaec;overflow:hidden;padding:10px 20px;margin:0 -15px;height:36px}.footer.fixed_full{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:white;border-top:1px solid #e7eaec}.footer.fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;padding:10px 20px;background:white;border-top:1px solid #e7eaec;margin-left:220px}body.mini-navbar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0 0 0 70px}body.mini-navbar.canvas-menu .footer.fixed,body.canvas-menu .footer.fixed{margin:0!important}body.fixed-sidebar.body-small.mini-navbar .footer.fixed{margin:0 0 0 220px}body.body-small .footer.fixed{margin-left:0}.page-heading{border-top:0;padding:0 20px 20px}.panel-heading h1,.panel-heading h2{margin-bottom:5px}.content-tabs{position:relative;height:39px;background:#fafafa;line-height:39px}.content-tabs .roll-nav,.page-tabs-list{position:absolute;width:30px;height:38px;text-align:center;color:#999;z-index:2;top:0}.content-tabs .roll-left{left:0;border-right:solid 1px #eee}.content-tabs .roll-right{right:0;border-left:solid 1px #eee}.content-tabs button{background:#fff;border:0;height:40px;width:40px;outline:0}.content-tabs button:hover{background:#fafafa}nav.page-tabs{margin-left:30px;width:100000px;height:39px;overflow:hidden}nav.page-tabs .page-tabs-content{float:left}.page-tabs a{display:block;float:left;border-right:solid 1px #eee;padding:0 15px}.page-tabs a i:hover{color:#c00}.page-tabs a:hover,.content-tabs .roll-nav:hover{color:#777;background:#f2f2f2;cursor:pointer}.roll-right.tabRight{right:60px}.roll-right.btn-group{right:60px;width:80px;padding:0}.roll-right.btn-group button{width:80px}.roll-right.tabReload{background:#fff;height:38px;width:60px;outline:0}.dropdown-menu-right{left:auto}#content-main{height:calc(100% - 127px);overflow:hidden}.tagsview-hide#content-main{height:calc(100% - 88px);overflow:hidden}.footer-hide#content-main{height:calc(100% - 91px);overflow:hidden}.tagsview-footer-hide#content-main{height:calc(100% - 52px);overflow:hidden}.fixed-nav #content-main{height:calc(100% - 80px);overflow:hidden}.table-bordered{border:1px solid #ebebeb}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{background-color:#f5f5f6;border-bottom-width:1px}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #e7e7e7}.table>thead>tr>th{border-bottom:1px solid #ddd;vertical-align:bottom}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #e7eaec;line-height:1.42857;padding:8px;vertical-align:middle}.panel.blank-panel{background:0;margin:0}.blank-panel .panel-heading{padding-bottom:0}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background:0;border-color:#ddd #ddd rgba(0,0,0,0);border-bottom:#f3f3f4;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid;border-width:1px;color:#555;cursor:default}.nav.nav-tabs li{background:0;border:0}.nav-tabs>li>a{color:#a7b1c2;font-weight:600;padding:10px 20px 10px 25px}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{background-color:#e6e6e6;color:#676a6c}.ui-tab .tab-content{padding:20px 0}.no-padding{padding:0!important}.no-borders{border:none!important}.no-margins{margin:0!important}.no-top-border{border-top:0!important}.ibox-content.text-box{padding-bottom:0;padding-top:15px}.border-left-right{border-left:1px solid #e7eaec;border-right:1px solid #e7eaec;border-top:0;border-bottom:0}.border-left{border-left:1px solid #e7eaec;border-right:0;border-top:0;border-bottom:0}.border-right{border-left:none;border-right:1px solid #e7eaec;border-top:0;border-bottom:0}.full-width{width:100%!important}.link-block{font-size:12px;padding:10px}.nav.navbar-top-links .link-block a{font-size:12px}.link-block a{font-size:10px;color:inherit}body.mini-navbar .branding{display:none}img.circle-border{border:6px solid #fff;border-radius:50%}.branding{float:left;color:#fff;font-size:18px;font-weight:600;padding:17px 20px;text-align:center;background-color:#1ab394}.login-panel{margin-top:25%}.page-header{padding:20px 0 9px;margin:0 0 20px;border-bottom:1px solid #eee}.fontawesome-icon-list{margin-top:22px}.fontawesome-icon-list .fa-hover a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;color:#222;line-height:32px;height:32px;padding-left:10px;border-radius:4px}.fontawesome-icon-list .fa-hover a .fa{width:32px;font-size:14px;display:inline-block;text-align:right;margin-right:10px}.fontawesome-icon-list .fa-hover a:hover{background-color:#1d9d74;color:#fff;text-decoration:none}.fontawesome-icon-list .fa-hover a:hover .fa{font-size:30px;vertical-align:-6px}.fontawesome-icon-list .fa-hover a:hover .text-muted{color:#bbe2d5}.feature-list .col-md-4{margin-bottom:22px}.feature-list h4 .fa:before{vertical-align:-10%;font-size:28px;display:inline-block;width:1.07142857em;text-align:center;margin-right:5px}.ui-draggable .ibox-title{cursor:move}.breadcrumb{background-color:#fff;padding:0;margin-bottom:0}.breadcrumb>li a{color:inherit}.breadcrumb>.active{color:inherit}code{background-color:#f9f2f4;border-radius:4px;color:#ca4440;font-size:90%;padding:2px 4px;white-space:nowrap}.ibox{clear:both;margin-bottom:25px;margin-top:0;padding:0}.ibox.collapsed .ibox-content{display:none}.ibox.collapsed .fa.fa-chevron-up:before{content:"\f078"}.ibox.collapsed .fa.fa-chevron-down:before{content:"\f077"}.ibox:after,.ibox:before{display:table}.ibox-title{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background-color:#fff;border-color:#e7eaec;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid solid none;border-width:0;color:inherit;margin-bottom:0;padding:14px 15px 7px;min-height:40px}.ibox-content{background-color:#fff;color:inherit;padding:15px 20px 20px 20px;border-color:#e7eaec;-webkit-border-image:none;-o-border-image:none;border-image:none;border-style:solid solid none;border-width:1px 0}table.table-mail tr td{padding:12px}.table-mail .check-mail{padding-left:20px}.table-mail .mail-date{padding-right:20px}.star-mail,.check-mail{width:40px}.unread td a,.unread td{font-weight:600;color:inherit}.read td a,.read td{font-weight:normal;color:inherit}.unread td{background-color:#f9f8f8}.ibox-content{clear:both}.ibox-heading{background-color:#f3f6fb;border-bottom:0}.ibox-heading h3{font-weight:200;font-size:24px}.ibox-title h5{display:inline-block;font-size:14px;margin:0 0 7px;padding:0;text-overflow:ellipsis;float:left}.ibox-title .label{float:left;margin-left:4px}.ibox-tools{display:inline-block;float:right;margin-top:0;position:relative;padding:0}.ibox-tools a{cursor:pointer;margin-left:5px;color:#676a6c}.ibox-tools a.btn-primary{color:#fff}.ibox-tools .dropdown-menu>li>a{padding:4px 10px;font-size:12px}.ibox .open>.dropdown-menu{left:auto;right:0}.gray-bg{background-color:#f3f3f4}.white-bg{background-color:#fff}.navy-bg{background-color:#1ab394;color:#fff}.blue-bg{background-color:#1c84c6;color:#fff}.lazur-bg{background-color:#23c6c8;color:#fff}.yellow-bg{background-color:#f8ac59;color:#fff}.red-bg{background-color:#ed5565;color:#fff}.black-bg{background-color:#262626}.panel-primary{border-color:#1ab394}.panel-primary>.panel-heading{background-color:#1ab394;border-color:#1ab394}.panel-success{border-color:#1c84c6}.panel-success>.panel-heading{background-color:#1c84c6;border-color:#1c84c6;color:#fff}.panel-info{border-color:#23c6c8}.panel-info>.panel-heading{background-color:#23c6c8;border-color:#23c6c8;color:#fff}.panel-warning{border-color:#f8ac59}.panel-warning>.panel-heading{background-color:#f8ac59;border-color:#f8ac59;color:#fff}.panel-danger{border-color:#ed5565}.panel-danger>.panel-heading{background-color:#ed5565;border-color:#ed5565;color:#fff}.progress-bar{background-color:#1ab394}.progress-small,.progress-small .progress-bar{height:10px}.progress-small,.progress-mini{margin-top:5px}.progress-mini,.progress-mini .progress-bar{height:5px;margin-bottom:0}.progress-bar-navy-light{background-color:#3dc7ab}.progress-bar-success{background-color:#1c84c6}.progress-bar-info{background-color:#23c6c8}.progress-bar-warning{background-color:#f8ac59}.progress-bar-danger{background-color:#ed5565}.panel-title{font-size:inherit}.jumbotron{border-radius:6px;padding:40px}.jumbotron h1{margin-top:0}.text-navy{color:#1ab394}.text-primary{color:inherit}.text-success{color:#1c84c6}.text-info{color:#23c6c8}.text-warning{color:#f8ac59}.text-danger{color:#ed5565}.text-muted{color:#888}.simple_tag{background-color:#f3f3f4;border:1px solid #e7eaec;border-radius:2px;color:inherit;font-size:10px;margin-right:5px;margin-top:5px;padding:5px 12px;display:inline-block}.img-shadow{box-shadow:0 0 3px 0 #919191}.dashboards\.dashboard_2 nav.navbar,.dashboards\.dashboard_3 nav.navbar,.mailbox\.inbox nav.navbar,.mailbox\.email_view nav.navbar,.mailbox\.email_compose nav.navbar,.dashboards\.dashboard_4_1 nav.navbar{background:#fff}.Dashboard_2 .navbar.navbar-static-top,.Dashboard_3 .navbar.navbar-static-top,.Dashboard_4_1 .navbar.navbar-static-top,.ComposeEmail .navbar.navbar-static-top,.EmailView .navbar.navbar-static-top,.Inbox .navbar.navbar-static-top{background:#fff}a.close-canvas-menu{position:absolute;top:10px;right:15px;z-index:1011;color:#a7b1c2}a.close-canvas-menu:hover{color:#fff}.full-height{height:100%}.fh-breadcrumb{height:calc(100% - 196px);margin:0 -15px;position:relative}.fh-no-breadcrumb{height:calc(100% - 99px);margin:0 -15px;position:relative}.fh-column{background:#fff;height:100%;width:240px;float:left}.modal-backdrop{z-index:2040!important}.modal{z-index:2050!important}.spiner-example{height:200px;padding-top:70px}.p-xxs{padding:5px}.p-xs{padding:10px}.p-sm{padding:15px}.p-m{padding:20px}.p-md{padding:25px}.p-lg{padding:30px}.p-xl{padding:40px}.m-xxs{margin:2px 4px}.m-xs{margin:5px}.m-sm{margin:10px}.m{margin:15px}.m-md{margin:20px}.m-lg{margin:30px}.m-xl{margin:50px}.m-n{margin:0!important}.m-l-none{margin-left:0}.m-l-xs{margin-left:5px}.m-l-sm{margin-left:10px}.m-l{margin-left:15px}.m-l-md{margin-left:20px}.m-l-lg{margin-left:30px}.m-l-xl{margin-left:40px}.m-l-n-xxs{margin-left:-1px}.m-l-n-xs{margin-left:-5px}.m-l-n-sm{margin-left:-10px}.m-l-n{margin-left:-15px}.m-l-n-md{margin-left:-20px}.m-l-n-lg{margin-left:-30px}.m-l-n-xl{margin-left:-40px}.m-t-none{margin-top:0}.m-t-xxs{margin-top:1px}.m-t-xs{margin-top:5px}.m-t-sm{margin-top:10px}.m-t{margin-top:15px}.m-t-md{margin-top:20px}.m-t-lg{margin-top:30px}.m-t-xl{margin-top:40px}.m-t-n-xxs{margin-top:-1px}.m-t-n-xs{margin-top:-5px}.m-t-n-sm{margin-top:-10px}.m-t-n{margin-top:-15px}.m-t-n-md{margin-top:-20px}.m-t-n-lg{margin-top:-30px}.m-t-n-xl{margin-top:-40px}.m-r-none{margin-right:0}.m-r-xxs{margin-right:1px}.m-r-xs{margin-right:5px}.m-r-sm{margin-right:10px}.m-r{margin-right:15px}.m-r-md{margin-right:20px}.m-r-lg{margin-right:30px}.m-r-xl{margin-right:40px}.m-r-n-xxs{margin-right:-1px}.m-r-n-xs{margin-right:-5px}.m-r-n-sm{margin-right:-10px}.m-r-n{margin-right:-15px}.m-r-n-md{margin-right:-20px}.m-r-n-lg{margin-right:-30px}.m-r-n-xl{margin-right:-40px}.m-b-none{margin-bottom:0}.m-b-xxs{margin-bottom:1px}.m-b-xs{margin-bottom:5px}.m-b-sm{margin-bottom:10px}.m-b{margin-bottom:15px}.m-b-md{margin-bottom:20px}.m-b-lg{margin-bottom:30px}.m-b-xl{margin-bottom:40px}.m-b-n-xxs{margin-bottom:-1px}.m-b-n-xs{margin-bottom:-5px}.m-b-n-sm{margin-bottom:-10px}.m-b-n{margin-bottom:-15px}.m-b-n-md{margin-bottom:-20px}.m-b-n-lg{margin-bottom:-30px}.m-b-n-xl{margin-bottom:-40px}.space-15{margin:15px 0}.space-20{margin:20px 0}.space-25{margin:25px 0}.space-30{margin:30px 0}body.modal-open{padding-right:inherit!important}.search-form{margin-top:10px}.search-result h3{margin-bottom:0;color:#1e0fbe}.search-result .search-link{color:#006621}.search-result p{font-size:12px;margin-top:5px}.contact-box{background-color:#fff;border:1px solid #e7eaec;padding:20px;margin-bottom:20px}.contact-box a{color:inherit}.invoice-table tbody>tr>td:last-child,.invoice-table tbody>tr>td:nth-child(4),.invoice-table tbody>tr>td:nth-child(3),.invoice-table tbody>tr>td:nth-child(2){text-align:right}.invoice-table thead>tr>th:last-child,.invoice-table thead>tr>th:nth-child(4),.invoice-table thead>tr>th:nth-child(3),.invoice-table thead>tr>th:nth-child(2){text-align:right}.invoice-total>tbody>tr>td:first-child{text-align:right}.invoice-total>tbody>tr>td{border:0 none}.invoice-total>tbody>tr>td:last-child{border-bottom:1px solid #ddd;text-align:right;width:15%}.middle-box{max-width:400px;z-index:100;margin:0 auto;padding-top:40px}.lockscreen.middle-box{width:200px;padding-top:110px}.loginscreen.middle-box{width:300px}.loginColumns{max-width:800px;margin:0 auto;padding:100px 20px 20px 20px}.passwordBox{max-width:460px;margin:0 auto;padding:100px 20px 20px 20px}.logo-name{color:#e6e6e6;font-size:180px;font-weight:800;letter-spacing:-10px;margin-bottom:0}.middle-box h1{font-size:170px}.wrapper .middle-box{margin-top:140px}.lock-word{z-index:10;position:absolute;top:110px;left:50%;margin-left:-470px}.lock-word span{font-size:100px;font-weight:600;color:#e9e9e9;display:inline-block}.lock-word .first-word{margin-right:160px}.dashboard-header{border-top:0;padding:20px 20px 20px 20px}.dashboard-header h2{margin-top:10px;font-size:26px}.fist-item{border-top:none!important}.statistic-box{margin-top:40px}.dashboard-header .list-group-item span.label{margin-right:10px}.list-group.clear-list .list-group-item{border-top:1px solid #e7eaec;border-bottom:0;border-right:0;border-left:0;padding:10px 0}ul.clear-list:first-child{border-top:none!important}.timeline-item .date i{position:absolute;top:0;right:0;padding:5px;width:30px;text-align:center;border-top:1px solid #e7eaec;border-bottom:1px solid #e7eaec;border-left:1px solid #e7eaec;background:#f8f8f8}.timeline-item .date{text-align:right;width:110px;position:relative;padding-top:30px}.timeline-item .content{border-left:1px solid #e7eaec;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.timeline-item .content:hover{background:#f6f6f6}ul.notes li,ul.tag-list li{list-style:none}ul.notes li h4{margin-top:20px;font-size:16px}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:140px;width:140px;padding:1em;position:relative}ul.notes li div small{position:absolute;top:5px;right:5px;font-size:10px}ul.notes li div a{position:absolute;right:10px;bottom:10px;color:inherit}ul.notes li{margin:10px 40px 50px 0;float:left}ul.notes li div p{font-size:12px}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:140px;width:140px;padding:1em;box-shadow:5px 5px 2px rgba(33,33,33,0.7)}ul.notes li div{-webkit-transform:rotate(-6deg);-o-transform:rotate(-6deg);-moz-transform:rotate(-6deg)}ul.notes li:nth-child(even) div{-o-transform:rotate(4deg);-webkit-transform:rotate(4deg);-moz-transform:rotate(4deg);position:relative;top:5px}ul.notes li:nth-child(3n) div{-o-transform:rotate(-3deg);-webkit-transform:rotate(-3deg);-moz-transform:rotate(-3deg);position:relative;top:-5px}ul.notes li:nth-child(5n) div{-o-transform:rotate(5deg);-webkit-transform:rotate(5deg);-moz-transform:rotate(5deg);position:relative;top:-10px}ul.notes li div:hover,ul.notes li div:focus{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);position:relative;z-index:5}ul.notes li div{text-decoration:none;color:#000;background:#ffc;display:block;height:210px;width:210px;padding:1em;box-shadow:5px 5px 7px rgba(33,33,33,0.7);-webkit-transition:-webkit-transform .15s linear}.file-box{float:left;width:220px}.file-manager h5{text-transform:uppercase}.file-manager{list-style:none outside none;margin:0;padding:0}.folder-list li a{color:#666;display:block;padding:5px 0}.folder-list li{border-bottom:1px solid #e7eaec;display:block}.folder-list li i{margin-right:8px;color:#3d4d5d}.category-list li a{color:#666;display:block;padding:5px 0}.category-list li{display:block}.category-list li i{margin-right:8px;color:#3d4d5d}.category-list li a .text-navy{color:#1ab394}.category-list li a .text-primary{color:#1c84c6}.category-list li a .text-info{color:#23c6c8}.category-list li a .text-danger{color:#ef5352}.category-list li a .text-warning{color:#f8ac59}.file-manager h5.tag-title{margin-top:20px}.tag-list li{float:left}.tag-list li a{font-size:10px;background-color:#f3f3f4;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.file{border:1px solid #e7eaec;padding:0;background-color:#fff;position:relative;margin-bottom:20px;margin-right:20px}.file-manager .hr-line-dashed{margin:15px 0}.file .icon,.file .image{height:100px;overflow:hidden}.file .icon{padding:15px 10px;text-align:center}.file-control{color:inherit;font-size:14px;margin-right:10px}.file-control.active{text-decoration:underline}.file .icon i{font-size:70px;color:#dadada}.file .file-name{padding:10px;background-color:#f8f8f8;border-top:1px solid #e7eaec}.file-name small{color:#676a6c}.corner{position:absolute;display:inline-block;width:0;height:0;line-height:0;border:.6em solid transparent;border-right:.6em solid #f1f1f1;border-bottom:.6em solid #f1f1f1;right:0;bottom:0}a.compose-mail{padding:8px 10px}.mail-search{max-width:300px}.profile-content{border-top:none!important}.feed-activity-list .feed-element{border-bottom:1px solid #e7eaec}.feed-element:first-child{margin-top:0}.feed-element{padding-bottom:15px}.feed-element,.feed-element .media{margin-top:15px}.feed-element,.media-body{overflow:hidden}.feed-element>.pull-left{margin-right:10px}.feed-element img.img-circle,.dropdown-messages-box img.img-circle{width:38px;height:38px}.feed-element .well{border:1px solid #e7eaec;box-shadow:none;margin-top:10px;margin-bottom:5px;padding:10px 20px;font-size:11px;line-height:16px}.feed-element .actions{margin-top:10px}.feed-element .photos{margin:10px 0}.feed-photo{max-height:180px;border-radius:4px;overflow:hidden;margin-right:10px;margin-bottom:10px}.mail-box{background-color:#fff;border:1px solid #e7eaec;border-top:0;padding:0;margin-bottom:20px}.mail-box-header{background-color:#fff;border:1px solid #e7eaec;border-bottom:0;padding:30px 20px 20px 20px}.mail-box-header h2{margin-top:0}.mailbox-content .tag-list li a{background:#fff}.mail-body{border-top:1px solid #e7eaec;padding:20px}.mail-text{border-top:1px solid #e7eaec}.mail-text .note-toolbar{padding:10px 15px}.mail-body .form-group{margin-bottom:5px}.mail-text .note-editor .note-toolbar{background-color:#f9f8f8}.mail-attachment{border-top:1px solid #e7eaec;padding:20px;font-size:12px}.mailbox-content{background:0;border:0;padding:10px}.mail-ontact{width:23%}.project-people,.project-actions{text-align:right;vertical-align:middle}dd.project-people{text-align:left;margin-top:5px}.project-people img{width:32px;height:32px}.project-title a{font-size:14px;color:#676a6c;font-weight:600}.project-list table tr td{border-top:0;border-bottom:1px solid #e7eaec;padding:15px 10px;vertical-align:middle}.project-manager .tag-list li a{font-size:10px;background-color:white;padding:5px 12px;color:inherit;border-radius:2px;border:1px solid #e7eaec;margin-right:5px;margin-top:5px;display:block}.project-files li a{font-size:11px;color:#676a6c;margin-left:10px;line-height:22px}.faq-item{padding:20px;margin-bottom:2px;background:#fff}.faq-question{font-size:18px;font-weight:600;color:#1ab394;display:block}.faq-question:hover{color:#179d82}.faq-answer{margin-top:10px;background:#f3f3f4;border:1px solid #e7eaec;border-radius:3px;padding:15px}.faq-item .tag-item{background:#f3f3f4;padding:2px 6px;font-size:10px;text-transform:uppercase}.message-input{height:90px!important}.chat-avatar{width:36px;height:36px;float:left;margin-right:10px}.chat-user-name{padding:10px}.chat-user{padding:8px 10px;border-bottom:1px solid #e7eaec}.chat-user a{color:inherit}.chat-view{z-index:20012}.chat-users,.chat-statistic{margin-left:-30px}@media(max-width:992px){.chat-users,.chat-statistic{margin-left:0}}.chat-view .ibox-content{padding:0}.chat-message{padding:10px 20px}.message-avatar{height:48px;width:48px;border:1px solid #e7eaec;border-radius:4px;margin-top:1px}.chat-discussion .chat-message.left .message-avatar{float:left;margin-right:10px}.chat-discussion .chat-message.right .message-avatar{float:right;margin-left:10px}.message{background-color:#fff;border:1px solid #e7eaec;text-align:left;display:block;padding:10px 20px;position:relative;border-radius:4px}.chat-discussion .chat-message.left .message-date{float:right}.chat-discussion .chat-message.right .message-date{float:left}.chat-discussion .chat-message.left .message{text-align:left;margin-left:55px}.chat-discussion .chat-message.right .message{text-align:right;margin-right:55px}.message-date{font-size:10px;color:#888}.message-content{display:block}.chat-discussion{background:#eee;padding:15px;height:400px;overflow-y:auto}.chat-users{overflow-y:auto;height:400px}.chat-message-form .form-group{margin-bottom:0}.jstree-open>.jstree-anchor>.fa-folder:before{content:"\f07c"}.jstree-default .jstree-icon.none{width:0}.clients-list{margin-top:20px}.clients-list .tab-pane{position:relative;height:600px}.client-detail{position:relative;height:620px}.clients-list table tr td{height:46px;vertical-align:middle;border:0}.client-link{font-weight:600;color:inherit}.client-link:hover{color:inherit}.client-avatar{width:42px}.client-avatar img{width:28px;height:28px;border-radius:50%}.contact-type{width:20px;color:#c1c3c4}.client-status{text-align:left}.client-detail .vertical-timeline-content p{margin:0}.client-detail .vertical-timeline-icon.gray-bg{color:#a7aaab}.clients-list .nav-tabs>li.active>a,.clients-list .nav-tabs>li.active>a:hover,.clients-list .nav-tabs>li.active>a:focus{border-bottom:1px solid #fff}.blog h2{font-weight:700}.blog h5{margin:0 0 5px 0}.blog .btn{margin:0 0 5px 0}.article h1{font-size:48px;font-weight:700;color:#2f4050}.article p{font-size:15px;line-height:26px}.article-title{text-align:center;margin:60px 0 40px 0}.article .ibox-content{padding:40px}.issue-tracker .btn-link{color:#1ab394}table.issue-tracker tbody tr td{vertical-align:middle;height:50px}.issue-info{width:50%}.issue-info a{font-weight:600;color:#676a6c}.issue-info small{display:block}.team-members{margin:10px 0}.team-members img.img-circle{width:42px;height:42px;margin-bottom:5px}.sortable-list{padding:10px 0}.agile-list{list-style:none;margin:0}.agile-list li{background:#fafafb;border:1px solid #e7eaec;margin:0 0 10px 0;padding:10px;border-radius:2px}.agile-list li:hover{cursor:pointer;background:#fff}.agile-list li.warning-element{border-left:3px solid #f8ac59}.agile-list li.danger-element{border-left:3px solid #ed5565}.agile-list li.info-element{border-left:3px solid #1c84c6}.agile-list li.success-element{border-left:3px solid #1ab394}.agile-detail{margin-top:5px;font-size:12px}ins{background-color:#c6ffc6;text-decoration:none}del{background-color:#ffc6c6}#small-chat{position:fixed;bottom:50px;right:26px;z-index:100}#small-chat .badge{position:absolute;top:-3px;right:-4px}.open-small-chat{height:38px;width:38px;display:block;background:#1ab394;padding:9px 8px;text-align:center;color:#fff;border-radius:50%}.open-small-chat:hover{color:white;background:#1ab394}.small-chat-box{display:none;position:fixed;bottom:50px;right:80px;background:#fff;border:1px solid #e7eaec;width:230px;height:320px;border-radius:4px}.small-chat-box.ng-small-chat{display:block}.body-small .small-chat-box{bottom:70px;right:20px}.small-chat-box.active{display:block}.small-chat-box .heading{background:#2f4050;padding:8px 15px;font-weight:bold;color:#fff}.small-chat-box .chat-date{opacity:.6;font-size:10px;font-weight:normal}.small-chat-box .content{padding:15px 15px}.small-chat-box .content .author-name{font-weight:bold;margin-bottom:3px;font-size:11px}.small-chat-box .content>div{padding-bottom:20px}.small-chat-box .content .chat-message{padding:5px 10px;border-radius:6px;font-size:11px;line-height:14px;max-width:80%;background:#f3f3f4;margin-bottom:10px}.small-chat-box .content .chat-message.active{background:#1ab394;color:#fff}.small-chat-box .content .left{text-align:left;clear:both}.small-chat-box .content .left .chat-message{float:left}.small-chat-box .content .right{text-align:right;clear:both}.small-chat-box .content .right .chat-message{float:right}.small-chat-box .form-chat{padding:10px 10px}.sk-spinner-rotating-plane.sk-spinner{width:30px;height:30px;background-color:#1ab394;margin:0 auto;-webkit-animation:sk-rotatePlane 1.2s infinite ease-in-out;animation:sk-rotatePlane 1.2s infinite ease-in-out}@-webkit-keyframes sk-rotatePlane{0%{-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg);transform:perspective(120px) rotateX(0deg) rotateY(0deg)}50%{-webkit-transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg);transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-180deg);transform:perspective(120px) rotateX(-180deg) rotateY(-180deg)}}@keyframes sk-rotatePlane{0%{-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg);transform:perspective(120px) rotateX(0deg) rotateY(0deg)}50%{-webkit-transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg);transform:perspective(120px) rotateX(-180 .1deg) rotateY(0deg)}100%{-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-179 .9deg);transform:perspective(120px) rotateX(-180deg) rotateY(-179 .9deg)}}.sk-spinner-double-bounce.sk-spinner{width:40px;height:40px;position:relative;margin:0 auto}.sk-spinner-double-bounce .sk-double-bounce1,.sk-spinner-double-bounce .sk-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#1ab394;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-doubleBounce 2s infinite ease-in-out;animation:sk-doubleBounce 2s infinite ease-in-out}.sk-spinner-double-bounce .sk-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-wave.sk-spinner{margin:0 auto;width:50px;height:30px;text-align:center;font-size:10px}.sk-spinner-wave div{background-color:#1ab394;height:100%;width:6px;display:inline-block;-webkit-animation:sk-waveStretchDelay 1.2s infinite ease-in-out;animation:sk-waveStretchDelay 1.2s infinite ease-in-out}.sk-spinner-wave .sk-rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-wave .sk-rect3{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-wave .sk-rect4{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-wave .sk-rect5{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}@-webkit-keyframes sk-waveStretchDelay{0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes sk-waveStretchDelay{0%,40%,100%{-webkit-transform:scaleY(0.4);transform:scaleY(0.4)}20%{-webkit-transform:scaleY(1);transform:scaleY(1)}}.sk-spinner-wandering-cubes.sk-spinner{margin:0 auto;width:32px;height:32px;position:relative}.sk-spinner-wandering-cubes .sk-cube1,.sk-spinner-wandering-cubes .sk-cube2{background-color:#1ab394;width:10px;height:10px;position:absolute;top:0;left:0;-webkit-animation:sk-wanderingCubeMove 1.8s infinite ease-in-out;animation:sk-wanderingCubeMove 1.8s infinite ease-in-out}.sk-spinner-wandering-cubes .sk-cube2{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}@-webkit-keyframes sk-wanderingCubeMove{25%{-webkit-transform:translateX(42px) rotate(-90deg) scale(0.5);transform:translateX(42px) rotate(-90deg) scale(0.5)}50%{-webkit-transform:translateX(42px) translateY(42px) rotate(-179deg);transform:translateX(42px) translateY(42px) rotate(-179deg)}50.1%{-webkit-transform:translateX(42px) translateY(42px) rotate(-180deg);transform:translateX(42px) translateY(42px) rotate(-180deg)}75%{-webkit-transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5);transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes sk-wanderingCubeMove{25%{-webkit-transform:translateX(42px) rotate(-90deg) scale(0.5);transform:translateX(42px) rotate(-90deg) scale(0.5)}50%{-webkit-transform:translateX(42px) translateY(42px) rotate(-179deg);transform:translateX(42px) translateY(42px) rotate(-179deg)}50.1%{-webkit-transform:translateX(42px) translateY(42px) rotate(-180deg);transform:translateX(42px) translateY(42px) rotate(-180deg)}75%{-webkit-transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5);transform:translateX(0px) translateY(42px) rotate(-270deg) scale(0 .5)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.sk-spinner-pulse.sk-spinner{width:40px;height:40px;margin:0 auto;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-pulseScaleOut 1s infinite ease-in-out;animation:sk-pulseScaleOut 1s infinite ease-in-out}@-webkit-keyframes sk-pulseScaleOut{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}}@keyframes sk-pulseScaleOut{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:0}}.sk-spinner-chasing-dots.sk-spinner{margin:0 auto;width:40px;height:40px;position:relative;text-align:center;-webkit-animation:sk-chasingDotsRotate 2s infinite linear;animation:sk-chasingDotsRotate 2s infinite linear}.sk-spinner-chasing-dots .sk-dot1,.sk-spinner-chasing-dots .sk-dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-chasingDotsBounce 2s infinite ease-in-out;animation:sk-chasingDotsBounce 2s infinite ease-in-out}.sk-spinner-chasing-dots .sk-dot2{top:auto;bottom:0;-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-chasingDotsRotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-chasingDotsRotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes sk-chasingDotsBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-chasingDotsBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-three-bounce.sk-spinner{margin:0 auto;width:70px;text-align:center}.sk-spinner-three-bounce div{width:18px;height:18px;background-color:#1ab394;border-radius:100%;display:inline-block;-webkit-animation:sk-threeBounceDelay 1.4s infinite ease-in-out;animation:sk-threeBounceDelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-three-bounce .sk-bounce1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.sk-spinner-three-bounce .sk-bounce2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}@-webkit-keyframes sk-threeBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-threeBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-circle.sk-spinner{margin:0 auto;width:22px;height:22px;position:relative}.sk-spinner-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-spinner-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:20%;height:20%;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-circleBounceDelay 1.2s infinite ease-in-out;animation:sk-circleBounceDelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-spinner-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-spinner-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-spinner-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-spinner-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-spinner-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-spinner-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-spinner-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-spinner-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-spinner-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-spinner-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-spinner-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-spinner-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-spinner-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-spinner-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-spinner-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-spinner-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-spinner-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-spinner-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-circleBounceDelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.sk-spinner-cube-grid.sk-spinner{width:30px;height:30px;margin:0 auto}.sk-spinner-cube-grid .sk-cube{width:33%;height:33%;background-color:#1ab394;float:left;-webkit-animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-spinner-cube-grid .sk-cube:nth-child(1){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-spinner-cube-grid .sk-cube:nth-child(2){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-spinner-cube-grid .sk-cube:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.sk-spinner-cube-grid .sk-cube:nth-child(4){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-spinner-cube-grid .sk-cube:nth-child(5){-webkit-animation-delay:.2s;animation-delay:.2s}.sk-spinner-cube-grid .sk-cube:nth-child(6){-webkit-animation-delay:.3s;animation-delay:.3s}.sk-spinner-cube-grid .sk-cube:nth-child(7){-webkit-animation-delay:0s;animation-delay:0s}.sk-spinner-cube-grid .sk-cube:nth-child(8){-webkit-animation-delay:.1s;animation-delay:.1s}.sk-spinner-cube-grid .sk-cube:nth-child(9){-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGridScaleDelay{0%,70%,100%{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}@keyframes sk-cubeGridScaleDelay{0%,70%,100%{-webkit-transform:scale3D(1,1,1);transform:scale3D(1,1,1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}.sk-spinner-wordpress.sk-spinner{background-color:#1ab394;width:30px;height:30px;border-radius:30px;position:relative;margin:0 auto;-webkit-animation:sk-innerCircle 1s linear infinite;animation:sk-innerCircle 1s linear infinite}.sk-spinner-wordpress .sk-inner-circle{display:block;background-color:#fff;width:8px;height:8px;position:absolute;border-radius:8px;top:5px;left:5px}@-webkit-keyframes sk-innerCircle{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes sk-innerCircle{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sk-spinner-fading-circle.sk-spinner{margin:0 auto;width:22px;height:22px;position:relative}.sk-spinner-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-spinner-fading-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:18%;height:18%;background-color:#1ab394;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out;animation:sk-circleFadeDelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.sk-spinner-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-spinner-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-spinner-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-spinner-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-spinner-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-spinner-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-spinner-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-spinner-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-spinner-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-spinner-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-spinner-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-spinner-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-spinner-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-spinner-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-spinner-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-spinner-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-spinner-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-spinner-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-spinner-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-spinner-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-spinner-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-spinner-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}body.rtls #page-wrapper{margin:0 220px 0 0}body.rtls .nav-second-level li a{padding:7px 35px 7px 10px}body.rtls .ibox-title h5{float:right}body.rtls .pull-right{float:left!important}body.rtls .pull-left{float:right!important}body.rtls .ibox-tools{float:left}body.rtls .stat-percent{float:left}body.rtls .navbar-right{float:left!important}body.rtls .navbar-top-links li:last-child{margin-left:40px;margin-right:0}body.rtls .minimalize-styl-2{float:right;margin:14px 20px 5px 5px}body.rtls .feed-element>.pull-left{margin-left:10px;margin-right:0}body.rtls .timeline-item .date{text-align:left}body.rtls .timeline-item .date i{left:0;right:auto}body.rtls .timeline-item .content{border-right:1px solid #e7eaec;border-left:none}body.rtls .toast-close-button{float:left}body.rtls #toast-container>.toast:before{margin:auto -1.5em auto .5em}body.rtls #toast-container>div{padding:15px 50px 15px 15px}body.rtls .center-orientation .vertical-timeline-icon i{margin-left:0;margin-right:-12px}body.rtls .vertical-timeline-icon i{right:50%;left:auto;margin-left:auto;margin-right:-12px}body.rtls .file-box{float:right}body.rtls ul.notes li{float:right}body.rtls .chat-users,body.rtls .chat-statistic{margin-right:-30px;margin-left:auto}body.rtls .dropdown-menu>li>a{text-align:right}body.rtls .b-r{border-left:1px solid #e7eaec;border-right:0}body.rtls .dd-list .dd-list{padding-right:30px;padding-left:0}body.rtls .dd-item>button{float:right}body.rtls .skin-setttings{margin-right:40px;margin-left:0}body.rtls .skin-setttings{direction:ltr}body.rtls .footer.fixed{margin-right:220px;margin-left:0}@media(max-width :992px){body.rtls .chat-users,body.rtls .chat-statistic{margin-right:0}}body.rtls.mini-navbar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0 70px 0 0}body.rtls.mini-navbar.fixed-sidebar .footer.fixed,body.body-small.mini-navbar .footer.fixed{margin:0}body.rtls.top-navigation .navbar-toggle{float:right;margin-left:15px;margin-right:15px}.body-small.rtls.top-navigation .navbar-header{float:none}body.rtls.top-navigation #page-wrapper{margin:0}body.rtls.mini-navbar #page-wrapper{margin:0 70px 0 0}body.rtls.mini-navbar.fixed-sidebar #page-wrapper{margin:0}body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper{margin:0 220px 0 0}body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side{width:220px}.body-small.rtls .navbar-fixed-top{margin-right:0}.body-small.rtls .navbar-header{float:right}body.rtls .navbar-top-links li:last-child{margin-left:20px}body.rtls .top-navigation #page-wrapper,body.rtls.mini-navbar .top-navigation #page-wrapper,body.rtls.mini-navbar.top-navigation #page-wrapper{margin:0}body.rtls .top-navigation .footer.fixed,body.rtls.top-navigation .footer.fixed{margin:0}@media(max-width :768px){body.rtls .navbar-top-links li:last-child{margin-left:20px}.body-small.rtls #page-wrapper{position:inherit;margin:0;min-height:1000px}.body-small.rtls .navbar-static-side{display:none;z-index:2001;position:absolute;width:70px}.body-small.rtls.mini-navbar .navbar-static-side{display:block}.rtls.fixed-sidebar.body-small .navbar-static-side{display:none;z-index:2001;position:fixed;width:220px}.rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side{display:block}}.rtls .ltr-support{direction:ltr}.page-tabs a{color:#999}.page-tabs a i{color:#ccc;margin-left:2px;font-size:13px}.page-tabs a.active{background:#eaedf1;color:#23508e}.page-tabs a.active:hover,.page-tabs a.active i:hover{background:#eaedf1;color:#23508e}@media(min-width :768px){.navbar-top-links .dropdown-messages,.navbar-top-links .dropdown-tasks,.navbar-top-links .dropdown-alerts{margin-left:auto}}@media(max-width :768px){body.fixed-sidebar .navbar-static-side{display:none}body.fixed-sidebar.mini-navbar .navbar-static-side{width:70px}.lock-word{display:none}.navbar-form-custom{display:none}.navbar-header{display:inline;float:left}.sidebard-panel{z-index:2;position:relative;width:auto;min-height:100%!important}.sidebar-content .wrapper{padding-right:0;z-index:1}.fixed-sidebar.body-small .navbar-static-side{display:none;z-index:2001;position:fixed;width:220px}.fixed-sidebar.body-small.mini-navbar .navbar-static-side{display:block}.ibox-tools{float:none;text-align:right;display:block}.content-tabs{display:none}#content-main{height:calc(100% - 100px)}.fixed-nav #content-main{height:calc(100% - 38px)}}.navbar-static-side{background:#2f4050}.nav-close{padding:10px;display:block;position:absolute;right:5px;top:5px;font-size:1.4em;cursor:pointer;z-index:10;display:none;color:rgba(255,255,255,.3)}@media(max-width :350px){body.fixed-sidebar.mini-navbar .navbar-static-side{width:0}.nav-close{display:block}#page-wrapper{margin-left:0!important}.timeline-item .date{text-align:left;width:110px;position:relative;padding-top:30px}.timeline-item .date i{position:absolute;top:0;left:15px;padding:5px;width:30px;text-align:center;border:1px solid #e7eaec;background:#f8f8f8}.timeline-item .content{border-left:none;border-top:1px solid #e7eaec;padding-top:10px;min-height:100px}.nav.navbar-top-links li.dropdown{display:none}.ibox-tools{float:none;text-align:left;display:inline-block}}.ui-jqgrid-titlebar{height:40px;line-height:24px;color:#676a6c;background-color:#f9f9f9;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.ui-jqgrid .ui-jqgrid-title{float:left;margin-left:5px;font-weight:700}.ui-jqgrid .ui-jqgrid-titlebar{position:relative;border-left:0 solid;border-right:0 solid;border-top:0 solid}.social-feed-separated .social-feed-box{margin-left:62px}.social-feed-separated .social-avatar{float:left;padding:0}.social-feed-separated .social-avatar img{width:52px;height:52px;border:1px solid #e7eaec}.social-feed-separated .social-feed-box .social-avatar{padding:15px 15px 0 15px;float:none}.social-feed-box{border:1px solid #e7eaec;background:#fff;margin-bottom:15px}.article .social-feed-box{margin-bottom:0;border-bottom:0}.article .social-feed-box:last-child{margin-bottom:0;border-bottom:1px solid #e7eaec}.article .social-feed-box p{font-size:13px;line-height:18px}.social-action{margin:15px}.social-avatar{padding:15px 15px 0 15px}.social-comment .social-comment{margin-left:45px}.social-avatar img{height:40px;width:40px;margin-right:10px}.social-avatar .media-body a{font-size:14px;display:block}.social-body{padding:15px}.social-body img{margin-bottom:10px}.social-footer{border-top:1px solid #e7eaec;padding:10px 15px;background:#f9f9f9}.social-footer .social-comment img{width:32px;margin-right:10px}.social-comment:first-child{margin-top:0}.social-comment{margin-top:15px}.social-comment textarea{font-size:12px}@media(max-width :1000px){.welcome-message{display:none}}.echarts{height:240px}.checkbox-inline,.radio-inline,.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin:0 15px 0 0;font-size:14px}.navbar-toggle{background-color:#fff}.menuTab{-webkit-transition:all .3s ease-out 0s;transition:all .3s ease-out 0s}@media only screen and (-webkit-min-device-pixel-ratio :2){#content-main{-webkit-overflow-scrolling:touch}}.navbar-header{height:50px}.bs-glyphicons{margin:0 -10px 20px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;background-color:#f9f9f9;border:1px solid #fff}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#1ab394}@media(min-width :768px){.bs-glyphicons{margin-right:0;margin-left:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.t-bar{padding-bottom:10px}.nopadding{padding:0}.note-editor .btn-default{color:#333!important;background-color:#fff!important;border-color:#ccc!important}.folder-list li.active a{color:#2791df;background:#f5f5f5}nav .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent;-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;height:50px;font-size:20px;line-height:50px;text-align:center;width:200px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.logo-mini{display:none}.logo-lg{display:block}.roleList{color:#d5d5d5;margin-right:10px;padding-top:10px;line-height:1;white-space:nowrap;overflow:hidden;width:110px}.sidebar-collapse .user-panel{white-space:nowrap;position:relative;width:100%;padding:15px;overflow:hidden}.sidebar-collapse .user-panel .image>img{width:100%;max-width:45px;height:auto}.sidebar-collapse .user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.sidebar-collapse .user-panel>.info a{color:#fff;font-size:12px}.sidebar-collapse .user-panel>.info>p{font-weight:600;margin-bottom:9px;color:#fff;font-size:12px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.nav>li:hover .dropdown-menu{display:block}#content-main.max{height:calc(100% - 110px);overflow:hidden;width:100%;height:100%;left:0;position:absolute;top:0;z-index:9998;margin:0}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/static/img/qr_code.png b/ruoyi-admin/src/main/resources/static/img/qr_code.png
index f274086..ecba6d6 100644
--- a/ruoyi-admin/src/main/resources/static/img/qr_code.png
+++ b/ruoyi-admin/src/main/resources/static/img/qr_code.png
Binary files differ
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css b/ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css
index 6aa1bc1..3e06767 100644
--- a/ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css
+++ b/ruoyi-admin/src/main/resources/static/ruoyi/css/ry-ui.css
@@ -350,11 +350,11 @@
 	right: 42px;
 }
 
-.select2-hidden-accessible + label.error, select.error + label.error {
+.select2-hidden-accessible + label.error {
 	right: 38px;
 }
 
-.Validform_error,input.error,textarea.error,select.error,select.error+label.error+.select2-container--bootstrap .select2-selection--single {
+.Validform_error,input.error,textarea.error,select.error,label.error+.select2-container--bootstrap .select2-selection--single {
 	background-color: #fbe2e2;
 	border-color: #c66161;
 	color: #c00
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi/index.js b/ruoyi-admin/src/main/resources/static/ruoyi/index.js
index 360d1c0..59aa76e 100644
--- a/ruoyi-admin/src/main/resources/static/ruoyi/index.js
+++ b/ruoyi-admin/src/main/resources/static/ruoyi/index.js
@@ -71,7 +71,7 @@
     if (isScrollToTop) {
         $(obj).show().siblings('.RuoYi_iframe').hide();
     } else {
-        $(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute", "left": "0", "top": "0"});
+        $(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"});
     }
 }
 
@@ -312,11 +312,10 @@
             // 添加选项卡对应的iframe
             var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-refresh="' + isRefresh + '" seamless></iframe>';
             if (isScrollToTop) {
-                $('.mainContent').find('iframe.RuoYi_iframe').hide();
+                $('.mainContent').find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
             } else {
-                $('.mainContent').find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute", "left": "0", "top": "0"});
+                $('.mainContent').find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"}).parents('.mainContent').append(str1);
             }
-            $('.mainContent').append(str1);
             
             $.modal.loading("数据加载中,请稍候...");
 
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi/js/common.js b/ruoyi-admin/src/main/resources/static/ruoyi/js/common.js
index e551514..cc583ae 100644
--- a/ruoyi-admin/src/main/resources/static/ruoyi/js/common.js
+++ b/ruoyi-admin/src/main/resources/static/ruoyi/js/common.js
@@ -283,11 +283,10 @@
         // 添加选项卡对应的iframe
         var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
         if (isScrollToTop) {
-            $('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide();
+            $('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
         } else {
-            $('.mainContent', topWindow).find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute", "left": "0", "top": "0"});
+            $('.mainContent', topWindow).find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"}).parents('.mainContent').append(str1);
         }
-        $('.mainContent', topWindow).append(str1);
         
         window.parent.$.modal.loading("数据加载中,请稍候...");
         $('.mainContent iframe:visible', topWindow).on('load', function() {
@@ -361,7 +360,7 @@
     if (isScrollToTop) {
         $(obj).show().siblings('.RuoYi_iframe').hide();
     } else {
-        $(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute", "left": "0", "top": "0"});
+        $(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"});
     }
 }
 
diff --git a/ruoyi-admin/src/main/resources/static/ruoyi/js/ry-ui.js b/ruoyi-admin/src/main/resources/static/ruoyi/js/ry-ui.js
index 8dcfc90..6a5d241 100644
--- a/ruoyi-admin/src/main/resources/static/ruoyi/js/ry-ui.js
+++ b/ruoyi-admin/src/main/resources/static/ruoyi/js/ry-ui.js
@@ -46,13 +46,13 @@
                     sortOrder: "asc",
                     pagination: true,
                     paginationLoop: false,
-                    pageSize: 10,
+                    pageSize: 20,
                     pageNumber: 1,
-                    pageList: [10, 25, 50, 100],
+                    pageList: [20, 40, 60, 100],
                     toolbar: "toolbar",
                     loadingFontSize: 13,
                     striped: false,
-                    escape: true,
+                    escape: false,
                     firstLoad: true,
                     showFooter: false,
                     search: false,
@@ -260,6 +260,7 @@
                             type: 1,
                             closeBtn: true,
                             shadeClose: true,
+                            area: ['auto', 'auto'],
                             content: "<img src='" + src + "' height='" + height + "' width='" + width + "'/>"
                         });
                     } else if ($.common.equals("blank", target)) {
@@ -919,7 +920,6 @@
                     fix: false,
                     area: [_width + 'px', _height + 'px'],
                     content: _url,
-                    closeBtn: $.common.isEmpty(options.closeBtn) ? 1 : options.closeBtn,
                     shadeClose: $.common.isEmpty(options.shadeClose) ? true : options.shadeClose,
                     skin: options.skin,
                     // options.btn设置为0表示不显示按钮
@@ -1221,6 +1221,12 @@
                 var url = table.options.viewUrl.replace("{id}", id);
                 $.modal.popupRight(table.options.modalName + "信息详情", url);
             },
+            // 查看信息,以tab页展现
+            viewTab: function(id) {
+                table.set();
+                var url = table.options.viewUrl.replace("{id}", id);
+                $.modal.openTab(table.options.modalName + "详情", url);
+            },
             // 保存信息 刷新表格
             save: function(url, data, callback) {
                 var config = {
diff --git a/ruoyi-admin/src/main/resources/templates/demo/form/datetime.html b/ruoyi-admin/src/main/resources/templates/demo/form/datetime.html
index 3444cf8..c331f0a 100644
--- a/ruoyi-admin/src/main/resources/templates/demo/form/datetime.html
+++ b/ruoyi-admin/src/main/resources/templates/demo/form/datetime.html
@@ -128,8 +128,7 @@
         	$("#datetimepicker-demo-2").datetimepicker({
        		    format: "yyyy-mm-dd",
        		    minView: "month",
-       		    autoclose: true,
-       		    clearBtn:true
+       		    autoclose: true
        		});
         	
         	$("#datetimepicker-demo-3").datetimepicker({
diff --git a/ruoyi-admin/src/main/resources/templates/demo/form/summernote.html b/ruoyi-admin/src/main/resources/templates/demo/form/summernote.html
index d4fb248..0e44b34 100644
--- a/ruoyi-admin/src/main/resources/templates/demo/form/summernote.html
+++ b/ruoyi-admin/src/main/resources/templates/demo/form/summernote.html
@@ -17,7 +17,7 @@
                             <h2>若依后台管理系统</h2>
                             <p>ruoyi是一个完全响应式,基于Bootstrap3.3.7最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.1),当然,也集成了很多功能强大,用途广泛的就jQuery插件,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。</p>
                             <p>
-                                <b>当前版本:</b>v4.8.0
+                                <b>当前版本:</b>v4.7.9
                             </p>
                             <p>
                                 <span class="label label-warning">免费开源</span>
@@ -56,7 +56,7 @@
                             <h3>你好,若依 </h3>
                             <p>H+是一个完全响应式,基于Bootstrap3.3.7最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.1),当然,也集成了很多功能强大,用途广泛的就jQuery插件,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。</p>
                             <p>
-                                <b>当前版本:</b>v4.8.0
+                                <b>当前版本:</b>v4.7.9
                             </p>
                             <p>
                                 <span class="label label-warning">开源免费</span>
diff --git a/ruoyi-admin/src/main/resources/templates/demo/table/asynTree.html b/ruoyi-admin/src/main/resources/templates/demo/table/asynTree.html
index c5af5c0..9d16693 100644
--- a/ruoyi-admin/src/main/resources/templates/demo/table/asynTree.html
+++ b/ruoyi-admin/src/main/resources/templates/demo/table/asynTree.html
@@ -62,16 +62,6 @@
                     field: 'areaCode',
                     title: '区域代码',
                     align: 'left'
-                },
-                {
-                    field: 'simplePy',
-                    title: '首字母简拼',
-                    align: 'left'
-                },
-                {
-                    field: 'pinYin',
-                    title: '名称全拼',
-                    align: 'left'
                 }]
             };
             $.treeTable.init(options);
diff --git a/ruoyi-admin/src/main/resources/templates/demo/table/resizable.html b/ruoyi-admin/src/main/resources/templates/demo/table/resizable.html
index c99d66e..2c21b6c 100644
--- a/ruoyi-admin/src/main/resources/templates/demo/table/resizable.html
+++ b/ruoyi-admin/src/main/resources/templates/demo/table/resizable.html
@@ -38,16 +38,7 @@
 				},
 				{
 					field : 'userName', 
-					title : '用户姓名',
-					cellStyle: function (value, row, index) {
-                        return { css: { "min-width": "100px", "white-space": "nowrap", "text-overflow": "ellipsis", "overflow": "hidden", "max-width": "200px" } }
-                    },
-                    formatter: function(value, row, index) {
-                        if (index == 0) {
-                            value = value + ",测试用户姓名,这是一条长文本,可以通过拖拽自适应内容显示。。。。";
-                        }
-                        return $.table.tooltip(value, 30, "open");
-                    }
+					title : '用户姓名'
 				},
 				{
 					field : 'userPhone', 
diff --git a/ruoyi-admin/src/main/resources/templates/include.html b/ruoyi-admin/src/main/resources/templates/include.html
index 12c0573..5517ed6 100644
--- a/ruoyi-admin/src/main/resources/templates/include.html
+++ b/ruoyi-admin/src/main/resources/templates/include.html
@@ -12,7 +12,7 @@
 	<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css?v=1.22.6}" rel="stylesheet"/>
 	<link th:href="@{/css/animate.min.css?v=20210831}" rel="stylesheet"/>
 	<link th:href="@{/css/style.min.css?v=20210831}" rel="stylesheet"/>
-	<link th:href="@{/ruoyi/css/ry-ui.css?v=4.8.0}" rel="stylesheet"/>
+	<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
 </head>
 
 <!-- 通用JS -->
@@ -26,9 +26,9 @@
 	<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js?v=1.22.6}"></script>
 	<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js?v=1.22.6}"></script>
 	<!-- jquery-validate 表单验证插件 -->
-	<script th:src="@{/ajax/libs/validate/jquery.validate.min.js?v=1.21.0}"></script>
-	<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js?v=1.21.0}"></script>
-	<script th:src="@{/ajax/libs/validate/messages_zh.js?v=1.21.0}"></script>
+	<script th:src="@{/ajax/libs/validate/jquery.validate.min.js?v=1.19.3}"></script>
+	<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js?v=1.19.3}"></script>
+	<script th:src="@{/ajax/libs/validate/messages_zh.js?v=1.19.3}"></script>
 	<!-- bootstrap-table 表格树插件 -->
 	<script th:src="@{/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js?v=1.22.6}"></script>
 	<!-- 遮罩层 -->
@@ -36,8 +36,8 @@
     <script th:src="@{/ajax/libs/iCheck/icheck.min.js?v=1.0.3}"></script>
 	<script th:src="@{/ajax/libs/layer/layer.min.js?v=3.7.0}"></script>
 	<script th:src="@{/ajax/libs/layui/layui.min.js?v=2.8.18}"></script>
-	<script th:src="@{/ruoyi/js/common.js?v=4.8.0}"></script>
-	<script th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
+	<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
+	<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
 </div>
 
 <!-- ztree树插件 -->
diff --git a/ruoyi-admin/src/main/resources/templates/index-topnav.html b/ruoyi-admin/src/main/resources/templates/index-topnav.html
index 74ecb15..5aed5bb 100644
--- a/ruoyi-admin/src/main/resources/templates/index-topnav.html
+++ b/ruoyi-admin/src/main/resources/templates/index-topnav.html
@@ -14,7 +14,7 @@
     <link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
     <link th:href="@{/css/style.min.css}" rel="stylesheet"/>
     <link th:href="@{/css/skins.css?v=20200902}" rel="stylesheet"/>
-    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.8.0}" rel="stylesheet"/>
+    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
     <style type="text/css">.fixed-sidebar .nav:not(.navbar-toolbar)>li.active{border-left:0px!important;}</style>
 </head>
 <body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
@@ -321,8 +321,8 @@
 <script th:src="@{/js/jquery.contextMenu.min.js}"></script>
 <script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
 <script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
-<script th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
-<script th:src="@{/ruoyi/js/common.js?v=4.8.0}"></script>
+<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
+<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
 <script th:src="@{/ruoyi/index.js?v=20201208}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:src="@{/js/resize-tabs.js}"></script>
diff --git a/ruoyi-admin/src/main/resources/templates/index.html b/ruoyi-admin/src/main/resources/templates/index.html
index cc50de8..e18ac52 100644
--- a/ruoyi-admin/src/main/resources/templates/index.html
+++ b/ruoyi-admin/src/main/resources/templates/index.html
@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="renderer" content="webkit">
-    <title>若依系统首页</title>
+    <title>系统首页</title>
     <!-- 避免IE使用兼容模式 -->
  	<meta http-equiv="X-UA-Compatible" content="IE=edge">
     <link th:href="@{favicon.ico}" rel="shortcut icon"/>
@@ -14,7 +14,7 @@
     <link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
     <link th:href="@{/css/style.min.css}" rel="stylesheet"/>
     <link th:href="@{/css/skins.css}" rel="stylesheet"/>
-    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.8.0}" rel="stylesheet"/>
+    <link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
 </head>
 <body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
 <div id="wrapper">
@@ -267,8 +267,8 @@
 <script th:src="@{/js/jquery.contextMenu.min.js}"></script>
 <script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
 <script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
-<script th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
-<script th:src="@{/ruoyi/js/common.js?v=4.8.0}"></script>
+<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
+<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
 <script th:src="@{/ruoyi/index.js?v=20201208}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:inline="javascript">
diff --git a/ruoyi-admin/src/main/resources/templates/lock.html b/ruoyi-admin/src/main/resources/templates/lock.html
index 86753b0..180d055 100644
--- a/ruoyi-admin/src/main/resources/templates/lock.html
+++ b/ruoyi-admin/src/main/resources/templates/lock.html
@@ -38,7 +38,7 @@
 <script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
 <script src="../static/js/three.min.js" th:src="@{/js/three.min.js}"></script>
 <script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
-<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
+<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
 </body>
 <script th:inline="javascript">
     var ctx = [[@{/}]];
diff --git a/ruoyi-admin/src/main/resources/templates/login.html b/ruoyi-admin/src/main/resources/templates/login.html
index 72f44bb..ecd2e77 100644
--- a/ruoyi-admin/src/main/resources/templates/login.html
+++ b/ruoyi-admin/src/main/resources/templates/login.html
@@ -9,7 +9,7 @@
     <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
     <link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
     <link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
-    <link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.8.0}" rel="stylesheet"/>
+    <link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
     <!-- 360浏览器急速模式 -->
     <meta name="renderer" content="webkit">
     <!-- 避免IE使用兼容模式 -->
@@ -65,7 +65,7 @@
         </div>
         <div class="signup-footer">
             <div class="pull-left">
-                Copyright © 2018-2025 ruoyi.vip All Rights Reserved. <br>
+                Copyright © 2018-2024 ruoyi.vip All Rights Reserved. <br>
             </div>
         </div>
     </div>
@@ -76,7 +76,7 @@
 <script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
 <script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
 <script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
-<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
+<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
 <script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
 </body>
 </html>
diff --git a/ruoyi-admin/src/main/resources/templates/main.html b/ruoyi-admin/src/main/resources/templates/main.html
index e68e9d5..0af06d5 100644
--- a/ruoyi-admin/src/main/resources/templates/main.html
+++ b/ruoyi-admin/src/main/resources/templates/main.html
@@ -13,1764 +13,9 @@
 
 <body class="gray-bg">
     <div class="row border-bottom white-bg dashboard-header">
-        <div class="col-sm-12">
-            <blockquote class="text-warning" style="font-size:14px">
-                                           阿里云服务器折扣区 <a target="_blank" href="http://aly.ruoyi.vip">☛☛点我进入☚☚</a> &nbsp;&nbsp;&nbsp; 腾讯云服务器秒杀区 <a target="_blank" href="http://txy.ruoyi.vip">☛☛点我进入☚☚</a><br>
-            </blockquote>
-
-            <hr>
-        </div>
-        <div class="col-sm-3">
-            <h2>Hello,Guest</h2>
-            <small>移动设备访问请扫描以下二维码:</small>
-            <br>
-            <br>
-            <img th:src="@{/img/qr_code.png}" width="100%" style="max-width:264px;">
-            <br>
-        </div>
-        <div class="col-sm-5">
-            <h2>若依后台管理框架</h2>
-            <p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
-            <p>
-                <b>当前版本:</b><span>v[[${version}]]</span>
-            </p>
-            <p>
-                <span class="label label-warning">&yen;免费开源</span>
-            </p>
-            <br>
-            <p>
-                <a class="btn btn-success btn-outline" href="https://gitee.com/y_project/RuoYi" target="_blank">
-                    <i class="fa fa-cloud"> </i> 访问码云
-                </a>
-                <a class="btn btn-white btn-bitbucket" href="http://ruoyi.vip" target="_blank">
-                    <i class="fa fa-home"></i> 访问主页
-                </a>
-            </p>
-        </div>
-        <div class="col-sm-4">
-            <h4>技术选型:</h4>
-            <ol>
-                <li>核心框架:Spring Boot。</li>
-                <li>安全框架:Apache Shiro。</li>
-                <li>模板引擎:Thymeleaf。</li>
-                <li>持久层框架:MyBatis。</li>
-                <li>定时任务:Quartz。</li>
-                <li>数据库连接池:Druid。</li>
-                <li>工具类:Fastjson。</li>
-                <li>更多……</li>
-            </ol>
-        </div>
-
     </div>
     <div class="wrapper wrapper-content">
         <div class="row">
-            <div class="col-sm-4">
-
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>联系信息</h5>
-
-                    </div>
-                    <div class="ibox-content">
-                        <p><i class="fa fa-send-o"></i> 官网:<a href="http://www.ruoyi.vip" target="_blank">http://www.ruoyi.vip</a>
-                        </p>
-                        <p><i class="fa fa-qq"></i> QQ群:<s>满1389287</s> <s>满1679294</s> <s>满1529866</s> <s>满1772718</s> <s>满1366522</s> <s>满1382251</s> <s>满1145125</s> <s>满86752435</s> <s>满134072510</s> <s>满210336300</s> <s>满339522636</s> <s>满130035985</s> <s>满143151071</s> <s>满158781320</s> <s>满201531282</s> <s>满101526938</s> <s>满264355400</s> <s>满298522656</s> <s>满139845794</s>  <s>满185760789</s> <s>满175104288</s> <s>满174942938</s> <s>满287843737</s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=KTVAIhggR3rR3uZWK9A8kR4yYNREQ4jo&authKey=An4DUV9e7uK8I8VgBbp949z0ypQoDrOoqvVg%2FWOr2vuNNDMZUAMPvqHor6TFMIgz&noverify=0&group_code=232896766" target="_blank">232896766</a>
-                        </p>
-                        <p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>
-                        </p>
-                        <p><i class="fa fa-credit-card"></i> 支付宝:<a href="javascript:;" class="支付宝信息">/ *若依</a>
-                        </p>
-                    </div>
-                </div>
-            </div>
-            <div class="col-sm-4">
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>更新日志</h5>
-                    </div>
-                    <div class="ibox-content no-padding">
-                        <div class="panel-body">
-                            <div class="panel-group" id="version">
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v480">v4.8.0</a><code class="pull-right">2024.12.26</code>
-								   </h5>
-								</div>
-								<div id="v480" class="panel-collapse collapse in">
-									<div class="panel-body">
-									   <ol>
-									        <li>支持自定义显示Excel属性列</li>
-									        <li>表格默认转义HTML字符串</li>
-									        <li>新增列宽拖动长内容自适应显示示例</li>
-									        <li>Excel注解支持wrapText是否允许内容换行</li>
-									        <li>代码生成新增配置是否允许文件覆盖到本地</li>
-									        <li>升级oshi到最新版本6.6.5</li>
-									        <li>升级tomcat到最新版本9.0.96</li>
-									        <li>升级logback到最新版本1.2.13</li>
-									        <li>升级commons.io到最新版本2.16.1</li>
-									        <li>升级spring-framework到最新版本5.3.39</li>
-									        <li>升级jquery.validate到最新版本v1.21.0</li>
-									        <li>优化导入带标题文件关闭清理</li>
-									        <li>代码生成创建表屏蔽违规的字符</li>
-									        <li>修复主子表数据显示问题</li>
-									        <li>修复记住我请求头过大的问题</li>
-									        <li>修复角色禁用权限不失效问题</li>
-									        <li>修复类匿名注解访问失效问题</li>
-									        <li>修复导出子列表对象只能在最后的问题</li>
-									        <li>修复多选下拉框open导致页签空白问题</li>
-									        <li>优化身份证脱敏正则</li>
-									        <li>优化查询时间范围日期格式</li>
-									        <li>优化异步树表格折叠同步子状态</li>
-									        <li>优化时间控件清除按钮样式问题</li>
-									        <li>优化表格图片预览动态路径显示问题</li>
-									        <li>优化select2下拉框必填背景色无法清空问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v479">v4.7.9</a><code class="pull-right">2024.06.06</code>
-								   </h5>
-								</div>
-								<div id="v479" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>通知公告新增详细显示</li>
-									        <li>新增数据脱敏过滤注解</li>
-									        <li>新增表格示例(虚拟滚动)</li>
-									        <li>新增表格示例(全文检索)</li>
-									        <li>新增表格示例(保存状态)</li>
-									        <li>代码生成支持表单布局选项</li>
-									        <li>限制用户操作数据权限范围</li>
-									        <li>用户密码新增非法字符验证</li>
-									        <li>默认加载layer扩展皮肤</li>
-									        <li>未修改初始密码弹框提醒</li>
-									        <li>定时任务白名单配置范围缩小</li>
-									        <li>操作日志列表重置回第一页</li>
-									        <li>定时任务日志默认按时间排序</li>
-									        <li>Excel注解ColumnType类型新增文本</li>
-									        <li>Excel注解新增属性comboReadDict</li>
-									        <li>新增Anonymous匿名访问不鉴权注解</li>
-									        <li>升级oshi到最新版本6.6.1</li>
-									        <li>升级druid到最新版本1.2.23</li>
-									        <li>升级commons.io到最新版本2.13.0</li>
-									        <li>升级spring-framework到安全版本</li>
-									        <li>升级bootstrap-table到最新版本1.22.6</li>
-									        <li>修复重置日期时出现的异常问题</li>
-									        <li>修复页签关闭后存在的跳转问题</li>
-									        <li>修复tooltip单击复制文本不生效的问题</li>
-									        <li>更新缓存管理键名排序方式</li>
-									        <li>更新HttpUtils中的User-Agent</li>
-									        <li>优化自定义XSS注解匹配方式</li>
-									        <li>优化登录注册页面验证码验证</li>
-									        <li>优化数据权限自定义匹配方式</li>
-									        <li>优化高频率定时任务不执行问题</li>
-									        <li>优化树表格align属性在标题生效</li>
-									        <li>优化代码生成主子表关联查询方式</li>
-									        <li>优化导入Excel时设置dictType属性重复查缓存问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v478">v4.7.8</a><code class="pull-right">2023.11.23</code>
-								   </h5>
-								</div>
-								<div id="v478" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>用户列表新增抽屉效果详细信息</li>
-									        <li>操作日志列表新增IP地址查询</li>
-									        <li>定时任务新增页去除状态选项</li>
-									        <li>系统管理角色列表显示数据权限</li>
-									        <li>通用排序属性orderBy参数限制长度</li>
-									        <li>新增isScrollToTop页签切换滚动到顶部</li>
-									        <li>Excel自定义数据处理器增加单元格/工作簿对象</li>
-									        <li>新增表格参数(数据值为空时显示的内容undefinedText)</li>
-									        <li>升级oshi到最新版本6.4.7</li>
-									        <li>升级shiro到最新版本1.13.0</li>
-									        <li>升级druid到最新版本1.2.20</li>
-									        <li>升级pagehelper到最新版1.4.7</li>
-									        <li>升级spring-boot到最新版本2.5.15</li>
-									        <li>升级jquery到最新版v3.7.1</li>
-									        <li>升级layer到最新版本v3.7.0</li>
-									        <li>升级layui到最新版本v2.8.18</li>
-									        <li>升级x-editable到最新版本1.5.3</li>
-									        <li>修复自定义字典样式不生效的问题</li>
-									        <li>修复弹窗按钮启用禁用方法无效问题</li>
-									        <li>修复横向菜单关闭最后一个页签状态问题</li>
-									        <li>修复Excel导入数据临时文件无法删除问题</li>
-									        <li>修复表格行内编辑启用翻页记住选择无效问题</li>
-									        <li>修复Excels导入时无法获取到dictType字典值问题</li>
-									        <li>优化重置密码鼠标按下显示密码</li>
-									        <li>优化参数键值文本框改为文本域</li>
-									        <li>优化表格重置默认返回到第一页</li>
-									        <li>优化菜单管理类型为按钮状态可选</li>
-									        <li>优化数字金额大写转换精度丢失问题</li>
-									        <li>优化树表查询无数据时清除分页信息</li>
-									        <li>优化通用detail详细信息弹窗不显示按钮</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v477">v4.7.7</a><code class="pull-right">2023.04.14</code>
-								   </h5>
-								</div>
-								<div id="v477" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>操作日志新增消耗时间属性</li>
-									        <li>日志管理使用索引提升查询性能</li>
-									        <li>日志注解支持排除指定的请求参数</li>
-									        <li>新增监控页面图标显示</li>
-									        <li>新增支持登录IP黑名单限制</li>
-									        <li>更新fontawesome图标示例</li>
-									        <li>屏蔽定时任务bean违规的字符</li>
-									        <li>支持自定义隐藏属性列过滤子对象</li>
-									        <li>连接池Druid支持新的配置connectTimeout和socketTimeout</li>
-									        <li>升级jquery到最新版v3.6.3</li>
-									        <li>升级layui到最新版本2.7.6</li>
-									        <li>升级jasny-bootstrap到最新版4.0.0</li>
-									        <li>升级oshi到最新版本6.4.1</li>
-									        <li>升级druid到最新版本1.2.16</li>
-									        <li>修复异步表格树子项排序问题</li>
-									        <li>修复冻结列不支持IE浏览器的问题</li>
-									        <li>修复主子表使用suggest插件无法新增问题</li>
-									        <li>修复菜单栏快速点击导致展开折叠样式问题</li>
-									        <li>修复用户多角色数据权限可能出现权限抬升的情况</li>
-									        <li>修复异步加载表格树重置列表父节点展开异常问题</li>
-									        <li>修复页签属性refresh为undefined时页面被刷新问题</li>
-									        <li>移除apache/commons-fileupload依赖</li>
-									        <li>优化前端属性提醒说明</li>
-									        <li>优化用户导入更新时需获取用户编号问题</li>
-									        <li>优化主子表根据序号删除方法加入表格ID参数</li>
-									        <li>优化导出Excel时设置dictType属性重复查缓存问题</li>
-									        <li>优化在线用户服务缓存改为从Bean容器获取不使用自动装配</li>
-									        <li>优化表格示例行拖拽后列表底部总记录条数变成了undefined问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v476">v4.7.6</a><code class="pull-right">2022.12.16</code>
-								   </h5>
-								</div>
-								<div id="v476" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>定时任务违规的字符</li>
-									        <li>忽略不必要的属性数据返回</li>
-									        <li>导入更新用户数据前校验数据权限</li>
-									        <li>修改参数键名时移除前缓存配置</li>
-									        <li>修改用户登录账号进行重复验证</li>
-									        <li>兼容Excel下拉框内容过多无法显示</li>
-									        <li>升级oshi到最新版本6.4.0</li>
-									        <li>升级kaptcha到最新版2.3.3</li>
-									        <li>升级druid到最新版本1.2.15</li>
-									        <li>升级shiro到最新版本1.10.1</li>
-									        <li>升级pagehelper到最新版1.4.6</li>
-									        <li>升级bootstrap-fileinput到最新版本5.5.2</li>
-									        <li>修复sheet超出最大行数异常问题</li>
-									        <li>修复关闭父页签后提交无法跳转的问题</li>
-									        <li>修复操作日志类型多选导出不生效问题</li>
-									        <li>修复导出包含空子列表数据异常的问题</li>
-									        <li>优化树形表格层级显示</li>
-									        <li>优化SQL关键字检查防止注入</li>
-									        <li>优化用户管理重置时取消部门选择</li>
-									        <li>优化代码生成同步后字典值NULL问题</li>
-									        <li>优化导出对象的子列表为空会出现[]问题</li>
-									        <li>优化select2搜索下拉后校验必填样式问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v475">v4.7.5</a><code class="pull-right">2022.09.05</code>
-								   </h5>
-								</div>
-								<div id="v475" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>Excel支持导出对象的子列表方法</li>
-									        <li>数据逻辑删除不进行唯一验证</li>
-									        <li>优化多角色数据权限匹配规则</li>
-									        <li>新增主子表提交校验示例</li>
-									        <li>支持自定义隐藏Excel属性列</li>
-									        <li>Excel注解支持backgroundColor属性设置背景颜色</li>
-									        <li>菜单配置刷新时Tab页签切换时刷新</li>
-									        <li>增加对AjaxResult消息结果类型的判断</li>
-									        <li>新增示例(进度条)</li>
-									        <li>新增内容编码/解码方便插件集成使用</li>
-									        <li>升级jquery到最新版3.6.1</li>
-									        <li>升级layui到最新版本2.7.5</li>
-									        <li>升级shiro到最新版本1.9.1</li>
-									        <li>升级druid到最新版本1.2.11</li>
-									        <li>升级pagehelper到最新版1.4.3</li>
-									        <li>升级oshi到最新版本6.2.2</li>
-									        <li>修复树表onLoadSuccess不生效的问题</li>
-											<li>修复用户分配角色大于默认页数丢失问题</li>
-									        <li>定时任务支持执行父类方法</li>
-									        <li>自动设置切换多个树表格实例配置</li>
-									        <li>页签创建标题优先data-title属性</li>
-									        <li>优化任务过期不执行调度</li>
-									        <li>优化横向菜单下激活菜单样式</li>
-									        <li>优化按钮打开窗口后按回车反复弹出</li>
-									        <li>优化excel/scale属性导出单元格数值类型</li>
-									        <li>优化druid开启wall过滤器出现的异常问题</li>
-									        <li>优化多个相同角色数据导致权限SQL重复问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v474">v4.7.4</a><code class="pull-right">2022.06.01</code>
-								   </h5>
-								</div>
-								<div id="v474" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>用户头像上传图片格式限制</li>
-									        <li>Excel注解支持color属性设置字体颜色</li>
-									        <li>设置分页参数默认值</li>
-									        <li>主子表操作列新增单个删除</li>
-									        <li>定时任务检查Bean包名是否为白名单配置</li>
-									        <li>升级spring-boot到最新版本2.5.14</li>
-									        <li>升级shiro到最新版本1.9.0</li>
-									        <li>升级oshi到最新版本6.1.6</li>
-									        <li>升级fastjson到最新版1.2.83 安全修复版本</li>
-									        <li>文件上传兼容Weblogic环境</li>
-									        <li>新增清理分页的线程变量方法</li>
-									        <li>新增获取不带后缀文件名称方法</li>
-									        <li>用户缓存信息添加部门ancestors祖级列表</li>
-									        <li>自定义ShiroFilterFactoryBean防止中文请求被拦截</li>
-									        <li>字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)</li>
-									        <li>优化IP地址获取到多个的问题</li>
-									        <li>优化表格冻结列阴影效果显示</li>
-									        <li>优化菜单侧边栏滚动条尺寸及颜色</li>
-									        <li>优化显示顺序orderNum类型为整型</li>
-									        <li>优化接口使用泛型使其看到响应属性字段</li>
-									        <li>优化导出数据LocalDateTime类型无数据问题</li>
-									        <li>修复导入Excel时字典字段类型为Long转义为空问题</li>
-									        <li>优化导出excel单元格验证,包含变更为开头.防止正常内容被替换</li>
-									        <li>修复URL类型回退键被禁止问题</li>
-									        <li>修复表格客户端分页序号显示错误问题</li>
-									        <li>修复代码生成拖拽多次出现的排序不正确问题</li>
-									        <li>修复表格打印组件不识别多层对象属性值问题</li>
-									        <li>修复操作日志查询类型条件为0时会查到所有数据</li>
-									        <li>修复Excel注解prompt/combo同时使用不生效问题</li>
-									        <li>修复初始化多表格处理回调函数时获取的表格配置不一致问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v473">v4.7.3</a><code class="pull-right">2022.03.01</code>
-								   </h5>
-								</div>
-								<div id="v473" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>表格树支持分页/异步加载</li>
-									        <li>代码生成预览支持复制内容</li>
-									        <li>定时任务默认保存到内存中执行</li>
-									        <li>代码生成同步保留必填/类型选项</li>
-									        <li>页面若未匹配到字典标签则返回原字典值</li>
-									        <li>用户访问控制时校验数据权限,防止越权</li>
-									        <li>导出Excel时屏蔽公式,防止CSV注入风险</li>
-									        <li>升级spring-boot到最新版本2.5.10</li>
-									        <li>升级spring-boot-mybatis到最新版2.2.2</li>
-									        <li>升级pagehelper到最新版1.4.1</li>
-									        <li>升级oshi到最新版本6.1.2</li>
-									        <li>升级bootstrap-table到最新版本1.19.1</li>
-									        <li>服务监控新增运行参数信息显示</li>
-									        <li>定时任务目标字符串验证包名白名单</li>
-									        <li>文件上传接口新增原/新文件名返回参数</li>
-									        <li>定时任务屏蔽违规的字符</li>
-									        <li>分页数据新增分页参数合理化参数</li>
-									        <li>表格父子视图添加点击事件打开示例</li>
-									        <li>优化上传文件名称命名规则</li>
-									        <li>优化加载字典缓存数据</li>
-									        <li>优化任务队列满时任务拒绝策略</li>
-									        <li>优化IE11上传预览不显示的问题</li>
-									        <li>优化Excel格式化不同类型的日期对象</li>
-									        <li>优化国际化配置多余的zh请求问题</li>
-									        <li>优化新版Chrome浏览器回退出现的遮罩层</li>
-									        <li>修复EMAIL类型回退键被禁止问题</li>
-									        <li>修复Xss注解字段值为空时的异常问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v472">v4.7.2</a><code class="pull-right">2021.12.23</code>
-								   </h5>
-								</div>
-								<div id="v472" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>自定义xss校验注解实现</li>
-									        <li>进入修改页面方法添加权限标识</li>
-									        <li>代码生成创建按钮添加超级管理员权限</li>
-									        <li>代码生成创建表检查关键字,防止注入风险</li>
-									        <li>修复定时任务多参数逗号分隔的问题</li>
-									        <li>修复表格插件一起使用出现的声明报错问题</li>
-									        <li>修复代码生成主子表模板删除方法缺少事务</li>
-									        <li>升级oshi到最新版本v5.8.6</li>
-									        <li>升级velocity到最新版本2.3</li>
-									        <li>升级fastjson到最新版1.2.79</li>
-									        <li>升级log4j2到最新版2.17.0 防止漏洞风险</li>
-									        <li>升级thymeleaf到最新版3.0.14 阻止远程代码执行漏洞</li>
-									        <li>优化修改/授权角色实时生效</li>
-									        <li>修整tomcat配置参数已过期问题</li>
-									        <li>前端添加单独的二代身份证校验</li>
-									        <li>优化新增部门时验证用户所属部门</li>
-									        <li>优化查询用户的角色组&岗位组代码</li>
-									        <li>请求分页方法设置成通用方便灵活调用</li>
-									        <li>优化日期类型错误提示与图标重叠问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v471">v4.7.1</a><code class="pull-right">2021.11.10</code>
-								   </h5>
-								</div>
-								<div id="v471" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增是否开启页签功能</li>
-									        <li>代码生成的模块增加创建表功能</li>
-									        <li>Excel导入支持@Excels注解</li>
-									        <li>Excel注解支持导入导出标题信息</li>
-									        <li>Excel注解支持自定义数据处理器</li>
-									        <li>日志注解新增是否保存响应参数</li>
-									        <li>防重提交注解支持配置间隔时间/提示消息</li>
-									        <li>网页部分操作禁止使用后退键(Backspace)</li>
-									        <li>实例演示中增加多层窗口获取值</li>
-									        <li>弹出层openOptions增加动画属性</li>
-									        <li>升级spring-boot到最新版本2.5.6</li>
-									        <li>升级spring-boot-mybatis到最新版2.2.0</li>
-									        <li>升级pagehelper到最新版1.4.0</li>
-									        <li>升级oshi到最新版本v5.8.2</li>
-									        <li>升级druid到最新版1.2.8</li>
-									        <li>升级fastjson到最新版1.2.78</li>
-									        <li>升级thymeleaf-extras-shiro到最新版本v2.1.0</li>
-									        <li>升级bootstrap-fileinput到最新版本v5.2.4</li>
-									        <li>修改阿里云maven仓库地址为新版地址</li>
-									        <li>定时任务屏蔽违规字符</li>
-									        <li>增加sendGet无参请求方法</li>
-									        <li>代码生成去掉多余的排序字段</li>
-									        <li>优化启动脚本参数优化</li>
-									        <li>优化页签关闭右侧清除iframe元素</li>
-									        <li>优化多表格切换表单查询参数</li>
-									        <li>优化表格实例切换event不能为空</li>
-									        <li>优化mybatis全局默认的执行器</li>
-									        <li>优化导入Excel数据关闭时清理file</li>
-									        <li>优化Excel导入图片可能出现的异常</li>
-									        <li>优化记录登录信息,防止不必要的修改</li>
-									        <li>优化aop语法,使用spring自动注入注解</li>
-									        <li>修复无法被反转义问题</li>
-									        <li>修复拖拽行数据错位问题</li>
-									        <li>修复新窗口打开页面关闭弹窗报错</li>
-									        <li>修复富文本回退键被禁止&控制台报错问题</li>
-									        <li>修复自定义弹出层全屏参数无效问题</li>
-									        <li>修复树表代码生成短字段无法识别问题</li>
-									        <li>修复apple/webkit浏览器时间无法格式化</li>
-									        <li>修复后端主子表代码模板方法名生成错误问题</li>
-									        <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v470">v4.7.0</a><code class="pull-right">2021.09.01</code>
-								   </h5>
-								</div>
-								<div id="v470" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>优化弹出层显示在顶层窗口</li>
-									        <li>定时任务支持在线生成cron表达式</li>
-									        <li>Excel注解支持Image图片导入</li>
-									        <li>支持配置是否开启记住我功能</li>
-									        <li>修改时检查用户数据权限范围</li>
-									        <li>表单重置开始/结束时间控件</li>
-									        <li>新增多图上传示例</li>
-									        <li>启用父部门状态排除顶级节点</li>
-									        <li>富文本默认dialogsInBody属性</li>
-									        <li>去除默认分页合理化参数</li>
-									        <li>顶部菜单跳转添加绝对路径</li>
-									        <li>升级oshi到最新版本v5.8.0</li>
-									        <li>升级shiro到最新版本v1.8.0</li>
-									        <li>升级commons.io到最新版本v2.11.0</li>
-									        <li>升级jquery到最新版v3.6.0</li>
-									        <li>升级icheck到最新版v1.0.3</li>
-									        <li>升级layer到最新版本v3.5.1</li>
-									        <li>升级layui到最新版本v2.6.8</li>
-									        <li>升级laydate到最新版本v5.3.1</li>
-									        <li>升级select2到最新版v4.0.13</li>
-									        <li>升级cropper到最新版本v1.5.12</li>
-									        <li>升级summernote到最新版本v0.8.18</li>
-									        <li>升级duallistbox到最新版本v3.0.9</li>
-									        <li>升级jquery.validate到最新版本v1.19.3</li>
-									        <li>升级bootstrap-suggest到最新版本v0.1.29</li>
-									        <li>升级bootstrap-select到最新版本v1.13.18</li>
-									        <li>升级bootstrap-fileinput到最新版本v5.2.3</li>
-									        <li>查询表格指定列值增加是否去重属性</li>
-									        <li>删除sourceMappingURL源映射</li>
-									        <li>去除多余的favicon.ico引入</li>
-									        <li>优化代码生成模板</li>
-									        <li>优化XSS跨站脚本过滤</li>
-									        <li>补充定时任务表字段注释</li>
-									        <li>定时任务屏蔽ldap远程调用</li>
-									        <li>定时任务屏蔽http(s)远程调用</li>
-									        <li>定时任务对检查异常进行事务回滚</li>
-									        <li>调度日志详细页添加关闭按钮</li>
-									        <li>优化异常打印输出信息</li>
-									        <li>优化移动端进入首页样式</li>
-									        <li>优化用户操作不能删除自己</li>
-									        <li>默认开始/结束时间绑定控件选择类型</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v462">v4.6.2</a><code class="pull-right">2021.07.01</code>
-								   </h5>
-								</div>
-								<div id="v462" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>优化参数&字典缓存操作</li>
-									        <li>新增表格参数(导出方式&导出文件类型)</li>
-									        <li>新增表格示例(自定义视图分页)</li>
-									        <li>新增示例(表格列拖拽)</li>
-									        <li>集成yuicompressor实现(CSS/JS压缩)</li>
-									        <li>新增表格参数(是否支持打印页面showPrint)</li>
-									        <li>支持bat脚本执行应用</li>
-									        <li>修复存在的SQL注入漏洞问题</li>
-									        <li>定时任务屏蔽rmi远程调用</li>
-									        <li>导出Excel文件支持数据流下载方式</li>
-									        <li>实例演示弹层组件增加相册层示例</li>
-									        <li>删除操作日志记录信息</li>
-									        <li>增加表格重置分页的参数</li>
-									        <li>限制超级管理员不允许操作</li>
-									        <li>树级结构更新子节点使用replaceFirst</li>
-									        <li>支持动态生成密匙,防止默认密钥泄露</li>
-									        <li>升级pagehelper到最新版1.3.1</li>
-									        <li>升级oshi到最新版本v5.7.4</li>
-									        <li>升级swagger到最新版本v3.0.0</li>
-									        <li>升级commons.io到最新版本v2.10.0</li>
-									        <li>升级commons.fileupload到最新版本v1.4</li>
-									        <li>升级bootstrap-table到最新版本v1.18.3</li>
-									        <li>升级druid到最新版本v1.2.6</li>
-									        <li>升级fastjson到最新版1.2.76</li>
-									        <li>升级layui到最新版本v2.6.6</li>
-									        <li>升级layer到最新版本v3.5.0</li>
-									        <li>升级laydate到最新版本v5.3.0</li>
-									        <li>优化表格树移动端&边框显示</li>
-									        <li>新增表格刷新options配置方法</li>
-									        <li>优化图片工具类读取文件,防止异常</li>
-									        <li>修复表格图片预览移动端宽高无效问题</li>
-									        <li>主子表通用操作封装处理增加文本域类型</li>
-									        <li>日志注解兼容获取json类型的参数</li>
-									        <li>修复表单向导插件有滚动条时底部工具栏无法固定问题</li>
-									        <li>修复导出角色数据范围翻译缺少仅本人</li>
-									        <li>修正Velocity模板初始字符集</li>
-									        <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>
-									        <li>优化代码生成导出模板名称</li>
-									        <li>修改个人中心密码长度提醒</li>
-									        <li>实例演示中弹出表格增加以回调形式回显到父窗体</li>
-									        <li>修复登录页面弹窗文字不显示的问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v461">v4.6.1</a><code class="pull-right">2021.04.12</code>
-								   </h5>
-								</div>
-								<div id="v461" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增IE浏览器版本过低提示页面</li>
-									        <li>新增详细信息tab页签方式</li>
-									        <li>新增解锁屏幕打开上次页签</li>
-									        <li>数据监控默认账户密码防止越权访问</li>
-									        <li>新增表格示例(导出选择列)</li>
-									        <li>个人信息添加手机&邮箱重复验证</li>
-									        <li>个人中心刷新后样式问题</li>
-									        <li>操作日志返回参数添加非空验证</li>
-									        <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>
-									        <li>子表模板默认日期格式化</li>
-									        <li>代码生成预览语言根据后缀名高亮显示</li>
-									        <li>代码生成主子表相同字段导致数据问题</li>
-									        <li>升级SpringBoot到最新版本2.2.13</li>
-									        <li>升级shiro到最新版1.7.1 阻止身份认证绕过漏洞</li>
-									        <li>升级bootstrapTable到最新版本v1.18.2</li>
-									        <li>升级bootstrapTable相关组件到最新版本v1.18.2</li>
-									        <li>升级fastjson到最新版1.2.75</li>
-									        <li>升级druid到最新版本v1.2.4</li>
-									        <li>升级oshi到最新版本v5.6.0</li>
-									        <li>修改ip字段长度防止ipv6地址长度不够</li>
-									        <li>搜索建议示例选择后隐藏列表</li>
-									        <li>主子表示例增加初始化数据</li>
-									        <li>优化Excel导入增加空行判断</li>
-									        <li>修复横向菜单无法打开页签问题</li>
-									        <li>修复导入数据为负浮点数时,导入结果会丢失精度问题</li>
-									        <li>优化更多操作按钮左侧移入内容闪现消失情况</li>
-									        <li>修复主子表提交中列隐藏后出现列偏移问题</li>
-									        <li>单据打印网页时通过hidden-print隐藏元素</li>
-									        <li>表格销毁清除记住选择数据</li>
-									        <li>增加表格动态列示例</li>
-									        <li>代码生成选择主子表关联元素必填</li>
-									        <li>tree根据Id和Name选中指定节点增加空判断</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v46">v4.6.0</a><code class="pull-right">2021.01.01</code>
-								   </h5>
-								</div>
-								<div id="v46" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增缓存监控管理</li>
-									        <li>新增锁定屏幕功能</li>
-									        <li>菜单新增是否刷新页面</li>
-									        <li>删除用户和角色解绑关联</li>
-									        <li>新增密码强度字符范围提示</li>
-									        <li>防止匿名访问进行过滤</li>
-									        <li>升级SpringBoot到最新版本2.2.12</li>
-									        <li>升级poi到最新版本4.1.2</li>
-									        <li>升级bitwalker到最新版本1.21</li>
-									        <li>升级bootstrap-fileinput到最新版本5.1.3</li>
-									        <li>升级bootstrapTable到最新版本v1.18.0</li>
-									        <li>升级bootstrapTable相关组件到最新版本v1.18.0</li>
-									        <li>升级oshi到最新版本v5.3.6</li>
-									        <li>新增示例(标签 & 提示)</li>
-									        <li>添加单据打印示例</li>
-									        <li>修改表格初始参数sortName默认值为undefined</li>
-									        <li>新增表格参数(自定义打印页面模板printPageBuilder)</li>
-									        <li>新增表格参数(是否显示行间隔色striped)</li>
-									        <li>新增表格参数(渲染完成后执行的事件onPostBody)</li>
-									        <li>Excel注解支持Image图片导出</li>
-									        <li>Excel支持注解align对齐方式</li>
-									        <li>Excel支持导入Boolean型数据</li>
-									        <li>主子表操作添加通用addColumn方法</li>
-									        <li>代码生成日期控件区分范围</li>
-									        <li>代码生成数据库文本类型生成表单文本域</li>
-									        <li>修复生成主子表外键名错误</li>
-									        <li>选项卡新增是否刷新属性</li>
-									        <li>修复树表格表头跟表格宽度不同步的问题</li>
-									        <li>表格树加载完成触发tooltip方法</li>
-									        <li>使用widthUnit定义树表格选项单位</li>
-									        <li>修复主子表editColumn序列问题</li>
-									        <li>修复添加全屏在无参数时没有替换url参数问题</li>
-									        <li>弹出层openOptions移动端自适应</li>
-									        <li>防止错误页返回主页出现嵌套问题</li>
-									        <li>设置回显数据字典验证防止空值</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v451">v4.5.1</a><code class="pull-right">2020.11.18</code>
-								   </h5>
-								</div>
-								<div id="v451" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>阻止任意文件下载漏洞</li>
-									        <li>升级shiro到最新版1.7.0 阻止权限绕过漏洞</li>
-									        <li>升级druid到最新版本v1.2.2</li>
-									        <li>新增表格行触发事件(onCheck、onUncheck、onCheckAll、onUncheckAll)</li>
-									        <li>修复多页签关闭非当前选项出现空白问题</li>
-									        <li>代码生成预览支持高亮显示</li>
-									        <li>mapperLocations配置支持分隔符</li>
-									        <li>权限信息调整</li>
-									        <li>个人中心头像和上传头像增加默认图片</li>
-									        <li>全局配置类保持和其他应用命名相同</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v45">v4.5.0</a><code class="pull-right">2020.10.20</code>
-								   </h5>
-								</div>
-								<div id="v45" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增菜单导航显示风格(default为左侧导航菜单,topnav为顶部导航菜单)</li>
-									        <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>
-									        <li>账号密码支持自定义更新周期</li>
-									        <li>初始密码支持自定义修改策略</li>
-									        <li>新增校验用户修改新密码不能与旧密码相同</li>
-									        <li>添加检查密码范围支持的特殊字符包括:~!@#$%^&*()-=_+</li>
-									        <li>注册账号设置默认用户名称及密码最后更新时间</li>
-									        <li>去除用户手机邮箱部门必填验证</li>
-									        <li>新增日期格式化方法</li>
-									        <li>代码生成添加bit类型</li>
-									        <li>树结构加载添加callBack回调方法</li>
-									        <li>修复用户管理页面滚动返回顶部条失效</li>
-									        <li>修复代码生成模板文件上传组件缺少ctx的问题</li>
-									        <li>限制系统内置参数不允许删除</li>
-									        <li>新增表格列宽拖动插件</li>
-									        <li>新增Ajax局部刷新demo</li>
-									        <li>新增是否开启页脚功能</li>
-									        <li>新增表格参数(通过自定义函数设置标题样式headerStyle)</li>
-									        <li>新增表格参数(通过自定义函数设置页脚样式footerStyle)</li>
-									        <li>修复窗体大小改变后浮动提示框失效问题</li>
-									        <li>生成代码补充必填样式</li>
-									        <li>生成页面时不忽略remark属性</li>
-									        <li>字典数据列表页添加关闭按钮</li>
-									        <li>Excel注解支持自动统计数据总和</li>
-									        <li>升级springboot到2.1.17 提升安全性</li>
-									        <li>升级pagehelper到最新版1.3.0</li>
-									        <li>升级druid到最新版本v1.2.1</li>
-									        <li>升级fastjson到最新版1.2.74</li>
-									        <li>升级bootstrap-fileinput到最新版本5.1.2</li>
-									        <li>升级oshi到最新版本v5.2.5</li>
-									        <li>表单向导插件更换为jquery-smartwizard</li>
-									        <li>修改主子表提交示例代码防止渲染失效</li>
-									        <li>添加导入数据弹出窗体自定义宽高</li>
-									        <li>用户信息参数返回忽略掉密码字段</li>
-									        <li>优化关闭窗体添加index参数</li>
-									        <li>回显数据字典(字符串数组)增加空值判断</li>
-									        <li>修改前端密码长度校验和错误提示不符问题</li>
-									        <li>AjaxResult重写put方法,以方便链式调用</li>
-									        <li>增强验证码校验的语义,更易懂</li>
-									        <li>导入excel整形值校验优化</li>
-									        <li>Excel导出类型NUMERIC支持精度浮点类型</li>
-									        <li>导出Excel调整targetAttr获取值方法,防止get方法不规范</li>
-									        <li>输入框组验证错误后置图标提示颜色</li>
-									        <li>上传媒体类型添加视频格式</li>
-									        <li>数据权限判断参数类型</li>
-									        <li>修正数据库字符串类型nvarchar</li>
-									        <li>优化递归子节点</li>
-									        <li>修复多表格搜索formId无效</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v44">v4.4.0</a><code class="pull-right">2020.08.24</code>
-								   </h5>
-								</div>
-								<div id="v44" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>升级bootstrapTable到最新版本1.17.1</li>
-									        <li>升级shiro到最新版1.6.0 阻止权限绕过漏洞</li>
-									        <li>升级fastjson到最新版1.2.73</li>
-									        <li>代码生成支持同步数据库</li>
-									        <li>代码生成支持富文本控件</li>
-									        <li>用户密码支持自定义配置规则</li>
-									        <li>新增表格自动刷新插件</li>
-									        <li>新增表格打印配置插件</li>
-									        <li>更换图片裁剪工具为cropper</li>
-									        <li>Excel支持sort导出排序</li>
-									        <li>代码生成支持自定义路径</li>
-									        <li>代码生成支持选择上级菜单</li>
-									        <li>代码生成支持上传控件</li>
-									        <li>新增表格参数(自定义加载文本的字体大小loadingFontSize)</li>
-									        <li>Excel注解支持设置BigDecimal精度&舍入规则</li>
-									        <li>操作日志记录排除敏感属性字段</li>
-									        <li>修复不同浏览器附件下载中文名乱码的问题</li>
-									        <li>用户分配角色不允许选择超级管理员角色</li>
-									        <li>更换表格冻结列插件</li>
-									        <li>添加右侧冻结列示例</li>
-									        <li>升级表格行编辑&移动端适应插件</li>
-									        <li>修复更新表格插件后无法设置实例配置问题</li>
-									        <li>修复更新表格插件后导致的主子表错误</li>
-									        <li>修复页面存在多表格,回调函数res数据不正确问题</li>
-									        <li>强退&过期清理登录帐号缓存会话</li>
-									        <li>表格树标题内容支持html语义化标签</li>
-									        <li>修复配置应用的访问路径首页页签重复问题</li>
-									        <li>优化openTab打开时滚动到当前页签</li>
-									        <li>表格请求方式method支持自定义配置</li>
-									        <li>菜单页签联动优化</li>
-									        <li>用户邮箱长度限制修改为50</li>
-									        <li>主子表示例添加日期格式案例</li>
-									        <li>修改表格行内编辑示例旧值参数</li>
-									        <li>操作日志查询方式调整</li>
-									        <li>唯一限制条件只返回单条数据</li>
-									        <li>修改Excel设置STRING单元格类型</li>
-									        <li>添加获取当前的环境配置方法</li>
-									        <li>截取返回参数长度,防止超出异常</li>
-									        <li>定时任务cron表达式验证</li>
-									        <li>拆分表格插件,按需引入</li>
-									        <li>多行文本框补齐必填错误提示背景</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v431">v4.3.1</a><code class="pull-right">2020.07.05</code>
-								   </h5>
-								</div>
-								<div id="v431" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>国家信息安全漏洞(请务必保持cipherKey密钥唯一性)</li>
-									        <li>升级shiro到最新版1.5.3 阻止权限绕过漏洞</li>
-									        <li>修改验证码在使用后清除,防止多次使用</li>
-									        <li>检查字符支持小数点&降级改成异常提醒</li>
-									        <li>openOptions函数中加入自定义maxmin属性</li>
-									        <li>支持openOptions方法最大化</li>
-									        <li>支持openOptions方法多个按钮回调</li>
-									        <li>新增isLinkage支持页签与菜单联动</li>
-									        <li>修改代码生成导入表结构出现异常页面不提醒问题</li>
-									        <li>优化用户头像发生错误,则显示一个默认头像</li>
-									        <li>Excel导出支持字典类型</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v43">v4.3.0</a><code class="pull-right">2020.06.22</code>
-								   </h5>
-								</div>
-								<div id="v43" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>代码生成模板支持主子表</li>
-									        <li>代码生成显示类型支持复选框</li>
-									        <li>前端表单样式修改成圆角</li>
-									        <li>新增回显数据字典(字符串数组)</li>
-									        <li>修复浏览器手动缩放比例后菜单无法自适应问题</li>
-									        <li>限制用户不允许选择系统管理员角色</li>
-									        <li>用户信息添加输入框组图标&鼠标按下显示密码</li>
-									        <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>
-									        <li>升级Bootstrap版本到v3.3.7</li>
-									        <li>修复selectColumns方法获取子对象数据无效问题</li>
-									        <li>修改数据源类型优先级,先根据方法,再根据类</li>
-									        <li>修改上级部门(选择项排除本身和下级)</li>
-									        <li>首页菜单显示调整</li>
-									        <li>添加是否开启swagger配置</li>
-									        <li>新增示例(主子表提交)</li>
-									        <li>新增示例(多级联动下拉示例)</li>
-									        <li>新增示例(表格属性data数据加载)</li>
-									        <li>新增表格列参数(是否列选项可见ignore)</li>
-									        <li>新增表格参数(是否启用显示卡片视图cardView)</li>
-									        <li>新增表格参数(是否显示全屏按钮showFullscreen)</li>
-									        <li>新增表格参数(是否启用分页条无限循环的功能paginationLoop)</li>
-									        <li>新增表格参数(是否显示表头showHeader)</li>
-									        <li>表格添加显示/隐藏所有列方法 showAllColumns/hideAllColumns</li>
-									        <li>修复部分情况节点不展开问题</li>
-									        <li>修复关闭标签页后刷新还是上次地址问题</li>
-									        <li>修复选择菜单后刷新页面,菜单箭头显示不对问题</li>
-											<li>修复jquery表单序列化时复选框未选中不会序列化到对象中问题</li>
-											<li>Excel支持readConverterExp读取字符串组内容</li>
-									        <li>更换IP地址查询接口</li>
-									        <li>默认关闭获取ip地址</li>
-									        <li>操作处理ajaxSuccess判断修正</li>
-									        <li>HttpUtils.sendPost()方法,参数无需拼接参数到url</li>
-									        <li>通用http发送方法增加参数 contentType 编码类型</li>
-									        <li>HTML过滤器不替换&实体</li>
-									        <li>代码生成浮点型改用BigDecimal</li>
-									        <li>修复表单构建单选和多选框渲染问题</li>
-									        <li>代码生成模板调整,字段为String并且必填则加空串条件</li>
-									        <li>字典数据查询列表根据dictSort升序排序</li>
-									        <li>修复树表对imageView和tooltip方法无效问题</li>
-									        <li>修复Long类型比较相等问题调整</li>
-									        <li>示例demo页面清除html链接,防止点击后跳转出现404</li>
-									        <li>在线用户强退方法合并</li>
-									        <li>添加校验部门包含未停用的子部门</li>
-									        <li>取消回车自动提交表单</li>
-									        <li>'A','I','BUTTON' 标签忽略clickToSelect事件,防止点击操作按钮时选中</li>
-									        <li>邮箱显示截取部分字符串,防止低分辨率错位</li>
-									        <li>代码生成列属性根据sort排序</li>
-									        <li>修复更多操作部分浏览器不兼容情况</li>
-									        <li>图片预览事件属性修正</li>
-									        <li>修复冻结列排序样式无效问题</li>
-									        <li>修复context-path的情况下个人中心刷新导致样式问题</li>
-									        <li>全屏editFull打开适配表树</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v42">v4.2.0</a><code class="pull-right">2020.03.23</code>
-								   </h5>
-								</div>
-								<div id="v42" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>用户管理添加分配角色页面</li>
-									        <li>定时任务添加调度日志按钮</li>
-									        <li>新增是否开启用户注册功能</li>
-											<li>新增页面滚动显示返回顶部按钮</li>
-											<li>用户&角色&任务添加更多操作按钮</li>
-											<li>iframe框架页会话过期弹出超时提示</li>
-											<li>移动端登录不显示左侧菜单</li>
-											<li>侧边栏添加一套深蓝色主题</li>
-											<li>首页logo固定,不随菜单滚动</li>
-											<li>支持mode配置history(表示去掉地址栏的#)</li>
-											<li>任务分组字典翻译(调度日志详细)</li>
-											<li>字典管理添加缓存读取</li>
-											<li>字典数据列表标签显示样式</li>
-											<li>参数管理支持缓存操作</li>
-											<li>日期控件清空结束时间设置开始默认值为2099-12-31</li>
-											<li>表格树添加获取数据后响应回调处理</li>
-											<li>批量替换表前缀调整</li>
-											<li>支持表格导入模板的弹窗表单加入其它输入控件</li>
-											<li>表单重置刷新表格树</li>
-											<li>新增支持导出数据字段排序</li>
-											<li>新增表格参数(是否单选checkbox)</li>
-											<li>druid未授权不允许访问</li>
-											<li>表格树父节点兼容0,'0','',null</li>
-											<li>表单必填的项添加星号</li>
-											<li>修复select2不显示校验错误信息</li>
-											<li>添加自定义HTML过滤器</li>
-											<li>修复多数据源下开关关闭出现异常问题</li>
-											<li>修复翻页记住选择项数据问题</li>
-											<li>用户邮箱长度限制20</li>
-											<li>修改错误页面返回主页出现嵌套问题</li>
-											<li>表格浮动提示单双引号转义</li>
-											<li>支持配置四级菜单</li>
-											<li>升级shiro到最新版1.4.2 阻止rememberMe漏洞攻击</li>
-											<li>升级summernote到最新版本v0.8.12</li>
-											<li>导入Excel根据dateFormat属性格式处理</li>
-											<li>修复War部署无法正常shutdown,ehcache内存泄漏</li>
-											<li>修复代码生成短字段无法识别问题</li>
-											<li>修复serviceImpl模版,修改方法判断日期错误</li>
-											<li>代码生成模板增加导出功能日志记录</li>
-											<li>代码生成唯一编号调整为tableId</li>
-											<li>代码生成查询时忽略大小写</li>
-											<li>代码生成支持翻页记住选中</li>
-											<li>代码生成表注释未填写也允许导入</li>
-											<li>Global全局配置类修改为注解,防止多环境配置下读取问题</li>
-											<li>修复多表格情况下,firstLoad只对第一个表格生效</li>
-											<li>处理Maven打包出现警告问题</li>
-											<li>默认主题样式,防止网速慢情况下出现空白</li>
-											<li>修复文件上传多级目录识别问题</li>
-											<li>锚链接解码url,防止中文导致页面不能加载问题</li>
-											<li>修复右键Tab页刷新事件重复请求问题</li>
-											<li>角色禁用&菜单隐藏不查询权限</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v41">v4.1.0</a><code class="pull-right">2019.10.22</code>
-								   </h5>
-								</div>
-								<div id="v41" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>支持多表格实例操作</li>
-									        <li>浮动提示方法tooltip支持弹窗</li>
-											<li>代码生成&字典数据支持模糊条件查询</li>
-											<li>增加页签全屏方法</li>
-											<li>增加清除表单验证错误信息方法</li>
-											<li>支持iframe局部刷新页面</li>
-											<li>支持在线切换主题</li>
-											<li>修改图片预览设置的高宽参数颠倒问题</li>
-											<li>操作日志新增解锁账户功能</li>
-											<li>管理员用户&角色不允许操作</li>
-											<li>去掉jsoup包调用自定义转义工具</li>
-											<li>添加时间轴示例</li>
-											<li>修复翻页记住选择时获取指定列值的问题</li>
-											<li>代码生成sql脚本添加导出按钮</li>
-											<li>添加表格父子视图示例</li>
-											<li>添加表格行内编辑示例</li>
-											<li>升级fastjson到最新版1.2.60 阻止漏洞攻击</li>
-											<li>升级echarts到最新版4.2.1</li>
-											<li>操作日志新增返回参数</li>
-											<li>支持mybatis通配符扫描任意多个包</li>
-											<li>权限验证多种情况处理</li>
-											<li>修复树形类型的代码生成的部分必要属性无法显示</li>
-											<li>修复非表格插件情况下重置出现异常</li>
-											<li>修复富文本编辑器有序列表冲突</li>
-											<li>代码生成表前缀配置支持多个</li>
-											<li>修复自动去除表前缀配置无效问题</li>
-											<li>菜单列表按钮数据可见不显示(权限标识控制)</li>
-											<li>修复设置会话超时时间无效问题</li>
-											<li>新增本地资源通用下载方法</li>
-											<li>操作日志记录新增请求方式</li>
-											<li>代码生成单选按钮属性重名修复</li>
-											<li>优化select2下拉框宽度不会随浏览器改变</li>
-											<li>修复代码生成树表异常</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v40">v4.0.0</a><code class="pull-right">2019.08.08</code>
-								   </h5>
-								</div>
-								<div id="v40" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>代码生成支持预览、编辑,保存方案</li>
-									        <li>新增防止表单重复提交注解</li>
-											<li>新增后端校验(和前端保持一致)</li>
-											<li>新增同一个用户最大会话数控制</li>
-											<li>Excel导出子对象支持多个字段</li>
-											<li>定时任务支持静态调用和多参数</li>
-											<li>定时任务增加分组条件查询</li>
-											<li>字典类型增加任务分组数据</li>
-											<li>新增表格是否首次加载数据</li>
-											<li>新增parentTab选项卡可在同一页签打开</li>
-											<li>多数据源支持类注解(允许继承父类的注解)</li>
-											<li>部门及以下数据权限(调整为以下及所有子节点)</li>
-											<li>新增角色数据权限配(仅本人数据权限)</li>
-											<li>修改菜单权限显示问题</li>
-											<li>上传文件修改路径及返回名称</li>
-											<li>添加报表插件及示例</li>
-											<li>添加首页统计模板</li>
-											<li>添加表格拖拽示例</li>
-											<li>添加卡片列表示例</li>
-											<li>添加富文本编辑器示例</li>
-											<li>添加表格动态增删改查示例</li>
-											<li>添加用户页面岗位选择框提示</li>
-											<li>点击菜单操作添加背景高亮显示</li>
-											<li>表格树新增showSearch是否显示检索信息</li>
-											<li>解决表格列设置sortName无效问题</li>
-											<li>表格图片预览支持自定义设置宽高</li>
-											<li>添加表格列浮动提示(单击文本复制)</li>
-											<li>PC端收起菜单后支持浮动显示</li>
-											<li>详细操作样式调整</li>
-											<li>修改用户更新描述空串不更新问题</li>
-											<li>导入修改为模板渲染</li>
-											<li>修改菜单及部门排序规则</li>
-											<li>角色导出数据范围表达式翻译</li>
-											<li>添加summernote富文本字体大小</li>
-											<li>优化表格底部下边框防重叠&汇总像素问题</li>
-											<li>树表格支持属性多层级访问</li>
-											<li>修复IE浏览器用户管理界面右侧留白问题</li>
-											<li>重置按钮刷新表格</li>
-											<li>重置密码更新用户缓存</li>
-											<li>优化验证码属性参数</li>
-											<li>支持数据监控配置用户名和密码</li>
-											<li>文件上传修改按钮背景及加载动画</li>
-											<li>支持配置一级菜单href跳转</li>
-											<li>侧边栏添加一套浅色主题</li>
-											<li>树表格添加回调函数(校验异常状态)</li>
-											<li>用户个人中心适配手机端显示</li>
-											<li>Excel支持设置导出类型&更换样式</li>
-											<li>检查属性改变修改为克隆方式(防止热部署强转异常)</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-							    </div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v34">v3.4.0</a><code class="pull-right">2019.06.03</code>
-								   </h5>
-								</div>
-								<div id="v34" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增实例演示菜单及demo</li>
-											<li>新增页签右键操作</li>
-											<li>菜单管理新增打开方式</li>
-											<li>新增点击某行触发的事件</li>
-											<li>新增双击某行触发的事件</li>
-											<li>新增单击某格触发的事件</li>
-											<li>新增双击某格触发的事件</li>
-											<li>新增是否启用显示细节视图</li>
-											<li>支持上传任意格式文件</li>
-											<li>修复角色权限注解失效问题</li>
-											<li>左侧的菜单栏宽度调整</li>
-											<li>新增响应完成后自定义回调函数</li>
-											<li>支持前端及其他模块直接获取用户信息</li>
-											<li>升级swagger到最新版2.9.2</li>
-											<li>升级jquery.slimscroll到最新版1.3.8</li>
-											<li>升级select2到最新版4.0.7</li>
-											<li>新增角色配置本部门数据权限</li>
-											<li>新增角色配置本部门及以下数据权限</li>
-											<li>优化底部操作防止跳到页面顶端</li>
-											<li>修改冻结列选框无效及样式问题</li>
-											<li>修复部门四层级修改祖级无效问题</li>
-											<li>更换开关切换按钮样式</li>
-											<li>新增select2-bootstrap美化下拉框</li>
-											<li>添加表格内图片预览方法</li>
-											<li>修复权限校验失败跳转页面路径错误</li>
-											<li>国际化资源文件调整</li>
-											<li>通知公告布局调整</li>
-											<li>删除页签操作功能</li>
-											<li>表格树新增查询指定列值</li>
-											<li>更改系统接口扫描方式及完善测试案例</li>
-											<li>表格列浮动提示及字典回显默认去背景</li>
-											<li>修复启用翻页记住前面的选择check没选中问题</li>
-											<li>去除监控页面底部的广告</li>
-											<li>日期控件功问题修复及data功能增强</li>
-											<li>新增角色权限可见性(前端直接调用)</li>
-											<li>新增获取当前登录用户方法(前端及子模块调用)</li>
-											<li>修复热部署重启导致菜单丢失问题</li>
-											<li>优化业务校验失败普通请求跳转页面</li>
-											<li>操作日志新增状态条件查询</li>
-											<li>操作类型支持多选条件查询</li>
-											<li>通知公告防止滚动触底回弹优化</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							 </div>
-                             <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v33">v3.3.0</a><code class="pull-right">2019.04.01</code>
-								   </h5>
-								</div>
-								<div id="v33" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>新增线程池统一管理</li>
-											<li>新增支持左右冻结列</li>
-											<li>新增表格字符超长浮动提示</li>
-											<li>升级datepicker拓展并汉化</li>
-											<li>升级druid到最新版本v1.1.14</li>
-											<li>修复个人头像为图片服务器跨域问题</li>
-											<li>修改上传文件按日期存储</li>
-											<li>新增表格客户端分页选项</li>
-											<li>新增表格的高度参数</li>
-											<li>新增表格销毁方法</li>
-											<li>新增表格下拉按钮切换方法</li>
-											<li>新增表格分页跳转到指定页码</li>
-											<li>新增表格启用点击选中行参数</li>
-											<li>修复表格数据重新加载未触发部分按钮禁用</li>
-											<li>使用jsonview展示操作日志参数</li>
-											<li>新增方法(addTab、editTab)</li>
-											<li>修改用户管理界面为Tab打开方式</li>
-											<li>表单验证代码优化</li>
-											<li>修复@Excel注解 prompt 属性使用报错</li>
-											<li>修复combo属性Excel兼容性问题</li>
-											<li>新增@Excel导入导出支持父类字段</li>
-											<li>修复关闭最后选项卡无法激活滚动问题</li>
-											<li>增加日期控件显示类型及回显格式扩展选项</li>
-											<li>修复定时任务执行失败后入库状态为成功状态</li>
-											<li>支持定时任务并发开关控制</li>
-											<li>优化权限校验失败普通请求跳转页面</li>
-											<li>捕获线程池执行任务抛出的异常</li>
-											<li>修复IE浏览器导出功能报错</li>
-											<li>新增角色管理分配用户功能</li>
-											<li>新增表格翻页记住前面的选择</li>
-											<li>调整用户个人中心页面</li>
-											<li>修复界面存在的一些安全问题</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v32">v3.2.0</a><code class="pull-right">2019.01.18</code>
-								   </h5>
-								</div>
-								<div id="v32" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>部门修改时不允许选择最后节点</li>
-											<li>修复部门菜单排序字段无效</li>
-											<li>修复光驱磁盘导致服务监控异常</li>
-											<li>登录界面去除check插件</li>
-											<li>验证码文本字符间距修正</li>
-											<li>升级SpringBoot到最新版本2.1.1</li>
-											<li>升级MYSQL驱动</li>
-											<li>修正登录必填项位置偏移</li>
-											<li>Session会话检查优化</li>
-											<li>Excel注解支持多级获取</li>
-											<li>新增序列号生成方法</li>
-											<li>修复WAR部署tomcat退出线程异常</li>
-											<li>全屏操作增加默认确认/关闭</li>
-											<li>修复个人信息可能导致漏洞</li>
-											<li>字典数据根据下拉选择新增类型</li>
-											<li>升级Summernote到最新版本v0.8.11</li>
-											<li>新增用户数据导入</li>
-											<li>首页主题样式更换</li>
-											<li>layer扩展主题更换</li>
-											<li>用户管理移动端默认隐藏左侧布局</li>
-											<li>详细信息弹出层显示在顶层</li>
-											<li>表格支持切换状态(用户/角色/定时任务)</li>
-											<li>Druid数据源支持配置继承</li>
-											<li>修正部分iPhone手机端表格适配问题</li>
-											<li>新增防止重复提交表单方法</li>
-											<li>新增表格数据统计汇总方法</li>
-											<li>支持富文本上传图片文件</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v31">v3.1.0</a><code class="pull-right">2018.12.03</code>
-								   </h5>
-								</div>
-								<div id="v31" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>新增内网不获取IP地址</li>
-											<li>新增cron表达式有效校验</li>
-											<li>定时任务新增详细信息</li>
-											<li>定时任务默认策略修改(不触发立即执行)</li>
-											<li>定时任务显示下一个执行周期</li>
-											<li>支持前端任意日期格式处理</li>
-											<li>上传头像删除多余提交按钮</li>
-											<li>表格增加行间隔色配置项</li>
-											<li>表格增加转义HTML字符串配置项</li>
-											<li>表格增加显示/隐藏指定列</li>
-											<li>代码生成优化</li>
-											<li>操作日志参数格式化显示</li>
-											<li>页签新增新增全屏显示</li>
-											<li>新增一键打包部署</li>
-											<li>Excel注解新增多个参数</li>
-											<li>新增提交静默更新表格方法</li>
-											<li>新增服务监控菜单</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-							<div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v30">v3.0.0</a><code class="pull-right">2018.10.08</code>
-								   </h5>
-								</div>
-								<div id="v30" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>升级poi到最新版3.17</li>
-											<li>导出修改临时目录绝对路径</li>
-											<li>升级laydate到最新版5.0.9</li>
-											<li>升级SpringBoot到最新版本2.0.5</li>
-											<li>优化开始/结束时间校验限制</li>
-											<li>重置密码参数表中获取默认值</li>
-											<li>修复头像修改显示问题</li>
-											<li>新增数据权限过滤注解</li>
-											<li>新增表格检索折叠按钮</li>
-											<li>新增清空(登录、操作、调度)日志</li>
-											<li>固定按钮位置(提交/关闭)</li>
-											<li>部门/菜单支持(展开/折叠)</li>
-											<li>部分细节调整优化</li>
-											<li>项目采用分模块</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-							<div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v24">v2.4.0</a><code class="pull-right">2018.09.03</code>
-								   </h5>
-								</div>
-								<div id="v24" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>支持部门多级查询</li>
-											<li>修复菜单状态查询无效</li>
-											<li>支持IP地址开关</li>
-											<li>支持XSS开关</li>
-											<li>记录日志异步处理</li>
-											<li>字典回显样式更改为下拉框</li>
-											<li>菜单类型必填校验</li>
-											<li>修复在线用户排序报错</li>
-											<li>增加重置按钮</li>
-											<li>支持注解导入数据</li>
-											<li>支持弹层外区域关闭</li>
-											<li>备注更换为文本区域</li>
-											<li>新增角色逻辑删除</li>
-											<li>新增部门逻辑删除</li>
-											<li>支持部门数据权限</li>
-											<li>管理员默认拥有所有授权</li>
-											<li>字典数据采用分页</li>
-											<li>部分细节调整优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v23">v2.3.0</a><code class="pull-right">2018.08.06</code>
-									   </h5>
-									</div>
-									<div id="v23" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>支持表格不分页开关控制</li>
-										        <li>修改字典类型同步修改字典数据</li>
-										        <li>代码生成新增修改后缀处理</li>
-										        <li>代码生成新增实体toString</li>
-										        <li>代码生成非字符串去除!=''</li>
-												<li>导出数据前加载遮罩层</li>
-												<li>部门删除校验条件修改</li>
-												<li>搜索查询下载优化</li>
-												<li>手机打开弹出层自适应</li>
-												<li>角色岗位禁用显示置灰</li>
-												<li>角色禁用不显示菜单</li>
-												<li>新增导出权限</li>
-												<li>角色权限唯一校验</li>
-												<li>岗位名称编码唯一校验</li>
-                                                <li>TreeTable优化</li>
-                                                <li>支持多数据源</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v22">v2.2.0</a><code class="pull-right">2018.07.23</code>
-									   </h5>
-									</div>
-									<div id="v22" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>修复批量生成代码异常问题</li>
-										        <li>修复定时器保存失败问题</li>
-										        <li>修复热部署转换问题</li>
-												<li>支持查询菜单管理,部门管理</li>
-												<li>大多数功能支持时间查询</li>
-												<li>自定义导出注解自动匹配column</li>
-												<li>新增任务执行策略</li>
-												<li>操作详细动态显示类型</li>
-												<li>支持动态回显字典数据</li>
-												<li>后台代码优化调整</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v21">v2.1.0</a><code class="pull-right">2018.07.10</code>
-									   </h5>
-									</div>
-									<div id="v21" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>新增登录超时提醒</li>
-										        <li>修复定时器热部署转换问题</li>
-										        <li>修复登录验证码校验无效问题</li>
-												<li>定时任务新增立即执行一次</li>
-												<li>存在字典数据不允许删除字典</li>
-												<li>字典数据支持按名称查询</li>
-												<li>代码生成增加日志注解&表格优化</li>
-												<li>修复用户逻辑删除后能登录问题</li>
-												<li>表格支持多字段动态排序</li>
-												<li>支持三级菜单显示</li>
-												<li>新增ry.sh启动程序脚本</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v20">v2.0.0</a><code class="pull-right">2018.07.02</code>
-									   </h5>
-									</div>
-									<div id="v20" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>升级SpringBoot到最新版本2.0.3</li>
-										        <li>新增公告管理</li>
-												<li>表单校验示提体验优化</li>
-												<li>前端通用方法封装调整</li>
-												<li>前端去除js文件,合并到html</li>
-												<li>操作加载遮罩层</li>
-												<li>支持全屏模式操作</li>
-												<li>支持注解导出数据</li>
-												<li>系统支持多查询&下载</li>
-												<li>系统样式调整</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v16">v1.1.6</a><code class="pull-right">2018.06.04</code>
-									   </h5>
-									</div>
-									<div id="v16" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增用户列表部门列</li>
-												<li>新增登录地点</li>
-												<li>新增swagger</li>
-												<li>修复排序数字校验</li>
-												<li>优化头像上传文件类型限定为图片</li>
-												<li>新增XSS过滤</li>
-												<li>新增热部署提高开发效率</li>
-												<li>修复treegrid居中无效</li>
-												<li>角色多条件查询</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v15">v1.1.5</a><code class="pull-right">2018.05.28</code>
-									   </h5>
-									</div>
-									<div id="v15" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>优化登录失败刷新验证码</li>
-												<li>新增用户登录地址时间</li>
-												<li>修复ajax超时退出问题</li>
-												<li>新增html调用数据字典(若依首创)</li>
-												<li>调整系统部分样式</li>
-												<li>新增用户逻辑删除</li>
-												<li>新增管理员不允许删除修改</li>
-												<li>升级bootstrapTable到最新版本1.12.1</li>
-												<li>升级layer到最新版本3.1.1</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-							    <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v14">v1.1.4</a><code class="pull-right">2018.05.20</code>
-									   </h5>
-									</div>
-									<div id="v14" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增参数管理</li>
-												<li>修复头像上传bug</li>
-												<li>手机邮箱唯一校验</li>
-												<li>支持手机邮箱登录</li>
-												<li>代码生成优化</li>
-												<li>支持模糊查询</li>
-												<li>支持切换主题皮肤</li>
-												<li>修改权限即时生效</li>
-												<li>修复页签Tab关闭问题</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v13">v1.1.3</a><code class="pull-right">2018.05.14</code>
-									   </h5>
-									</div>
-									<div id="v13" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增验证码(数组计算、字符验证)</li>
-												<li>新增cookie记住我</li>
-												<li>新增头像上传</li>
-												<li>用户名密码长度限制</li>
-												<li>通用字段提取</li>
-												<li>支持自定义条件查询</li>
-												<li>部门名称必填、时间格式调整</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v12">v1.1.2</a><code class="pull-right">2018.05.07</code>
-										</h5>
-                                    </div>
-                                    <div id="v12" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增个人信息修改</li>
-												<li>菜单存在子菜单不允许删除</li>
-												<li>菜单分配角色不允许删除</li>
-												<li>角色分配人员不允许删除</li>
-												<li>岗位使用后不允许删除</li>
-												<li>保证用户的数据完整性加入事物</li>
-												<li>新增环境使用手册、数据建模</li>
-												<li>Thymeleaf升级到3.0</li>
-												<li>支持非ROOT部署</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.1</a><code class="pull-right">2018.04.23</code>
-										</h5>
-                                    </div>
-                                    <div id="v11" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增表单构建器</li>
-												<li>代码生成优化</li>
-												<li>支持新增主部门</li>
-												<li>支持选择上级部门、上级菜单</li>
-												<li>新增字典管理单条删除</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v10">v1.1.0</a><code class="pull-right">2018.04.20</code>
-										</h5>
-                                    </div>
-                                    <div id="v10" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>支持密码盐</li>
-												<li>支持新增主目录</li>
-												<li>支持批量生成代码</li>
-												<li>支持表格导出(csv、txt、doc、excel)</li>
-												<li>自动适应宽高模式窗体</li>
-												<li>重复校验(角色名、菜单名、部门名)</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v09">v1.0.9</a><code class="pull-right">2018.04.14</code>
-										</h5>
-                                    </div>
-                                    <div id="v09" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增代码生成(生成包括 java、html、js、xml、sql)</li>
-												<li>新增按钮权限控制隐藏(若依首创)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v08">v1.0.8</a><code class="pull-right">2018.04.08</code>
-										</h5>
-                                    </div>
-                                    <div id="v08" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增定时任务(新增、修改、删除、查询、启动/暂停)</li>
-												<li>新增调度日志(查询、删除)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v07">v1.0.7</a><code class="pull-right">2018.04.04</code>
-										</h5>
-                                    </div>
-                                    <div id="v07" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增岗位管理(新增、修改、删除、查询)</li>
-												<li>优化用户管理,菜单管理部分细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v06">v1.0.6</a><code class="pull-right">2018.03.15</code>
-										</h5>
-                                    </div>
-                                    <div id="v06" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增字典管理(新增、删除、修改、查询、数据选择)</li>
-												<li>新增用户密码重置</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v05">v1.0.5</a><code class="pull-right">2018.03.12</code>
-										</h5>
-                                    </div>
-                                    <div id="v05" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增菜单管理(新增、删除、修改、查询、图标选择)</li>
-												<li>部门管理优化(添加责任人、联系电话、邮箱、修改者)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v04">v1.0.4</a><code class="pull-right">2018.03.11</code>
-										</h5>
-                                    </div>
-                                    <div id="v04" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增角色管理(新增、删除、修改、查询、菜单选择)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>
-										</h5>
-                                    </div>
-                                    <div id="v03" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v02">v1.0.2</a><code class="pull-right">2018.03.04</code>
-										</h5>
-                                    </div>
-                                    <div id="v02" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增部门管理 (新增、删除、修改、查询)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-                                    <div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v01">v1.0.1</a><code class="pull-right">2018.03.03</code>
-										</h5>
-                                    </div>
-                                    <div id="v01" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增在线用户 (批量强退、单条强退、查询)</li>
-                                                <li>新增登录日志 (批量删除、查询)</li>
-												<li>新增操作日志 (批量删除、查询、详细)</li>
-												<li>新增数据监控 (监控DB池连接和SQL的执行)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-                                    <div class="panel-heading">
-                                        <h4 class="panel-title">
-                                            <a data-toggle="collapse" data-parent="#version" href="#v00">v1.0.0</a><code class="pull-right">2018.03.01</code>
-                                        </h4>
-                                    </div>
-                                    <div id="v00" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                                <li>若依管理系统正式发布。</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="col-sm-4">
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>捐赠</h5>
-                    </div>
-                    <div class="ibox-content">
-                        <div class="alert alert-warning">
-                            	请作者喝杯咖啡(点击图片放大)
-                        </div>
-                        <p id="pay-qrcode">
-                            <a href="javascript:;"><img th:src="@{/img/pay.png}" width="100%" alt="请使用手机支付宝或者微信扫码支付">
-                            </a>
-                        </p>
-
-                    </div>
-                </div>
-            </div>
         </div>
     </div>
     <script th:src="@{/js/jquery.min.js}"></script>
diff --git a/ruoyi-admin/src/main/resources/templates/register.html b/ruoyi-admin/src/main/resources/templates/register.html
index f9dad26..6b1c215 100644
--- a/ruoyi-admin/src/main/resources/templates/register.html
+++ b/ruoyi-admin/src/main/resources/templates/register.html
@@ -9,7 +9,7 @@
     <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
     <link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
     <link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
-    <link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.8.0}" rel="stylesheet"/>
+    <link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
     <!-- 360浏览器急速模式 -->
     <meta name="renderer" content="webkit">
     <!-- 避免IE使用兼容模式 -->
@@ -64,7 +64,7 @@
         </div>
         <div class="signup-footer">
             <div class="pull-left">
-                &copy; 2018-2025 All Rights Reserved. RuoYi <br>
+                &copy; 2018-2024 All Rights Reserved. RuoYi <br>
             </div>
         </div>
     </div>
@@ -75,7 +75,7 @@
 <script src="../static/ajax/libs/validate/jquery.validate.extend.js" th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script>
 <script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
 <script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
-<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
+<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
 <script src="../static/ruoyi/register.js" th:src="@{/ruoyi/register.js}"></script>
 </body>
 </html>
diff --git a/ruoyi-admin/src/main/resources/templates/skin.html b/ruoyi-admin/src/main/resources/templates/skin.html
index 27ea41d..6c56f61 100644
--- a/ruoyi-admin/src/main/resources/templates/skin.html
+++ b/ruoyi-admin/src/main/resources/templates/skin.html
@@ -140,7 +140,7 @@
 </ul>
 </body>
 <script th:src="@{/js/jquery.min.js}"></script>
-<script th:src="@{/ruoyi/js/common.js?v=4.8.0}"></script>
+<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
 <script type="text/javascript">
 //皮肤样式列表
 var skins = ["skin-blue", "skin-green", "skin-purple", "skin-red", "skin-yellow"];
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 53598e8..17f63b8 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>ruoyi</artifactId>
         <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
+        <version>4.7.9</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
index 765d8e3..27e587d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
@@ -84,11 +84,6 @@
     public String prompt() default "";
 
     /**
-     * 是否允许内容换行 
-     */
-    public boolean wrapText() default false;
-
-    /**
      * 设置只能选择不能输入的列内容.
      */
     public String[] combo() default {};
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
index df42296..15bf66b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
@@ -25,14 +25,14 @@
     private String createBy;
 
     /** 创建时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */
     private String updateBy;
 
     /** 更新时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java
index 07f02ee..4508122 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java
@@ -23,7 +23,7 @@
     /**
      * 身份证,中间10位星号替换
      */
-    ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\d{3}[Xx]|\\d{4})", "$1** **** ****$2")),
+    ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\d{4})", "$1** **** ****$2")),
 
     /**
      * 手机号,中间4位星号替换
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 1ac9ed9..49dea95 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -195,11 +195,6 @@
     public Class<T> clazz;
 
     /**
-     * 需要显示列属性
-     */
-    public String[] includeFields;
-
-    /**
      * 需要排除列属性
      */
     public String[] excludeFields;
@@ -210,19 +205,10 @@
     }
 
     /**
-     * 仅在Excel中显示列属性
-     *
-     * @param fields 列属性名 示例[单个"name"/多个"id","name"]
-     */
-    public void showColumn(String... fields)
-    {
-        this.includeFields = fields;
-    }
-
-    /**
      * 隐藏Excel中列属性
      *
      * @param fields 列属性名 示例[单个"name"/多个"id","name"]
+     * @throws Exception
      */
     public void hideColumn(String... fields)
     {
@@ -252,6 +238,8 @@
     {
         if (StringUtils.isNotEmpty(title))
         {
+            subMergedFirstRowNum++;
+            subMergedLastRowNum++;
             int titleLastCol = this.fields.size() - 1;
             if (isSubList())
             {
@@ -262,7 +250,7 @@
             Cell titleCell = titleRow.createCell(0);
             titleCell.setCellStyle(styles.get("title"));
             titleCell.setCellValue(title);
-            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), 0, titleLastCol));
+            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), titleLastCol));
         }
     }
 
@@ -273,31 +261,23 @@
     {
         if (isSubList())
         {
+            subMergedFirstRowNum++;
+            subMergedLastRowNum++;
             Row subRow = sheet.createRow(rownum);
-            int column = 0;
-            int subFieldSize = subFields != null ? subFields.size() : 0;
+            int excelNum = 0;
             for (Object[] objects : fields)
             {
-                Field field = (Field) objects[0];
                 Excel attr = (Excel) objects[1];
-                if (Collection.class.isAssignableFrom(field.getType()))
-                {
-                    Cell cell = subRow.createCell(column);
-                    cell.setCellValue(attr.name());
-                    cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor())));
-                    if (subFieldSize > 1)
-                    {
-                        CellRangeAddress cellAddress = new CellRangeAddress(rownum, rownum, column, column + subFieldSize - 1);
-                        sheet.addMergedRegion(cellAddress);
-                    }
-                    column += subFieldSize;
-                }
-                else
-                {
-                    Cell cell = subRow.createCell(column++);
-                    cell.setCellValue(attr.name());
-                    cell.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor())));
-                }
+                Cell headCell1 = subRow.createCell(excelNum);
+                headCell1.setCellValue(attr.name());
+                headCell1.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor())));
+                excelNum++;
+            }
+            int headFirstRow = excelNum - 1;
+            int headLastRow = headFirstRow + subFields.size() - 1;
+            if (headLastRow > headFirstRow)
+            {
+                sheet.addMergedRegion(new CellRangeAddress(rownum, rownum, headFirstRow, headLastRow));
             }
             rownum++;
         }
@@ -311,22 +291,10 @@
      */
     public List<T> importExcel(InputStream is)
     {
-        return importExcel(is, 0);
-    }
-
-    /**
-     * 对excel表单默认第一个索引名转换成list
-     * 
-     * @param is 输入流
-     * @param titleNum 标题占用行数
-     * @return 转换后集合
-     */
-    public List<T> importExcel(InputStream is, int titleNum)
-    {
         List<T> list = null;
         try
         {
-            list = importExcel(StringUtils.EMPTY, is, titleNum);
+            list = importExcel(is, 0);
         }
         catch (Exception e)
         {
@@ -338,6 +306,18 @@
             IOUtils.closeQuietly(is);
         }
         return list;
+    }
+
+    /**
+     * 对excel表单默认第一个索引名转换成list
+     * 
+     * @param is 输入流
+     * @param titleNum 标题占用行数
+     * @return 转换后集合
+     */
+    public List<T> importExcel(InputStream is, int titleNum) throws Exception
+    {
+        return importExcel(StringUtils.EMPTY, is, titleNum);
     }
 
     /**
@@ -731,91 +711,64 @@
     {
         int startNo = index * sheetSize;
         int endNo = Math.min(startNo + sheetSize, list.size());
-        int currentRowNum = rownum + 1; // 从标题行后开始
-
+        int rowNo = (1 + rownum) - startNo;
         for (int i = startNo; i < endNo; i++)
         {
-            row = sheet.createRow(currentRowNum);
+            rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo;
+            row = sheet.createRow(rowNo);
+            // 得到导出对象.
             T vo = (T) list.get(i);
+            Collection<?> subList = null;
+            if (isSubList())
+            {
+                if (isSubListValue(vo))
+                {
+                    subList = getListCellValue(vo);
+                    subMergedLastRowNum = subMergedLastRowNum + subList.size();
+                }
+                else
+                {
+                    subMergedFirstRowNum++;
+                    subMergedLastRowNum++;
+                }
+            }
             int column = 0;
-            int maxSubListSize = getCurrentMaxSubListSize(vo);
             for (Object[] os : fields)
             {
                 Field field = (Field) os[0];
                 Excel excel = (Excel) os[1];
-                if (Collection.class.isAssignableFrom(field.getType()))
+                if (Collection.class.isAssignableFrom(field.getType()) && StringUtils.isNotNull(subList))
                 {
-                    try
+                    boolean subFirst = false;
+                    for (Object obj : subList)
                     {
-                        Collection<?> subList = (Collection<?>) getTargetValue(vo, field, excel);
-                        if (subList != null && !subList.isEmpty())
+                        if (subFirst)
                         {
-                            int subIndex = 0;
-                            for (Object subVo : subList)
-                            {
-                                Row subRow = sheet.getRow(currentRowNum + subIndex);
-                                if (subRow == null)
-                                {
-                                    subRow = sheet.createRow(currentRowNum + subIndex);
-                                }
-
-                                int subColumn = column;
-                                for (Field subField : subFields)
-                                {
-                                    Excel subExcel = subField.getAnnotation(Excel.class);
-                                    addCell(subExcel, subRow, (T) subVo, subField, subColumn++);
-                                }
-                                subIndex++;
-                            }
-                            column += subFields.size();
+                            rowNo++;
+                            row = sheet.createRow(rowNo);
                         }
+                        List<Field> subFields = FieldUtils.getFieldsListWithAnnotation(obj.getClass(), Excel.class);
+                        int subIndex = 0;
+                        for (Field subField : subFields)
+                        {
+                            if (subField.isAnnotationPresent(Excel.class))
+                            {
+                                subField.setAccessible(true);
+                                Excel attr = subField.getAnnotation(Excel.class);
+                                this.addCell(attr, row, (T) obj, subField, column + subIndex);
+                            }
+                            subIndex++;
+                        }
+                        subFirst = true;
                     }
-                    catch (Exception e)
-                    {
-                        log.error("填充集合数据失败", e);
-                    }
+                    this.subMergedFirstRowNum = this.subMergedFirstRowNum + subList.size();
                 }
                 else
                 {
-                    // 创建单元格并设置值
-                    addCell(excel, row, vo, field, column);
-                    if (maxSubListSize > 1 && excel.needMerge())
-                    {
-                        sheet.addMergedRegion(new CellRangeAddress(currentRowNum, currentRowNum + maxSubListSize - 1, column, column));
-                    }
-                    column++;
-                }
-            }
-            currentRowNum += maxSubListSize;
-        }
-    }
-
-    /**
-     * 获取子列表最大数
-     */
-    private int getCurrentMaxSubListSize(T vo)
-    {
-        int maxSubListSize = 1;
-        for (Object[] os : fields)
-        {
-            Field field = (Field) os[0];
-            if (Collection.class.isAssignableFrom(field.getType()))
-            {
-                try
-                {
-                    Collection<?> subList = (Collection<?>) getTargetValue(vo, field, (Excel) os[1]);
-                    if (subList != null && !subList.isEmpty())
-                    {
-                        maxSubListSize = Math.max(maxSubListSize, subList.size());
-                    }
-                }
-                catch (Exception e)
-                {
-                    log.error("获取集合大小失败", e);
+                    this.addCell(excel, row, vo, field, column++);
                 }
             }
         }
-        return maxSubListSize;
     }
 
     /**
@@ -950,7 +903,7 @@
      */
     public void annotationDataStyles(Map<String, CellStyle> styles, Field field, Excel excel)
     {
-        String key = StringUtils.format("data_{}_{}_{}_{}_{}", excel.align(), excel.color(), excel.backgroundColor(), excel.cellType(), excel.wrapText());
+        String key = StringUtils.format("data_{}_{}_{}_{}", excel.align(), excel.color(), excel.backgroundColor(), excel.cellType());
         if (!styles.containsKey(key))
         {
             CellStyle style = wb.createCellStyle();
@@ -966,7 +919,6 @@
             style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
             style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
             style.setFillForegroundColor(excel.backgroundColor().getIndex());
-            style.setWrapText(excel.wrapText());
             Font dataFont = wb.createFont();
             dataFont.setFontName("Arial");
             dataFont.setFontHeightInPoints((short) 10);
@@ -995,7 +947,7 @@
         if (isSubList())
         {
             // 填充默认样式,防止合并单元格样式失效
-            sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType(), attr.wrapText())));
+            sheet.setDefaultColumnStyle(column, styles.get(StringUtils.format("data_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType())));
             if (attr.needMerge())
             {
                 sheet.addMergedRegion(new CellRangeAddress(rownum - 1, rownum, column, column));
@@ -1133,12 +1085,10 @@
                 cell = row.createCell(column);
                 if (isSubListValue(vo) && getListCellValue(vo).size() > 1 && attr.needMerge())
                 {
-                    if (subMergedLastRowNum >= subMergedFirstRowNum)
-                    {
-                        sheet.addMergedRegion(new CellRangeAddress(subMergedFirstRowNum, subMergedLastRowNum, column, column));
-                    }
+                    CellRangeAddress cellAddress = new CellRangeAddress(subMergedFirstRowNum, subMergedLastRowNum, column, column);
+                    sheet.addMergedRegion(cellAddress);
                 }
-                cell.setCellStyle(styles.get(StringUtils.format("data_{}_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType(), attr.wrapText())));
+                cell.setCellStyle(styles.get(StringUtils.format("data_{}_{}_{}_{}", attr.align(), attr.color(), attr.backgroundColor(), attr.cellType())));
 
                 // 用于读取对象中的属性
                 Object value = getTargetValue(vo, field, attr);
@@ -1479,7 +1429,6 @@
      */
     private Object getTargetValue(T vo, Field field, Excel excel) throws Exception
     {
-        field.setAccessible(true);
         Object o = field.get(vo);
         if (StringUtils.isNotEmpty(excel.targetAttr()))
         {
@@ -1539,83 +1488,46 @@
         List<Field> tempFields = new ArrayList<>();
         tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
         tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
-        if (StringUtils.isNotEmpty(includeFields))
+        for (Field field : tempFields)
         {
-            for (Field field : tempFields)
+            if (!ArrayUtils.contains(this.excludeFields, field.getName()))
             {
-                if (ArrayUtils.contains(this.includeFields, field.getName()) || field.isAnnotationPresent(Excels.class))
+                // 单注解
+                if (field.isAnnotationPresent(Excel.class))
                 {
-                    addField(fields, field);
+                    Excel attr = field.getAnnotation(Excel.class);
+                    if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
+                    {
+                        field.setAccessible(true);
+                        fields.add(new Object[] { field, attr });
+                    }
+                    if (Collection.class.isAssignableFrom(field.getType()))
+                    {
+                        subMethod = getSubMethod(field.getName(), clazz);
+                        ParameterizedType pt = (ParameterizedType) field.getGenericType();
+                        Class<?> subClass = (Class<?>) pt.getActualTypeArguments()[0];
+                        this.subFields = FieldUtils.getFieldsListWithAnnotation(subClass, Excel.class);
+                    }
                 }
-            }
-        }
-        else if (StringUtils.isNotEmpty(excludeFields))
-        {
-            for (Field field : tempFields)
-            {
-                if (!ArrayUtils.contains(this.excludeFields, field.getName()))
+
+                // 多注解
+                if (field.isAnnotationPresent(Excels.class))
                 {
-                    addField(fields, field);
+                    Excels attrs = field.getAnnotation(Excels.class);
+                    Excel[] excels = attrs.value();
+                    for (Excel attr : excels)
+                    {
+                        if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr())
+                                && (attr != null && (attr.type() == Type.ALL || attr.type() == type)))
+                        {
+                            field.setAccessible(true);
+                            fields.add(new Object[] { field, attr });
+                        }
+                    }
                 }
-            }
-        }
-        else
-        {
-            for (Field field : tempFields)
-            {
-                addField(fields, field);
             }
         }
         return fields;
-    }
-
-    /**
-     * 添加字段信息
-     */
-    public void addField(List<Object[]> fields, Field field)
-    {
-        // 单注解
-        if (field.isAnnotationPresent(Excel.class))
-        {
-            Excel attr = field.getAnnotation(Excel.class);
-            if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
-            {
-                fields.add(new Object[] { field, attr });
-            }
-            if (Collection.class.isAssignableFrom(field.getType()))
-            {
-                subMethod = getSubMethod(field.getName(), clazz);
-                ParameterizedType pt = (ParameterizedType) field.getGenericType();
-                Class<?> subClass = (Class<?>) pt.getActualTypeArguments()[0];
-                this.subFields = FieldUtils.getFieldsListWithAnnotation(subClass, Excel.class);
-            }
-        }
-
-        // 多注解
-        if (field.isAnnotationPresent(Excels.class))
-        {
-            Excels attrs = field.getAnnotation(Excels.class);
-            Excel[] excels = attrs.value();
-            for (Excel attr : excels)
-            {
-                if (StringUtils.isNotEmpty(includeFields))
-                {
-                    if (ArrayUtils.contains(this.includeFields, field.getName() + "." + attr.targetAttr())
-                            && (attr != null && (attr.type() == Type.ALL || attr.type() == type)))
-                    {
-                        fields.add(new Object[] { field, attr });
-                    }
-                }
-                else
-                {
-                    if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr())
-                            && (attr != null && (attr.type() == Type.ALL || attr.type() == type)))
-                    {
-                        fields.add(new Object[] { field, attr });
-                    }
-                }
-            }
-        }
     }
 
     /**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
index 48720dc..451c7dc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
@@ -13,7 +13,7 @@
     /**
      * 定义常用的 sql关键字
      */
-    public static String SQL_REGEX = "\u000B|and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()";
+    public static String SQL_REGEX = "and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()";
 
     /**
      * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序)
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
deleted file mode 100644
index 9a44ee6..0000000
--- a/ruoyi-framework/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-framework</artifactId>
-
-    <description>
-        framework框架核心
-    </description>
-
-    <dependencies>
-
-        <!-- SpringBoot Web容器 -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-
-        <!-- SpringBoot 拦截器 -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-aop</artifactId>
-        </dependency>
-
-        <!-- 阿里数据库连接池 -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-        </dependency>
-
-        <!-- 验证码 -->
-        <dependency>
-            <groupId>pro.fessional</groupId>
-            <artifactId>kaptcha</artifactId>
-            <exclusions>
-                <exclusion>
-                    <artifactId>servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- Shiro使用Spring框架 -->
-        <dependency>
-            <groupId>org.apache.shiro</groupId>
-            <artifactId>shiro-spring</artifactId>
-        </dependency>
-
-        <!-- thymeleaf模板引擎和shiro框架的整合 -->
-        <dependency>
-            <groupId>com.github.theborakompanioni</groupId>
-            <artifactId>thymeleaf-extras-shiro</artifactId>
-        </dependency>
-
-        <!-- 解析客户端操作系统、浏览器等 -->
-        <dependency>
-            <groupId>eu.bitwalker</groupId>
-            <artifactId>UserAgentUtils</artifactId>
-        </dependency>
-
-        <!-- 获取系统信息 -->
-        <dependency>
-            <groupId>com.github.oshi</groupId>
-            <artifactId>oshi-core</artifactId>
-        </dependency>
-
-        <!-- 系统模块-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-system</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
deleted file mode 100644
index 057c941..0000000
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.ruoyi.framework.config;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import javax.sql.DataSource;
-import org.apache.ibatis.io.VFS;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
-import org.springframework.core.type.classreading.MetadataReader;
-import org.springframework.core.type.classreading.MetadataReaderFactory;
-import org.springframework.util.ClassUtils;
-import com.ruoyi.common.utils.StringUtils;
-
-/**
- * Mybatis支持*匹配扫描包
- * 
- * @author ruoyi
- */
-@Configuration
-public class MyBatisConfig
-{
-    @Autowired
-    private Environment env;
-
-    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
-
-    public static String setTypeAliasesPackage(String typeAliasesPackage)
-    {
-        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
-        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
-        List<String> allResult = new ArrayList<String>();
-        try
-        {
-            for (String aliasesPackage : typeAliasesPackage.split(","))
-            {
-                List<String> result = new ArrayList<String>();
-                aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
-                        + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
-                Resource[] resources = resolver.getResources(aliasesPackage);
-                if (resources != null && resources.length > 0)
-                {
-                    MetadataReader metadataReader = null;
-                    for (Resource resource : resources)
-                    {
-                        if (resource.isReadable())
-                        {
-                            metadataReader = metadataReaderFactory.getMetadataReader(resource);
-                            try
-                            {
-                                result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
-                            }
-                            catch (ClassNotFoundException e)
-                            {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-                }
-                if (result.size() > 0)
-                {
-                    HashSet<String> hashResult = new HashSet<String>(result);
-                    allResult.addAll(hashResult);
-                }
-            }
-            if (allResult.size() > 0)
-            {
-                typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
-            }
-            else
-            {
-                throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
-            }
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();
-        }
-        return typeAliasesPackage;
-    }
-
-    public Resource[] resolveMapperLocations(String[] mapperLocations)
-    {
-        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
-        List<Resource> resources = new ArrayList<Resource>();
-        if (mapperLocations != null)
-        {
-            for (String mapperLocation : mapperLocations)
-            {
-                try
-                {
-                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
-                    resources.addAll(Arrays.asList(mappers));
-                }
-                catch (IOException e)
-                {
-                    // ignore
-                }
-            }
-        }
-        return resources.toArray(new Resource[resources.size()]);
-    }
-
-    @Bean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
-    {
-        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
-        String mapperLocations = env.getProperty("mybatis.mapperLocations");
-        String configLocation = env.getProperty("mybatis.configLocation");
-        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
-        VFS.addImplClass(SpringBootVFS.class);
-
-        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
-        sessionFactory.setDataSource(dataSource);
-        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
-        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
-        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
-        return sessionFactory.getObject();
-    }
-}
\ No newline at end of file
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
deleted file mode 100644
index 6faaf21..0000000
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package com.ruoyi.framework.config.properties;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import org.springframework.aop.framework.Advised;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.DeleteMapping;
-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.RequestMapping;
-import com.ruoyi.common.annotation.Anonymous;
-
-/**
- * 设置Anonymous注解允许匿名访问的url
- * 
- * @author ruoyi
- */
-@Configuration
-public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware
-{
-    private List<String> urls = new ArrayList<>();
-
-    private ApplicationContext applicationContext;
-
-    @Override
-    public void afterPropertiesSet() throws Exception
-    {
-        Map<String, Object> controllers = applicationContext.getBeansWithAnnotation(Controller.class);
-        for (Object bean : controllers.values())
-        {
-            Class<?> beanClass;
-            if (bean instanceof Advised)
-            {
-                beanClass = ((Advised) bean).getTargetSource().getTarget().getClass();
-            }
-            else
-            {
-                beanClass = bean.getClass();
-            }
-            // 处理类级别的匿名访问注解
-            if (beanClass.isAnnotationPresent(Anonymous.class))
-            {
-                RequestMapping baseMapping = beanClass.getAnnotation(RequestMapping.class);
-                if (Objects.nonNull(baseMapping))
-                {
-                    String[] baseUrl = baseMapping.value();
-                    for (String url : baseUrl)
-                    {
-                        urls.add(prefix(url) + "/*");
-                    }
-                    continue;
-                }
-            }
-
-            // 处理方法级别的匿名访问注解
-            Method[] methods = beanClass.getDeclaredMethods();
-            for (Method method : methods)
-            {
-                if (method.isAnnotationPresent(Anonymous.class))
-                {
-                    RequestMapping baseMapping = beanClass.getAnnotation(RequestMapping.class);
-                    String[] baseUrl = {};
-                    if (Objects.nonNull(baseMapping))
-                    {
-                        baseUrl = baseMapping.value();
-                    }
-                    if (method.isAnnotationPresent(RequestMapping.class))
-                    {
-                        RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
-                        String[] uri = requestMapping.value();
-                        urls.addAll(rebuildUrl(baseUrl, uri));
-                    }
-                    else if (method.isAnnotationPresent(GetMapping.class))
-                    {
-                        GetMapping requestMapping = method.getAnnotation(GetMapping.class);
-                        String[] uri = requestMapping.value();
-                        urls.addAll(rebuildUrl(baseUrl, uri));
-                    }
-                    else if (method.isAnnotationPresent(PostMapping.class))
-                    {
-                        PostMapping requestMapping = method.getAnnotation(PostMapping.class);
-                        String[] uri = requestMapping.value();
-                        urls.addAll(rebuildUrl(baseUrl, uri));
-                    }
-                    else if (method.isAnnotationPresent(PutMapping.class))
-                    {
-                        PutMapping requestMapping = method.getAnnotation(PutMapping.class);
-                        String[] uri = requestMapping.value();
-                        urls.addAll(rebuildUrl(baseUrl, uri));
-                    }
-                    else if (method.isAnnotationPresent(DeleteMapping.class))
-                    {
-                        DeleteMapping requestMapping = method.getAnnotation(DeleteMapping.class);
-                        String[] uri = requestMapping.value();
-                        urls.addAll(rebuildUrl(baseUrl, uri));
-                    }
-                }
-            }
-        }
-    }
-
-    private List<String> rebuildUrl(String[] bases, String[] uris)
-    {
-        List<String> urls = new ArrayList<>();
-        for (String base : bases)
-        {
-            if (uris.length > 0)
-            {
-                for (String uri : uris)
-                {
-                    urls.add(prefix(base) + prefix(uri));
-                }
-            }
-            else
-            {
-                urls.add(prefix(base));
-            }
-        }
-        return urls;
-    }
-
-    private String prefix(String seg)
-    {
-        return seg.startsWith("/") ? seg : "/" + seg;
-    }
-
-    @Override
-    public void setApplicationContext(ApplicationContext context) throws BeansException
-    {
-        this.applicationContext = context;
-    }
-
-    public List<String> getUrls()
-    {
-        return urls;
-    }
-
-    public void setUrls(List<String> urls)
-    {
-        this.urls = urls;
-    }
-}
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
index 7b4ddf6..4a0a22d 100644
--- a/ruoyi-generator/pom.xml
+++ b/ruoyi-generator/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>ruoyi</artifactId>
         <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
+        <version>4.7.9</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java
index c01857c..cc4cd14 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/config/GenConfig.java
@@ -21,14 +21,11 @@
     /** 生成包路径 */
     public static String packageName;
 
-    /** 自动去除表前缀 */
+    /** 自动去除表前缀,默认是false */
     public static boolean autoRemovePre;
 
-    /** 表前缀 */
+    /** 表前缀(类名不会包含表前缀) */
     public static String tablePrefix;
-
-    /** 是否允许生成文件覆盖到本地(自定义路径) */
-    public static boolean allowOverwrite;
 
     public static String getAuthor()
     {
@@ -72,16 +69,5 @@
     public void setTablePrefix(String tablePrefix)
     {
         GenConfig.tablePrefix = tablePrefix;
-    }
-
-    public static boolean isAllowOverwrite()
-    {
-        return allowOverwrite;
-    }
-
-    @Value("${allowOverwrite}")
-    public void setAllowOverwrite(boolean allowOverwrite)
-    {
-        GenConfig.allowOverwrite = allowOverwrite;
     }
 }
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 02fa6d9..49b02ba 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -32,7 +32,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.security.PermissionUtils;
 import com.ruoyi.common.utils.sql.SqlUtil;
-import com.ruoyi.generator.config.GenConfig;
 import com.ruoyi.generator.domain.GenTable;
 import com.ruoyi.generator.domain.GenTableColumn;
 import com.ruoyi.generator.service.IGenTableColumnService;
@@ -260,10 +259,6 @@
     @ResponseBody
     public AjaxResult genCode(@PathVariable("tableName") String tableName)
     {
-        if (!GenConfig.isAllowOverwrite())
-        {
-            return AjaxResult.error("【系统预设】不允许生成文件覆盖到本地");
-        }
         genTableService.generatorCode(tableName);
         return AjaxResult.success();
     }
diff --git a/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-generator/src/main/resources/generator.yml
index 73562c7..e8d25ac 100644
--- a/ruoyi-generator/src/main/resources/generator.yml
+++ b/ruoyi-generator/src/main/resources/generator.yml
@@ -8,6 +8,4 @@
   # 自动去除表前缀,默认是false
   autoRemovePre: false
   # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
-  tablePrefix: sys_
-  # 是否允许生成文件覆盖到本地(自定义路径),默认不允许
-  allowOverwrite: false
\ No newline at end of file
+  tablePrefix: sys_
\ No newline at end of file
diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
index 7fdd56c..e826fd4 100644
--- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
@@ -91,7 +91,6 @@
     /**
      * 新增${functionName}
      */
-    @RequiresPermissions("${permissionPrefix}:add")
     @GetMapping("/add")
     public String add()
     {
diff --git a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
index 0bf2c1f..b236ef0 100644
--- a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm
@@ -40,7 +40,7 @@
 #if($parentheseIndex != -1)
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
 #elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
 #else
     @Excel(name = "${comment}")
diff --git a/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
index 6591154..a3f53eb 100644
--- a/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/sub-domain.java.vm
@@ -31,7 +31,7 @@
 #if($parentheseIndex != -1)
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
 #elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
 #else
     @Excel(name = "${comment}")
diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
index ed4fe1d..23802a8 100644
--- a/ruoyi-quartz/pom.xml
+++ b/ruoyi-quartz/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>ruoyi</artifactId>
         <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
+        <version>4.7.9</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
index b9943e1..93b4108 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
@@ -118,7 +118,6 @@
     /**
      * 新增调度
      */
-    @RequiresPermissions("monitor:job:add")
     @GetMapping("/add")
     public String add()
     {
diff --git a/ruoyi-quartz/src/main/resources/templates/monitor/job/cron.html b/ruoyi-quartz/src/main/resources/templates/monitor/job/cron.html
index f2aacb5..a2f535b 100644
--- a/ruoyi-quartz/src/main/resources/templates/monitor/job/cron.html
+++ b/ruoyi-quartz/src/main/resources/templates/monitor/job/cron.html
@@ -1131,7 +1131,7 @@
 <script th:src="@{/js/jquery.min.js}"></script>
 <script th:src="@{/js/bootstrap.min.js}"></script>
 <script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
-<script th:src="@{/ruoyi/js/ry-ui.js?v=4.8.0}"></script>
+<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
 <script th:src="@{/js/cron.js}"></script>
 <script th:inline="javascript">
 var prefix = [[@{/}]] + "monitor/job";
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
deleted file mode 100644
index ecfe5aa..0000000
--- a/ruoyi-system/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>4.8.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-system</artifactId>
-
-    <description>
-        system系统模块
-    </description>
-
-    <dependencies>
-
-        <!-- 通用工具-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/ry.bat b/ry.bat
deleted file mode 100644
index ac1e437..0000000
--- a/ry.bat
+++ /dev/null
@@ -1,67 +0,0 @@
-@echo off
-
-rem jarƽ��Ŀ¼
-set AppName=ruoyi-admin.jar
-
-rem JVM����
-set JVM_OPTS="-Dname=%AppName%  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-
-
-ECHO.
-	ECHO.  [1] ����%AppName%
-	ECHO.  [2] �ر�%AppName%
-	ECHO.  [3] ����%AppName%
-	ECHO.  [4] ����״̬ %AppName%
-	ECHO.  [5] �� ��
-ECHO.
-
-ECHO.������ѡ����Ŀ�����:
-set /p ID=
-	IF "%id%"=="1" GOTO start
-	IF "%id%"=="2" GOTO stop
-	IF "%id%"=="3" GOTO restart
-	IF "%id%"=="4" GOTO status
-	IF "%id%"=="5" EXIT
-PAUSE
-:start
-    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if  defined pid (
-		echo %%is running
-		PAUSE
-	)
-
-start javaw %JVM_OPTS% -jar %AppName%
-
-echo  starting����
-echo  Start %AppName% success...
-goto:eof
-
-rem ����stopͨ��jps�������pid����������
-:stop
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% does not exists) else (
-		echo prepare to kill %image_name%
-		echo start kill %pid% ...
-		rem ���ݽ���ID��kill����
-		taskkill /f /pid %pid%
-	)
-goto:eof
-:restart
-	call :stop
-    call :start
-goto:eof
-:status
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% is dead ) else (
-		echo %image_name% is running
-	)
-goto:eof
diff --git a/ry.sh b/ry.sh
deleted file mode 100644
index d6a9cf3..0000000
--- a/ry.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
-AppName=ruoyi-admin.jar
-
-# JVM参数
-JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-APP_HOME=`pwd`
-LOG_PATH=$APP_HOME/logs/$AppName.log
-
-if [ "$1" = "" ];
-then
-    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
-    exit 1
-fi
-
-if [ "$AppName" = "" ];
-then
-    echo -e "\033[0;31m 未输入应用名 \033[0m"
-    exit 1
-fi
-
-function start()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-
-	if [ x"$PID" != x"" ]; then
-	    echo "$AppName is running..."
-	else
-		nohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 &
-		echo "Start $AppName success..."
-	fi
-}
-
-function stop()
-{
-    echo "Stop $AppName"
-
-	PID=""
-	query(){
-		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-	}
-
-	query
-	if [ x"$PID" != x"" ]; then
-		kill -TERM $PID
-		echo "$AppName (pid:$PID) exiting..."
-		while [ x"$PID" != x"" ]
-		do
-			sleep 1
-			query
-		done
-		echo "$AppName exited."
-	else
-		echo "$AppName already stopped."
-	fi
-}
-
-function restart()
-{
-    stop
-    sleep 2
-    start
-}
-
-function status()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
-    if [ $PID != 0 ];then
-        echo "$AppName is running..."
-    else
-        echo "$AppName is not running..."
-    fi
-}
-
-case $1 in
-    start)
-    start;;
-    stop)
-    stop;;
-    restart)
-    restart;;
-    status)
-    status;;
-    *)
-
-esac
diff --git a/sql/quartz.sql b/sql/quartz.sql
deleted file mode 100644
index cee613b..0000000
--- a/sql/quartz.sql
+++ /dev/null
@@ -1,174 +0,0 @@
-DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
-DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
-DROP TABLE IF EXISTS QRTZ_LOCKS;
-DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
-DROP TABLE IF EXISTS QRTZ_CALENDARS;
-
--- ----------------------------
--- 1、存储每一个已配置的 jobDetail 的详细信息
--- ----------------------------
-create table QRTZ_JOB_DETAILS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    job_name             varchar(200)    not null            comment '任务名称',
-    job_group            varchar(200)    not null            comment '任务组名',
-    description          varchar(250)    null                comment '相关介绍',
-    job_class_name       varchar(250)    not null            comment '执行任务类名称',
-    is_durable           varchar(1)      not null            comment '是否持久化',
-    is_nonconcurrent     varchar(1)      not null            comment '是否并发',
-    is_update_data       varchar(1)      not null            comment '是否更新数据',
-    requests_recovery    varchar(1)      not null            comment '是否接受恢复执行',
-    job_data             blob            null                comment '存放持久化job对象',
-    primary key (sched_name, job_name, job_group)
-) engine=innodb comment = '任务详细信息表';
-
--- ----------------------------
--- 2、 存储已配置的 Trigger 的信息
--- ----------------------------
-create table QRTZ_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_name         varchar(200)    not null            comment '触发器的名字',
-    trigger_group        varchar(200)    not null            comment '触发器所属组的名字',
-    job_name             varchar(200)    not null            comment 'qrtz_job_details表job_name的外键',
-    job_group            varchar(200)    not null            comment 'qrtz_job_details表job_group的外键',
-    description          varchar(250)    null                comment '相关介绍',
-    next_fire_time       bigint(13)      null                comment '上一次触发时间(毫秒)',
-    prev_fire_time       bigint(13)      null                comment '下一次触发时间(默认为-1表示不触发)',
-    priority             integer         null                comment '优先级',
-    trigger_state        varchar(16)     not null            comment '触发器状态',
-    trigger_type         varchar(8)      not null            comment '触发器的类型',
-    start_time           bigint(13)      not null            comment '开始时间',
-    end_time             bigint(13)      null                comment '结束时间',
-    calendar_name        varchar(200)    null                comment '日程表名称',
-    misfire_instr        smallint(2)     null                comment '补偿执行的策略',
-    job_data             blob            null                comment '存放持久化job对象',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS(sched_name, job_name, job_group)
-) engine=innodb comment = '触发器详细信息表';
-
--- ----------------------------
--- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数
--- ----------------------------
-create table QRTZ_SIMPLE_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    repeat_count         bigint(7)       not null            comment '重复的次数统计',
-    repeat_interval      bigint(12)      not null            comment '重复的间隔时间',
-    times_triggered      bigint(10)      not null            comment '已经触发的次数',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
-) engine=innodb comment = '简单触发器的信息表';
-
--- ----------------------------
--- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息
--- ---------------------------- 
-create table QRTZ_CRON_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    cron_expression      varchar(200)    not null            comment 'cron表达式',
-    time_zone_id         varchar(80)                         comment '时区',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
-) engine=innodb comment = 'Cron类型的触发器表';
-
--- ----------------------------
--- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
--- ---------------------------- 
-create table QRTZ_BLOB_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    blob_data            blob            null                comment '存放持久化Trigger对象',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
-) engine=innodb comment = 'Blob类型的触发器表';
-
--- ----------------------------
--- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
--- ---------------------------- 
-create table QRTZ_CALENDARS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    calendar_name        varchar(200)    not null            comment '日历名称',
-    calendar             blob            not null            comment '存放持久化calendar对象',
-    primary key (sched_name, calendar_name)
-) engine=innodb comment = '日历信息表';
-
--- ----------------------------
--- 7、 存储已暂停的 Trigger 组的信息
--- ---------------------------- 
-create table QRTZ_PAUSED_TRIGGER_GRPS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    primary key (sched_name, trigger_group)
-) engine=innodb comment = '暂停的触发器表';
-
--- ----------------------------
--- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
--- ---------------------------- 
-create table QRTZ_FIRED_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    entry_id             varchar(95)     not null            comment '调度器实例id',
-    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    instance_name        varchar(200)    not null            comment '调度器实例名',
-    fired_time           bigint(13)      not null            comment '触发的时间',
-    sched_time           bigint(13)      not null            comment '定时器制定的时间',
-    priority             integer         not null            comment '优先级',
-    state                varchar(16)     not null            comment '状态',
-    job_name             varchar(200)    null                comment '任务名称',
-    job_group            varchar(200)    null                comment '任务组名',
-    is_nonconcurrent     varchar(1)      null                comment '是否并发',
-    requests_recovery    varchar(1)      null                comment '是否接受恢复执行',
-    primary key (sched_name, entry_id)
-) engine=innodb comment = '已触发的触发器表';
-
--- ----------------------------
--- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
--- ---------------------------- 
-create table QRTZ_SCHEDULER_STATE (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    instance_name        varchar(200)    not null            comment '实例名称',
-    last_checkin_time    bigint(13)      not null            comment '上次检查时间',
-    checkin_interval     bigint(13)      not null            comment '检查间隔时间',
-    primary key (sched_name, instance_name)
-) engine=innodb comment = '调度器状态表';
-
--- ----------------------------
--- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
--- ---------------------------- 
-create table QRTZ_LOCKS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    lock_name            varchar(40)     not null            comment '悲观锁名称',
-    primary key (sched_name, lock_name)
-) engine=innodb comment = '存储的悲观锁信息表';
-
--- ----------------------------
--- 11、 Quartz集群实现同步机制的行锁表
--- ---------------------------- 
-create table QRTZ_SIMPROP_TRIGGERS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_name         varchar(200)    not null            comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
-    str_prop_1           varchar(512)    null                comment 'String类型的trigger的第一个参数',
-    str_prop_2           varchar(512)    null                comment 'String类型的trigger的第二个参数',
-    str_prop_3           varchar(512)    null                comment 'String类型的trigger的第三个参数',
-    int_prop_1           int             null                comment 'int类型的trigger的第一个参数',
-    int_prop_2           int             null                comment 'int类型的trigger的第二个参数',
-    long_prop_1          bigint          null                comment 'long类型的trigger的第一个参数',
-    long_prop_2          bigint          null                comment 'long类型的trigger的第二个参数',
-    dec_prop_1           numeric(13,4)   null                comment 'decimal类型的trigger的第一个参数',
-    dec_prop_2           numeric(13,4)   null                comment 'decimal类型的trigger的第二个参数',
-    bool_prop_1          varchar(1)      null                comment 'Boolean类型的trigger的第一个参数',
-    bool_prop_2          varchar(1)      null                comment 'Boolean类型的trigger的第二个参数',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
-) engine=innodb comment = '同步机制的行锁表';
-
-commit;
\ No newline at end of file
diff --git a/sql/ruoyi.html b/sql/ruoyi.html
deleted file mode 100644
index abd2596..0000000
--- a/sql/ruoyi.html
+++ /dev/null
@@ -1,2890 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<!DOCTYPE html>
-<html lang='en' xmlns='http://www.w3.org/1999/xhtml' >
-<head>
-<title>RuoYi</title>
-<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
-<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
-<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
-<!--<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>-->
-<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>-->
-<link rel="shortcut icon" href="https://www.dbschema.com/images/favicon.ico">
-<style type='text/css'>
-body {
-    font-family: 'Segoe UI', 'Lucida sans', Dialog;
-    font-size: 13px;
-    background-color:#f5f5f5;
-    margin: 10px;
-}
-</style>
-</head>
-
-<body>
-<div class='svg-container'>
-<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'   width='1890' height='1100' viewBox='0 0 1890 1100' >
-  <script type='text/ecmascript'>
-  <![CDATA[
-  function hghl(el) { for ( var i in el ){ var elem = document.getElementById(el[i]); if ( elem != null ) elem.setAttribute('class','highlight');  }  }
-  function uhghl(el) { for ( var i in el ){ var elem = document.getElementById(el[i]); if ( elem != null ) elem.setAttribute('class','scene'); }  } 
-  ]]>
-  </script> 
-
-<style type='text/css'>
-  text                { fill:#000000; font-family: SimSun, 'Trebuchet MS', Dialog; font-size:11px; }
-  a text:hover        { fill:#94025f; text-shadow: 0px 0px 6px #d0ce00; font-size:13px; }
-  text.highlight      { fill:#94025f; text-shadow: 0px 0px 4px #eac533; font-size:13px; }
-  text.colType        { fill:#b3b3b3; }
-  text.relName        { fill:#b09c7c; }
-  path                { stroke:#5c554f; stroke-width:1.15; fill:none; }
-  path                { stroke:#5c554f; stroke-width:1.15; fill:none;}
-  path.virtual        { stroke:#b7642d; }
-  path.logo           { fill:#fbeac0;fill-opacity:1;stroke-width:0.3;stroke:#222222; }
-  path.dotted         { stroke-dasharray:4,2; }
-  path.scene          { stroke-width:10; opacity:0;}
-  path.highlight      { stroke-width:5; stroke:#c1a662; opacity:0.6;}
-  rect.entity         { fill:#ffffff; stroke:#aaa; stroke-width:1;shape-rendering:crispEdges;filter:url(#shadow); }
-  line.delim          { stroke-width:1; shape-rendering:crispEdges; }
-  text.callout        { fill:#000000; font-family: SimSun, 'Trebuchet MS', Dialog; font-size:12px; }
-  rect.callout        { fill:url(#calloutGradient); stroke:#bebdbd; stroke-width:0.5; filter: url(#shadow);}
-  rect.grp            { stroke:#b1b1b1; stroke-width:1.7; opacity:0.8; }
-  path.st0            { fill:#ececec;fill-opacity:1;stroke-width:0.6;stroke:#aaaaaa; }
-</style>
-<defs>
-  <pattern id='layoutBgA' patternUnits='userSpaceOnUse'  width='10' height='20' x='0' y='0' viewBox='0 0 5 10'>  
-     <line x1='-2' y1='1' x2='7' y2='10' stroke='#f3f3f3' stroke-width='.5'/>  
-     <line x1='-2' y1='6' x2='7' y2='15' stroke='#f3f3f3' stroke-width='.5'/>  
-     <line x1='-2' y1='-4' x2='7' y2='5' stroke='#f3f3f3' stroke-width='.5'/>  
-  </pattern>  
-  <radialGradient id='layoutBgB' gradientUnits='userSpaceOnUse' cx='50%' cy='50%' r='75%' fx='46%' fy='22%'>
-     <stop offset='0%' stop-opacity='.2' stop-color='#f5f5f5' />  
-     <stop offset='100%' stop-color='#efefef' />  
-  </radialGradient>
-  <pattern id='layoutBgTr' patternUnits='userSpaceOnUse'  width='300' height='300' x='0' y='0' viewBox='0 0 300 300'>  
-  <path class='st0' d='m 62.011835,91.267143 c 3.536475,3.175214 2.262669,8.705999 -1.637711,11.015197 -3.594697,5.8423 -6.34682,-2.892623 -9.715478,-4.653898 -5.609222,-2.838926 2.050802,-6.680123 4.77004,-8.319046 2.334696,-0.724067 4.935143,0.312302 6.583149,1.957747 z m -2.720492,2.538595 c -2.698397,-3.517732 -9.282815,1.269287 -3.69635,3.568637 2.765331,5.605665 7.052809,-0.56184 3.69635,-3.568637 z' />
-  <path class='st0' d='m 72.25864,84.624638 c 4.108046,3.143003 -0.737059,6.895259 -1.994918,8.323564 -3.586718,5.561143 -6.495079,-4.197379 -10.07759,-5.582178 -4.443422,-1.088878 1.349298,-7.249213 2.503526,-2.503449 2.464639,4.517161 2.304019,-3.70697 6.291113,-1.995914 1.280083,0.137865 2.410691,0.864819 3.277869,1.757977 z m -2.646109,2.323242 c -4.797162,-3.078383 -2.810517,6.305507 0.515161,1.990646 0.296432,-0.688582 0.01209,-1.493412 -0.515161,-1.990646 z' />
-  <path class='st0' d='m 78.230641,79.436735 c 4.142121,3.027466 -2.020102,10.435276 -3.450543,5.477315 3.306312,-5.248112 -9.186019,-2.220094 -5.805994,-8.77679 -0.544141,-3.93011 6.797826,-2.102227 3.386015,0.245477 -0.181085,2.915838 4.637371,1.019311 5.870522,3.053982 z' />
-  <path class='st0' d='m 82.744502,72.597397 c -4.901605,1.926521 1.146497,6.285555 2.559694,2.225783 6.21817,3.539297 -6.640186,8.416664 -7.590325,1.997457 -2.24365,-2.914883 4.026676,-10.148618 5.030631,-4.22324 z' />
-  <path class='st0' d='m 90.727458,64.259158 c 1.583987,1.690029 3.321317,3.2696 4.81267,5.026353 -2.535706,6.849794 -6.445583,-5.918773 -8.388458,-0.167017 0.782768,2.03426 5.877405,3.752079 2.670979,5.711199 -3.315119,1.519161 -5.782422,-5.157931 -8.858893,-6.780537 -4.229842,-1.139816 1.510134,-7.074128 2.586227,-2.385939 3.141198,5.495193 1.840537,-5.598295 7.177489,-1.404062 z' />
-  <path class='st0' d='m 99.622027,58.374253 c 1.493293,1.9548 -6.281936,7.024659 -0.885258,4.740447 0.386238,-4.434477 6.131941,-1.133173 2.175851,1.618005 -4.421491,6.12739 -13.666659,-3.151506 -7.058299,-7.136537 1.785129,-1.119329 4.348209,-0.743179 5.767706,0.778085 z m -2.900824,1.89746 c -3.608188,-2.208543 -2.280489,5.00803 -0.12563,0.329531 z' />
-  <path class='st0' d='m 115.18023,50.570441 c -1.61703,5.201678 -4.6204,-0.364502 -7.01598,-1.749619 -4.40977,2.122562 4.89641,4.913939 1.89606,7.018157 -2.48061,3.877635 -4.11404,-4.060614 -7.01192,-2.6391 -1.76318,3.107252 7.28394,6.252304 0.87346,7.876177 -1.74515,-2.956649 -9.055498,-5.610518 -3.950378,-8.66062 1.696478,1.897023 1.770418,-5.43503 5.347308,-3.072411 -0.44014,-5.474701 6.11995,-4.950882 7.7846,-0.815355 0.69076,0.682329 1.39587,1.351469 2.07685,2.042771 z' />
-  <path class='st0' d='m 120.54891,39.417125 c 2.50681,1.334124 4.80466,4.941837 0.75044,5.297362 -0.46414,1.89865 -5.25369,5.602652 -8.01742,1.815475 -3.87345,-2.809139 -0.0676,-7.603869 2.3036,-8.133924 1.6795,-3.853018 3.16703,-1.199465 4.96338,1.021087 z m -2.2464,2.175828 c -4.8049,-2.992167 -3.08987,6.380358 0.42374,2.036159 0.33052,-0.677508 0.12099,-1.525836 -0.42374,-2.036159 z' />
-  <path class='st0' d='m 128.50836,24.06821 c -5.10403,3.035506 3.20535,6.383175 5.05938,9.450276 -0.91853,2.95886 -4.06493,3.650723 -5.34691,0.265618 -2.25715,-2.089033 -4.65672,-6.948595 -7.07024,-2.584686 -4.71758,-3.764394 3.81217,-5.812054 5.12382,-9.226328 0.75738,0.677487 1.38637,1.498638 2.23389,2.095175 z' />
-  <path class='st0' d='m 137.14366,22.299812 c -3.09615,2.259885 0.71537,4.412454 1.99042,6.435866 -3.08975,5.080354 -5.91384,-2.98648 -8.92144,-4.094939 1.44369,-3.219573 3.3497,-1.335928 4.27156,-4.41058 0.97822,-0.894325 1.75044,1.871047 2.65946,2.069653 z' />
-  <path class='st0' d='m 136.85093,14.890174 c 2.31562,5.283511 -7.17975,1.771993 -1.29675,-0.475107 l 0.7108,0.08973 z m 4.867,5.317354 c 2.56912,1.439678 4.26517,4.725219 0.30678,5.233637 -1.56592,-3.098864 -9.51683,-5.749448 -3.64502,-8.633714 1.17746,0.325095 2.15375,2.591149 3.33824,3.400077 z' />
-  <path class='st0' d='m 149.95578,11.976423 c 2.50679,1.334142 4.80455,4.94192 0.75041,5.297394 -0.4641,1.898604 -5.25368,5.602645 -8.0174,1.81545 -3.87347,-2.80918 -0.0676,-7.603844 2.30366,-8.133968 1.67949,-3.8530525 3.16695,-1.1993573 4.96333,1.021124 z m -2.24641,2.175828 c -4.80489,-2.992177 -3.08986,6.380343 0.42374,2.036167 0.33055,-0.677518 0.121,-1.52585 -0.42374,-2.036167 z' />
-  <path class='st0' d='m 153.26135,7.538431 c 2.60497,1.5799548 6.03999,5.944272 1.08117,6.050232 -2.53319,-3.231828 -7.20316,-6.4304525 -8.84748,-9.4582682 1.89121,-2.8664883 3.78452,-2.247699 5.38514,0.8929426 0.78017,0.8503859 1.57195,1.6911437 2.38118,2.5150667 z' />
-  </pattern>  
-  <linearGradient id='groupUnderTitleLine' x1='0%' y1='0%' x2='100%' y2='0%' >
-          <stop offset='0%' stop-color='#999999' stop-opacity='0.7'/> 
-          <stop offset='100%' stop-color='#999999' stop-opacity='0' /> 
-   </linearGradient>
-  <radialGradient id='calloutGradient' cx='25%' cy='20%' r='80%' fx='10%' fy='10%'>
-	   <stop offset='0%' stop-color='#ffffff' />
-    <stop offset='100%' stop-color='#f8f6d1' />
-  </radialGradient>
-  <filter id='shadow' width='120%' height='120%'> 
-      <feOffset result='offOut' in='SourceGraphic' dx='1' dy='1' /> 
-      <feColorMatrix result='matrixOut' in='offOut' type='matrix' 
-      values='0.1 0 0 0 0 0 0.4 0 0 0 0 0 0.6 0 0 0 0 0 0.3 0' /> 
-      <feGaussianBlur result='blurOut' in='matrixOut' stdDeviation='3' /> 
-      <feBlend in='SourceGraphic' in2='blurOut' mode='normal' /> 
-    </filter> 
-  <filter id='fkShadow' height='130%'> 
-    <feGaussianBlur in='SourceAlpha' stdDeviation='1.5'/> <!-- stdDeviation is how much to blur -->
-    <feOffset dx='1.2' dy='1.2' result='offsetblur'/> <!-- how much to offset -->
-    <feMerge>
-    <feMergeNode/> <!-- this contains the offset blurred image -->
-    <feMergeNode in='SourceGraphic'/> <!-- this contains the element that the filter is applied to -->
-    </feMerge>
-  </filter>
-  <radialGradient id='legendGradient' fx='5%' fy='5%' r='75%' spreadMethod='pad'>
-          <stop offset='0%' stop-color='#eefbf2' stop-opacity='1'/> 
-          <stop offset='100%' stop-color='#cff9cb' stop-opacity='1' /> 
-   </radialGradient>
-  <symbol id='calloutArrowDown' overflow='visible' >
-      <path d='M 0,0 L 7,11 L 15,0 z' style='fill:#f8f6d1;stroke:none; filter: url(#shadow);' />
-      <path d='M 0,0 L 7,11 L 15,0' style='stroke:#bebdbd; stroke-width:0.5;' />
-  </symbol>
-  <symbol id='calloutArrowUp' overflow='visible' >
-      <path d='M 0,15 L 7,3 L 15,15 z' style='fill:#ffffff; stroke:none; filter: url(#shadow);' />
-      <path d='M 0,15 L 7,3 L 15,15' style='stroke:#bebdbd; stroke-width:0.5;' />
-  </symbol>
-  <symbol id='pk' overflow='visible' >
-    <g transform='scale(0.99)'>
-     <path style='fill:#fffa7d;stroke:#765f03;stroke-width:0.6;stroke-linecap:round;stroke-linejoin:round;'
-        d='M 9.3678877,3.5695485 C 9.1030218,3.2729386 9.0796382,2.7628519 9.3396185,2.4517097 9.5449651,2.1956495 9.9040386,2.0980533 10.199638,2.2169415 10.533525,2.3415459 10.775153,2.706942 10.750675,3.0842709 10.737029,3.3980003 10.541153,3.699122 10.258248,3.8066067 9.966649,3.9250429 9.6169668,3.8418805 9.4008073,3.6062324 9.3894892,3.5943518 9.3785264,3.582104 9.3678886,3.5695487 z M 11.226617,6.9916004 C 11.888137,6.3548946 12.293488,5.4172188 12.311087,4.442353 12.378144,2.7379364 11.248678,1.0541269 9.7322318,0.44767357 8.3887112,-0.1280313 6.7865012,0.26822889 5.8918395,1.4007929 5.080823,2.3839145 4.9336815,3.8452096 5.3635544,5.101615 L 4.3670905,5.315913 C 4.0664984,5.3682645 4.0967703,5.6316724 4.2574957,5.8208829 L 4.9124,6.5655244 4.1543436,7.2512357 3.2136002,7.2163506 3.1674775,8.5586827 2.0406832,8.5086512 1.5965306,8.9299953 1.5471661,10.179833 0.75616674,10.195223 0.2112857,10.758575 0.15354288,11.735988 0.07199052,12.765553 c 0.36440953,0.238225 0.79006967,0.195492 1.44938278,-0.02675 L 6.3033562,8.1282037 6.8217102,8.6765688 C 6.9985465,8.8799427 7.3003699,8.7497574 7.358381,8.5016252 L 7.4938877,7.5084164 c 0.8537488,0.3985387 1.8303125,0.4711541 2.6851793,0.1427713 0.393927,-0.1407258 0.746858,-0.3701772 1.04755,-0.6595873 z'/>
-     <path d='M 6.8014948,6.3102123 0.15369063,13.024481 0.21560535,12.141962 6.0062342,6.2683782 z'
-        style='fill:#ffe5a5;fill-opacity:1;stroke:#854e31;stroke-width:0.06912433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:3.00300009'/>
-    </g>
-  </symbol>
-  <symbol id='dist' overflow='visible' >
-    <g transform='scale(0.99)'>
-      <path style='fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;' d='M 0.177,11.431 12.28,11.449'/>
-      <path style='fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;' d='m 6.124,3.954 0.066,7.154 v 0'/>
-      <rect width='11.78' height='3.40' x='0.40' y='0.44' style='fill:#fffa7d;stroke:#765f03;stroke-width:0.6;' ry='0.83'/>
-      <rect width='11.78' height='3.40' x='0.40' y='5.609' style='fill:#fffa7d;stroke:#765f03;stroke-width:0.6;' ry='0.832'/>
-    </g>
-  </symbol>
-  <symbol id='unq' overflow='visible' >
-    <g transform='scale(0.99)'>
-      <rect style='fill:#fbea8e;stroke:#7e4d31;stroke-width:0.71934468;stroke-linecap:round;stroke-linejoin:round;'
-         width='2.29' height='8.43' x='7.48' y='-0.76' ry='1.14' transform='matrix(0.701,0.713,-0.727,0.685,0,0)' />
-      <path style='fill:white;stroke:#858585;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;'
-         d='m 26.04,8.64 a 4.13,4.13 0 1 1 -8.26,0 4.13,4.13 0 1 1 8.26,0 z'
-         transform='matrix(1.025,0,0,0.987,-14.690,-3.862)' />
-      <text x='5.8' y='7.4' style='font-size:7px;fill:#8a8a8a;'>1</text>
-    </g>
-  </symbol>
-  <symbol id='idx' overflow='visible' >
-    <g transform='scale(0.99)'>
-      <rect style='fill:#fbea8e;stroke:#7e4d31;stroke-width:0.71934468;stroke-linecap:round;stroke-linejoin:round;'
-         width='2.29' height='8.43' x='7.48' y='-0.76' ry='1.14' transform='matrix(0.701,0.713,-0.727,0.685,0,0)' />
-      <path style='fill:white;stroke:#858585;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;'
-         d='m 26.04,8.64 a 4.13,4.13 0 1 1 -8.26,0 4.13,4.13 0 1 1 8.26,0 z'
-         transform='matrix(1.025,0,0,0.987,-14.690,-3.862)' />
-    </g>
-  </symbol>
-  <symbol id='fk' overflow='visible' >
-    <g transform='scale(0.87)'>
-      <path style='fill:#f3e1b7;stroke:#7e471f;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-      d='M 12.48,0.33 7.07,0.89 9.067,2.974 0.329,11.731 1.073,12.597 9.811,3.841 11.77,5.78 z' />
-    </g>
-  </symbol>
-  <symbol id='ref' overflow='visible' >
-    <g transform='scale(0.87)'>
-      <path style='fill:#f3e1b7;stroke:#7e471f;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-          d='M 0.10,12.70 5.31,12.15 3.40,10.06 11.82,1.32 11.11,0.45 2.68,9.19 0.80,7.24 z'/>
-    </g>
-  </symbol>
-  <symbol id='flag0' overflow='visible' >
-    <g transform='scale(0.92)'>
-      <path style='fill:#b7d0f6;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-          d='M 0.12,12.67 0.16,7.22 C 2.59,7.22 4.13,8.78 9.22,4.22 5.68,4.98 2.53,4.50 0.09,1.80 z'/>
-    </g>
-  </symbol>
-  <symbol id='flag1' overflow='visible' >
-    <g transform='scale(0.92)'>
-      <path style='fill:#f4a393;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-          d='M 0.12,12.67 0.16,7.22 C 2.59,7.22 4.13,8.78 9.22,4.22 5.68,4.98 2.53,4.50 0.09,1.80 z'/>
-    </g>
-  </symbol>
-  <symbol id='flag2' overflow='visible' >
-    <g transform='scale(0.92)'>
-      <path style='fill:#77ec8b;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-          d='M 0.12,12.67 0.16,7.22 C 2.59,7.22 4.13,8.78 9.22,4.22 5.68,4.98 2.53,4.50 0.09,1.80 z'/>
-    </g>
-  </symbol>
-  <symbol id='nn' overflow='visible' >
-  <path style='stroke:#9b3e50;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;'
-          d='M 0,0 3,3 M 0,3 3,0 z'/>
-  </symbol>
-  <symbol id='view' overflow='visible' >
-    <g transform='scale(0.99)'>
-     <line x1='12' y1='6' x2='19' y2='0' stroke='black' stroke-width='0.5' />
-     <line x1='0' y1='6' x2='7' y2='0' stroke='black' stroke-width='0.5' />
-     <circle cx='3' cy='6' r='3' fill='#f9ebbc' stroke='black' stroke-width='0.5'/>
-     <circle cx='10' cy='6' r='3' fill='#f9ebbc' stroke='black' stroke-width='0.5'/>
-    </g>
-  </symbol>
-  <marker id='arrow01' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 7.500,3.750 L 15.000,3.750 L 7.500,0.000 L 15.000,3.750 L 7.500,7.500' />
-  </marker>
-  <marker id='arrow1' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 7.500,3.750 L 15.000,3.750 L 7.500,0.000 L 15.000,3.750 L 7.500,7.500' />
-  </marker>
-  <marker id='foot01' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 0.00,3.75 L 15.00,3.75 z' />
-    <circle cx='11.25' cy='3.75' r='2.50' style='fill:white;stroke:#5e554d;' />
-    <path d='M 3.75,0.00 L 3.75, 7.50 z' />
-  </marker>
-  <marker id='foot0p' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 0.00,3.75 L 15.00,3.75 z' />
-    <circle cx='11.25' cy='3.75' r='2.50' style='fill:white;stroke:#5e554d;' />
-    <path d='M 0.00,0.00 L 7.50,3.75 L 0.00,7.50' />
-  </marker>
-  <marker id='foot1' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 0.00,3.75 L 15.00,3.75 z' />
-    <path d='M 7.50,0.00 L 7.50, 7.50 z' />
-    <path d='M 3.75,0.00 L 3.75, 7.50 z' />
-  </marker>
-  <marker id='foot1p' viewBox='0 0 15.00 7.50' refX='7.50' refY='3.75' markerUnits='strokeWidth' markerWidth='15.00' markerHeight='7.50' orient='auto'>
-    <path d='M 0.00,3.75 L 15.00,3.75 z' />
-    <path d='M 7.50,0.00 L 7.50, 7.50 z' />
-    <path d='M 0.00,0.00 L 7.50,3.75 L 0.00,7.50' />
-  </marker>
-  <linearGradient id='tbg_bfd4f5' x1='0%' y1='0%' x2='0%' y2='100%' >
-     <stop offset='0%' stop-color='#496ba1' /> 
-     <stop offset='100%' stop-color='#1f4682' /> 
-  </linearGradient>
-  <linearGradient id='tbg_c8f5bf' x1='0%' y1='0%' x2='0%' y2='100%' >
-     <stop offset='0%' stop-color='#58a149' /> 
-     <stop offset='100%' stop-color='#30821f' /> 
-  </linearGradient>
-  <linearGradient id='tbg_f5ddbf' x1='0%' y1='0%' x2='0%' y2='100%' >
-     <stop offset='0%' stop-color='#a17a49' /> 
-     <stop offset='100%' stop-color='#82561f' /> 
-  </linearGradient>
-  <linearGradient id='tbg_bfbff5' x1='0%' y1='0%' x2='0%' y2='100%' >
-     <stop offset='0%' stop-color='#4949a1' /> 
-     <stop offset='100%' stop-color='#1f1f82' /> 
-  </linearGradient>
-</defs>
-
-<!-- == Desktop == -->
-<rect x='1' y='1' width='1888' height='1098' rx='7' ry='7' style='fill:url(#layoutBgB); stroke:#777777; stroke-width:0.5;' />
-<rect x='1' y='1' width='1888' height='1098' rx='7' ry='7' style='fill:url(#layoutBgA); stroke:#777777; stroke-width:0.5;' />
-
-<!-- == Legend == -->
-<g transform='translate(10,10)'>
-  <rect x='10' y='10' width='330' height='56' rx='6' ry='6' style='fill:url(#legendGradient);filter:url(#shadow);'/> 
-  <text x='20' y='43'>RuoYi</text> 
-  <text x='20' y='57' style='fill:#aaaaaa; font-size:11px;'><tspan>Move the mouse over tables &amp; columns to read the comments.</tspan></text> 
-<a xlink:href='https://www.dbschema.com'> <path class='logo' d='m 32.309685,20.963194 c 0.411708,4.732616 -4.298055,7.925636 -8.723583,6.970196 -6.616967,1.8448 -2.656457,-6.434594 -3.911969,-10.01566 -2.15469,-5.89407 6.06247,-3.508505 9.167655,-2.863689 2.199228,1.054873 3.389343,3.582089 3.467897,5.909153 z m -3.720955,0.01451 c 0.434195,-4.414565 -7.644142,-5.37533 -5.137307,0.107342 -1.812268,5.992146 5.532698,4.379388 5.137307,-0.107342 z' /> <path class='logo' d='m 44.329732,23.050637 c 0.850982,5.097305 -5.250434,4.558924 -7.144836,4.752415 -6.418993,1.64391 -1.872992,-7.49274 -3.541914,-10.942842 -2.499646,-3.817859 5.939283,-4.402698 3.538545,-0.13612 -1.287874,4.989123 4.215411,-1.154796 5.956717,2.809584 0.840273,0.970849 1.168829,2.272413 1.191488,3.516963 z m -3.519477,-0.09299 c -1.398216,-5.518069 -6.361061,2.717467 -0.984368,1.810718 0.686994,-0.30388 1.029454,-1.087638 0.984368,-1.810718 z' /> <path class='logo' d='m 52.234961,23.301163 c 0.954818,5.035675 -8.606408,6.284861 -6.262292,1.674914 6.000358,-1.604717 -5.188764,-7.870044 1.75972,-10.384908 2.288682,-3.253567 6.399287,3.075831 2.304111,2.48058 -2.124941,2.016587 2.688777,3.89858 2.198472,6.229403 z' /> <path class='logo' d='m 60.204336,21.349224 c -4.894917,-1.916474 -3.458707,5.391212 0.347494,3.37231 2.120589,6.821713 -10.599623,1.664746 -6.906229,-3.691132 0.354172,-3.663246 9.875349,-4.711252 6.558735,0.318822 z' /> <path class='logo' d='m 71.730617,20.654299 c 0.0013,2.316285 0.190131,4.655698 0.07825,6.958009 -6.532419,3.303565 -0.660423,-8.722256 -6.009639,-5.821653 -0.818815,2.024533 1.726403,6.746337 -1.95327,6.005484 -3.458346,-1.137537 -0.696275,-7.713407 -1.833252,-10.994208 -2.308916,-3.710131 5.93704,-4.164951 3.518609,0.0063 -1.462376,6.166445 5.169629,-2.857523 6.19931,3.846079 z' /> <path class='logo' d='m 82.245738,22.378957 c -0.24581,2.448954 -9.386766,0.8867 -3.885979,2.877055 3.312576,-2.99157 5.250902,3.334514 0.482647,2.665545 -7.415384,1.492275 -7.823196,-11.597641 -0.275476,-10.032117 2.068161,0.391458 3.682204,2.408824 3.678808,4.489517 z m -3.414436,-0.578473 c -1.124703,-4.072004 -5.087405,2.125488 -0.316922,0.156453 z' /> <path class='logo' d='m 98.936899,27.222794 c -4.73541,2.718339 -3.1239,-3.406557 -3.92611,-6.050494 -4.66985,-1.438471 0.21621,6.932413 -3.41219,6.438039 -4.46096,1.160054 -0.22824,-5.774711 -3.31526,-6.700429 -3.410722,1.082173 1.04451,9.536575 -4.745091,6.372895 0.746632,-3.355214 -2.776394,-10.269232 3.034971,-9.038963 -0.058,2.544602 5.00686,-2.785359 6.00342,1.37844 3.42021,-4.316316 7.851251,0.524966 6.24018,4.690538 0.0379,0.969988 0.0954,1.940046 0.12008,2.909974 z' /> <path class='logo' d='m 110.47859,22.686058 c 0.91826,2.682088 0.13016,6.890551 -3.0725,4.397004 -1.63641,1.077877 -7.664291,0.541832 -7.09365,-4.114836 -0.907891,-4.692933 5.14729,-5.625578 7.24058,-4.40354 3.85932,-1.686263 3.13176,1.271515 2.92557,4.121372 z m -3.12695,0.0704 c -1.46278,-5.460062 -6.61615,2.5826 -1.08221,1.782003 0.70431,-0.272594 1.13111,-1.037444 1.08221,-1.782003 z' /> </a>
-</g>
-
-<g transform='translate(0,110)'>
-<!-- == Fk 'qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1' == -->
-<path id='qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1'  onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" transform='translate(7,0)' class='scene' d='M 270 525 L 270,480' >
-	<title>Fk qrtz_blob_triggers_ibfk_1
-qrtz_blob_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )</title>
-</path>
-<path transform='translate(7,0)' marker-start='url(#foot1)' marker-end='url(#arrow1)'    d='M 270 525 L 270,480' ></path>
-<text x='272' y='520' transform='rotate(270 272,520)' title='Fk qrtz_blob_triggers_ibfk_1
-qrtz_blob_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )' class='relName' style='fill:#5f789f'>sched_name,trigger_name,trigger_group</text>
-<!-- == Fk 'qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1' == -->
-<path id='qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1'  onmouseover="hghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" transform='translate(7,0)' class='scene' d='M 420 540 L 397,540 Q 390,540 390,532 L 390,472 Q 390,465 382,465 L 375,465' >
-	<title>Fk qrtz_cron_triggers_ibfk_1
-qrtz_cron_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )</title>
-</path>
-<path transform='translate(7,0)' marker-start='url(#foot1)' marker-end='url(#arrow1)'    d='M 420 540 L 397,540 Q 390,540 390,532 L 390,472 Q 390,465 382,465 L 375,465' ></path>
-<text x='205' y='535' transform='rotate(0 205,535)' title='Fk qrtz_cron_triggers_ibfk_1
-qrtz_cron_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )' class='relName' style='fill:#5f789f'>sched_name,trigger_name,trigger_group</text>
-<!-- == Fk 'qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1' == -->
-<path id='qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1'  onmouseover="hghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" transform='translate(7,0)' class='scene' d='M 180 525 L 180,502 Q 180,495 187,495 L 277,495 Q 285,495 285,487 L 285,480' >
-	<title>Fk qrtz_simple_triggers_ibfk_1
-qrtz_simple_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )</title>
-</path>
-<path transform='translate(7,0)' marker-start='url(#foot1)' marker-end='url(#arrow1)'    d='M 180 525 L 180,502 Q 180,495 187,495 L 277,495 Q 285,495 285,487 L 285,480' ></path>
-<text x='182' y='520' transform='rotate(270 182,520)' title='Fk qrtz_simple_triggers_ibfk_1
-qrtz_simple_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )' class='relName' style='fill:#5f789f'>sched_name,trigger_name,trigger_group</text>
-<!-- == Fk 'qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1' == -->
-<path id='qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1'  onmouseover="hghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" transform='translate(7,0)' class='scene' d='M 195 240 L 240,240' >
-	<title>Fk qrtz_simprop_triggers_ibfk_1
-qrtz_simprop_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )</title>
-</path>
-<path transform='translate(7,0)' marker-start='url(#foot1)' marker-end='url(#arrow1)'    d='M 195 240 L 240,240' ></path>
-<text x='202' y='235' transform='rotate(0 202,235)' title='Fk qrtz_simprop_triggers_ibfk_1
-qrtz_simprop_triggers ref qrtz_triggers ( sched_name, trigger_name, trigger_group )' class='relName' style='fill:#5f789f'>sched_name,trigger_name,trigger_group</text>
-<!-- == Fk 'qrtz_triggers_qrtz_triggers_ibfk_1' == -->
-<path id='qrtz_triggers_qrtz_triggers_ibfk_1'  onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])" transform='translate(7,0)' class='scene' d='M 375 210 L 420,210' >
-	<title>Fk qrtz_triggers_ibfk_1
-qrtz_triggers ref qrtz_job_details ( sched_name, job_name, job_group )</title>
-</path>
-<path transform='translate(7,0)' marker-start='url(#foot1p)' marker-end='url(#arrow1)'    d='M 375 210 L 420,210' ></path>
-<text x='382' y='205' transform='rotate(0 382,205)' title='Fk qrtz_triggers_ibfk_1
-qrtz_triggers ref qrtz_job_details ( sched_name, job_name, job_group )' class='relName' style='fill:#5f789f'>sched_name,job_name,job_group</text>
-<!-- == Table 'qrtz_blob_triggers' == -->
-<rect class='entity' x='255' y='533' width='120' height='105' rx='7' ry='7' style='stroke:none'/>
-<path d='M 255 559 L 255 540 Q 255 533 262 533 L 368 533 Q 375 533 375 540 L 375 559 L255 559 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='255' y='533' width='120' height='105' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='255' y1='559' x2='375' y2='559' style='stroke:#5f656e'/>
-<line class='delim' x1='270' y1='559' x2='270' y2='638' style='stroke:#5f656e'/>
-<line class='delim' x1='364' y1='559' x2='364' y2='638' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_blob_triggers'><text x='258' y='551'>qrtz_blob_triggers</text><title>Table ry.qrtz_blob_triggers</title></a>
-  <use id='nn' x='257' y='567' xlink:href='#nn'/><a xlink:href='#qrtz_blob_triggers.sched_name'><use id='pk' x='257' y='566' xlink:href='#pk'/><title>Pk pk_qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_blob_triggers.sched_name'><text id='ry.qrtz_blob_triggers.sched_name' x='273' y='576' onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_blob_triggers.sched_name'><use id='fk' x='364' y='566' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='257' y='582' xlink:href='#nn'/><a xlink:href='#qrtz_blob_triggers.trigger_name'><use id='pk' x='257' y='581' xlink:href='#pk'/><title>Pk pk_qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_blob_triggers.trigger_name'><text id='ry.qrtz_blob_triggers.trigger_name' x='273' y='591' onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_blob_triggers.trigger_name'><use id='fk' x='364' y='581' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='257' y='597' xlink:href='#nn'/><a xlink:href='#qrtz_blob_triggers.trigger_group'><use id='pk' x='257' y='596' xlink:href='#pk'/><title>Pk pk_qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_blob_triggers.trigger_group'><text id='ry.qrtz_blob_triggers.trigger_group' x='273' y='606' onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_blob_triggers.trigger_group'><use id='fk' x='364' y='596' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <a xlink:href='#qrtz_blob_triggers.blob_data'><text id='ry.qrtz_blob_triggers.blob_data' x='273' y='621'>blob_data</text><title>blob_data
-blob</title></a>
-<text x='372' y='618' text-anchor='end' class='colType'>~</text>
-<!-- == Table 'qrtz_calendars' == -->
-<rect class='entity' x='75' y='38' width='120' height='90' rx='7' ry='7' style='stroke:none'/>
-<path d='M 75 64 L 75 45 Q 75 38 82 38 L 188 38 Q 195 38 195 45 L 195 64 L75 64 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='75' y='38' width='120' height='90' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='75' y1='64' x2='195' y2='64' style='stroke:#5f656e'/>
-<line class='delim' x1='90' y1='64' x2='90' y2='128' style='stroke:#5f656e'/>
-<line class='delim' x1='184' y1='64' x2='184' y2='128' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_calendars'><text x='90' y='56'>qrtz_calendars</text><title>Table ry.qrtz_calendars</title></a>
-  <use id='nn' x='77' y='72' xlink:href='#nn'/><a xlink:href='#qrtz_calendars.sched_name'><use id='pk' x='77' y='71' xlink:href='#pk'/><title>Pk pk_qrtz_calendars ( sched_name, calendar_name ) </title></a>
-<a xlink:href='#qrtz_calendars.sched_name'><text id='ry.qrtz_calendars.sched_name' x='93' y='81'>sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<text x='192' y='78' text-anchor='end' class='colType'>t</text>  <use id='nn' x='77' y='87' xlink:href='#nn'/><a xlink:href='#qrtz_calendars.calendar_name'><use id='pk' x='77' y='86' xlink:href='#pk'/><title>Pk pk_qrtz_calendars ( sched_name, calendar_name ) </title></a>
-<a xlink:href='#qrtz_calendars.calendar_name'><text id='ry.qrtz_calendars.calendar_name' x='93' y='96'>calendar_name</text><title>calendar_name
-* varchar(200)</title></a>
-<text x='192' y='93' text-anchor='end' class='colType'>t</text>  <use id='nn' x='77' y='102' xlink:href='#nn'/><a xlink:href='#qrtz_calendars.calendar'><text id='ry.qrtz_calendars.calendar' x='93' y='111'>calendar</text><title>calendar
-* blob</title></a>
-<text x='192' y='108' text-anchor='end' class='colType'>~</text>
-<!-- == Table 'qrtz_cron_triggers' == -->
-<rect class='entity' x='435' y='533' width='135' height='120' rx='7' ry='7' style='stroke:none'/>
-<path d='M 435 559 L 435 540 Q 435 533 442 533 L 563 533 Q 570 533 570 540 L 570 559 L435 559 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='435' y='533' width='135' height='120' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='435' y1='559' x2='570' y2='559' style='stroke:#5f656e'/>
-<line class='delim' x1='450' y1='559' x2='450' y2='653' style='stroke:#5f656e'/>
-<line class='delim' x1='559' y1='559' x2='559' y2='653' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_cron_triggers'><text x='445' y='551'>qrtz_cron_triggers</text><title>Table ry.qrtz_cron_triggers</title></a>
-  <use id='nn' x='437' y='567' xlink:href='#nn'/><a xlink:href='#qrtz_cron_triggers.sched_name'><use id='pk' x='437' y='566' xlink:href='#pk'/><title>Pk pk_qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_cron_triggers.sched_name'><text id='ry.qrtz_cron_triggers.sched_name' x='453' y='576' onmouseover="hghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_cron_triggers.sched_name'><use id='fk' x='559' y='566' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='437' y='582' xlink:href='#nn'/><a xlink:href='#qrtz_cron_triggers.trigger_name'><use id='pk' x='437' y='581' xlink:href='#pk'/><title>Pk pk_qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_cron_triggers.trigger_name'><text id='ry.qrtz_cron_triggers.trigger_name' x='453' y='591' onmouseover="hghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_cron_triggers.trigger_name'><use id='fk' x='559' y='581' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='437' y='597' xlink:href='#nn'/><a xlink:href='#qrtz_cron_triggers.trigger_group'><use id='pk' x='437' y='596' xlink:href='#pk'/><title>Pk pk_qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_cron_triggers.trigger_group'><text id='ry.qrtz_cron_triggers.trigger_group' x='453' y='606' onmouseover="hghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_cron_triggers.trigger_group'><use id='fk' x='559' y='596' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='437' y='612' xlink:href='#nn'/><a xlink:href='#qrtz_cron_triggers.cron_expression'><text id='ry.qrtz_cron_triggers.cron_expression' x='453' y='621'>cron_expression</text><title>cron_expression
-* varchar(200)</title></a>
-<text x='567' y='618' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_cron_triggers.time_zone_id'><text id='ry.qrtz_cron_triggers.time_zone_id' x='453' y='636'>time_zone_id</text><title>time_zone_id
-varchar(80)</title></a>
-<text x='567' y='633' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'qrtz_job_details' == -->
-<rect class='entity' x='435' y='188' width='135' height='195' rx='7' ry='7' style='stroke:none'/>
-<path d='M 435 214 L 435 195 Q 435 188 442 188 L 563 188 Q 570 188 570 195 L 570 214 L435 214 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='435' y='188' width='135' height='195' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='435' y1='214' x2='570' y2='214' style='stroke:#5f656e'/>
-<line class='delim' x1='450' y1='214' x2='450' y2='383' style='stroke:#5f656e'/>
-<line class='delim' x1='559' y1='214' x2='559' y2='383' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_job_details'><text x='451' y='206'>qrtz_job_details</text><title>Table ry.qrtz_job_details</title></a>
-  <use id='nn' x='437' y='222' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.sched_name'><use id='pk' x='437' y='221' xlink:href='#pk'/><title>Pk pk_qrtz_job_details ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_job_details.sched_name'><text id='ry.qrtz_job_details.sched_name' x='453' y='231' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_job_details.sched_name'><use id='ref' x='559' y='221' xlink:href='#ref'/><title>Referred by qrtz_triggers ( sched_name, job_name, job_group ) </title></a>
-  <use id='nn' x='437' y='237' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.job_name'><use id='pk' x='437' y='236' xlink:href='#pk'/><title>Pk pk_qrtz_job_details ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_job_details.job_name'><text id='ry.qrtz_job_details.job_name' x='453' y='246' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])">job_name</text><title>job_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_job_details.job_name'><use id='ref' x='559' y='236' xlink:href='#ref'/><title>Referred by qrtz_triggers ( sched_name, job_name, job_group ) </title></a>
-  <use id='nn' x='437' y='252' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.job_group'><use id='pk' x='437' y='251' xlink:href='#pk'/><title>Pk pk_qrtz_job_details ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_job_details.job_group'><text id='ry.qrtz_job_details.job_group' x='453' y='261' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.job_name','ry.qrtz_triggers.job_group'])">job_group</text><title>job_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_job_details.job_group'><use id='ref' x='559' y='251' xlink:href='#ref'/><title>Referred by qrtz_triggers ( sched_name, job_name, job_group ) </title></a>
-  <a xlink:href='#qrtz_job_details.description'><text id='ry.qrtz_job_details.description' x='453' y='276'>description</text><title>description
-varchar(250)</title></a>
-<text x='567' y='273' text-anchor='end' class='colType'>t</text>  <use id='nn' x='437' y='282' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.job_class_name'><text id='ry.qrtz_job_details.job_class_name' x='453' y='291'>job_class_name</text><title>job_class_name
-* varchar(250)</title></a>
-<text x='567' y='288' text-anchor='end' class='colType'>t</text>  <use id='nn' x='437' y='297' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.is_durable'><text id='ry.qrtz_job_details.is_durable' x='453' y='306'>is_durable</text><title>is_durable
-* varchar(1)</title></a>
-<text x='567' y='303' text-anchor='end' class='colType'>t</text>  <use id='nn' x='437' y='312' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.is_nonconcurrent'><text id='ry.qrtz_job_details.is_nonconcurrent' x='453' y='321'>is_nonconcurrent</text><title>is_nonconcurrent
-* varchar(1)</title></a>
-<text x='567' y='318' text-anchor='end' class='colType'>t</text>  <use id='nn' x='437' y='327' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.is_update_data'><text id='ry.qrtz_job_details.is_update_data' x='453' y='336'>is_update_data</text><title>is_update_data
-* varchar(1)</title></a>
-<text x='567' y='333' text-anchor='end' class='colType'>t</text>  <use id='nn' x='437' y='342' xlink:href='#nn'/><a xlink:href='#qrtz_job_details.requests_recovery'><text id='ry.qrtz_job_details.requests_recovery' x='453' y='351'>requests_recovery</text><title>requests_recovery
-* varchar(1)</title></a>
-<text x='567' y='348' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_job_details.job_data'><text id='ry.qrtz_job_details.job_data' x='453' y='366'>job_data</text><title>job_data
-blob</title></a>
-<text x='567' y='363' text-anchor='end' class='colType'>~</text>
-<!-- == Table 'qrtz_locks' == -->
-<rect class='entity' x='255' y='53' width='105' height='75' rx='7' ry='7' style='stroke:none'/>
-<path d='M 255 79 L 255 60 Q 255 53 262 53 L 353 53 Q 360 53 360 60 L 360 79 L255 79 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='255' y='53' width='105' height='75' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='255' y1='79' x2='360' y2='79' style='stroke:#5f656e'/>
-<line class='delim' x1='270' y1='79' x2='270' y2='128' style='stroke:#5f656e'/>
-<line class='delim' x1='349' y1='79' x2='349' y2='128' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_locks'><text x='274' y='71'>qrtz_locks</text><title>Table ry.qrtz_locks</title></a>
-  <use id='nn' x='257' y='87' xlink:href='#nn'/><a xlink:href='#qrtz_locks.sched_name'><use id='pk' x='257' y='86' xlink:href='#pk'/><title>Pk pk_qrtz_locks ( sched_name, lock_name ) </title></a>
-<a xlink:href='#qrtz_locks.sched_name'><text id='ry.qrtz_locks.sched_name' x='273' y='96'>sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<text x='357' y='93' text-anchor='end' class='colType'>t</text>  <use id='nn' x='257' y='102' xlink:href='#nn'/><a xlink:href='#qrtz_locks.lock_name'><use id='pk' x='257' y='101' xlink:href='#pk'/><title>Pk pk_qrtz_locks ( sched_name, lock_name ) </title></a>
-<a xlink:href='#qrtz_locks.lock_name'><text id='ry.qrtz_locks.lock_name' x='273' y='111'>lock_name</text><title>lock_name
-* varchar(40)</title></a>
-<text x='357' y='108' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'qrtz_scheduler_state' == -->
-<rect class='entity' x='255' y='728' width='135' height='105' rx='7' ry='7' style='stroke:none'/>
-<path d='M 255 754 L 255 735 Q 255 728 262 728 L 383 728 Q 390 728 390 735 L 390 754 L255 754 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='255' y='728' width='135' height='105' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='255' y1='754' x2='390' y2='754' style='stroke:#5f656e'/>
-<line class='delim' x1='270' y1='754' x2='270' y2='833' style='stroke:#5f656e'/>
-<line class='delim' x1='379' y1='754' x2='379' y2='833' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_scheduler_state'><text x='259' y='746'>qrtz_scheduler_state</text><title>Table ry.qrtz_scheduler_state</title></a>
-  <use id='nn' x='257' y='762' xlink:href='#nn'/><a xlink:href='#qrtz_scheduler_state.sched_name'><use id='pk' x='257' y='761' xlink:href='#pk'/><title>Pk pk_qrtz_scheduler_state ( sched_name, instance_name ) </title></a>
-<a xlink:href='#qrtz_scheduler_state.sched_name'><text id='ry.qrtz_scheduler_state.sched_name' x='273' y='771'>sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<text x='387' y='768' text-anchor='end' class='colType'>t</text>  <use id='nn' x='257' y='777' xlink:href='#nn'/><a xlink:href='#qrtz_scheduler_state.instance_name'><use id='pk' x='257' y='776' xlink:href='#pk'/><title>Pk pk_qrtz_scheduler_state ( sched_name, instance_name ) </title></a>
-<a xlink:href='#qrtz_scheduler_state.instance_name'><text id='ry.qrtz_scheduler_state.instance_name' x='273' y='786'>instance_name</text><title>instance_name
-* varchar(200)</title></a>
-<text x='387' y='783' text-anchor='end' class='colType'>t</text>  <use id='nn' x='257' y='792' xlink:href='#nn'/><a xlink:href='#qrtz_scheduler_state.last_checkin_time'><text id='ry.qrtz_scheduler_state.last_checkin_time' x='273' y='801'>last_checkin_time</text><title>last_checkin_time
-* bigint</title></a>
-<text x='387' y='798' text-anchor='end' class='colType'>#</text>  <use id='nn' x='257' y='807' xlink:href='#nn'/><a xlink:href='#qrtz_scheduler_state.checkin_interval'><text id='ry.qrtz_scheduler_state.checkin_interval' x='273' y='816'>checkin_interval</text><title>checkin_interval
-* bigint</title></a>
-<text x='387' y='813' text-anchor='end' class='colType'>#</text>
-<!-- == Table 'qrtz_simple_triggers' == -->
-<rect class='entity' x='60' y='533' width='135' height='135' rx='7' ry='7' style='stroke:none'/>
-<path d='M 60 559 L 60 540 Q 60 533 67 533 L 188 533 Q 195 533 195 540 L 195 559 L60 559 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='60' y='533' width='135' height='135' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='60' y1='559' x2='195' y2='559' style='stroke:#5f656e'/>
-<line class='delim' x1='75' y1='559' x2='75' y2='668' style='stroke:#5f656e'/>
-<line class='delim' x1='184' y1='559' x2='184' y2='668' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_simple_triggers'><text x='64' y='551'>qrtz_simple_triggers</text><title>Table ry.qrtz_simple_triggers</title></a>
-  <use id='nn' x='62' y='567' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.sched_name'><use id='pk' x='62' y='566' xlink:href='#pk'/><title>Pk pk_qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simple_triggers.sched_name'><text id='ry.qrtz_simple_triggers.sched_name' x='78' y='576' onmouseover="hghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_simple_triggers.sched_name'><use id='fk' x='184' y='566' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='62' y='582' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.trigger_name'><use id='pk' x='62' y='581' xlink:href='#pk'/><title>Pk pk_qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simple_triggers.trigger_name'><text id='ry.qrtz_simple_triggers.trigger_name' x='78' y='591' onmouseover="hghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_simple_triggers.trigger_name'><use id='fk' x='184' y='581' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='62' y='597' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.trigger_group'><use id='pk' x='62' y='596' xlink:href='#pk'/><title>Pk pk_qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simple_triggers.trigger_group'><text id='ry.qrtz_simple_triggers.trigger_group' x='78' y='606' onmouseover="hghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_simple_triggers.trigger_group'><use id='fk' x='184' y='596' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='62' y='612' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.repeat_count'><text id='ry.qrtz_simple_triggers.repeat_count' x='78' y='621'>repeat_count</text><title>repeat_count
-* bigint</title></a>
-<text x='192' y='618' text-anchor='end' class='colType'>#</text>  <use id='nn' x='62' y='627' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.repeat_interval'><text id='ry.qrtz_simple_triggers.repeat_interval' x='78' y='636'>repeat_interval</text><title>repeat_interval
-* bigint</title></a>
-<text x='192' y='633' text-anchor='end' class='colType'>#</text>  <use id='nn' x='62' y='642' xlink:href='#nn'/><a xlink:href='#qrtz_simple_triggers.times_triggered'><text id='ry.qrtz_simple_triggers.times_triggered' x='78' y='651'>times_triggered</text><title>times_triggered
-* bigint</title></a>
-<text x='192' y='648' text-anchor='end' class='colType'>#</text>
-<!-- == Table 'qrtz_simprop_triggers' == -->
-<rect class='entity' x='45' y='218' width='150' height='255' rx='7' ry='7' style='stroke:none'/>
-<path d='M 45 244 L 45 225 Q 45 218 52 218 L 188 218 Q 195 218 195 225 L 195 244 L45 244 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='45' y='218' width='150' height='255' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='45' y1='244' x2='195' y2='244' style='stroke:#5f656e'/>
-<line class='delim' x1='60' y1='244' x2='60' y2='473' style='stroke:#5f656e'/>
-<line class='delim' x1='184' y1='244' x2='184' y2='473' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_simprop_triggers'><text x='54' y='236'>qrtz_simprop_triggers</text><title>Table ry.qrtz_simprop_triggers</title></a>
-  <use id='nn' x='47' y='252' xlink:href='#nn'/><a xlink:href='#qrtz_simprop_triggers.sched_name'><use id='pk' x='47' y='251' xlink:href='#pk'/><title>Pk pk_qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simprop_triggers.sched_name'><text id='ry.qrtz_simprop_triggers.sched_name' x='63' y='261' onmouseover="hghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_simprop_triggers.sched_name'><use id='fk' x='184' y='251' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='47' y='267' xlink:href='#nn'/><a xlink:href='#qrtz_simprop_triggers.trigger_name'><use id='pk' x='47' y='266' xlink:href='#pk'/><title>Pk pk_qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simprop_triggers.trigger_name'><text id='ry.qrtz_simprop_triggers.trigger_name' x='63' y='276' onmouseover="hghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_simprop_triggers.trigger_name'><use id='fk' x='184' y='266' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='47' y='282' xlink:href='#nn'/><a xlink:href='#qrtz_simprop_triggers.trigger_group'><use id='pk' x='47' y='281' xlink:href='#pk'/><title>Pk pk_qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_simprop_triggers.trigger_group'><text id='ry.qrtz_simprop_triggers.trigger_group' x='63' y='291' onmouseover="hghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_triggers.sched_name','ry.qrtz_triggers.trigger_name','ry.qrtz_triggers.trigger_group'])">trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_simprop_triggers.trigger_group'><use id='fk' x='184' y='281' xlink:href='#fk'/><title>References qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <a xlink:href='#qrtz_simprop_triggers.str_prop_1'><text id='ry.qrtz_simprop_triggers.str_prop_1' x='63' y='306'>str_prop_1</text><title>str_prop_1
-varchar(512)</title></a>
-<text x='192' y='303' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_simprop_triggers.str_prop_2'><text id='ry.qrtz_simprop_triggers.str_prop_2' x='63' y='321'>str_prop_2</text><title>str_prop_2
-varchar(512)</title></a>
-<text x='192' y='318' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_simprop_triggers.str_prop_3'><text id='ry.qrtz_simprop_triggers.str_prop_3' x='63' y='336'>str_prop_3</text><title>str_prop_3
-varchar(512)</title></a>
-<text x='192' y='333' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_simprop_triggers.int_prop_1'><text id='ry.qrtz_simprop_triggers.int_prop_1' x='63' y='351'>int_prop_1</text><title>int_prop_1
-int</title></a>
-<text x='192' y='348' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.int_prop_2'><text id='ry.qrtz_simprop_triggers.int_prop_2' x='63' y='366'>int_prop_2</text><title>int_prop_2
-int</title></a>
-<text x='192' y='363' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.long_prop_1'><text id='ry.qrtz_simprop_triggers.long_prop_1' x='63' y='381'>long_prop_1</text><title>long_prop_1
-bigint</title></a>
-<text x='192' y='378' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.long_prop_2'><text id='ry.qrtz_simprop_triggers.long_prop_2' x='63' y='396'>long_prop_2</text><title>long_prop_2
-bigint</title></a>
-<text x='192' y='393' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.dec_prop_1'><text id='ry.qrtz_simprop_triggers.dec_prop_1' x='63' y='411'>dec_prop_1</text><title>dec_prop_1
-decimal(13,4)</title></a>
-<text x='192' y='408' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.dec_prop_2'><text id='ry.qrtz_simprop_triggers.dec_prop_2' x='63' y='426'>dec_prop_2</text><title>dec_prop_2
-decimal(13,4)</title></a>
-<text x='192' y='423' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_simprop_triggers.bool_prop_1'><text id='ry.qrtz_simprop_triggers.bool_prop_1' x='63' y='441'>bool_prop_1</text><title>bool_prop_1
-varchar(1)</title></a>
-<text x='192' y='438' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_simprop_triggers.bool_prop_2'><text id='ry.qrtz_simprop_triggers.bool_prop_2' x='63' y='456'>bool_prop_2</text><title>bool_prop_2
-varchar(1)</title></a>
-<text x='192' y='453' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'qrtz_triggers' == -->
-<rect class='entity' x='255' y='188' width='120' height='285' rx='7' ry='7' style='stroke:none'/>
-<path d='M 255 214 L 255 195 Q 255 188 262 188 L 368 188 Q 375 188 375 195 L 375 214 L255 214 ' style='fill:url(#tbg_bfd4f5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='255' y='188' width='120' height='285' rx='7' ry='7' style='fill:none;stroke:#5f656e'/>
-<line class='delim' x1='255' y1='214' x2='375' y2='214' style='stroke:#5f656e'/>
-<line class='delim' x1='270' y1='214' x2='270' y2='473' style='stroke:#5f656e'/>
-<line class='delim' x1='364' y1='214' x2='364' y2='473' style='stroke:#5f656e'/>
-<a xlink:href='#qrtz_triggers'><text x='273' y='206'>qrtz_triggers</text><title>Table ry.qrtz_triggers</title></a>
-  <use id='nn' x='257' y='222' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.sched_name'><use id='pk' x='257' y='221' xlink:href='#pk'/><title>Pk pk_qrtz_triggers ( sched_name, trigger_name, trigger_group ) sched_name ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_triggers.sched_name'><text id='ry.qrtz_triggers.sched_name' x='273' y='231' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group','qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group','qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])">sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<a xlink:href='#qrtz_triggers.sched_name'><use id='fk' x='364' y='221' xlink:href='#fk'/><title>References qrtz_job_details ( sched_name, job_name, job_group ) 
-Referred by qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='257' y='237' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.trigger_name'><use id='pk' x='257' y='236' xlink:href='#pk'/><title>Pk pk_qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_triggers.trigger_name'><text id='ry.qrtz_triggers.trigger_name' x='273' y='246' onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])">trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_triggers.trigger_name'><use id='ref' x='364' y='236' xlink:href='#ref'/><title>Referred by qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='257' y='252' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.trigger_group'><use id='pk' x='257' y='251' xlink:href='#pk'/><title>Pk pk_qrtz_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_triggers.trigger_group'><text id='ry.qrtz_triggers.trigger_group' x='273' y='261' onmouseover="hghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])" onmouseout="uhghl(['qrtz_blob_triggers_qrtz_blob_triggers_ibfk_1','ry.qrtz_blob_triggers.sched_name','ry.qrtz_blob_triggers.trigger_name','ry.qrtz_blob_triggers.trigger_group','qrtz_cron_triggers_qrtz_cron_triggers_ibfk_1','ry.qrtz_cron_triggers.sched_name','ry.qrtz_cron_triggers.trigger_name','ry.qrtz_cron_triggers.trigger_group','qrtz_simple_triggers_qrtz_simple_triggers_ibfk_1','ry.qrtz_simple_triggers.sched_name','ry.qrtz_simple_triggers.trigger_name','ry.qrtz_simple_triggers.trigger_group','qrtz_simprop_triggers_qrtz_simprop_triggers_ibfk_1','ry.qrtz_simprop_triggers.sched_name','ry.qrtz_simprop_triggers.trigger_name','ry.qrtz_simprop_triggers.trigger_group'])">trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_triggers.trigger_group'><use id='ref' x='364' y='251' xlink:href='#ref'/><title>Referred by qrtz_blob_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_cron_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simple_triggers ( sched_name, trigger_name, trigger_group ) 
-Referred by qrtz_simprop_triggers ( sched_name, trigger_name, trigger_group ) </title></a>
-  <use id='nn' x='257' y='267' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.job_name'><use id='idx' x='257' y='266' xlink:href='#idx'/><title>sched_name ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_triggers.job_name'><text id='ry.qrtz_triggers.job_name' x='273' y='276' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])">job_name</text><title>job_name
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_triggers.job_name'><use id='fk' x='364' y='266' xlink:href='#fk'/><title>References qrtz_job_details ( sched_name, job_name, job_group ) </title></a>
-  <use id='nn' x='257' y='282' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.job_group'><use id='idx' x='257' y='281' xlink:href='#idx'/><title>sched_name ( sched_name, job_name, job_group ) </title></a>
-<a xlink:href='#qrtz_triggers.job_group'><text id='ry.qrtz_triggers.job_group' x='273' y='291' onmouseover="hghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])" onmouseout="uhghl(['qrtz_triggers_qrtz_triggers_ibfk_1','ry.qrtz_job_details.sched_name','ry.qrtz_job_details.job_name','ry.qrtz_job_details.job_group'])">job_group</text><title>job_group
-* varchar(200)</title></a>
-<a xlink:href='#qrtz_triggers.job_group'><use id='fk' x='364' y='281' xlink:href='#fk'/><title>References qrtz_job_details ( sched_name, job_name, job_group ) </title></a>
-  <a xlink:href='#qrtz_triggers.description'><text id='ry.qrtz_triggers.description' x='273' y='306'>description</text><title>description
-varchar(250)</title></a>
-<text x='372' y='303' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_triggers.next_fire_time'><text id='ry.qrtz_triggers.next_fire_time' x='273' y='321'>next_fire_time</text><title>next_fire_time
-bigint</title></a>
-<text x='372' y='318' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_triggers.prev_fire_time'><text id='ry.qrtz_triggers.prev_fire_time' x='273' y='336'>prev_fire_time</text><title>prev_fire_time
-bigint</title></a>
-<text x='372' y='333' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_triggers.priority'><text id='ry.qrtz_triggers.priority' x='273' y='351'>priority</text><title>priority
-int</title></a>
-<text x='372' y='348' text-anchor='end' class='colType'>#</text>  <use id='nn' x='257' y='357' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.trigger_state'><text id='ry.qrtz_triggers.trigger_state' x='273' y='366'>trigger_state</text><title>trigger_state
-* varchar(16)</title></a>
-<text x='372' y='363' text-anchor='end' class='colType'>t</text>  <use id='nn' x='257' y='372' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.trigger_type'><text id='ry.qrtz_triggers.trigger_type' x='273' y='381'>trigger_type</text><title>trigger_type
-* varchar(8)</title></a>
-<text x='372' y='378' text-anchor='end' class='colType'>t</text>  <use id='nn' x='257' y='387' xlink:href='#nn'/><a xlink:href='#qrtz_triggers.start_time'><text id='ry.qrtz_triggers.start_time' x='273' y='396'>start_time</text><title>start_time
-* bigint</title></a>
-<text x='372' y='393' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_triggers.end_time'><text id='ry.qrtz_triggers.end_time' x='273' y='411'>end_time</text><title>end_time
-bigint</title></a>
-<text x='372' y='408' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_triggers.calendar_name'><text id='ry.qrtz_triggers.calendar_name' x='273' y='426'>calendar_name</text><title>calendar_name
-varchar(200)</title></a>
-<text x='372' y='423' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_triggers.misfire_instr'><text id='ry.qrtz_triggers.misfire_instr' x='273' y='441'>misfire_instr</text><title>misfire_instr
-smallint</title></a>
-<text x='372' y='438' text-anchor='end' class='colType'>#</text>  <a xlink:href='#qrtz_triggers.job_data'><text id='ry.qrtz_triggers.job_data' x='273' y='456'>job_data</text><title>job_data
-blob</title></a>
-<text x='372' y='453' text-anchor='end' class='colType'>~</text>
-<!-- == Table 'sys_dict_data' == -->
-<rect class='entity' x='1170' y='38' width='105' height='210' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1170 64 L 1170 45 Q 1170 38 1177 38 L 1268 38 Q 1275 38 1275 45 L 1275 64 L1170 64 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1170' y='38' width='105' height='210' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='1170' y1='64' x2='1275' y2='64' style='stroke:#626e5f'/>
-<line class='delim' x1='1185' y1='64' x2='1185' y2='248' style='stroke:#626e5f'/>
-<line class='delim' x1='1264' y1='64' x2='1264' y2='248' style='stroke:#626e5f'/>
-<a xlink:href='#sys_dict_data'><text x='1180' y='56'>sys_dict_data</text><title>Table ry.sys_dict_data</title></a>
-  <use id='nn' x='1172' y='72' xlink:href='#nn'/><a xlink:href='#sys_dict_data.dict_code'><use id='pk' x='1172' y='71' xlink:href='#pk'/><title>Pk pk_sys_dict_data ( dict_code ) </title></a>
-<a xlink:href='#sys_dict_data.dict_code'><text id='ry.sys_dict_data.dict_code' x='1188' y='81'>dict_code</text><title>dict_code
-* int
-字典编码</title></a>
-<text x='1272' y='78' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dict_data.dict_sort'><text id='ry.sys_dict_data.dict_sort' x='1188' y='96'>dict_sort</text><title>dict_sort
-int default 0
-字典排序</title></a>
-<text x='1272' y='93' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dict_data.dict_label'><text id='ry.sys_dict_data.dict_label' x='1188' y='111'>dict_label</text><title>dict_label
-varchar(100) default ''
-字典标签</title></a>
-<text x='1272' y='108' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dict_data.dict_value'><text id='ry.sys_dict_data.dict_value' x='1188' y='126'>dict_value</text><title>dict_value
-varchar(100) default ''
-字典键值</title></a>
-<text x='1272' y='123' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dict_data.dict_type'><text id='ry.sys_dict_data.dict_type' x='1188' y='141'>dict_type</text><title>dict_type
-varchar(100) default ''
-字典类型</title></a>
-<text x='1272' y='138' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dict_data.status'><text id='ry.sys_dict_data.status' x='1188' y='156'>status</text><title>status
-int default 0
-状态(0正常 1禁用)</title></a>
-<text x='1272' y='153' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dict_data.create_by'><text id='ry.sys_dict_data.create_by' x='1188' y='171'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1272' y='168' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1172' y='177' xlink:href='#nn'/><a xlink:href='#sys_dict_data.create_time'><text id='ry.sys_dict_data.create_time' x='1188' y='186'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1272' y='183' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_dict_data.update_by'><text id='ry.sys_dict_data.update_by' x='1188' y='201'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1272' y='198' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1172' y='207' xlink:href='#nn'/><a xlink:href='#sys_dict_data.update_time'><text id='ry.sys_dict_data.update_time' x='1188' y='216'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1272' y='213' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_dict_data.remark'><text id='ry.sys_dict_data.remark' x='1188' y='231'>remark</text><title>remark
-varchar(500) default ''
-备注</title></a>
-<text x='1272' y='228' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_dict_type' == -->
-<rect class='entity' x='1005' y='38' width='105' height='180' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1005 64 L 1005 45 Q 1005 38 1012 38 L 1103 38 Q 1110 38 1110 45 L 1110 64 L1005 64 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1005' y='38' width='105' height='180' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='1005' y1='64' x2='1110' y2='64' style='stroke:#626e5f'/>
-<line class='delim' x1='1020' y1='64' x2='1020' y2='218' style='stroke:#626e5f'/>
-<line class='delim' x1='1099' y1='64' x2='1099' y2='218' style='stroke:#626e5f'/>
-<a xlink:href='#sys_dict_type'><text x='1015' y='56'>sys_dict_type</text><title>Table ry.sys_dict_type</title></a>
-  <use id='nn' x='1007' y='72' xlink:href='#nn'/><a xlink:href='#sys_dict_type.dict_id'><use id='pk' x='1007' y='71' xlink:href='#pk'/><title>Pk pk_sys_dict_type ( dict_id ) </title></a>
-<a xlink:href='#sys_dict_type.dict_id'><text id='ry.sys_dict_type.dict_id' x='1023' y='81'>dict_id</text><title>dict_id
-* int
-字典主键</title></a>
-<text x='1107' y='78' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dict_type.dict_name'><text id='ry.sys_dict_type.dict_name' x='1023' y='96'>dict_name</text><title>dict_name
-varchar(100) default ''
-字典名称</title></a>
-<text x='1107' y='93' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dict_type.dict_type'><use id='unq' x='1007' y='101' xlink:href='#unq'/><title>Unq dict_type ( dict_type ) </title></a>
-<a xlink:href='#sys_dict_type.dict_type'><text id='ry.sys_dict_type.dict_type' x='1023' y='111'>dict_type</text><title>dict_type
-varchar(100) default ''
-字典类型</title></a>
-<text x='1107' y='108' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dict_type.status'><text id='ry.sys_dict_type.status' x='1023' y='126'>status</text><title>status
-int default 0
-状态(0正常 1禁用)</title></a>
-<text x='1107' y='123' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dict_type.create_by'><text id='ry.sys_dict_type.create_by' x='1023' y='141'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1107' y='138' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1007' y='147' xlink:href='#nn'/><a xlink:href='#sys_dict_type.create_time'><text id='ry.sys_dict_type.create_time' x='1023' y='156'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1107' y='153' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_dict_type.update_by'><text id='ry.sys_dict_type.update_by' x='1023' y='171'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1107' y='168' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1007' y='177' xlink:href='#nn'/><a xlink:href='#sys_dict_type.update_time'><text id='ry.sys_dict_type.update_time' x='1023' y='186'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1107' y='183' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_dict_type.remark'><text id='ry.sys_dict_type.remark' x='1023' y='201'>remark</text><title>remark
-varchar(500) default ''
-备注</title></a>
-<text x='1107' y='198' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_job' == -->
-<rect class='entity' x='1545' y='38' width='135' height='225' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1545 64 L 1545 45 Q 1545 38 1552 38 L 1673 38 Q 1680 38 1680 45 L 1680 64 L1545 64 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1545' y='38' width='135' height='225' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1545' y1='64' x2='1680' y2='64' style='stroke:#6e675f'/>
-<line class='delim' x1='1560' y1='64' x2='1560' y2='263' style='stroke:#6e675f'/>
-<line class='delim' x1='1669' y1='64' x2='1669' y2='263' style='stroke:#6e675f'/>
-<a xlink:href='#sys_job'><text x='1588' y='56'>sys_job</text><title>Table ry.sys_job</title></a>
-  <use id='nn' x='1547' y='72' xlink:href='#nn'/><a xlink:href='#sys_job.job_id'><use id='pk' x='1547' y='71' xlink:href='#pk'/><title>Pk pk_sys_job ( job_id, job_name, job_group ) </title></a>
-<a xlink:href='#sys_job.job_id'><text id='ry.sys_job.job_id' x='1563' y='81'>job_id</text><title>job_id
-* int
-任务ID</title></a>
-<text x='1677' y='78' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1547' y='87' xlink:href='#nn'/><a xlink:href='#sys_job.job_name'><use id='pk' x='1547' y='86' xlink:href='#pk'/><title>Pk pk_sys_job ( job_id, job_name, job_group ) </title></a>
-<a xlink:href='#sys_job.job_name'><text id='ry.sys_job.job_name' x='1563' y='96'>job_name</text><title>job_name
-* varchar(64) default ''
-任务名称</title></a>
-<text x='1677' y='93' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='102' xlink:href='#nn'/><a xlink:href='#sys_job.job_group'><use id='pk' x='1547' y='101' xlink:href='#pk'/><title>Pk pk_sys_job ( job_id, job_name, job_group ) </title></a>
-<a xlink:href='#sys_job.job_group'><text id='ry.sys_job.job_group' x='1563' y='111'>job_group</text><title>job_group
-* varchar(64) default ''
-任务组名</title></a>
-<text x='1677' y='108' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job.method_name'><text id='ry.sys_job.method_name' x='1563' y='126'>method_name</text><title>method_name
-varchar(500) default ''
-任务方法</title></a>
-<text x='1677' y='123' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job.params'><text id='ry.sys_job.params' x='1563' y='141'>params</text><title>params
-varchar(200) default ''
-方法参数</title></a>
-<text x='1677' y='138' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job.cron_expression'><text id='ry.sys_job.cron_expression' x='1563' y='156'>cron_expression</text><title>cron_expression
-varchar(255) default ''
-cron执行表达式</title></a>
-<text x='1677' y='153' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job.status'><text id='ry.sys_job.status' x='1563' y='171'>status</text><title>status
-int default 0
-状态(0正常 1暂停)</title></a>
-<text x='1677' y='168' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_job.create_by'><text id='ry.sys_job.create_by' x='1563' y='186'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1677' y='183' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='192' xlink:href='#nn'/><a xlink:href='#sys_job.create_time'><text id='ry.sys_job.create_time' x='1563' y='201'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1677' y='198' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_job.update_by'><text id='ry.sys_job.update_by' x='1563' y='216'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1677' y='213' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='222' xlink:href='#nn'/><a xlink:href='#sys_job.update_time'><text id='ry.sys_job.update_time' x='1563' y='231'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1677' y='228' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_job.remark'><text id='ry.sys_job.remark' x='1563' y='246'>remark</text><title>remark
-varchar(500) default ''
-备注信息</title></a>
-<text x='1677' y='243' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_job_log' == -->
-<rect class='entity' x='1365' y='38' width='120' height='180' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1365 64 L 1365 45 Q 1365 38 1372 38 L 1478 38 Q 1485 38 1485 45 L 1485 64 L1365 64 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1365' y='38' width='120' height='180' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1365' y1='64' x2='1485' y2='64' style='stroke:#6e675f'/>
-<line class='delim' x1='1380' y1='64' x2='1380' y2='218' style='stroke:#6e675f'/>
-<line class='delim' x1='1474' y1='64' x2='1474' y2='218' style='stroke:#6e675f'/>
-<a xlink:href='#sys_job_log'><text x='1389' y='56'>sys_job_log</text><title>Table ry.sys_job_log</title></a>
-  <use id='nn' x='1367' y='72' xlink:href='#nn'/><a xlink:href='#sys_job_log.job_log_id'><use id='pk' x='1367' y='71' xlink:href='#pk'/><title>Pk pk_sys_job_log ( job_log_id ) </title></a>
-<a xlink:href='#sys_job_log.job_log_id'><text id='ry.sys_job_log.job_log_id' x='1383' y='81'>job_log_id</text><title>job_log_id
-* int
-任务日志ID</title></a>
-<text x='1482' y='78' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1367' y='87' xlink:href='#nn'/><a xlink:href='#sys_job_log.job_name'><text id='ry.sys_job_log.job_name' x='1383' y='96'>job_name</text><title>job_name
-* varchar(64)
-任务名称</title></a>
-<text x='1482' y='93' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1367' y='102' xlink:href='#nn'/><a xlink:href='#sys_job_log.job_group'><text id='ry.sys_job_log.job_group' x='1383' y='111'>job_group</text><title>job_group
-* varchar(64)
-任务组名</title></a>
-<text x='1482' y='108' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job_log.method_name'><text id='ry.sys_job_log.method_name' x='1383' y='126'>method_name</text><title>method_name
-varchar(500)
-任务方法</title></a>
-<text x='1482' y='123' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job_log.params'><text id='ry.sys_job_log.params' x='1383' y='141'>params</text><title>params
-varchar(200) default ''
-方法参数</title></a>
-<text x='1482' y='138' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job_log.job_message'><text id='ry.sys_job_log.job_message' x='1383' y='156'>job_message</text><title>job_message
-varchar(500)
-日志信息</title></a>
-<text x='1482' y='153' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_job_log.is_exception'><text id='ry.sys_job_log.is_exception' x='1383' y='171'>is_exception</text><title>is_exception
-int default 0
-是否异常</title></a>
-<text x='1482' y='168' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_job_log.exception_info'><text id='ry.sys_job_log.exception_info' x='1383' y='186'>exception_info</text><title>exception_info
-text
-异常信息</title></a>
-<text x='1482' y='183' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1367' y='192' xlink:href='#nn'/><a xlink:href='#sys_job_log.create_time'><text id='ry.sys_job_log.create_time' x='1383' y='201'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1482' y='198' text-anchor='end' class='colType'>d</text>
-<!-- == Table 'sys_logininfor' == -->
-<rect class='entity' x='1740' y='323' width='105' height='165' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1740 349 L 1740 330 Q 1740 323 1747 323 L 1838 323 Q 1845 323 1845 330 L 1845 349 L1740 349 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1740' y='323' width='105' height='165' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1740' y1='349' x2='1845' y2='349' style='stroke:#6e675f'/>
-<line class='delim' x1='1755' y1='349' x2='1755' y2='488' style='stroke:#6e675f'/>
-<line class='delim' x1='1834' y1='349' x2='1834' y2='488' style='stroke:#6e675f'/>
-<a xlink:href='#sys_logininfor'><text x='1747' y='341'>sys_logininfor</text><title>Table ry.sys_logininfor</title></a>
-  <use id='nn' x='1742' y='357' xlink:href='#nn'/><a xlink:href='#sys_logininfor.info_id'><use id='pk' x='1742' y='356' xlink:href='#pk'/><title>Pk pk_sys_logininfor ( info_id ) </title></a>
-<a xlink:href='#sys_logininfor.info_id'><text id='ry.sys_logininfor.info_id' x='1758' y='366'>info_id</text><title>info_id
-* int
-访问ID</title></a>
-<text x='1842' y='363' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_logininfor.login_name'><text id='ry.sys_logininfor.login_name' x='1758' y='381'>login_name</text><title>login_name
-varchar(50) default ''
-登录账号</title></a>
-<text x='1842' y='378' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_logininfor.ipaddr'><text id='ry.sys_logininfor.ipaddr' x='1758' y='396'>ipaddr</text><title>ipaddr
-varchar(50) default ''
-登录IP地址</title></a>
-<text x='1842' y='393' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_logininfor.browser'><text id='ry.sys_logininfor.browser' x='1758' y='411'>browser</text><title>browser
-varchar(50) default ''
-浏览器类型</title></a>
-<text x='1842' y='408' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_logininfor.os'><text id='ry.sys_logininfor.os' x='1758' y='426'>os</text><title>os
-varchar(50) default ''
-操作系统</title></a>
-<text x='1842' y='423' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_logininfor.status'><text id='ry.sys_logininfor.status' x='1758' y='441'>status</text><title>status
-int default 0
-登录状态 0成功 1失败</title></a>
-<text x='1842' y='438' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_logininfor.msg'><text id='ry.sys_logininfor.msg' x='1758' y='456'>msg</text><title>msg
-varchar(255) default ''
-提示消息</title></a>
-<text x='1842' y='453' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1742' y='462' xlink:href='#nn'/><a xlink:href='#sys_logininfor.login_time'><text id='ry.sys_logininfor.login_time' x='1758' y='471'>login_time</text><title>login_time
-* timestamp default CURRENT_TIMESTAMP
-访问时间</title></a>
-<text x='1842' y='468' text-anchor='end' class='colType'>d</text>
-<!-- == Table 'sys_menu' == -->
-<rect class='entity' x='1380' y='323' width='105' height='255' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1380 349 L 1380 330 Q 1380 323 1387 323 L 1478 323 Q 1485 323 1485 330 L 1485 349 L1380 349 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1380' y='323' width='105' height='255' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1380' y1='349' x2='1485' y2='349' style='stroke:#6e675f'/>
-<line class='delim' x1='1395' y1='349' x2='1395' y2='578' style='stroke:#6e675f'/>
-<line class='delim' x1='1474' y1='349' x2='1474' y2='578' style='stroke:#6e675f'/>
-<a xlink:href='#sys_menu'><text x='1405' y='341'>sys_menu</text><title>Table ry.sys_menu</title></a>
-  <use id='nn' x='1382' y='357' xlink:href='#nn'/><a xlink:href='#sys_menu.menu_id'><use id='pk' x='1382' y='356' xlink:href='#pk'/><title>Pk pk_sys_menu ( menu_id ) </title></a>
-<a xlink:href='#sys_menu.menu_id'><text id='ry.sys_menu.menu_id' x='1398' y='366'>menu_id</text><title>menu_id
-* int
-菜单ID</title></a>
-<text x='1482' y='363' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1382' y='372' xlink:href='#nn'/><a xlink:href='#sys_menu.menu_name'><text id='ry.sys_menu.menu_name' x='1398' y='381'>menu_name</text><title>menu_name
-* varchar(50)
-菜单名称</title></a>
-<text x='1482' y='378' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_menu.parent_id'><text id='ry.sys_menu.parent_id' x='1398' y='396'>parent_id</text><title>parent_id
-int default 0
-父菜单ID</title></a>
-<text x='1482' y='393' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_menu.order_num'><text id='ry.sys_menu.order_num' x='1398' y='411'>order_num</text><title>order_num
-int
-显示顺序</title></a>
-<text x='1482' y='408' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_menu.url'><text id='ry.sys_menu.url' x='1398' y='426'>url</text><title>url
-varchar(200) default ''
-请求地址</title></a>
-<text x='1482' y='423' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_menu.menu_type'><text id='ry.sys_menu.menu_type' x='1398' y='441'>menu_type</text><title>menu_type
-char(1) default ''
-类型:M目录,C菜单,F按钮</title></a>
-<text x='1482' y='438' text-anchor='end' class='colType'>c</text>  <a xlink:href='#sys_menu.visible'><text id='ry.sys_menu.visible' x='1398' y='456'>visible</text><title>visible
-int default 0
-菜单状态:0显示,1隐藏</title></a>
-<text x='1482' y='453' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_menu.perms'><text id='ry.sys_menu.perms' x='1398' y='471'>perms</text><title>perms
-varchar(100) default ''
-权限标识</title></a>
-<text x='1482' y='468' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_menu.icon'><text id='ry.sys_menu.icon' x='1398' y='486'>icon</text><title>icon
-varchar(100) default ''
-菜单图标</title></a>
-<text x='1482' y='483' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_menu.create_by'><text id='ry.sys_menu.create_by' x='1398' y='501'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1482' y='498' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1382' y='507' xlink:href='#nn'/><a xlink:href='#sys_menu.create_time'><text id='ry.sys_menu.create_time' x='1398' y='516'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1482' y='513' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_menu.update_by'><text id='ry.sys_menu.update_by' x='1398' y='531'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1482' y='528' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1382' y='537' xlink:href='#nn'/><a xlink:href='#sys_menu.update_time'><text id='ry.sys_menu.update_time' x='1398' y='546'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1482' y='543' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_menu.remark'><text id='ry.sys_menu.remark' x='1398' y='561'>remark</text><title>remark
-varchar(500) default ''
-备注</title></a>
-<text x='1482' y='558' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_oper_log' == -->
-<rect class='entity' x='1005' y='278' width='105' height='240' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1005 304 L 1005 285 Q 1005 278 1012 278 L 1103 278 Q 1110 278 1110 285 L 1110 304 L1005 304 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1005' y='278' width='105' height='240' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='1005' y1='304' x2='1110' y2='304' style='stroke:#626e5f'/>
-<line class='delim' x1='1020' y1='304' x2='1020' y2='518' style='stroke:#626e5f'/>
-<line class='delim' x1='1099' y1='304' x2='1099' y2='518' style='stroke:#626e5f'/>
-<a xlink:href='#sys_oper_log'><text x='1018' y='296'>sys_oper_log</text><title>Table ry.sys_oper_log</title></a>
-  <use id='nn' x='1007' y='312' xlink:href='#nn'/><a xlink:href='#sys_oper_log.oper_id'><use id='pk' x='1007' y='311' xlink:href='#pk'/><title>Pk pk_sys_oper_log ( oper_id ) </title></a>
-<a xlink:href='#sys_oper_log.oper_id'><text id='ry.sys_oper_log.oper_id' x='1023' y='321'>oper_id</text><title>oper_id
-* int
-日志主键</title></a>
-<text x='1107' y='318' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_oper_log.title'><text id='ry.sys_oper_log.title' x='1023' y='336'>title</text><title>title
-varchar(50) default ''
-模块标题</title></a>
-<text x='1107' y='333' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.action'><text id='ry.sys_oper_log.action' x='1023' y='351'>action</text><title>action
-varchar(100) default ''
-功能请求</title></a>
-<text x='1107' y='348' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.method'><text id='ry.sys_oper_log.method' x='1023' y='366'>method</text><title>method
-varchar(100) default ''
-方法名称</title></a>
-<text x='1107' y='363' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.channel'><text id='ry.sys_oper_log.channel' x='1023' y='381'>channel</text><title>channel
-varchar(20) default ''
-来源渠道</title></a>
-<text x='1107' y='378' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.login_name'><text id='ry.sys_oper_log.login_name' x='1023' y='396'>login_name</text><title>login_name
-varchar(50) default ''
-登录账号</title></a>
-<text x='1107' y='393' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.dept_name'><text id='ry.sys_oper_log.dept_name' x='1023' y='411'>dept_name</text><title>dept_name
-varchar(50) default ''
-部门名称</title></a>
-<text x='1107' y='408' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.oper_url'><text id='ry.sys_oper_log.oper_url' x='1023' y='426'>oper_url</text><title>oper_url
-varchar(255) default ''
-请求URL</title></a>
-<text x='1107' y='423' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.oper_ip'><text id='ry.sys_oper_log.oper_ip' x='1023' y='441'>oper_ip</text><title>oper_ip
-varchar(30) default ''
-主机地址</title></a>
-<text x='1107' y='438' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.oper_param'><text id='ry.sys_oper_log.oper_param' x='1023' y='456'>oper_param</text><title>oper_param
-varchar(255) default ''
-请求参数</title></a>
-<text x='1107' y='453' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_oper_log.status'><text id='ry.sys_oper_log.status' x='1023' y='471'>status</text><title>status
-int default 0
-操作状态 0正常 1异常</title></a>
-<text x='1107' y='468' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_oper_log.error_msg'><text id='ry.sys_oper_log.error_msg' x='1023' y='486'>error_msg</text><title>error_msg
-varchar(2000) default ''
-错误消息</title></a>
-<text x='1107' y='483' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1007' y='492' xlink:href='#nn'/><a xlink:href='#sys_oper_log.oper_time'><text id='ry.sys_oper_log.oper_time' x='1023' y='501'>oper_time</text><title>oper_time
-* timestamp default CURRENT_TIMESTAMP
-操作时间</title></a>
-<text x='1107' y='498' text-anchor='end' class='colType'>d</text>
-<!-- == Table 'sys_post' == -->
-<rect class='entity' x='1740' y='38' width='105' height='195' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1740 64 L 1740 45 Q 1740 38 1747 38 L 1838 38 Q 1845 38 1845 45 L 1845 64 L1740 64 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1740' y='38' width='105' height='195' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1740' y1='64' x2='1845' y2='64' style='stroke:#6e675f'/>
-<line class='delim' x1='1755' y1='64' x2='1755' y2='233' style='stroke:#6e675f'/>
-<line class='delim' x1='1834' y1='64' x2='1834' y2='233' style='stroke:#6e675f'/>
-<a xlink:href='#sys_post'><text x='1765' y='56'>sys_post</text><title>Table ry.sys_post</title></a>
-  <use id='nn' x='1742' y='72' xlink:href='#nn'/><a xlink:href='#sys_post.post_id'><use id='pk' x='1742' y='71' xlink:href='#pk'/><title>Pk pk_sys_post ( post_id ) </title></a>
-<a xlink:href='#sys_post.post_id'><text id='ry.sys_post.post_id' x='1758' y='81'>post_id</text><title>post_id
-* int
-岗位ID</title></a>
-<text x='1842' y='78' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1742' y='87' xlink:href='#nn'/><a xlink:href='#sys_post.post_code'><text id='ry.sys_post.post_code' x='1758' y='96'>post_code</text><title>post_code
-* varchar(64)
-岗位编码</title></a>
-<text x='1842' y='93' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1742' y='102' xlink:href='#nn'/><a xlink:href='#sys_post.post_name'><text id='ry.sys_post.post_name' x='1758' y='111'>post_name</text><title>post_name
-* varchar(100)
-岗位名称</title></a>
-<text x='1842' y='108' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1742' y='117' xlink:href='#nn'/><a xlink:href='#sys_post.post_sort'><text id='ry.sys_post.post_sort' x='1758' y='126'>post_sort</text><title>post_sort
-* int
-显示顺序</title></a>
-<text x='1842' y='123' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1742' y='132' xlink:href='#nn'/><a xlink:href='#sys_post.status'><text id='ry.sys_post.status' x='1758' y='141'>status</text><title>status
-* int
-状态(0正常 1停用)</title></a>
-<text x='1842' y='138' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_post.create_by'><text id='ry.sys_post.create_by' x='1758' y='156'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1842' y='153' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1742' y='162' xlink:href='#nn'/><a xlink:href='#sys_post.create_time'><text id='ry.sys_post.create_time' x='1758' y='171'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1842' y='168' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_post.update_by'><text id='ry.sys_post.update_by' x='1758' y='186'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1842' y='183' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1742' y='192' xlink:href='#nn'/><a xlink:href='#sys_post.update_time'><text id='ry.sys_post.update_time' x='1758' y='201'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1842' y='198' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_post.remark'><text id='ry.sys_post.remark' x='1758' y='216'>remark</text><title>remark
-varchar(500) default ''
-备注</title></a>
-<text x='1842' y='213' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_role' == -->
-<rect class='entity' x='1545' y='458' width='105' height='195' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1545 484 L 1545 465 Q 1545 458 1552 458 L 1643 458 Q 1650 458 1650 465 L 1650 484 L1545 484 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1545' y='458' width='105' height='195' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1545' y1='484' x2='1650' y2='484' style='stroke:#6e675f'/>
-<line class='delim' x1='1560' y1='484' x2='1560' y2='653' style='stroke:#6e675f'/>
-<line class='delim' x1='1639' y1='484' x2='1639' y2='653' style='stroke:#6e675f'/>
-<a xlink:href='#sys_role'><text x='1570' y='476'>sys_role</text><title>Table ry.sys_role</title></a>
-  <use id='nn' x='1547' y='492' xlink:href='#nn'/><a xlink:href='#sys_role.role_id'><use id='pk' x='1547' y='491' xlink:href='#pk'/><title>Pk pk_sys_role ( role_id ) </title></a>
-<a xlink:href='#sys_role.role_id'><text id='ry.sys_role.role_id' x='1563' y='501'>role_id</text><title>role_id
-* int
-角色ID</title></a>
-<text x='1647' y='498' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1547' y='507' xlink:href='#nn'/><a xlink:href='#sys_role.role_name'><text id='ry.sys_role.role_name' x='1563' y='516'>role_name</text><title>role_name
-* varchar(30)
-角色名称</title></a>
-<text x='1647' y='513' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='522' xlink:href='#nn'/><a xlink:href='#sys_role.role_key'><text id='ry.sys_role.role_key' x='1563' y='531'>role_key</text><title>role_key
-* varchar(100)
-角色权限字符串</title></a>
-<text x='1647' y='528' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='537' xlink:href='#nn'/><a xlink:href='#sys_role.role_sort'><text id='ry.sys_role.role_sort' x='1563' y='546'>role_sort</text><title>role_sort
-* int
-显示顺序</title></a>
-<text x='1647' y='543' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_role.status'><text id='ry.sys_role.status' x='1563' y='561'>status</text><title>status
-int default 0
-角色状态:0正常,1禁用</title></a>
-<text x='1647' y='558' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_role.create_by'><text id='ry.sys_role.create_by' x='1563' y='576'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='1647' y='573' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='582' xlink:href='#nn'/><a xlink:href='#sys_role.create_time'><text id='ry.sys_role.create_time' x='1563' y='591'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='1647' y='588' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_role.update_by'><text id='ry.sys_role.update_by' x='1563' y='606'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='1647' y='603' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1547' y='612' xlink:href='#nn'/><a xlink:href='#sys_role.update_time'><text id='ry.sys_role.update_time' x='1563' y='621'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='1647' y='618' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_role.remark'><text id='ry.sys_role.remark' x='1563' y='636'>remark</text><title>remark
-varchar(500) default ''
-备注</title></a>
-<text x='1647' y='633' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_role_menu' == -->
-<rect class='entity' x='1545' y='323' width='90' height='75' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1545 349 L 1545 330 Q 1545 323 1552 323 L 1628 323 Q 1635 323 1635 330 L 1635 349 L1545 349 ' style='fill:url(#tbg_f5ddbf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1545' y='323' width='90' height='75' rx='7' ry='7' style='fill:none;stroke:#6e675f'/>
-<line class='delim' x1='1545' y1='349' x2='1635' y2='349' style='stroke:#6e675f'/>
-<line class='delim' x1='1560' y1='349' x2='1560' y2='398' style='stroke:#6e675f'/>
-<line class='delim' x1='1624' y1='349' x2='1624' y2='398' style='stroke:#6e675f'/>
-<a xlink:href='#sys_role_menu'><text x='1548' y='341'>sys_role_menu</text><title>Table ry.sys_role_menu</title></a>
-  <use id='nn' x='1547' y='357' xlink:href='#nn'/><a xlink:href='#sys_role_menu.role_id'><use id='pk' x='1547' y='356' xlink:href='#pk'/><title>Pk pk_sys_role_menu ( role_id, menu_id ) </title></a>
-<a xlink:href='#sys_role_menu.role_id'><text id='ry.sys_role_menu.role_id' x='1563' y='366'>role_id</text><title>role_id
-* int
-角色ID</title></a>
-<text x='1632' y='363' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1547' y='372' xlink:href='#nn'/><a xlink:href='#sys_role_menu.menu_id'><use id='pk' x='1547' y='371' xlink:href='#pk'/><title>Pk pk_sys_role_menu ( role_id, menu_id ) </title></a>
-<a xlink:href='#sys_role_menu.menu_id'><text id='ry.sys_role_menu.menu_id' x='1563' y='381'>menu_id</text><title>menu_id
-* int
-菜单ID</title></a>
-<text x='1632' y='378' text-anchor='end' class='colType'>#</text>
-<!-- == Table 'sys_user' == -->
-<rect class='entity' x='690' y='83' width='105' height='270' rx='7' ry='7' style='stroke:none'/>
-<path d='M 690 109 L 690 90 Q 690 83 697 83 L 788 83 Q 795 83 795 90 L 795 109 L690 109 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='690' y='83' width='105' height='270' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='690' y1='109' x2='795' y2='109' style='stroke:#626e5f'/>
-<line class='delim' x1='705' y1='109' x2='705' y2='353' style='stroke:#626e5f'/>
-<line class='delim' x1='784' y1='109' x2='784' y2='353' style='stroke:#626e5f'/>
-<a xlink:href='#sys_user'><text x='715' y='101'>sys_user</text><title>Table ry.sys_user</title></a>
-  <use id='nn' x='692' y='117' xlink:href='#nn'/><a xlink:href='#sys_user.user_id'><use id='pk' x='692' y='116' xlink:href='#pk'/><title>Pk pk_sys_user ( user_id ) </title></a>
-<a xlink:href='#sys_user.user_id'><text id='ry.sys_user.user_id' x='708' y='126'>user_id</text><title>user_id
-* int
-用户ID</title></a>
-<text x='792' y='123' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_user.dept_id'><text id='ry.sys_user.dept_id' x='708' y='141'>dept_id</text><title>dept_id
-int
-部门ID</title></a>
-<text x='792' y='138' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_user.login_name'><text id='ry.sys_user.login_name' x='708' y='156'>login_name</text><title>login_name
-varchar(30) default ''
-登录账号</title></a>
-<text x='792' y='153' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.user_name'><text id='ry.sys_user.user_name' x='708' y='171'>user_name</text><title>user_name
-varchar(30) default ''
-用户昵称</title></a>
-<text x='792' y='168' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.email'><text id='ry.sys_user.email' x='708' y='186'>email</text><title>email
-varchar(100) default ''
-用户邮箱</title></a>
-<text x='792' y='183' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.phonenumber'><text id='ry.sys_user.phonenumber' x='708' y='201'>phonenumber</text><title>phonenumber
-varchar(20) default ''
-手机号码</title></a>
-<text x='792' y='198' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.password'><text id='ry.sys_user.password' x='708' y='216'>password</text><title>password
-varchar(100) default ''
-密码</title></a>
-<text x='792' y='213' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.salt'><text id='ry.sys_user.salt' x='708' y='231'>salt</text><title>salt
-varchar(100) default ''
-盐加密</title></a>
-<text x='792' y='228' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.user_type'><text id='ry.sys_user.user_type' x='708' y='246'>user_type</text><title>user_type
-char(1) default 'N'
-类型:Y默认用户,N非默认用户</title></a>
-<text x='792' y='243' text-anchor='end' class='colType'>c</text>  <a xlink:href='#sys_user.status'><text id='ry.sys_user.status' x='708' y='261'>status</text><title>status
-int default 0
-帐号状态:0正常,1禁用</title></a>
-<text x='792' y='258' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_user.refuse_des'><text id='ry.sys_user.refuse_des' x='708' y='276'>refuse_des</text><title>refuse_des
-varchar(500) default ''
-拒绝登录描述</title></a>
-<text x='792' y='273' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user.create_by'><text id='ry.sys_user.create_by' x='708' y='291'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='792' y='288' text-anchor='end' class='colType'>t</text>  <use id='nn' x='692' y='297' xlink:href='#nn'/><a xlink:href='#sys_user.create_time'><text id='ry.sys_user.create_time' x='708' y='306'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='792' y='303' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_user.update_by'><text id='ry.sys_user.update_by' x='708' y='321'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='792' y='318' text-anchor='end' class='colType'>t</text>  <use id='nn' x='692' y='327' xlink:href='#nn'/><a xlink:href='#sys_user.update_time'><text id='ry.sys_user.update_time' x='708' y='336'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='792' y='333' text-anchor='end' class='colType'>d</text>
-<!-- == Table 'sys_user_online' == -->
-<rect class='entity' x='660' y='413' width='135' height='195' rx='7' ry='7' style='stroke:none'/>
-<path d='M 660 439 L 660 420 Q 660 413 667 413 L 788 413 Q 795 413 795 420 L 795 439 L660 439 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='660' y='413' width='135' height='195' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='660' y1='439' x2='795' y2='439' style='stroke:#626e5f'/>
-<line class='delim' x1='675' y1='439' x2='675' y2='608' style='stroke:#626e5f'/>
-<line class='delim' x1='784' y1='439' x2='784' y2='608' style='stroke:#626e5f'/>
-<a xlink:href='#sys_user_online'><text x='679' y='431'>sys_user_online</text><title>Table ry.sys_user_online</title></a>
-  <use id='nn' x='662' y='447' xlink:href='#nn'/><a xlink:href='#sys_user_online.sessionId'><use id='pk' x='662' y='446' xlink:href='#pk'/><title>Pk pk_sys_user_online ( sessionId ) </title></a>
-<a xlink:href='#sys_user_online.sessionId'><text id='ry.sys_user_online.sessionId' x='678' y='456'>sessionId</text><title>sessionId
-* varchar(50) default ''
-用户会话id</title></a>
-<text x='792' y='453' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.login_name'><text id='ry.sys_user_online.login_name' x='678' y='471'>login_name</text><title>login_name
-varchar(50) default ''
-登录账号</title></a>
-<text x='792' y='468' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.dept_name'><text id='ry.sys_user_online.dept_name' x='678' y='486'>dept_name</text><title>dept_name
-varchar(50) default ''
-部门名称</title></a>
-<text x='792' y='483' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.ipaddr'><text id='ry.sys_user_online.ipaddr' x='678' y='501'>ipaddr</text><title>ipaddr
-varchar(50) default ''
-登录IP地址</title></a>
-<text x='792' y='498' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.browser'><text id='ry.sys_user_online.browser' x='678' y='516'>browser</text><title>browser
-varchar(50) default ''
-浏览器类型</title></a>
-<text x='792' y='513' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.os'><text id='ry.sys_user_online.os' x='678' y='531'>os</text><title>os
-varchar(50) default ''
-操作系统</title></a>
-<text x='792' y='528' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_user_online.status'><text id='ry.sys_user_online.status' x='678' y='546'>status</text><title>status
-varchar(10) default ''
-在线状态on_line在线off_line离线</title></a>
-<text x='792' y='543' text-anchor='end' class='colType'>t</text>  <use id='nn' x='662' y='552' xlink:href='#nn'/><a xlink:href='#sys_user_online.start_timestamp'><text id='ry.sys_user_online.start_timestamp' x='678' y='561'>start_timestamp</text><title>start_timestamp
-* timestamp default CURRENT_TIMESTAMP
-session创建时间</title></a>
-<text x='792' y='558' text-anchor='end' class='colType'>d</text>  <use id='nn' x='662' y='567' xlink:href='#nn'/><a xlink:href='#sys_user_online.last_access_time'><text id='ry.sys_user_online.last_access_time' x='678' y='576'>last_access_time</text><title>last_access_time
-* timestamp default '0000-00-00 00:00:00'
-session最后访问时间</title></a>
-<text x='792' y='573' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_user_online.expire_time'><text id='ry.sys_user_online.expire_time' x='678' y='591'>expire_time</text><title>expire_time
-int default 0
-超时时间,单位为分钟</title></a>
-<text x='792' y='588' text-anchor='end' class='colType'>#</text>
-<!-- == Table 'sys_user_post' == -->
-<rect class='entity' x='855' y='413' width='90' height='75' rx='7' ry='7' style='stroke:none'/>
-<path d='M 855 439 L 855 420 Q 855 413 862 413 L 938 413 Q 945 413 945 420 L 945 439 L855 439 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='855' y='413' width='90' height='75' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='855' y1='439' x2='945' y2='439' style='stroke:#626e5f'/>
-<line class='delim' x1='870' y1='439' x2='870' y2='488' style='stroke:#626e5f'/>
-<line class='delim' x1='934' y1='439' x2='934' y2='488' style='stroke:#626e5f'/>
-<a xlink:href='#sys_user_post'><text x='858' y='431'>sys_user_post</text><title>Table ry.sys_user_post</title></a>
-  <use id='nn' x='857' y='447' xlink:href='#nn'/><a xlink:href='#sys_user_post.user_id'><use id='pk' x='857' y='446' xlink:href='#pk'/><title>Pk pk_sys_user_post ( user_id, post_id ) </title></a>
-<a xlink:href='#sys_user_post.user_id'><text id='ry.sys_user_post.user_id' x='873' y='456'>user_id</text><title>user_id
-* varchar(64)
-用户ID</title></a>
-<text x='942' y='453' text-anchor='end' class='colType'>t</text>  <use id='nn' x='857' y='462' xlink:href='#nn'/><a xlink:href='#sys_user_post.post_id'><use id='pk' x='857' y='461' xlink:href='#pk'/><title>Pk pk_sys_user_post ( user_id, post_id ) </title></a>
-<a xlink:href='#sys_user_post.post_id'><text id='ry.sys_user_post.post_id' x='873' y='471'>post_id</text><title>post_id
-* varchar(64)
-岗位ID</title></a>
-<text x='942' y='468' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'sys_user_role' == -->
-<rect class='entity' x='855' y='278' width='90' height='75' rx='7' ry='7' style='stroke:none'/>
-<path d='M 855 304 L 855 285 Q 855 278 862 278 L 938 278 Q 945 278 945 285 L 945 304 L855 304 ' style='fill:url(#tbg_c8f5bf);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='855' y='278' width='90' height='75' rx='7' ry='7' style='fill:none;stroke:#626e5f'/>
-<line class='delim' x1='855' y1='304' x2='945' y2='304' style='stroke:#626e5f'/>
-<line class='delim' x1='870' y1='304' x2='870' y2='353' style='stroke:#626e5f'/>
-<line class='delim' x1='934' y1='304' x2='934' y2='353' style='stroke:#626e5f'/>
-<a xlink:href='#sys_user_role'><text x='858' y='296'>sys_user_role</text><title>Table ry.sys_user_role</title></a>
-  <use id='nn' x='857' y='312' xlink:href='#nn'/><a xlink:href='#sys_user_role.user_id'><use id='pk' x='857' y='311' xlink:href='#pk'/><title>Pk pk_sys_user_role ( user_id, role_id ) </title></a>
-<a xlink:href='#sys_user_role.user_id'><text id='ry.sys_user_role.user_id' x='873' y='321'>user_id</text><title>user_id
-* int
-用户ID</title></a>
-<text x='942' y='318' text-anchor='end' class='colType'>#</text>  <use id='nn' x='857' y='327' xlink:href='#nn'/><a xlink:href='#sys_user_role.role_id'><use id='pk' x='857' y='326' xlink:href='#pk'/><title>Pk pk_sys_user_role ( user_id, role_id ) </title></a>
-<a xlink:href='#sys_user_role.role_id'><text id='ry.sys_user_role.role_id' x='873' y='336'>role_id</text><title>role_id
-* int
-角色ID</title></a>
-<text x='942' y='333' text-anchor='end' class='colType'>#</text>
-<!-- == Table 'sys_dept' == -->
-<rect class='entity' x='645' y='713' width='105' height='225' rx='7' ry='7' style='stroke:none'/>
-<path d='M 645 739 L 645 720 Q 645 713 652 713 L 743 713 Q 750 713 750 720 L 750 739 L645 739 ' style='fill:url(#tbg_bfbff5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='645' y='713' width='105' height='225' rx='7' ry='7' style='fill:none;stroke:#5f5f6e'/>
-<line class='delim' x1='645' y1='739' x2='750' y2='739' style='stroke:#5f5f6e'/>
-<line class='delim' x1='660' y1='739' x2='660' y2='938' style='stroke:#5f5f6e'/>
-<line class='delim' x1='739' y1='739' x2='739' y2='938' style='stroke:#5f5f6e'/>
-<a xlink:href='#sys_dept'><text x='670' y='731'>sys_dept</text><title>Table ry.sys_dept</title></a>
-  <use id='nn' x='647' y='747' xlink:href='#nn'/><a xlink:href='#sys_dept.dept_id'><use id='pk' x='647' y='746' xlink:href='#pk'/><title>Pk pk_sys_dept ( dept_id ) </title></a>
-<a xlink:href='#sys_dept.dept_id'><text id='ry.sys_dept.dept_id' x='663' y='756'>dept_id</text><title>dept_id
-* int
-部门id</title></a>
-<text x='747' y='753' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dept.parent_id'><text id='ry.sys_dept.parent_id' x='663' y='771'>parent_id</text><title>parent_id
-int default 0
-父部门id</title></a>
-<text x='747' y='768' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dept.dept_name'><text id='ry.sys_dept.dept_name' x='663' y='786'>dept_name</text><title>dept_name
-varchar(30) default ''
-部门名称</title></a>
-<text x='747' y='783' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dept.order_num'><text id='ry.sys_dept.order_num' x='663' y='801'>order_num</text><title>order_num
-int default 0
-显示顺序</title></a>
-<text x='747' y='798' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dept.leader'><text id='ry.sys_dept.leader' x='663' y='816'>leader</text><title>leader
-varchar(20) default ''
-负责人</title></a>
-<text x='747' y='813' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dept.phone'><text id='ry.sys_dept.phone' x='663' y='831'>phone</text><title>phone
-varchar(20) default ''
-联系电话</title></a>
-<text x='747' y='828' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dept.email'><text id='ry.sys_dept.email' x='663' y='846'>email</text><title>email
-varchar(20) default ''
-邮箱</title></a>
-<text x='747' y='843' text-anchor='end' class='colType'>t</text>  <a xlink:href='#sys_dept.status'><text id='ry.sys_dept.status' x='663' y='861'>status</text><title>status
-int default 0
-部门状态:0正常,1停用</title></a>
-<text x='747' y='858' text-anchor='end' class='colType'>#</text>  <a xlink:href='#sys_dept.create_by'><text id='ry.sys_dept.create_by' x='663' y='876'>create_by</text><title>create_by
-varchar(64) default ''
-创建者</title></a>
-<text x='747' y='873' text-anchor='end' class='colType'>t</text>  <use id='nn' x='647' y='882' xlink:href='#nn'/><a xlink:href='#sys_dept.create_time'><text id='ry.sys_dept.create_time' x='663' y='891'>create_time</text><title>create_time
-* timestamp default CURRENT_TIMESTAMP
-创建时间</title></a>
-<text x='747' y='888' text-anchor='end' class='colType'>d</text>  <a xlink:href='#sys_dept.update_by'><text id='ry.sys_dept.update_by' x='663' y='906'>update_by</text><title>update_by
-varchar(64) default ''
-更新者</title></a>
-<text x='747' y='903' text-anchor='end' class='colType'>t</text>  <use id='nn' x='647' y='912' xlink:href='#nn'/><a xlink:href='#sys_dept.update_time'><text id='ry.sys_dept.update_time' x='663' y='921'>update_time</text><title>update_time
-* timestamp default '0000-00-00 00:00:00'
-更新时间</title></a>
-<text x='747' y='918' text-anchor='end' class='colType'>d</text>
-<!-- == Table 'qrtz_paused_trigger_grps' == -->
-<rect class='entity' x='1260' y='683' width='165' height='75' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1260 709 L 1260 690 Q 1260 683 1267 683 L 1418 683 Q 1425 683 1425 690 L 1425 709 L1260 709 ' style='fill:url(#tbg_bfbff5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1260' y='683' width='165' height='75' rx='7' ry='7' style='fill:none;stroke:#5f5f6e'/>
-<line class='delim' x1='1260' y1='709' x2='1425' y2='709' style='stroke:#5f5f6e'/>
-<line class='delim' x1='1275' y1='709' x2='1275' y2='758' style='stroke:#5f5f6e'/>
-<line class='delim' x1='1414' y1='709' x2='1414' y2='758' style='stroke:#5f5f6e'/>
-<a xlink:href='#qrtz_paused_trigger_grps'><text x='1267' y='701'>qrtz_paused_trigger_grps</text><title>Table ry.qrtz_paused_trigger_grps</title></a>
-  <use id='nn' x='1262' y='717' xlink:href='#nn'/><a xlink:href='#qrtz_paused_trigger_grps.sched_name'><use id='pk' x='1262' y='716' xlink:href='#pk'/><title>Pk pk_qrtz_paused_trigger_grps ( sched_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_paused_trigger_grps.sched_name'><text id='ry.qrtz_paused_trigger_grps.sched_name' x='1278' y='726'>sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<text x='1422' y='723' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1262' y='732' xlink:href='#nn'/><a xlink:href='#qrtz_paused_trigger_grps.trigger_group'><use id='pk' x='1262' y='731' xlink:href='#pk'/><title>Pk pk_qrtz_paused_trigger_grps ( sched_name, trigger_group ) </title></a>
-<a xlink:href='#qrtz_paused_trigger_grps.trigger_group'><text id='ry.qrtz_paused_trigger_grps.trigger_group' x='1278' y='741'>trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<text x='1422' y='738' text-anchor='end' class='colType'>t</text>
-<!-- == Table 'qrtz_fired_triggers' == -->
-<rect class='entity' x='1035' y='668' width='135' height='240' rx='7' ry='7' style='stroke:none'/>
-<path d='M 1035 694 L 1035 675 Q 1035 668 1042 668 L 1163 668 Q 1170 668 1170 675 L 1170 694 L1035 694 ' style='fill:url(#tbg_bfbff5);stroke:1;stroke-opacity:0.1;' />
-<rect class='entity' x='1035' y='668' width='135' height='240' rx='7' ry='7' style='fill:none;stroke:#5f5f6e'/>
-<line class='delim' x1='1035' y1='694' x2='1170' y2='694' style='stroke:#5f5f6e'/>
-<line class='delim' x1='1050' y1='694' x2='1050' y2='908' style='stroke:#5f5f6e'/>
-<line class='delim' x1='1159' y1='694' x2='1159' y2='908' style='stroke:#5f5f6e'/>
-<a xlink:href='#qrtz_fired_triggers'><text x='1042' y='686'>qrtz_fired_triggers</text><title>Table ry.qrtz_fired_triggers</title></a>
-  <use id='nn' x='1037' y='702' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.sched_name'><use id='pk' x='1037' y='701' xlink:href='#pk'/><title>Pk pk_qrtz_fired_triggers ( sched_name, entry_id ) </title></a>
-<a xlink:href='#qrtz_fired_triggers.sched_name'><text id='ry.qrtz_fired_triggers.sched_name' x='1053' y='711'>sched_name</text><title>sched_name
-* varchar(120)</title></a>
-<text x='1167' y='708' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1037' y='717' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.entry_id'><use id='pk' x='1037' y='716' xlink:href='#pk'/><title>Pk pk_qrtz_fired_triggers ( sched_name, entry_id ) </title></a>
-<a xlink:href='#qrtz_fired_triggers.entry_id'><text id='ry.qrtz_fired_triggers.entry_id' x='1053' y='726'>entry_id</text><title>entry_id
-* varchar(95)</title></a>
-<text x='1167' y='723' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1037' y='732' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.trigger_name'><text id='ry.qrtz_fired_triggers.trigger_name' x='1053' y='741'>trigger_name</text><title>trigger_name
-* varchar(200)</title></a>
-<text x='1167' y='738' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1037' y='747' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.trigger_group'><text id='ry.qrtz_fired_triggers.trigger_group' x='1053' y='756'>trigger_group</text><title>trigger_group
-* varchar(200)</title></a>
-<text x='1167' y='753' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1037' y='762' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.instance_name'><text id='ry.qrtz_fired_triggers.instance_name' x='1053' y='771'>instance_name</text><title>instance_name
-* varchar(200)</title></a>
-<text x='1167' y='768' text-anchor='end' class='colType'>t</text>  <use id='nn' x='1037' y='777' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.fired_time'><text id='ry.qrtz_fired_triggers.fired_time' x='1053' y='786'>fired_time</text><title>fired_time
-* bigint</title></a>
-<text x='1167' y='783' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1037' y='792' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.sched_time'><text id='ry.qrtz_fired_triggers.sched_time' x='1053' y='801'>sched_time</text><title>sched_time
-* bigint</title></a>
-<text x='1167' y='798' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1037' y='807' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.priority'><text id='ry.qrtz_fired_triggers.priority' x='1053' y='816'>priority</text><title>priority
-* int</title></a>
-<text x='1167' y='813' text-anchor='end' class='colType'>#</text>  <use id='nn' x='1037' y='822' xlink:href='#nn'/><a xlink:href='#qrtz_fired_triggers.state'><text id='ry.qrtz_fired_triggers.state' x='1053' y='831'>state</text><title>state
-* varchar(16)</title></a>
-<text x='1167' y='828' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_fired_triggers.job_name'><text id='ry.qrtz_fired_triggers.job_name' x='1053' y='846'>job_name</text><title>job_name
-varchar(200)</title></a>
-<text x='1167' y='843' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_fired_triggers.job_group'><text id='ry.qrtz_fired_triggers.job_group' x='1053' y='861'>job_group</text><title>job_group
-varchar(200)</title></a>
-<text x='1167' y='858' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_fired_triggers.is_nonconcurrent'><text id='ry.qrtz_fired_triggers.is_nonconcurrent' x='1053' y='876'>is_nonconcurrent</text><title>is_nonconcurrent
-varchar(1)</title></a>
-<text x='1167' y='873' text-anchor='end' class='colType'>t</text>  <a xlink:href='#qrtz_fired_triggers.requests_recovery'><text id='ry.qrtz_fired_triggers.requests_recovery' x='1053' y='891'>requests_recovery</text><title>requests_recovery
-varchar(1)</title></a>
-<text x='1167' y='888' text-anchor='end' class='colType'>t</text>
-</g></svg></div>
-
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_blob_triggers' onclick='window.scrollTo(60, 540);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_blob_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_blob_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_blob_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_blob_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_blob_triggers.blob_data'>blob&#95;data</a></td>
-		<td> blob   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;blob&#95;triggers</td>
-		<td> ON sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Foreign Keys</th></tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#fk'/></svg></td><td>qrtz_blob_triggers_ibfk_1</td>
-		<td > ( sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group ) ref <a href='#qrtz&#95;triggers'>qrtz&#95;triggers</a> (sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group) </td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_calendars' onclick='window.scrollTo(60, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_calendars</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_calendars.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_calendars.calendar_name'>calendar&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_calendars.calendar'>calendar</a></td>
-		<td> blob   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;calendars</td>
-		<td> ON sched&#95;name&#44; calendar&#95;name</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_cron_triggers' onclick='window.scrollTo(235, 540);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_cron_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_cron_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_cron_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_cron_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_cron_triggers.cron_expression'>cron&#95;expression</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_cron_triggers.time_zone_id'>time&#95;zone&#95;id</a></td>
-		<td> varchar&#40; 80 &#41;   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;cron&#95;triggers</td>
-		<td> ON sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Foreign Keys</th></tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#fk'/></svg></td><td>qrtz_cron_triggers_ibfk_1</td>
-		<td > ( sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group ) ref <a href='#qrtz&#95;triggers'>qrtz&#95;triggers</a> (sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group) </td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_fired_triggers' onclick='window.scrollTo(835, 675);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_fired_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_fired_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_fired_triggers.entry_id'>entry&#95;id</a></td>
-		<td> varchar&#40; 95 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.instance_name'>instance&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.fired_time'>fired&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.sched_time'>sched&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.priority'>priority</a></td>
-		<td> int   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_fired_triggers.state'>state</a></td>
-		<td> varchar&#40; 16 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_fired_triggers.job_name'>job&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_fired_triggers.job_group'>job&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_fired_triggers.is_nonconcurrent'>is&#95;nonconcurrent</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_fired_triggers.requests_recovery'>requests&#95;recovery</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;fired&#95;triggers</td>
-		<td> ON sched&#95;name&#44; entry&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_job_details' onclick='window.scrollTo(235, 195);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_job_details</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#ref'/></svg></td>
-		<td><a name='qrtz_job_details.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#ref'/></svg></td>
-		<td><a name='qrtz_job_details.job_name'>job&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#ref'/></svg></td>
-		<td><a name='qrtz_job_details.job_group'>job&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_job_details.description'>description</a></td>
-		<td> varchar&#40; 250 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_job_details.job_class_name'>job&#95;class&#95;name</a></td>
-		<td> varchar&#40; 250 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_job_details.is_durable'>is&#95;durable</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_job_details.is_nonconcurrent'>is&#95;nonconcurrent</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_job_details.is_update_data'>is&#95;update&#95;data</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_job_details.requests_recovery'>requests&#95;recovery</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_job_details.job_data'>job&#95;data</a></td>
-		<td> blob   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;job&#95;details</td>
-		<td> ON sched&#95;name&#44; job&#95;name&#44; job&#95;group</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_locks' onclick='window.scrollTo(60, 60);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_locks</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_locks.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_locks.lock_name'>lock&#95;name</a></td>
-		<td> varchar&#40; 40 &#41;   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;locks</td>
-		<td> ON sched&#95;name&#44; lock&#95;name</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_paused_trigger_grps' onclick='window.scrollTo(1060, 690);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_paused_trigger_grps</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_paused_trigger_grps.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_paused_trigger_grps.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;paused&#95;trigger&#95;grps</td>
-		<td> ON sched&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_scheduler_state' onclick='window.scrollTo(60, 735);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_scheduler_state</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_scheduler_state.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='qrtz_scheduler_state.instance_name'>instance&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_scheduler_state.last_checkin_time'>last&#95;checkin&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_scheduler_state.checkin_interval'>checkin&#95;interval</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;scheduler&#95;state</td>
-		<td> ON sched&#95;name&#44; instance&#95;name</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_simple_triggers' onclick='window.scrollTo(60, 540);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_simple_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simple_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simple_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simple_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_simple_triggers.repeat_count'>repeat&#95;count</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_simple_triggers.repeat_interval'>repeat&#95;interval</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_simple_triggers.times_triggered'>times&#95;triggered</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;simple&#95;triggers</td>
-		<td> ON sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Foreign Keys</th></tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#fk'/></svg></td><td>qrtz_simple_triggers_ibfk_1</td>
-		<td > ( sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group ) ref <a href='#qrtz&#95;triggers'>qrtz&#95;triggers</a> (sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group) </td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_simprop_triggers' onclick='window.scrollTo(60, 225);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_simprop_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simprop_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simprop_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_simprop_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.str_prop_1'>str&#95;prop&#95;1</a></td>
-		<td> varchar&#40; 512 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.str_prop_2'>str&#95;prop&#95;2</a></td>
-		<td> varchar&#40; 512 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.str_prop_3'>str&#95;prop&#95;3</a></td>
-		<td> varchar&#40; 512 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.int_prop_1'>int&#95;prop&#95;1</a></td>
-		<td> int   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.int_prop_2'>int&#95;prop&#95;2</a></td>
-		<td> int   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.long_prop_1'>long&#95;prop&#95;1</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.long_prop_2'>long&#95;prop&#95;2</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.dec_prop_1'>dec&#95;prop&#95;1</a></td>
-		<td> decimal&#40; 13&#44; 4 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.dec_prop_2'>dec&#95;prop&#95;2</a></td>
-		<td> decimal&#40; 13&#44; 4 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.bool_prop_1'>bool&#95;prop&#95;1</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_simprop_triggers.bool_prop_2'>bool&#95;prop&#95;2</a></td>
-		<td> varchar&#40; 1 &#41;   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;simprop&#95;triggers</td>
-		<td> ON sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Foreign Keys</th></tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#fk'/></svg></td><td>qrtz_simprop_triggers_ibfk_1</td>
-		<td > ( sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group ) ref <a href='#qrtz&#95;triggers'>qrtz&#95;triggers</a> (sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group) </td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='qrtz_triggers' onclick='window.scrollTo(60, 195);return false;' style='cursor:pointer;'><h4 class='card-title'>Table qrtz_triggers</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_triggers.sched_name'>sched&#95;name</a></td>
-		<td> varchar&#40; 120 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#ref'/></svg></td>
-		<td><a name='qrtz_triggers.trigger_name'>trigger&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg><svg width='14' height='14'><use xlink:href='#ref'/></svg></td>
-		<td><a name='qrtz_triggers.trigger_group'>trigger&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#idx'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_triggers.job_name'>job&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#idx'/></svg><svg width='14' height='14'><use xlink:href='#fk'/></svg></td>
-		<td><a name='qrtz_triggers.job_group'>job&#95;group</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.description'>description</a></td>
-		<td> varchar&#40; 250 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.next_fire_time'>next&#95;fire&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.prev_fire_time'>prev&#95;fire&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.priority'>priority</a></td>
-		<td> int   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_triggers.trigger_state'>trigger&#95;state</a></td>
-		<td> varchar&#40; 16 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_triggers.trigger_type'>trigger&#95;type</a></td>
-		<td> varchar&#40; 8 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='qrtz_triggers.start_time'>start&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.end_time'>end&#95;time</a></td>
-		<td> bigint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.calendar_name'>calendar&#95;name</a></td>
-		<td> varchar&#40; 200 &#41;   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.misfire_instr'>misfire&#95;instr</a></td>
-		<td> smallint   </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='qrtz_triggers.job_data'>job&#95;data</a></td>
-		<td> blob   </td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;qrtz&#95;triggers</td>
-		<td> ON sched&#95;name&#44; trigger&#95;name&#44; trigger&#95;group</td>
-		<td>  </td>
-	</tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#idx'/></svg></td><td>sched&#95;name</td>
-		<td> ON sched&#95;name&#44; job&#95;name&#44; job&#95;group</td>
-		<td>  </td>
-	</tr>
-<tr><th colspan='4'>Foreign Keys</th></tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#fk'/></svg></td><td>qrtz_triggers_ibfk_1</td>
-		<td > ( sched&#95;name&#44; job&#95;name&#44; job&#95;group ) ref <a href='#qrtz&#95;job&#95;details'>qrtz&#95;job&#95;details</a> (sched&#95;name&#44; job&#95;name&#44; job&#95;group) </td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_dept' onclick='window.scrollTo(445, 720);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_dept</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_dept.dept_id'>dept&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 部门id </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.parent_id'>parent&#95;id</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 父部门id </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.dept_name'>dept&#95;name</a></td>
-		<td> varchar&#40; 30 &#41;   DEFAULT '' </td>
-		<td> 部门名称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.order_num'>order&#95;num</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 显示顺序 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.leader'>leader</a></td>
-		<td> varchar&#40; 20 &#41;   DEFAULT '' </td>
-		<td> 负责人 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.phone'>phone</a></td>
-		<td> varchar&#40; 20 &#41;   DEFAULT '' </td>
-		<td> 联系电话 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.email'>email</a></td>
-		<td> varchar&#40; 20 &#41;   DEFAULT '' </td>
-		<td> 邮箱 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 部门状态&#58;0正常&#44;1停用 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dept.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dept.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dept.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;dept</td>
-		<td> ON dept&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_dict_data' onclick='window.scrollTo(970, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_dict_data</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_dict_data.dict_code'>dict&#95;code</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 字典编码 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.dict_sort'>dict&#95;sort</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 字典排序 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.dict_label'>dict&#95;label</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 字典标签 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.dict_value'>dict&#95;value</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 字典键值 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.dict_type'>dict&#95;type</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 字典类型 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 状态(0正常 1禁用) </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dict_data.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dict_data.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_data.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;dict&#95;data</td>
-		<td> ON dict&#95;code</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_dict_type' onclick='window.scrollTo(805, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_dict_type</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_dict_type.dict_id'>dict&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 字典主键 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_type.dict_name'>dict&#95;name</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 字典名称 </td>
-	</tr>
-	<tr>
-		<td><svg width='14' height='14'><use xlink:href='#unq'/></svg></td>
-		<td><a name='sys_dict_type.dict_type'>dict&#95;type</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 字典类型 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_type.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 状态(0正常 1禁用) </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_type.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dict_type.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_type.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_dict_type.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_dict_type.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;dict&#95;type</td>
-		<td> ON dict&#95;id</td>
-		<td>  </td>
-	</tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#unq'/></svg></td><td>dict&#95;type</td>
-		<td> ON dict&#95;type</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_job' onclick='window.scrollTo(1345, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_job</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_job.job_id'>job&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 任务ID </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_job.job_name'>job&#95;name</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 任务名称 </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_job.job_group'>job&#95;group</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 任务组名 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.method_name'>method&#95;name</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 任务方法 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.params'>params</a></td>
-		<td> varchar&#40; 200 &#41;   DEFAULT '' </td>
-		<td> 方法参数 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.cron_expression'>cron&#95;expression</a></td>
-		<td> varchar&#40; 255 &#41;   DEFAULT '' </td>
-		<td> cron执行表达式 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 状态(0正常 1暂停) </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_job.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_job.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注信息 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;job</td>
-		<td> ON job&#95;id&#44; job&#95;name&#44; job&#95;group</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_job_log' onclick='window.scrollTo(1165, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_job_log</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_job_log.job_log_id'>job&#95;log&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 任务日志ID </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_job_log.job_name'>job&#95;name</a></td>
-		<td> varchar&#40; 64 &#41;   </td>
-		<td> 任务名称 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_job_log.job_group'>job&#95;group</a></td>
-		<td> varchar&#40; 64 &#41;   </td>
-		<td> 任务组名 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job_log.method_name'>method&#95;name</a></td>
-		<td> varchar&#40; 500 &#41;   </td>
-		<td> 任务方法 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job_log.params'>params</a></td>
-		<td> varchar&#40; 200 &#41;   DEFAULT '' </td>
-		<td> 方法参数 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job_log.job_message'>job&#95;message</a></td>
-		<td> varchar&#40; 500 &#41;   </td>
-		<td> 日志信息 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job_log.is_exception'>is&#95;exception</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 是否异常 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_job_log.exception_info'>exception&#95;info</a></td>
-		<td> text   </td>
-		<td> 异常信息 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_job_log.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;job&#95;log</td>
-		<td> ON job&#95;log&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_logininfor' onclick='window.scrollTo(1540, 330);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_logininfor</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_logininfor.info_id'>info&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 访问ID </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.login_name'>login&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 登录账号 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.ipaddr'>ipaddr</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 登录IP地址 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.browser'>browser</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 浏览器类型 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.os'>os</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 操作系统 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 登录状态 0成功 1失败 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_logininfor.msg'>msg</a></td>
-		<td> varchar&#40; 255 &#41;   DEFAULT '' </td>
-		<td> 提示消息 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_logininfor.login_time'>login&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 访问时间 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;logininfor</td>
-		<td> ON info&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_menu' onclick='window.scrollTo(1180, 330);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_menu</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_menu.menu_id'>menu&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 菜单ID </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_menu.menu_name'>menu&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   </td>
-		<td> 菜单名称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.parent_id'>parent&#95;id</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 父菜单ID </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.order_num'>order&#95;num</a></td>
-		<td> int   </td>
-		<td> 显示顺序 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.url'>url</a></td>
-		<td> varchar&#40; 200 &#41;   DEFAULT '' </td>
-		<td> 请求地址 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.menu_type'>menu&#95;type</a></td>
-		<td> char&#40; 1 &#41;   DEFAULT '' </td>
-		<td> 类型&#58;M目录&#44;C菜单&#44;F按钮 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.visible'>visible</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 菜单状态&#58;0显示&#44;1隐藏 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.perms'>perms</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 权限标识 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.icon'>icon</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 菜单图标 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_menu.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_menu.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_menu.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;menu</td>
-		<td> ON menu&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_oper_log' onclick='window.scrollTo(805, 285);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_oper_log</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_oper_log.oper_id'>oper&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 日志主键 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.title'>title</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 模块标题 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.action'>action</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 功能请求 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.method'>method</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 方法名称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.channel'>channel</a></td>
-		<td> varchar&#40; 20 &#41;   DEFAULT '' </td>
-		<td> 来源渠道 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.login_name'>login&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 登录账号 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.dept_name'>dept&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 部门名称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.oper_url'>oper&#95;url</a></td>
-		<td> varchar&#40; 255 &#41;   DEFAULT '' </td>
-		<td> 请求URL </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.oper_ip'>oper&#95;ip</a></td>
-		<td> varchar&#40; 30 &#41;   DEFAULT '' </td>
-		<td> 主机地址 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.oper_param'>oper&#95;param</a></td>
-		<td> varchar&#40; 255 &#41;   DEFAULT '' </td>
-		<td> 请求参数 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 操作状态 0正常 1异常 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_oper_log.error_msg'>error&#95;msg</a></td>
-		<td> varchar&#40; 2000 &#41;   DEFAULT '' </td>
-		<td> 错误消息 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_oper_log.oper_time'>oper&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 操作时间 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;oper&#95;log</td>
-		<td> ON oper&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_post' onclick='window.scrollTo(1540, 45);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_post</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_post.post_id'>post&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 岗位ID </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.post_code'>post&#95;code</a></td>
-		<td> varchar&#40; 64 &#41;   </td>
-		<td> 岗位编码 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.post_name'>post&#95;name</a></td>
-		<td> varchar&#40; 100 &#41;   </td>
-		<td> 岗位名称 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.post_sort'>post&#95;sort</a></td>
-		<td> int   </td>
-		<td> 显示顺序 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.status'>status</a></td>
-		<td> int   </td>
-		<td> 状态(0正常 1停用) </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_post.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_post.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_post.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_post.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;post</td>
-		<td> ON post&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_role' onclick='window.scrollTo(1345, 465);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_role</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_role.role_id'>role&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 角色ID </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_role.role_name'>role&#95;name</a></td>
-		<td> varchar&#40; 30 &#41;   </td>
-		<td> 角色名称 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_role.role_key'>role&#95;key</a></td>
-		<td> varchar&#40; 100 &#41;   </td>
-		<td> 角色权限字符串 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_role.role_sort'>role&#95;sort</a></td>
-		<td> int   </td>
-		<td> 显示顺序 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_role.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 角色状态&#58;0正常&#44;1禁用 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_role.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_role.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_role.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_role.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_role.remark'>remark</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 备注 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;role</td>
-		<td> ON role&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_role_menu' onclick='window.scrollTo(1345, 330);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_role_menu</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_role_menu.role_id'>role&#95;id</a></td>
-		<td> int   </td>
-		<td> 角色ID </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_role_menu.menu_id'>menu&#95;id</a></td>
-		<td> int   </td>
-		<td> 菜单ID </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;role&#95;menu</td>
-		<td> ON role&#95;id&#44; menu&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_user' onclick='window.scrollTo(490, 90);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_user</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user.user_id'>user&#95;id</a></td>
-		<td> int  AUTOINCREMENT  </td>
-		<td> 用户ID </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.dept_id'>dept&#95;id</a></td>
-		<td> int   </td>
-		<td> 部门ID </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.login_name'>login&#95;name</a></td>
-		<td> varchar&#40; 30 &#41;   DEFAULT '' </td>
-		<td> 登录账号 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.user_name'>user&#95;name</a></td>
-		<td> varchar&#40; 30 &#41;   DEFAULT '' </td>
-		<td> 用户昵称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.email'>email</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 用户邮箱 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.phonenumber'>phonenumber</a></td>
-		<td> varchar&#40; 20 &#41;   DEFAULT '' </td>
-		<td> 手机号码 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.password'>password</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 密码 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.salt'>salt</a></td>
-		<td> varchar&#40; 100 &#41;   DEFAULT '' </td>
-		<td> 盐加密 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.user_type'>user&#95;type</a></td>
-		<td> char&#40; 1 &#41;   DEFAULT 'N' </td>
-		<td> 类型&#58;Y默认用户&#44;N非默认用户 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.status'>status</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 帐号状态&#58;0正常&#44;1禁用 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.refuse_des'>refuse&#95;des</a></td>
-		<td> varchar&#40; 500 &#41;   DEFAULT '' </td>
-		<td> 拒绝登录描述 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.create_by'>create&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 创建者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_user.create_time'>create&#95;time</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> 创建时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user.update_by'>update&#95;by</a></td>
-		<td> varchar&#40; 64 &#41;   DEFAULT '' </td>
-		<td> 更新者 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_user.update_time'>update&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> 更新时间 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;user</td>
-		<td> ON user&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_user_online' onclick='window.scrollTo(460, 420);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_user_online</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user_online.sessionId'>sessionId</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 用户会话id </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.login_name'>login&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 登录账号 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.dept_name'>dept&#95;name</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 部门名称 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.ipaddr'>ipaddr</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 登录IP地址 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.browser'>browser</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 浏览器类型 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.os'>os</a></td>
-		<td> varchar&#40; 50 &#41;   DEFAULT '' </td>
-		<td> 操作系统 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.status'>status</a></td>
-		<td> varchar&#40; 10 &#41;   DEFAULT '' </td>
-		<td> 在线状态on&#95;line在线off&#95;line离线 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_user_online.start_timestamp'>start&#95;timestsamp</a></td>
-		<td> timestamp   DEFAULT CURRENT_TIMESTAMP </td>
-		<td> session创建时间 </td>
-	</tr>
-	<tr>
-		<td>*</td>
-		<td><a name='sys_user_online.last_access_time'>last&#95;access&#95;time</a></td>
-		<td> timestamp   DEFAULT '0000-00-00 00:00:00' </td>
-		<td> session最后访问时间 </td>
-	</tr>
-	<tr>
-		<td>&nbsp;</td>
-		<td><a name='sys_user_online.expire_time'>expire&#95;time</a></td>
-		<td> int   DEFAULT 0 </td>
-		<td> 超时时间,单位为分钟 </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;user&#95;online</td>
-		<td> ON sessionId</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_user_post' onclick='window.scrollTo(655, 420);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_user_post</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user_post.user_id'>user&#95;id</a></td>
-		<td> varchar&#40; 64 &#41;   </td>
-		<td> 用户ID </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user_post.post_id'>post&#95;id</a></td>
-		<td> varchar&#40; 64 &#41;   </td>
-		<td> 岗位ID </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;user&#95;post</td>
-		<td> ON user&#95;id&#44; post&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<br/><br/>
-<div class='card'><div class='card-block'><a name='sys_user_role' onclick='window.scrollTo(655, 285);return false;' style='cursor:pointer;'><h4 class='card-title'>Table sys_user_role</h4></a>
-<table class='table-sm table-bordered'>
-<thead>
-<tr><th>Indexes</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead>
-<tbody>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user_role.user_id'>user&#95;id</a></td>
-		<td> int   </td>
-		<td> 用户ID </td>
-	</tr>
-	<tr>
-		<td>*<svg width='14' height='14'><use xlink:href='#pk'/></svg></td>
-		<td><a name='sys_user_role.role_id'>role&#95;id</a></td>
-		<td> int   </td>
-		<td> 角色ID </td>
-	</tr>
-<tr><th colspan='4'>Indexes</th></tr>
-	<tr>		<td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;sys&#95;user&#95;role</td>
-		<td> ON user&#95;id&#44; role&#95;id</td>
-		<td>  </td>
-	</tr>
-</tbody>
-</table></div></div>
-
-<p align='right'><a href='https://www.dbschema.com' style='color:#aaa'>Powered by DbSchema</a></p></body></html>
\ No newline at end of file
diff --git a/sql/ruoyi.pdm b/sql/ruoyi.pdm
deleted file mode 100644
index 78d8504..0000000
--- a/sql/ruoyi.pdm
+++ /dev/null
@@ -1,4851 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?PowerDesigner AppLocale="UTF16" ID="{21C20947-ED50-4632-B638-DC1A02BD948A}" Label="" LastModificationDate="1538297772" Name="ruoyi" Objects="216" Symbols="20" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="15.1.0.2850"?>
-<!-- do not edit this file -->
-
-<Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">
-
-<o:RootObject Id="o1">
-<c:Children>
-<o:Model Id="o2">
-<a:ObjectID>21C20947-ED50-4632-B638-DC1A02BD948A</a:ObjectID>
-<a:Name>ruoyi</a:Name>
-<a:Code>ruoyi</a:Code>
-<a:CreationDate>1524449337</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:PackageOptionsText>[FolderOptions]
-
-[FolderOptions\Physical Objects]
-GenerationCheckModel=Yes
-GenerationPath=
-GenerationOptions=
-GenerationTasks=
-GenerationTargets=
-GenerationSelections=
-RevPkey=Yes
-RevFkey=Yes
-RevAkey=Yes
-RevCheck=Yes
-RevIndx=Yes
-RevOpts=Yes
-RevViewAsTabl=No
-RevViewOpts=Yes
-RevSystAsTabl=Yes
-RevTablPerm=No
-RevViewPerm=No
-RevProcPerm=No
-RevDbpkPerm=No
-RevSqncPerm=No
-RevAdtPerm=No
-RevUserPriv=No
-RevUserOpts=No
-RevGrpePriv=No
-RevRolePriv=No
-RevDtbsOpts=Yes
-RevDtbsPerm=No
-RevViewIndx=Yes
-RevJidxOpts=Yes
-RevStats=No
-RevTspcPerm=No
-RevCaseSensitive=No
-GenTrgrStdMsg=Yes
-GenTrgrMsgTab=
-GenTrgrMsgNo=
-GenTrgrMsgTxt=
-TrgrPreserve=No
-TrgrIns=Yes
-TrgrUpd=Yes
-TrgrDel=Yes
-TrgrC2Ins=Yes
-TrgrC2Upd=Yes
-TrgrC3=Yes
-TrgrC4=Yes
-TrgrC5=Yes
-TrgrC6=Yes
-TrgrC7=Yes
-TrgrC8=Yes
-TrgrC9=Yes
-TrgrC10=Yes
-TrgrC11=Yes
-TrgrC1=Yes
-TrgrC12Ins=Yes
-TrgrC12Upd=Yes
-TrgrC13=Yes
-UpdateTableStatistics=Yes
-UpdateColumnStatistics=Yes
-
-[FolderOptions\Physical Objects\Database Generation]
-GenScriptName=orders.sql
-GenScriptName0=orders.sql
-GenScriptName1=studentsystem.sql
-GenScriptName2=NetCTOSS.sql
-GenScriptName3=product.sql
-GenScriptName4=voteSystem.sql
-GenScriptName5=.sql
-GenScriptName6=enterpriseManagement.sql
-GenScriptName7=crebas.sql
-GenScriptName8=
-GenScriptName9=
-GenPathName=C:\Users\Administrator\Desktop\
-GenSingleFile=Yes
-GenODBC=No
-GenCheckModel=Yes
-GenScriptPrev=Yes
-GenArchiveModel=No
-GenUseSync=No
-GenSyncChoice=0
-GenSyncArch=
-GenSyncRmg=0
-
-[FolderOptions\Physical Objects\Database Generation\Format]
-GenScriptTitle=Yes
-GenScriptNamLabl=No
-GenScriptQDtbs=No
-GenScriptQOwnr=Yes
-GenScriptCase=0
-GenScriptEncoding=ANSI
-GenScriptNAcct=No
-IdentifierDelimiter=&quot;
-
-[FolderOptions\Physical Objects\Database Generation\Database]
-Create=Yes
-Open=Yes
-Close=Yes
-Drop=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Database\Create]
-Physical Options=Yes
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Tablespace]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Tablespace\Create]
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Storage]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\User]
-Create=Yes
-Grant=Yes
-Drop=Yes
-Comment=Yes
-Privilege=No
-
-[FolderOptions\Physical Objects\Database Generation\User\Create]
-Physical Options=No
-
-[FolderOptions\Physical Objects\Database Generation\Group]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Privilege=No
-
-[FolderOptions\Physical Objects\Database Generation\Role]
-Create=Yes
-Drop=Yes
-Privilege=No
-
-[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType]
-Create=Yes
-Comment=Yes
-Drop=Yes
-
-[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType\Create]
-Default value=Yes
-Check=Yes
-
-[FolderOptions\Physical Objects\Database Generation\AbstractDataType]
-Create=Yes
-Header=Yes
-Footer=Yes
-Drop=Yes
-Comment=Yes
-Install JAVA class=Yes
-Remove JAVA class=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Rule]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Default]
-Create=Yes
-Comment=Yes
-Drop=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Sequence]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column]
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Table]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Table\Create]
-Check=Yes
-Physical Options=Yes
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Table\Create\Check]
-Constraint declaration=No
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Column]
-User datatype=No
-Default value=Yes
-Check=Yes
-Physical Options=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Column\Check]
-Constraint declaration=No
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Key]
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Key\Primary key]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Key\Primary key\Create]
-Constraint declaration=No
-Physical Options=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Key\Alternate key]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Key\Alternate key\Create]
-Constraint declaration=No
-Physical Options=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Foreign key]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Foreign key\Create]
-Constraint declaration=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Index]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Index\Create]
-Constraint declaration=Yes
-Physical Options=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Index\Filter]
-Primary key=No
-Foreign key=No
-Alternate key=No
-Cluster=Yes
-Other=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Trigger]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Trigger\Filter]
-For insert=Yes
-For update=Yes
-For delete=Yes
-For other=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\View\Create]
-Force Column list=No
-Physical Options=Yes
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\ViewColumn]
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\ViewIndex]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Create]
-Physical Options=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Filter]
-Cluster=Yes
-Other=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\Trigger]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\View\Trigger\Filter]
-For insert=Yes
-For update=Yes
-For delete=Yes
-For other=Yes
-
-[FolderOptions\Physical Objects\Database Generation\DBMSTrigger]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Synonym]
-Create=Yes
-Drop=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Synonym\Filter]
-Table=Yes
-View=Yes
-Proc=Yes
-Synonym=Yes
-Database Package=Yes
-Sequence=Yes
-
-[FolderOptions\Physical Objects\Database Generation\JoinIndex]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\JoinIndex\Create]
-Physical Options=Yes
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Procedure]
-Create=Yes
-Drop=Yes
-Comment=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\Procedure\Create]
-Header=Yes
-Footer=Yes
-
-[FolderOptions\Physical Objects\Database Generation\DatabasePackage]
-Create=Yes
-Drop=Yes
-Permission=No
-
-[FolderOptions\Physical Objects\Database Generation\WebService]
-Create=Yes
-Drop=Yes
-Comment=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Dimension]
-Create=Yes
-Drop=Yes
-
-[FolderOptions\Physical Objects\Database Generation\Synchronization]
-GenBackupTabl=1
-GenKeepBackTabl=1
-GenTmpTablDrop=No
-GenKeepTablOpts=No
-
-[FolderOptions\Physical Objects\Test Data]
-GenDataPathName=
-GenDataSinglefile=Yes
-GenDataScriptName=testdata
-GenDataScriptName0=
-GenDataScriptName1=
-GenDataScriptName2=
-GenDataScriptName3=
-GenDataScriptName4=
-GenDataScriptName5=
-GenDataScriptName6=
-GenDataScriptName7=
-GenDataScriptName8=
-GenDataScriptName9=
-GenDataOdbc=0
-GenDataDelOld=No
-GenDataTitle=No
-GenDataDefNumRows=20
-GenDataCommit=0
-GenDataPacket=0
-GenDataOwner=No
-GenDataProfNumb=
-GenDataProfChar=
-GenDataProfDate=
-GenDataCSVSeparator=,
-GenDataFileFormat=CSV
-GenDataUseWizard=No
-
-[FolderOptions\Pdm]
-IndxIQName=%COLUMN%_%INDEXTYPE%
-IndxPK=Yes
-IndxFK=Yes
-IndxAK=Yes
-IndxPKName=%TABLE%_PK
-IndxFKName=%REFR%_FK
-IndxAKName=%AKEY%_AK
-IndxPreserve=No
-IndxThreshold=0
-IndxStats=No
-RefrPreserve=No
-JidxPreserve=No
-RbldMultiFact=Yes
-RbldMultiDim=Yes
-RbldMultiJidx=Yes
-CubePreserve=No
-TablStProcPreserve=No
-ProcDepPreserve=Yes
-TrgrDepPreserve=Yes
-CubeScriptPath=
-CubeScriptCase=0
-CubeScriptEncoding=ANSI
-CubeScriptNacct=No
-CubeScriptHeader=No
-CubeScriptExt=csv
-CubeScriptExt0=txt
-CubeScriptExt1=
-CubeScriptExt2=
-CubeScriptSep=,
-CubeScriptDeli=&quot;
-DfltDomnName=D_%.U:VALUE%
-DfltColnName=D_%.U:VALUE%
-DfltReuse=Yes
-DfltDrop=Yes</a:PackageOptionsText>
-<a:ModelOptionsText>[ModelOptions]
-
-[ModelOptions\Physical Objects]
-CaseSensitive=No
-DisplayName=Yes
-EnableTrans=No
-EnableRequirements=No
-DefaultDttp=
-IgnoreOwner=No
-RebuildTrigger=Yes
-RefrUnique=No
-RefrAutoMigrate=Yes
-RefrMigrateReuse=Yes
-RefrMigrateDomain=Yes
-RefrMigrateCheck=Yes
-RefrMigrateRule=Yes
-RefrMigrateExtd=No
-RefrMigrDefaultLink=No
-RefrDfltImpl=D
-RefrPrgtColn=No
-RefrMigrateToEnd=No
-RebuildTriggerDep=No
-ColnFKName=%.3:PARENT%_%COLUMN%
-ColnFKNameUse=No
-DomnCopyDttp=Yes
-DomnCopyChck=No
-DomnCopyRule=No
-DomnCopyMand=No
-DomnCopyExtd=No
-DomnCopyProf=No
-Notation=0
-DomnDefaultMandatory=No
-ColnDefaultMandatory=No
-TablDefaultOwner=
-ViewDefaultOwner=
-TrgrDefaultOwnerTabl=
-TrgrDefaultOwnerView=
-IdxDefaultOwnerTabl=
-IdxDefaultOwnerView=
-JdxDefaultOwner=
-DBPackDefaultOwner=
-SeqDefaultOwner=
-ProcDefaultOwner=
-DBMSTrgrDefaultOwner=
-Currency=USD
-RefrDeleteConstraint=1
-RefrUpdateConstraint=1
-RefrParentMandatory=No
-RefrParentChangeAllow=Yes
-RefrCheckOnCommit=No
-
-[ModelOptions\Physical Objects\NamingOptionsTemplates]
-
-[ModelOptions\Physical Objects\ClssNamingOptions]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\TABL]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Code]
-Template=
-MaxLen=64
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\COLN]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Code]
-Template=
-MaxLen=64
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\INDX]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\REFR]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VREF]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEW]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Code]
-Template=
-MaxLen=64
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=&#39;a&#39;-&#39;z&#39;,&#39;A&#39;-&#39;Z&#39;,&#39;0&#39;-&#39;9&#39;,&quot;/-_.!~*&#39;()&quot;
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=&#39;a&#39;-&#39;z&#39;,&#39;A&#39;-&#39;Z&#39;,&#39;0&#39;-&#39;9&#39;,&quot;/-_.!~*&#39;()&quot;
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FACT]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DIMN]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\CUBE]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\MEAS]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DATTR]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FILO]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass]
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Name]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Code]
-Template=
-MaxLen=254
-Case=M
-ValidChar=
-InvldChar=
-AllValid=Yes
-NoAccent=No
-DefaultChar=
-Script=
-ConvTable=
-ConvTablePath=%_HOME%\Resource Files\Conversion Tables
-
-[ModelOptions\Connection]
-
-[ModelOptions\Pdm]
-
-[ModelOptions\Generate]
-
-[ModelOptions\Generate\Pdm]
-RRMapping=No
-
-[ModelOptions\Generate\Cdm]
-CheckModel=Yes
-SaveLinks=Yes
-NameToCode=No
-Notation=2
-
-[ModelOptions\Generate\Oom]
-CheckModel=Yes
-SaveLinks=Yes
-ORMapping=No
-NameToCode=Yes
-ClassPrefix=
-
-[ModelOptions\Generate\Xsm]
-CheckModel=Yes
-SaveLinks=Yes
-ORMapping=No
-NameToCode=No
-
-[ModelOptions\Generate\Ldm]
-CheckModel=Yes
-SaveLinks=Yes
-NameToCode=No
-
-[ModelOptions\Default Opts]
-
-[ModelOptions\Default Opts\TABL]
-PhysOpts=
-
-[ModelOptions\Default Opts\COLN]
-PhysOpts=
-
-[ModelOptions\Default Opts\INDX]
-PhysOpts=
-
-[ModelOptions\Default Opts\AKEY]
-PhysOpts=
-
-[ModelOptions\Default Opts\PKEY]
-PhysOpts=
-
-[ModelOptions\Default Opts\STOR]
-PhysOpts=
-
-[ModelOptions\Default Opts\TSPC]
-PhysOpts=
-
-[ModelOptions\Default Opts\SQNC]
-PhysOpts=
-
-[ModelOptions\Default Opts\DTBS]
-PhysOpts=
-
-[ModelOptions\Default Opts\USER]
-PhysOpts=
-
-[ModelOptions\Default Opts\JIDX]
-PhysOpts=</a:ModelOptionsText>
-<c:DBMS>
-<o:Shortcut Id="o3">
-<a:ObjectID>AFAD9ECF-F417-4FCE-BEA4-884857D4C1A9</a:ObjectID>
-<a:Name>MySQL 5.0</a:Name>
-<a:Code>MYSQL50</a:Code>
-<a:CreationDate>1524449337</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449337</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:TargetStereotype/>
-<a:TargetID>F4F16ECD-F2F1-4006-AF6F-638D5C65F35E</a:TargetID>
-<a:TargetClassID>4BA9F647-DAB1-11D1-9944-006097355D9B</a:TargetClassID>
-</o:Shortcut>
-</c:DBMS>
-<c:PhysicalDiagrams>
-<o:PhysicalDiagram Id="o4">
-<a:ObjectID>B6C2C4A4-6A8A-41F3-909D-C7B514E1EAE2</a:ObjectID>
-<a:Name>PhysicalDiagram_1</a:Name>
-<a:Code>PhysicalDiagram_1</a:Code>
-<a:CreationDate>1524449325</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297386</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DisplayPreferences>[DisplayPreferences]
-
-[DisplayPreferences\PDM]
-
-[DisplayPreferences\General]
-Adjust to text=Yes
-Snap Grid=No
-Constrain Labels=Yes
-Display Grid=No
-Show Page Delimiter=Yes
-Grid size=0
-Graphic unit=2
-Window color=255, 255, 255
-Background image=
-Background mode=8
-Watermark image=
-Watermark mode=8
-Show watermark on screen=No
-Gradient mode=0
-Gradient end color=255, 255, 255
-Show Swimlane=No
-SwimlaneVert=Yes
-TreeVert=No
-CompDark=0
-
-[DisplayPreferences\Object]
-Mode=0
-Trunc Length=80
-Word Length=80
-Word Text=!&quot;&quot;#$%&amp;&#39;()*+,-./:;&lt;=&gt;?@[\]^_`{|}~
-Shortcut IntIcon=Yes
-Shortcut IntLoct=Yes
-Shortcut IntFullPath=No
-Shortcut IntLastPackage=Yes
-Shortcut ExtIcon=Yes
-Shortcut ExtLoct=No
-Shortcut ExtFullPath=No
-Shortcut ExtLastPackage=Yes
-Shortcut ExtIncludeModl=Yes
-EObjShowStrn=Yes
-ExtendedObject.Comment=No
-ExtendedObject.IconPicture=No
-ExtendedObject_SymbolLayout=&lt;Form&gt;[CRLF] &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Object Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF] &lt;Separator Name=&quot;Separator&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Comment&quot; Attribute=&quot;Comment&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;LEFT&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Icon&quot; Attribute=&quot;IconPicture&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF]&lt;/Form&gt;
-ELnkShowStrn=Yes
-ELnkShowName=Yes
-ExtendedLink_SymbolLayout=&lt;Form&gt;[CRLF] &lt;Form Name=&quot;Center&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Source&quot; &gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Destination&quot; &gt;[CRLF] &lt;/Form&gt;[CRLF]&lt;/Form&gt;
-FileObject.Stereotype=No
-FileObject.DisplayName=Yes
-FileObject.LocationOrName=No
-FileObject.IconPicture=No
-FileObject.IconMode=Yes
-FileObject_SymbolLayout=&lt;Form&gt;[CRLF] &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;Yes&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Location&quot; Attribute=&quot;LocationOrName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/ExclusiveChoice&gt;[CRLF] &lt;StandardAttribute Name=&quot;Icon&quot; Attribute=&quot;IconPicture&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF]&lt;/Form&gt;
-PckgShowStrn=Yes
-Package.Comment=No
-Package.IconPicture=No
-Package_SymbolLayout=
-Display Model Version=Yes
-Table.Stereotype=Yes
-Table.DisplayName=Yes
-Table.OwnerDisplayName=No
-Table.Columns=Yes
-Table.Columns._Filter=&quot;&quot;PDMCOLNALL
-Table.Columns._Columns=Stereotype DataType KeyIndicator
-Table.Columns._Limit=-5
-Table.Keys=No
-Table.Keys._Columns=Stereotype Indicator
-Table.Indexes=No
-Table.Indexes._Columns=Stereotype
-Table.Triggers=No
-Table.Triggers._Columns=Stereotype
-Table.Comment=No
-Table.IconPicture=No
-Table_SymbolLayout=&lt;Form&gt;[CRLF] &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;Yes&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Owner and Name&quot; Attribute=&quot;OwnerDisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/ExclusiveChoice&gt;[CRLF] &lt;Separator Name=&quot;Separator&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Columns&quot; Collection=&quot;Columns&quot; Columns=&quot;Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No &amp;quot;Domain or Data type&amp;quot;\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No&quot; Filters=&quot;&amp;quot;All Columns&amp;quot;  PDMCOLNALL &amp;quot;&amp;quot;\r\n&amp;quot;PK Columns&amp;quot;  PDMCOLNPK &amp;quot;PRIM \&amp;quot;TRUE\&amp;quot; TRUE&amp;quot;\r\n&amp;quot;Key Columns&amp;quot;  PDMCOLNKEY &amp;quot;KEYS \&amp;quot;TRUE\&amp;quot; TRUE&amp;quot;&quot; HasLimit=&quot;Yes&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Keys&quot; Collection=&quot;Keys&quot; Columns=&quot;Stereotype No\r\nDisplayName Yes\r\nIndicator No&quot; HasLimit=&quot;No&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Indexes&quot; Collection=&quot;Indexes&quot; Columns=&quot;Stereotype No\r\nDisplayName Yes\r\nIndicator No&quot; HasLimit=&quot;No&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Triggers&quot; Collection=&quot;Triggers&quot; Columns=&quot;Stereotype No\r\nDisplayName Yes&quot; HasLimit=&quot;No&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Comment&quot; Attribute=&quot;Comment&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;LEFT&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Icon&quot; Attribute=&quot;IconPicture&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF]&lt;/Form&gt;
-View.Stereotype=Yes
-View.DisplayName=Yes
-View.OwnerDisplayName=No
-View.Columns=Yes
-View.Columns._Columns=DisplayName
-View.Columns._Limit=-5
-View.TemporaryVTables=Yes
-View.Indexes=No
-View.Comment=No
-View.IconPicture=No
-View_SymbolLayout=&lt;Form&gt;[CRLF] &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;Yes&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Owner and Name&quot; Attribute=&quot;OwnerDisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/ExclusiveChoice&gt;[CRLF] &lt;Separator Name=&quot;Separator&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Columns&quot; Collection=&quot;Columns&quot; Columns=&quot;DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No &amp;quot;Domain or Data type&amp;quot;\r\nIndexIndicator No&quot; HasLimit=&quot;Yes&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Tables&quot; Collection=&quot;TemporaryVTables&quot; Columns=&quot;Name Yes&quot; HasLimit=&quot;No&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardCollection Name=&quot;Indexes&quot; Collection=&quot;Indexes&quot; Columns=&quot;DisplayName Yes&quot; HasLimit=&quot;No&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Comment&quot; Attribute=&quot;Comment&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;LEFT&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Icon&quot; Attribute=&quot;IconPicture&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF]&lt;/Form&gt;
-Procedure.Stereotype=No
-Procedure.DisplayName=Yes
-Procedure.OwnerDisplayName=No
-Procedure.Comment=No
-Procedure.IconPicture=No
-Procedure_SymbolLayout=&lt;Form&gt;[CRLF] &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;Yes&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Owner and Name&quot; Attribute=&quot;OwnerDisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/ExclusiveChoice&gt;[CRLF] &lt;Separator Name=&quot;Separator&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Comment&quot; Attribute=&quot;Comment&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;LEFT&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;StandardAttribute Name=&quot;Icon&quot; Attribute=&quot;IconPicture&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Alignment=&quot;CNTR&quot; Caption=&quot;&quot; Mandatory=&quot;Yes&quot; /&gt;[CRLF]&lt;/Form&gt;
-Reference.Cardinality=No
-Reference.ImplementationType=No
-Reference.ChildRole=Yes
-Reference.Stereotype=Yes
-Reference.DisplayName=No
-Reference.ForeignKeyConstraintName=Yes
-Reference.JoinExpression=No
-Reference.Integrity=No
-Reference.ParentRole=Yes
-Reference_SymbolLayout=&lt;Form&gt;[CRLF] &lt;Form Name=&quot;Source&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Cardinality&quot; Attribute=&quot;Cardinality&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Implementation&quot; Attribute=&quot;ImplementationType&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Child Role&quot; Attribute=&quot;ChildRole&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Center&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;No&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]   &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]   &lt;StandardAttribute Name=&quot;Cons&amp;amp;traint Name&quot; Attribute=&quot;ForeignKeyConstraintName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;Cons&amp;amp;traint Name&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]   &lt;StandardAttribute Name=&quot;Join&quot; Attribute=&quot;JoinExpression&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;Join&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;/ExclusiveChoice&gt;[CRLF]  &lt;StandardAttribute Name=&quot;Referential integrity&quot; Attribute=&quot;Integrity&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;Referential integrity&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Destination&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Parent Role&quot; Attribute=&quot;ParentRole&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF]&lt;/Form&gt;
-ViewReference.ChildRole=Yes
-ViewReference.Stereotype=Yes
-ViewReference.DisplayName=No
-ViewReference.JoinExpression=No
-ViewReference.ParentRole=Yes
-ViewReference_SymbolLayout=&lt;Form&gt;[CRLF] &lt;Form Name=&quot;Source&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Child Role&quot; Attribute=&quot;ChildRole&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Center&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Stereotype&quot; Attribute=&quot;Stereotype&quot; Prefix=&quot;&amp;lt;&amp;lt;&quot; Suffix=&quot;&amp;gt;&amp;gt;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;ExclusiveChoice Name=&quot;Exclusive Choice&quot; Mandatory=&quot;No&quot; Display=&quot;HorizontalRadios&quot; &gt;[CRLF]   &lt;StandardAttribute Name=&quot;Name&quot; Attribute=&quot;DisplayName&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]   &lt;StandardAttribute Name=&quot;Join Expression&quot; Attribute=&quot;JoinExpression&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF]  &lt;/ExclusiveChoice&gt;[CRLF] &lt;/Form&gt;[CRLF] &lt;Form Name=&quot;Destination&quot; &gt;[CRLF]  &lt;StandardAttribute Name=&quot;Parent Role&quot; Attribute=&quot;ParentRole&quot; Prefix=&quot;&quot; Suffix=&quot;&quot; Caption=&quot;&quot; Mandatory=&quot;No&quot; /&gt;[CRLF] &lt;/Form&gt;[CRLF]&lt;/Form&gt;
-File Location=No
-PckgStrn=Yes
-ColnMode=0
-ColnMax=5
-TablOwnr=No
-ColnDttp=Yes
-ColnDomn=No
-ColnShowDomn=No
-ColnKey=Yes
-ColnIndx=No
-ColnMand=No
-ColnStrn=Yes
-VColName=Yes
-VColExpr=No
-VColDttp=No
-VColIndx=No
-VColCMod=0
-VColCMax=5
-ProcOwnr=No
-KeyStrn=Yes
-IndxStrn=Yes
-TrgrStrn=Yes
-
-[DisplayPreferences\Symbol]
-
-[DisplayPreferences\Symbol\FRMEOBJ]
-STRNFont=新宋体,8,N
-STRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-LABLFont=新宋体,8,N
-LABLFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Width=6000
-Height=2000
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=6
-Brush bitmap mode=12
-Brush gradient mode=64
-Brush gradient color=192 192 192
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 255 128 128
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\FRMELNK]
-CENTERFont=新宋体,8,N
-CENTERFont color=0, 0, 0
-Line style=0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 128 128 255
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\FILO]
-OBJSTRNFont=新宋体,8,N
-OBJSTRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-LCNMFont=新宋体,8,N
-LCNMFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=Yes
-Keep center=Yes
-Keep size=No
-Width=2400
-Height=2400
-Brush color=255 255 255
-Fill Color=No
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 0 0 255
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\PDMPCKG]
-STRNFont=新宋体,8,N
-STRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-LABLFont=新宋体,8,N
-LABLFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Width=4800
-Height=3600
-Brush color=255 255 192
-Fill Color=Yes
-Brush style=6
-Brush bitmap mode=12
-Brush gradient mode=65
-Brush gradient color=255 255 255
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 178 178 178
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\TABL]
-STRNFont=新宋体,8,N
-STRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-OWNRDISPNAMEFont=新宋体,8,N
-OWNRDISPNAMEFont color=0, 0, 0
-ColumnsFont=新宋体,8,N
-ColumnsFont color=0, 0, 0
-TablePkColumnsFont=新宋体,8,U
-TablePkColumnsFont color=0, 0, 0
-TableFkColumnsFont=新宋体,8,N
-TableFkColumnsFont color=0, 0, 0
-KeysFont=新宋体,8,N
-KeysFont color=0, 0, 0
-IndexesFont=新宋体,8,N
-IndexesFont color=0, 0, 0
-TriggersFont=新宋体,8,N
-TriggersFont color=0, 0, 0
-LABLFont=新宋体,8,N
-LABLFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Width=4800
-Height=4000
-Brush color=178 214 252
-Fill Color=Yes
-Brush style=6
-Brush bitmap mode=12
-Brush gradient mode=65
-Brush gradient color=255 255 255
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 0 128 192
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\VIEW]
-STRNFont=新宋体,8,N
-STRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-OWNRDISPNAMEFont=新宋体,8,N
-OWNRDISPNAMEFont color=0, 0, 0
-ColumnsFont=新宋体,8,N
-ColumnsFont color=0, 0, 0
-TablePkColumnsFont=新宋体,8,U
-TablePkColumnsFont color=0, 0, 0
-TableFkColumnsFont=新宋体,8,N
-TableFkColumnsFont color=0, 0, 0
-TemporaryVTablesFont=新宋体,8,N
-TemporaryVTablesFont color=0, 0, 0
-IndexesFont=新宋体,8,N
-IndexesFont color=0, 0, 0
-LABLFont=新宋体,8,N
-LABLFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Width=4800
-Height=4000
-Brush color=208 208 255
-Fill Color=Yes
-Brush style=6
-Brush bitmap mode=12
-Brush gradient mode=65
-Brush gradient color=255 255 255
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 128 128 192
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\PROC]
-STRNFont=新宋体,8,N
-STRNFont color=0, 0, 0
-DISPNAMEFont=新宋体,8,N
-DISPNAMEFont color=0, 0, 0
-OWNRDISPNAMEFont=新宋体,8,N
-OWNRDISPNAMEFont color=0, 0, 0
-LABLFont=新宋体,8,N
-LABLFont color=0, 0, 0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Width=4000
-Height=1000
-Brush color=255 255 192
-Fill Color=Yes
-Brush style=6
-Brush bitmap mode=12
-Brush gradient mode=65
-Brush gradient color=255 255 255
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 128 108 0
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\REFR]
-SOURCEFont=新宋体,8,N
-SOURCEFont color=0, 0, 0
-CENTERFont=新宋体,8,N
-CENTERFont color=0, 0, 0
-DESTINATIONFont=新宋体,8,N
-DESTINATIONFont color=0, 0, 0
-Line style=0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 0 128 192
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\VREF]
-SOURCEFont=新宋体,8,N
-SOURCEFont color=0, 0, 0
-CENTERFont=新宋体,8,N
-CENTERFont color=0, 0, 0
-DESTINATIONFont=新宋体,8,N
-DESTINATIONFont color=0, 0, 0
-Line style=0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 128 128 192
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\USRDEPD]
-OBJXSTRFont=新宋体,8,N
-OBJXSTRFont color=0, 0, 0
-Line style=0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=2 0 128 128 255
-Shadow color=192 192 192
-Shadow=0
-
-[DisplayPreferences\Symbol\Free Symbol]
-Free TextFont=新宋体,8,N
-Free TextFont color=0, 0, 0
-Line style=0
-AutoAdjustToText=Yes
-Keep aspect=No
-Keep center=No
-Keep size=No
-Brush color=255 255 255
-Fill Color=Yes
-Brush style=1
-Brush bitmap mode=12
-Brush gradient mode=0
-Brush gradient color=118 118 118
-Brush background image=
-Custom shape=
-Custom text mode=0
-Pen=1 0 0 0 255
-Shadow color=192 192 192
-Shadow=0</a:DisplayPreferences>
-<a:PaperSize>(8268, 11693)</a:PaperSize>
-<a:PageMargins>((315,354), (433,354))</a:PageMargins>
-<a:PageOrientation>1</a:PageOrientation>
-<a:PaperSource>15</a:PaperSource>
-<c:Symbols>
-<o:TableSymbol Id="o5">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296407</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-38123,15297), (-26435,28269))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o6"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o7">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1524449886</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-23935,12010), (-11861,28282))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o8"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o9">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296409</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-9361,18172), (2713,27845))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o10"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o11">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1524449886</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((5214,16547), (17288,27869))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o12"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o13">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296412</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((19788,14872), (31862,27845))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o14"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o15">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296204</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-37598,8498), (-29000,12497))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o16"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o17">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296205</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-37674,3548), (-29076,7547))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o18"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o19">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296308</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-37528,-6452), (-28929,-2453))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o20"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o21">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296401</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-24280,-1775), (-11048,10373))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o22"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o23">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296599</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-9182,625), (2892,10298))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o24"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o25">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538296612</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((5017,-2538), (17091,10434))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o26"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o27">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538297772</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-39520,-17440), (-26288,-8592))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o28"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o29">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538297770</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-24744,-19106), (-10738,-8608))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o30"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o31">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538297380</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-9749,-20696), (3870,-8548))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o32"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o33">
-<a:CreationDate>1524449375</a:CreationDate>
-<a:ModificationDate>1538297383</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((5261,-17623), (18494,-8774))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o34"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o35">
-<a:CreationDate>1538296083</a:CreationDate>
-<a:ModificationDate>1538296211</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((-37675,-1349), (-29076,2650))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o36"/>
-</c:Object>
-</o:TableSymbol>
-<o:TableSymbol Id="o37">
-<a:CreationDate>1538296587</a:CreationDate>
-<a:ModificationDate>1538296608</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((19570,-987), (32030,8687))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o38"/>
-</c:Object>
-</o:TableSymbol>
-<o:TextSymbol Id="o39">
-<a:Text>config_id</a:Text>
-<a:CreationDate>1538296632</a:CreationDate>
-<a:ModificationDate>1538297253</a:ModificationDate>
-<a:Rect>((-13950,-17175), (73200,19575))</a:Rect>
-<a:TextStyle>4130</a:TextStyle>
-<a:BaseSymbol.Flags>1</a:BaseSymbol.Flags>
-<a:LineColor>0</a:LineColor>
-<a:DashStyle>7</a:DashStyle>
-<a:FillColor>16777215</a:FillColor>
-<a:ShadowColor>16777215</a:ShadowColor>
-<a:FontName>新宋体,8,N</a:FontName>
-</o:TextSymbol>
-<o:TableSymbol Id="o40">
-<a:CreationDate>1538297386</a:CreationDate>
-<a:ModificationDate>1538297498</a:ModificationDate>
-<a:IconMode>-1</a:IconMode>
-<a:Rect>((19859,-18262), (33092,-8589))</a:Rect>
-<a:LineColor>12615680</a:LineColor>
-<a:FillColor>16570034</a:FillColor>
-<a:ShadowColor>12632256</a:ShadowColor>
-<a:FontList>STRN 0 新宋体,8,N
-DISPNAME 0 新宋体,8,N
-OWNRDISPNAME 0 新宋体,8,N
-Columns 0 新宋体,8,N
-TablePkColumns 0 新宋体,8,U
-TableFkColumns 0 新宋体,8,N
-Keys 0 新宋体,8,N
-Indexes 0 新宋体,8,N
-Triggers 0 新宋体,8,N
-LABL 0 新宋体,8,N</a:FontList>
-<a:BrushStyle>6</a:BrushStyle>
-<a:GradientFillMode>65</a:GradientFillMode>
-<a:GradientEndColor>16777215</a:GradientEndColor>
-<c:Object>
-<o:Table Ref="o41"/>
-</c:Object>
-</o:TableSymbol>
-</c:Symbols>
-</o:PhysicalDiagram>
-</c:PhysicalDiagrams>
-<c:DefaultDiagram>
-<o:PhysicalDiagram Ref="o4"/>
-</c:DefaultDiagram>
-<c:Tables>
-<o:Table Id="o6">
-<a:ObjectID>BB11FFF9-9DBB-4648-87AA-9A50E1214549</a:ObjectID>
-<a:Name>sys_dept</a:Name>
-<a:Code>sys_dept</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297518</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>部门表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o42">
-<a:ObjectID>00C66282-419A-4915-8509-DFFFE6352DE8</a:ObjectID>
-<a:Name>dept_id</a:Name>
-<a:Code>dept_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>部门id</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o43">
-<a:ObjectID>5B6FB0B1-5B1E-4E86-AF2A-72C49EBB315E</a:ObjectID>
-<a:Name>parent_id</a:Name>
-<a:Code>parent_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>父部门id</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-</o:Column>
-<o:Column Id="o44">
-<a:ObjectID>065E33A5-6AB5-44F1-8FEC-A72311EECD66</a:ObjectID>
-<a:Name>ancestors</a:Name>
-<a:Code>ancestors</a:Code>
-<a:CreationDate>1538295690</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538295792</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o45">
-<a:ObjectID>EBB59EC8-AFD4-40E3-B811-DD5040728D91</a:ObjectID>
-<a:Name>dept_name</a:Name>
-<a:Code>dept_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>部门名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(30)</a:DataType>
-<a:Length>30</a:Length>
-</o:Column>
-<o:Column Id="o46">
-<a:ObjectID>2F26C025-82B0-4AC5-AEE0-32BA07B7B529</a:ObjectID>
-<a:Name>order_num</a:Name>
-<a:Code>order_num</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>显示顺序</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(4)</a:DataType>
-<a:Length>4</a:Length>
-</o:Column>
-<o:Column Id="o47">
-<a:ObjectID>CA504E09-528C-482E-A0C7-F86C559AA3A6</a:ObjectID>
-<a:Name>leader</a:Name>
-<a:Code>leader</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>负责人</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(20)</a:DataType>
-<a:Length>20</a:Length>
-</o:Column>
-<o:Column Id="o48">
-<a:ObjectID>9CFC55C4-DF2B-4A90-A789-C3839FAA43A8</a:ObjectID>
-<a:Name>phone</a:Name>
-<a:Code>phone</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>联系电话</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(20)</a:DataType>
-<a:Length>20</a:Length>
-</o:Column>
-<o:Column Id="o49">
-<a:ObjectID>1A9407E5-D74E-4CE9-9078-C4EC25393F7B</a:ObjectID>
-<a:Name>email</a:Name>
-<a:Code>email</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>邮箱</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(20)</a:DataType>
-<a:Length>20</a:Length>
-</o:Column>
-<o:Column Id="o50">
-<a:ObjectID>B6772812-4B69-4248-871D-FA1B4BA0E5F7</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538295792</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>部门状态:0正常,1停用</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o51">
-<a:ObjectID>6EBD2BFF-861E-4247-BAAB-B37CCBAF6F8D</a:ObjectID>
-<a:Name>del_flag</a:Name>
-<a:Code>del_flag</a:Code>
-<a:CreationDate>1538295690</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538295792</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o52">
-<a:ObjectID>2504A090-F6D6-493F-855E-5154E01AF0CA</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o53">
-<a:ObjectID>D866AE9E-E7FF-47B2-BF3D-9BC1605A2F39</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o54">
-<a:ObjectID>7C6C9836-FC23-4492-8CF1-A4439E01B57C</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o55">
-<a:ObjectID>FCED770D-005C-4531-A9D7-D1FD0A054719</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o56">
-<a:ObjectID>15C1774B-9F17-48B6-A61F-728A25220B30</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o42"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o56"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o8">
-<a:ObjectID>AA56FD91-4450-4282-8F31-AE302DF6AFEC</a:ObjectID>
-<a:Name>sys_user</a:Name>
-<a:Code>sys_user</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297540</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>用户信息表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o57">
-<a:ObjectID>4A920BCE-4040-4F12-89D2-7DF345B90321</a:ObjectID>
-<a:Name>user_id</a:Name>
-<a:Code>user_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>用户ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o58">
-<a:ObjectID>174E10B2-4A4D-40FF-80B8-B4D285561E42</a:ObjectID>
-<a:Name>dept_id</a:Name>
-<a:Code>dept_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297552</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>部门ID</a:Comment>
-<a:DefaultValue>NULL</a:DefaultValue>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-</o:Column>
-<o:Column Id="o59">
-<a:ObjectID>1D4908A9-5416-4252-BA09-FA122D0194C3</a:ObjectID>
-<a:Name>login_name</a:Name>
-<a:Code>login_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录账号</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(30)</a:DataType>
-<a:Length>30</a:Length>
-</o:Column>
-<o:Column Id="o60">
-<a:ObjectID>2EF63346-9E82-4746-81B7-AB67D727446D</a:ObjectID>
-<a:Name>user_name</a:Name>
-<a:Code>user_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>用户昵称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(30)</a:DataType>
-<a:Length>30</a:Length>
-</o:Column>
-<o:Column Id="o61">
-<a:ObjectID>477EA57C-0E0B-4596-9A85-EC91E72F5160</a:ObjectID>
-<a:Name>user_type</a:Name>
-<a:Code>user_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>类型:Y默认用户,N非默认用户</a:Comment>
-<a:DefaultValue>N</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o62">
-<a:ObjectID>CD16FFF4-F214-473B-A9A8-FA30A3E357D1</a:ObjectID>
-<a:Name>email</a:Name>
-<a:Code>email</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>用户邮箱</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o63">
-<a:ObjectID>61603FA5-3EBC-4389-AED7-1B54D238A563</a:ObjectID>
-<a:Name>phonenumber</a:Name>
-<a:Code>phonenumber</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>手机号码</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(20)</a:DataType>
-<a:Length>20</a:Length>
-</o:Column>
-<o:Column Id="o64">
-<a:ObjectID>65E9DE55-ED58-4BD9-B96C-7C081D1119B2</a:ObjectID>
-<a:Name>sex</a:Name>
-<a:Code>sex</a:Code>
-<a:CreationDate>1538295815</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538295948</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o65">
-<a:ObjectID>E5E35061-221A-4BB9-AA22-3CF20F1FCCF6</a:ObjectID>
-<a:Name>avatar</a:Name>
-<a:Code>avatar</a:Code>
-<a:CreationDate>1538295815</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538295948</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o66">
-<a:ObjectID>4ED1C2BF-B826-4A82-9464-EEBF271F4054</a:ObjectID>
-<a:Name>password</a:Name>
-<a:Code>password</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>密码</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o67">
-<a:ObjectID>53E6BB49-3435-46E0-832F-BCAFE1A021CB</a:ObjectID>
-<a:Name>salt</a:Name>
-<a:Code>salt</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>盐加密</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o68">
-<a:ObjectID>245CAD53-B33B-4EED-8CFA-7AA10ED943B8</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297540</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>帐号状态:0正常,1禁用</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o69">
-<a:ObjectID>7F851464-6CC5-445B-9413-2A89B9CE90CB</a:ObjectID>
-<a:Name>del_flag</a:Name>
-<a:Code>del_flag</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538295948</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>拒绝登录描述</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o70">
-<a:ObjectID>3DC8EC79-D75A-4BF8-8FBC-152E938AC14F</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o71">
-<a:ObjectID>48C8C936-7A34-4A97-AACA-A6F07751FFAD</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o72">
-<a:ObjectID>6050B4F3-9B26-4B40-AB4C-BA483F179958</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o73">
-<a:ObjectID>CD1E7E11-8EB6-4C9C-A69C-39CBCF10573E</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o74">
-<a:ObjectID>F9F55D4C-13E6-49A0-BFDB-E0AFE0FA5501</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1538295815</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538295948</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o75">
-<a:ObjectID>2E35FD67-A7A7-4B10-85E4-85115AD0E143</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o57"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o75"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o10">
-<a:ObjectID>2711A520-532C-4F14-A034-BFF047C9CD6B</a:ObjectID>
-<a:Name>sys_post</a:Name>
-<a:Code>sys_post</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297571</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>岗位信息表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o76">
-<a:ObjectID>FB04D29E-41F0-49A3-BFDB-58E222843F21</a:ObjectID>
-<a:Name>post_id</a:Name>
-<a:Code>post_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>岗位ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o77">
-<a:ObjectID>50010C4E-4F59-47B9-8F08-05E8E071E8B1</a:ObjectID>
-<a:Name>post_code</a:Name>
-<a:Code>post_code</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>岗位编码</a:Comment>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o78">
-<a:ObjectID>0F929250-051E-4344-B22A-C30E071A543B</a:ObjectID>
-<a:Name>post_name</a:Name>
-<a:Code>post_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>岗位名称</a:Comment>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o79">
-<a:ObjectID>2BC9005E-350F-46BE-98D6-9B13060F1B20</a:ObjectID>
-<a:Name>post_sort</a:Name>
-<a:Code>post_sort</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>显示顺序</a:Comment>
-<a:DataType>int(4)</a:DataType>
-<a:Length>4</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o80">
-<a:ObjectID>F6D7AD3E-5EA0-4759-B6BF-6334B7105B78</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297565</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>状态(0正常 1停用)</a:Comment>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o81">
-<a:ObjectID>CED01369-5063-479D-A444-32936369A486</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o82">
-<a:ObjectID>A29528FF-A2B9-4149-B997-1B0204D42E40</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o83">
-<a:ObjectID>6026A05D-0C1E-497E-8EAF-FDB704BE6A52</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o84">
-<a:ObjectID>DF516F5F-CD82-4347-AC57-BDCB4E5DD75E</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o85">
-<a:ObjectID>539CEC34-49F0-49A0-9B7C-B84655FD2233</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o86">
-<a:ObjectID>14E893B1-D0BA-46A7-A905-F0FFA089B65A</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o76"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o86"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o12">
-<a:ObjectID>11337551-BA45-43CD-9148-92BE60E2F8F5</a:ObjectID>
-<a:Name>sys_role</a:Name>
-<a:Code>sys_role</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297608</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>角色信息表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o87">
-<a:ObjectID>A420E2C9-8FE3-452A-9047-C7BEACE8490C</a:ObjectID>
-<a:Name>role_id</a:Name>
-<a:Code>role_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>角色ID</a:Comment>
-<a:DataType>int(10)</a:DataType>
-<a:Length>10</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o88">
-<a:ObjectID>9342763D-5B89-4440-965B-2B55DB4ACD86</a:ObjectID>
-<a:Name>role_name</a:Name>
-<a:Code>role_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>角色名称</a:Comment>
-<a:DataType>varchar(30)</a:DataType>
-<a:Length>30</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o89">
-<a:ObjectID>54480009-0C7E-40F2-AA76-CD914A6D66C5</a:ObjectID>
-<a:Name>role_key</a:Name>
-<a:Code>role_key</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>角色权限字符串</a:Comment>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o90">
-<a:ObjectID>E73F4D0E-12A0-42B5-B3CE-B573D499DD6C</a:ObjectID>
-<a:Name>role_sort</a:Name>
-<a:Code>role_sort</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296031</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>显示顺序</a:Comment>
-<a:DataType>int(10)</a:DataType>
-<a:Length>10</a:Length>
-</o:Column>
-<o:Column Id="o91">
-<a:ObjectID>5F836F54-9EBD-4768-AA3C-F268F5FAFE8D</a:ObjectID>
-<a:Name>data_scope</a:Name>
-<a:Code>data_scope</a:Code>
-<a:CreationDate>1538295973</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296031</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o92">
-<a:ObjectID>424ED799-E4C1-44AD-A172-C2B3C405E9C5</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297608</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>角色状态:0正常,1禁用</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o93">
-<a:ObjectID>8E034C76-5966-4246-B81B-7B12F37D96A7</a:ObjectID>
-<a:Name>del_flag</a:Name>
-<a:Code>del_flag</a:Code>
-<a:CreationDate>1538295973</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296031</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o94">
-<a:ObjectID>214F6E1F-28B1-454B-ABF0-D1C43220129D</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o95">
-<a:ObjectID>1A6D5791-0353-4ABC-8BC2-921BB87A2E5A</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o96">
-<a:ObjectID>D6394880-A49C-4B83-B43A-5FDBAA918AA3</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o97">
-<a:ObjectID>34285DF5-8E36-452B-A3AA-9F4290C20F7E</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o98">
-<a:ObjectID>2FAB98F7-68A2-460B-8A20-5D5DA73F5103</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o99">
-<a:ObjectID>4342E67F-D33C-435F-9865-973E053B6075</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o87"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o99"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o14">
-<a:ObjectID>FBC2A590-443B-43C9-82D5-687B850C8B3D</a:ObjectID>
-<a:Name>sys_menu</a:Name>
-<a:Code>sys_menu</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297627</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>菜单权限表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o100">
-<a:ObjectID>BB061292-3B99-432E-9B96-5362AAD918B9</a:ObjectID>
-<a:Name>menu_id</a:Name>
-<a:Code>menu_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>菜单ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o101">
-<a:ObjectID>EA8422AB-37B1-4D60-A3C9-A4BF9039A9D4</a:ObjectID>
-<a:Name>menu_name</a:Name>
-<a:Code>menu_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>菜单名称</a:Comment>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o102">
-<a:ObjectID>E56E04A8-63F6-4271-92E3-974DC84DD536</a:ObjectID>
-<a:Name>parent_id</a:Name>
-<a:Code>parent_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>父菜单ID</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-</o:Column>
-<o:Column Id="o103">
-<a:ObjectID>1809914E-6B09-4CD2-8916-E603D6717557</a:ObjectID>
-<a:Name>order_num</a:Name>
-<a:Code>order_num</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>显示顺序</a:Comment>
-<a:DefaultValue>NULL</a:DefaultValue>
-<a:DataType>int(4)</a:DataType>
-<a:Length>4</a:Length>
-</o:Column>
-<o:Column Id="o104">
-<a:ObjectID>FCB44D46-3C21-40CB-B942-57823E52E5B1</a:ObjectID>
-<a:Name>url</a:Name>
-<a:Code>url</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>请求地址</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(200)</a:DataType>
-<a:Length>200</a:Length>
-</o:Column>
-<o:Column Id="o105">
-<a:ObjectID>667EE044-6805-4668-BAF4-E78B3052051F</a:ObjectID>
-<a:Name>menu_type</a:Name>
-<a:Code>menu_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>类型:M目录,C菜单,F按钮</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o106">
-<a:ObjectID>F7658083-BCAB-46F7-AF31-8A4B1D8749EF</a:ObjectID>
-<a:Name>visible</a:Name>
-<a:Code>visible</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297627</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>菜单状态:0显示,1隐藏</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o107">
-<a:ObjectID>528611C8-C319-430F-8F00-68FBA60F310B</a:ObjectID>
-<a:Name>perms</a:Name>
-<a:Code>perms</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>权限标识</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o108">
-<a:ObjectID>38004CD7-8DD0-43F1-9E59-B50132CB6F1A</a:ObjectID>
-<a:Name>icon</a:Name>
-<a:Code>icon</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>菜单图标</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o109">
-<a:ObjectID>6927665F-EC42-4E1F-A275-4B27F442B6B8</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o110">
-<a:ObjectID>1A6A4D0F-0B0B-4522-B4DA-3F1D592CB889</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o111">
-<a:ObjectID>605D7776-4820-4BA9-91E8-AD837B73AEFB</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o112">
-<a:ObjectID>4CFF26BB-8736-4864-855E-C7C1B133370B</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o113">
-<a:ObjectID>67C6E46C-DF06-480A-BC74-E927406E5D26</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o114">
-<a:ObjectID>08EBE713-9E4D-4312-AA7D-2E4E439734E5</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o100"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o114"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o16">
-<a:ObjectID>F8CB66D1-3632-4509-97C4-17016BE261FC</a:ObjectID>
-<a:Name>sys_user_role</a:Name>
-<a:Code>sys_user_role</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297676</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>用户和角色关联表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o115">
-<a:ObjectID>73701F72-C45B-4CA0-8A62-632890E3DEF0</a:ObjectID>
-<a:Name>user_id</a:Name>
-<a:Code>user_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>用户ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o116">
-<a:ObjectID>CABD458B-DA59-46A8-99C3-088AD8D34097</a:ObjectID>
-<a:Name>role_id</a:Name>
-<a:Code>role_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>角色ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o117">
-<a:ObjectID>37C3213B-EF22-4CD4-A91F-9A9A2503FB2A</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o115"/>
-<o:Column Ref="o116"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o117"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o18">
-<a:ObjectID>9F8C6A9F-3221-410E-AEA4-D1A80026397E</a:ObjectID>
-<a:Name>sys_role_menu</a:Name>
-<a:Code>sys_role_menu</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297683</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>角色和菜单关联表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o118">
-<a:ObjectID>D2E151A5-6156-46EF-844E-0ADC3070293B</a:ObjectID>
-<a:Name>role_id</a:Name>
-<a:Code>role_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>角色ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o119">
-<a:ObjectID>6B8C1E62-FD8B-4504-8FA0-F69917722FBD</a:ObjectID>
-<a:Name>menu_id</a:Name>
-<a:Code>menu_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>菜单ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o120">
-<a:ObjectID>2E72304F-91F0-4392-BAE8-BBF7A4346B7D</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o118"/>
-<o:Column Ref="o119"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o120"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o20">
-<a:ObjectID>726CB18E-7D5B-4E2E-9CF8-047AD5AF89E3</a:ObjectID>
-<a:Name>sys_user_post</a:Name>
-<a:Code>sys_user_post</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297694</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>用户与岗位关联表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o121">
-<a:ObjectID>E4A1CAB6-0F63-4917-ACEF-418DE7F894BA</a:ObjectID>
-<a:Name>user_id</a:Name>
-<a:Code>user_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296306</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>用户ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o122">
-<a:ObjectID>8E7188D5-B3A5-4F1D-B6CB-D77D652414DE</a:ObjectID>
-<a:Name>post_id</a:Name>
-<a:Code>post_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296306</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>岗位ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o123">
-<a:ObjectID>4091B7D3-2404-4C20-BBCD-B63E22A5E960</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o121"/>
-<o:Column Ref="o122"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o123"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o22">
-<a:ObjectID>FE347A45-D8EC-423B-9B38-4D315A3ABE42</a:ObjectID>
-<a:Name>sys_oper_log</a:Name>
-<a:Code>sys_oper_log</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297699</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>操作日志记录</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o124">
-<a:ObjectID>F5FC8AC1-7415-4A57-BA2C-EE2E7B9E1EFC</a:ObjectID>
-<a:Name>oper_id</a:Name>
-<a:Code>oper_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>日志主键</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o125">
-<a:ObjectID>2103BC5C-E28D-4369-8369-E898B218587A</a:ObjectID>
-<a:Name>title</a:Name>
-<a:Code>title</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>模块标题</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o126">
-<a:ObjectID>6816377B-3DB6-424A-99ED-1D20FEB30ED4</a:ObjectID>
-<a:Name>business_type</a:Name>
-<a:Code>business_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296397</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>功能请求</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>int(2)</a:DataType>
-<a:Length>2</a:Length>
-</o:Column>
-<o:Column Id="o127">
-<a:ObjectID>9CA3B7C3-F52C-4E2E-893F-8E6EBA7B2667</a:ObjectID>
-<a:Name>method</a:Name>
-<a:Code>method</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>方法名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o128">
-<a:ObjectID>A5744803-C050-4108-9D15-7A0B95F03642</a:ObjectID>
-<a:Name>operator_type</a:Name>
-<a:Code>operator_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296397</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>来源渠道</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>int(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o129">
-<a:ObjectID>B0DF8235-6BC1-452C-8B30-A56F0430E4F5</a:ObjectID>
-<a:Name>oper_name</a:Name>
-<a:Code>oper_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296397</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>登录账号</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o130">
-<a:ObjectID>25315A12-4EB9-4B67-9E2C-9F40F8EF7FAB</a:ObjectID>
-<a:Name>dept_name</a:Name>
-<a:Code>dept_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>部门名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o131">
-<a:ObjectID>7AF8602B-A1DA-4EA3-BFB2-7638F96A86C0</a:ObjectID>
-<a:Name>oper_url</a:Name>
-<a:Code>oper_url</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>请求URL</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o132">
-<a:ObjectID>F2A56B63-7A56-43FA-8099-411F3578B30D</a:ObjectID>
-<a:Name>oper_ip</a:Name>
-<a:Code>oper_ip</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>主机地址</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(30)</a:DataType>
-<a:Length>30</a:Length>
-</o:Column>
-<o:Column Id="o133">
-<a:ObjectID>1EF1BAF6-F5C1-496C-98E0-8B10C37279A1</a:ObjectID>
-<a:Name>oper_param</a:Name>
-<a:Code>oper_param</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>请求参数</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o134">
-<a:ObjectID>AA3F3A4E-D375-4232-B152-01DCFB8F6B6D</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>操作状态 0正常 1异常</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o135">
-<a:ObjectID>29E44D4A-6AC7-4220-A502-4BFC8746397A</a:ObjectID>
-<a:Name>error_msg</a:Name>
-<a:Code>error_msg</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>错误消息</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(2000)</a:DataType>
-<a:Length>2000</a:Length>
-</o:Column>
-<o:Column Id="o136">
-<a:ObjectID>22343C35-D913-485B-862E-2CEF579AAF22</a:ObjectID>
-<a:Name>oper_time</a:Name>
-<a:Code>oper_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>操作时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o137">
-<a:ObjectID>C0561C20-CC22-471B-A764-414C0D378FD6</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o124"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o137"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o24">
-<a:ObjectID>AA2CFBA5-FA97-4AF1-92FE-645370B5848D</a:ObjectID>
-<a:Name>sys_dict_type</a:Name>
-<a:Code>sys_dict_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297703</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典类型表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o138">
-<a:ObjectID>79CB7D43-B999-4D92-9477-D3AFEBD94248</a:ObjectID>
-<a:Name>dict_id</a:Name>
-<a:Code>dict_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典主键</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o139">
-<a:ObjectID>2490B755-3E0A-4935-97F0-2EFDF9A72D05</a:ObjectID>
-<a:Name>dict_name</a:Name>
-<a:Code>dict_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o140">
-<a:ObjectID>7421238A-82DB-4992-AA28-41726AB6A5D6</a:ObjectID>
-<a:Name>dict_type</a:Name>
-<a:Code>dict_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典类型</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o141">
-<a:ObjectID>971D2FBD-1A24-4EE4-B943-9367609C7472</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538296458</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>状态(0正常 1禁用)</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o142">
-<a:ObjectID>B8876246-5BBA-4A03-86D7-98CA4EBEE342</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o143">
-<a:ObjectID>5237CED2-0853-41DE-ACF4-BE442BC9E112</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o144">
-<a:ObjectID>2CACFBC0-8349-4B3A-9183-208B18C9F56F</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o145">
-<a:ObjectID>ABEE7806-4F61-4B97-980C-CA081F61CA7C</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o146">
-<a:ObjectID>3966B558-B911-45DE-86C6-57F3DB9267BA</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-<o:Column Id="o147">
-<a:ObjectID>AFC0A0ED-A469-40B2-A6C4-4616444830AA</a:ObjectID>
-<a:Name>unique</a:Name>
-<a:Code>unique</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:DataType>(dict_type)</a:DataType>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o148">
-<a:ObjectID>BAD40D8E-BC11-44F5-918E-B27CABBCB051</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o138"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o148"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o26">
-<a:ObjectID>493D6B25-21D0-45B1-BBA0-764B9C09B57D</a:ObjectID>
-<a:Name>sys_dict_data</a:Name>
-<a:Code>sys_dict_data</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297709</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典数据表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o149">
-<a:ObjectID>CFDB23A8-AE38-4051-973A-2DABAC8283F9</a:ObjectID>
-<a:Name>dict_code</a:Name>
-<a:Code>dict_code</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典编码</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o150">
-<a:ObjectID>EAA405BD-12A8-472F-A42D-CDA6A82E291A</a:ObjectID>
-<a:Name>dict_sort</a:Name>
-<a:Code>dict_sort</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典排序</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(4)</a:DataType>
-<a:Length>4</a:Length>
-</o:Column>
-<o:Column Id="o151">
-<a:ObjectID>F13017F5-2AA0-4DE9-9DC2-A9A3D73A98E6</a:ObjectID>
-<a:Name>dict_label</a:Name>
-<a:Code>dict_label</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典标签</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o152">
-<a:ObjectID>EEEC4136-823D-4892-9BB9-BB0B4ADD83E3</a:ObjectID>
-<a:Name>dict_value</a:Name>
-<a:Code>dict_value</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典键值</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o153">
-<a:ObjectID>ADF5A383-D055-40BE-BBFC-06E2B93D4E6A</a:ObjectID>
-<a:Name>dict_type</a:Name>
-<a:Code>dict_type</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>字典类型</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o154">
-<a:ObjectID>A0B2DDF2-251D-4701-9B00-6893C74CC449</a:ObjectID>
-<a:Name>css_class</a:Name>
-<a:Code>css_class</a:Code>
-<a:CreationDate>1538296497</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296556</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o155">
-<a:ObjectID>3CBFBA8E-7609-458D-9E53-A825C3F307A2</a:ObjectID>
-<a:Name>list_class</a:Name>
-<a:Code>list_class</a:Code>
-<a:CreationDate>1538296497</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296556</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o156">
-<a:ObjectID>BA974839-DEE0-4684-BBEF-6D7776C34354</a:ObjectID>
-<a:Name>is_default</a:Name>
-<a:Code>is_default</a:Code>
-<a:CreationDate>1538296497</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296556</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o157">
-<a:ObjectID>1676CDF5-01CA-4749-BA1D-6E5399257BD0</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>状态(0正常 1禁用)</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o158">
-<a:ObjectID>8798B094-1AAF-4A23-B2F1-4C19DACF1AA3</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o159">
-<a:ObjectID>D1CB9293-D762-403C-85CB-4B974ACF7328</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o160">
-<a:ObjectID>5A34AF87-B25E-4349-9713-69DC50F6F5F2</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o161">
-<a:ObjectID>3204FBAC-1F61-4571-ADC4-BF1BE9CED85A</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o162">
-<a:ObjectID>B7DE1842-809C-4401-9C80-C9A37DF9B053</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o163">
-<a:ObjectID>2809F417-7FA5-48DA-B613-662C7C28061E</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o149"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o163"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o28">
-<a:ObjectID>0A7C2F56-6E3B-4E70-A549-0EC60779D180</a:ObjectID>
-<a:Name>sys_logininfor</a:Name>
-<a:Code>sys_logininfor</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297756</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>系统访问记录</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o164">
-<a:ObjectID>5CB5D942-D52B-487D-BC86-476481B0FB8D</a:ObjectID>
-<a:Name>info_id</a:Name>
-<a:Code>info_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>访问ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o165">
-<a:ObjectID>A1C66DBC-9DB7-428B-9275-3D014B6CE388</a:ObjectID>
-<a:Name>login_name</a:Name>
-<a:Code>login_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录账号</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o166">
-<a:ObjectID>8E0F50A6-F98D-48B0-8D9D-78F3A76ED171</a:ObjectID>
-<a:Name>ipaddr</a:Name>
-<a:Code>ipaddr</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录IP地址</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o167">
-<a:ObjectID>91B70723-1A7E-4277-A100-63B775A504B3</a:ObjectID>
-<a:Name>login_location</a:Name>
-<a:Code>login_location</a:Code>
-<a:CreationDate>1538297350</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297369</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o168">
-<a:ObjectID>AA04F533-A044-428B-80F8-515B6BB1A302</a:ObjectID>
-<a:Name>browser</a:Name>
-<a:Code>browser</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>浏览器类型</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o169">
-<a:ObjectID>D37570E9-9EEE-4349-B875-494A5415C736</a:ObjectID>
-<a:Name>os</a:Name>
-<a:Code>os</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>操作系统</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o170">
-<a:ObjectID>CF10A80C-123E-42F3-A2DD-1B770E5F9D86</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录状态 0成功 1失败</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o171">
-<a:ObjectID>9113784E-932A-4FAF-82CB-A75B8C827309</a:ObjectID>
-<a:Name>msg</a:Name>
-<a:Code>msg</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>提示消息</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o172">
-<a:ObjectID>BCA519C6-19C9-45DF-A0B5-F88E9E6D3557</a:ObjectID>
-<a:Name>login_time</a:Name>
-<a:Code>login_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>访问时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o173">
-<a:ObjectID>C14E656C-0645-49EB-8B42-AD82232E0416</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o164"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o173"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o30">
-<a:ObjectID>4DCA223F-E98B-4D8B-A71C-CFB438C15488</a:ObjectID>
-<a:Name>sys_user_online</a:Name>
-<a:Code>sys_user_online</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297754</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>在线用户记录</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o174">
-<a:ObjectID>7FCC57CE-47DD-4948-B949-10401B2FC7B1</a:ObjectID>
-<a:Name>sessionId</a:Name>
-<a:Code>sessionId</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>用户会话id</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o175">
-<a:ObjectID>FDE5B59D-8CF7-4AAE-987F-3FF2AEBE22CB</a:ObjectID>
-<a:Name>login_name</a:Name>
-<a:Code>login_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录账号</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o176">
-<a:ObjectID>AB65FF92-33A0-42C8-8B3F-454A1FAD5615</a:ObjectID>
-<a:Name>dept_name</a:Name>
-<a:Code>dept_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>部门名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o177">
-<a:ObjectID>C4DAF2D0-9CDC-476B-A011-FF5D302371EB</a:ObjectID>
-<a:Name>ipaddr</a:Name>
-<a:Code>ipaddr</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>登录IP地址</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o178">
-<a:ObjectID>C8243FB0-425B-4A74-9ADA-C93B15E713EA</a:ObjectID>
-<a:Name>login_location</a:Name>
-<a:Code>login_location</a:Code>
-<a:CreationDate>1538297178</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297216</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o179">
-<a:ObjectID>89EC40B0-0C22-4811-90BB-BEA385ACDF20</a:ObjectID>
-<a:Name>browser</a:Name>
-<a:Code>browser</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>浏览器类型</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o180">
-<a:ObjectID>AC455631-CFE0-45BB-A0C5-788D695E4B6C</a:ObjectID>
-<a:Name>os</a:Name>
-<a:Code>os</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>操作系统</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-</o:Column>
-<o:Column Id="o181">
-<a:ObjectID>5C56E3C9-4591-4762-89E1-C9BBFECB5F11</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>在线状态on_line在线off_line离线</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(10)</a:DataType>
-<a:Length>10</a:Length>
-</o:Column>
-<o:Column Id="o182">
-<a:ObjectID>0CAF2F1F-459F-4F78-9075-D95F924A4FF7</a:ObjectID>
-<a:Name>start_timestamp</a:Name>
-<a:Code>start_timestamp</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>session创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o183">
-<a:ObjectID>6AE6BDED-823E-4455-9A9F-338EC6F7BDB9</a:ObjectID>
-<a:Name>last_access_time</a:Name>
-<a:Code>last_access_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>session最后访问时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o184">
-<a:ObjectID>CE390924-4628-421C-979F-002C2952E99E</a:ObjectID>
-<a:Name>expire_time</a:Name>
-<a:Code>expire_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>超时时间,单位为分钟</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(5)</a:DataType>
-<a:Length>5</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o185">
-<a:ObjectID>365CC94D-6124-42C7-96BD-376B84B709F7</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o174"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o185"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o32">
-<a:ObjectID>AFCBF4DB-07EC-42D1-ACA7-56B5038F5AC5</a:ObjectID>
-<a:Name>sys_job</a:Name>
-<a:Code>sys_job</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297732</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>定时任务调度表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o186">
-<a:ObjectID>1658CED4-3885-4094-AB70-F35408EBCD5E</a:ObjectID>
-<a:Name>job_id</a:Name>
-<a:Code>job_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o187">
-<a:ObjectID>731E7147-E3A4-4D93-8C7C-BB1C6D94DB9E</a:ObjectID>
-<a:Name>job_name</a:Name>
-<a:Code>job_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务名称</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o188">
-<a:ObjectID>C64B3655-C240-44F0-83B4-F42FB76C8BEA</a:ObjectID>
-<a:Name>job_group</a:Name>
-<a:Code>job_group</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务组名</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o189">
-<a:ObjectID>9F7E735D-B823-4ADA-BA3D-8FFFFEC92F5C</a:ObjectID>
-<a:Name>method_name</a:Name>
-<a:Code>method_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务方法</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-<o:Column Id="o190">
-<a:ObjectID>28EEE4F4-E8E7-4052-8F10-88D6C74C595D</a:ObjectID>
-<a:Name>method_params</a:Name>
-<a:Code>method_params</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297298</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>方法参数</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(200)</a:DataType>
-<a:Length>200</a:Length>
-</o:Column>
-<o:Column Id="o191">
-<a:ObjectID>C8986FAD-E2E7-4364-9E8B-B75366B9A4ED</a:ObjectID>
-<a:Name>cron_expression</a:Name>
-<a:Code>cron_expression</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>cron执行表达式</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-<o:Column Id="o192">
-<a:ObjectID>FD188167-AC02-4161-BE89-D63E61412313</a:ObjectID>
-<a:Name>misfire_policy</a:Name>
-<a:Code>misfire_policy</a:Code>
-<a:CreationDate>1538297273</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297298</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>varchar(20)</a:DataType>
-<a:Length>20</a:Length>
-</o:Column>
-<o:Column Id="o193">
-<a:ObjectID>2D4B6C8F-EEE8-4474-9D20-8206A7E80362</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>状态(0正常 1暂停)</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>int(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o194">
-<a:ObjectID>CA78AC7F-19E7-47BC-BF7B-9F31EFB02702</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o195">
-<a:ObjectID>B8F807AE-9F19-4FCA-BA98-7BF71DD0CA02</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o196">
-<a:ObjectID>3FBB42FA-ED0F-4D7C-99D0-5F7AF7B0F1DD</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o197">
-<a:ObjectID>1C5863D2-A8B9-43DB-AA06-F8BE3E01093B</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o198">
-<a:ObjectID>889C3FF9-BB1E-4EB1-AFE9-1D1155984915</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>备注信息</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o199">
-<a:ObjectID>38106F1A-4FFB-4EC0-B979-55BD6C6C6FF7</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o186"/>
-<o:Column Ref="o187"/>
-<o:Column Ref="o188"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o199"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o34">
-<a:ObjectID>CF7C8958-5494-48C6-BE05-83F2CF8C7513</a:ObjectID>
-<a:Name>sys_job_log</a:Name>
-<a:Code>sys_job_log</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297742</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>定时任务调度日志表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o200">
-<a:ObjectID>308F32A1-A8EC-4002-9993-DF9234A303B7</a:ObjectID>
-<a:Name>job_log_id</a:Name>
-<a:Code>job_log_id</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务日志ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o201">
-<a:ObjectID>F4D55B65-BB6B-4182-A6D6-F9CAABC19110</a:ObjectID>
-<a:Name>job_name</a:Name>
-<a:Code>job_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务名称</a:Comment>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o202">
-<a:ObjectID>8AF383A0-01C0-4947-8384-FF0F13AC00AE</a:ObjectID>
-<a:Name>job_group</a:Name>
-<a:Code>job_group</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务组名</a:Comment>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o203">
-<a:ObjectID>96582B76-F1E9-4473-BA51-01B87B5F459E</a:ObjectID>
-<a:Name>method_name</a:Name>
-<a:Code>method_name</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>任务方法</a:Comment>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-<o:Column Id="o204">
-<a:ObjectID>2AB02ABA-02E3-4F72-95BA-4261A7F5729A</a:ObjectID>
-<a:Name>method_params</a:Name>
-<a:Code>method_params</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297325</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>方法参数</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(200)</a:DataType>
-<a:Length>200</a:Length>
-</o:Column>
-<o:Column Id="o205">
-<a:ObjectID>8EB39444-CBFF-43AA-AA37-49217EF545B6</a:ObjectID>
-<a:Name>job_message</a:Name>
-<a:Code>job_message</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>日志信息</a:Comment>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-<o:Column Id="o206">
-<a:ObjectID>18CD263C-0F57-4EDF-999E-1B5A7EE2BFF9</a:ObjectID>
-<a:Name>is_exception</a:Name>
-<a:Code>is_exception</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538297325</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>是否异常</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o207">
-<a:ObjectID>634ECD78-2251-43EB-B6CF-DF7FA9DA4354</a:ObjectID>
-<a:Name>exception_info</a:Name>
-<a:Code>exception_info</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>异常信息</a:Comment>
-<a:DataType>text</a:DataType>
-</o:Column>
-<o:Column Id="o208">
-<a:ObjectID>4EC075CC-507B-43D7-860F-34DAAEB1DBBF</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o209">
-<a:ObjectID>A87DCE10-894A-4CF7-B39C-AF18202C7F86</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1524449375</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449375</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o200"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o209"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o36">
-<a:ObjectID>FD6284E8-B6D4-43AF-A038-9C97DCD403DC</a:ObjectID>
-<a:Name>sys_role_dept</a:Name>
-<a:Code>sys_role_dept</a:Code>
-<a:CreationDate>1538296083</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297689</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>角色和部门关联表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o210">
-<a:ObjectID>2BC66204-4193-42E6-BB7B-7AD57C9E5BEF</a:ObjectID>
-<a:Name>role_id</a:Name>
-<a:Code>role_id</a:Code>
-<a:CreationDate>1538296083</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296150</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>用户ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o211">
-<a:ObjectID>A32BC025-6437-41AB-BAA4-3A150E406781</a:ObjectID>
-<a:Name>dept_id</a:Name>
-<a:Code>dept_id</a:Code>
-<a:CreationDate>1538296083</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296150</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>岗位ID</a:Comment>
-<a:DataType>int(11)</a:DataType>
-<a:Length>11</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o212">
-<a:ObjectID>315FFED5-B0A0-4649-8255-2283896340C9</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1538296083</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296083</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o210"/>
-<o:Column Ref="o211"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o212"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o38">
-<a:ObjectID>45EB995C-F5F6-4818-AEB1-2038DEBA9CEE</a:ObjectID>
-<a:Name>sys_config</a:Name>
-<a:Code>sys_config</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297714</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>参数配置表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o213">
-<a:ObjectID>667C4616-146B-475C-8111-4720375D762C</a:ObjectID>
-<a:Name>config_id</a:Name>
-<a:Code>config_id</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296691</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典编码</a:Comment>
-<a:DataType>int(5)</a:DataType>
-<a:Length>5</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o214">
-<a:ObjectID>EA798E0B-0CBE-4897-B0AF-1F2D3CD6DEF4</a:ObjectID>
-<a:Name>config_name</a:Name>
-<a:Code>config_name</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296691</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典排序</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o215">
-<a:ObjectID>A9A2A6E0-C914-4516-AE4C-F33CE71B92E8</a:ObjectID>
-<a:Name>config_key</a:Name>
-<a:Code>config_key</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296691</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典标签</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o216">
-<a:ObjectID>24CCA897-8671-402E-8229-9ED0C80C176A</a:ObjectID>
-<a:Name>config_value</a:Name>
-<a:Code>config_value</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296691</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典键值</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(100)</a:DataType>
-<a:Length>100</a:Length>
-</o:Column>
-<o:Column Id="o217">
-<a:ObjectID>B4E76B1D-BFAF-42F3-8CCA-8B5A8CC7CBFF</a:ObjectID>
-<a:Name>config_type</a:Name>
-<a:Code>config_type</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296691</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>字典类型</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o218">
-<a:ObjectID>A6AC1891-F5C4-45B3-8CAB-8F4CE8B8BF08</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>创建者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o219">
-<a:ObjectID>CC1E0367-A079-49A0-8F0A-FE5F7B3EB6EA</a:ObjectID>
-<a:Name>create_time</a:Name>
-<a:Code>create_time</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o220">
-<a:ObjectID>081CD54E-AE38-4696-A326-F829B8EA5737</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>更新者</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o221">
-<a:ObjectID>E2118ECE-8F52-4FBA-B18A-F30FFB2BDD20</a:ObjectID>
-<a:Name>update_time</a:Name>
-<a:Code>update_time</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>更新时间</a:Comment>
-<a:DataType>timestamp</a:DataType>
-</o:Column>
-<o:Column Id="o222">
-<a:ObjectID>55A16121-8932-465E-8427-EBDA39B2B900</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>备注</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o223">
-<a:ObjectID>0F331278-2804-496A-A87B-B0944C80FB82</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1538296587</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538296587</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o213"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o223"/>
-</c:PrimaryKey>
-</o:Table>
-<o:Table Id="o41">
-<a:ObjectID>F33DE1D6-C12D-43DB-A502-83BD1615F081</a:ObjectID>
-<a:Name>sys_notice</a:Name>
-<a:Code>sys_notice</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297746</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>通知公告表</a:Comment>
-<a:TotalSavingCurrency/>
-<c:Columns>
-<o:Column Id="o224">
-<a:ObjectID>FF4A9744-D7CA-450E-8AD7-B3E7E90075CE</a:ObjectID>
-<a:Name>notice_id</a:Name>
-<a:Code>notice_id</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>任务日志ID</a:Comment>
-<a:DataType>int(4)</a:DataType>
-<a:Length>4</a:Length>
-<a:Identity>1</a:Identity>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o225">
-<a:ObjectID>E2B08825-4C94-4209-80B2-21A7AD8CBF2D</a:ObjectID>
-<a:Name>notice_title</a:Name>
-<a:Code>notice_title</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>任务名称</a:Comment>
-<a:DataType>varchar(50)</a:DataType>
-<a:Length>50</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o226">
-<a:ObjectID>04414862-9ABC-4431-B1B7-B44ECC08CB6E</a:ObjectID>
-<a:Name>notice_type</a:Name>
-<a:Code>notice_type</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>任务组名</a:Comment>
-<a:DataType>char(2)</a:DataType>
-<a:Length>2</a:Length>
-<a:Mandatory>1</a:Mandatory>
-</o:Column>
-<o:Column Id="o227">
-<a:ObjectID>E829DAD1-E3F9-4AED-A3DE-59CE4340333E</a:ObjectID>
-<a:Name>notice_content</a:Name>
-<a:Code>notice_content</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>任务方法</a:Comment>
-<a:DataType>varchar(500)</a:DataType>
-<a:Length>500</a:Length>
-</o:Column>
-<o:Column Id="o228">
-<a:ObjectID>2EABC8DB-6700-4717-89A3-31461C4CB2D5</a:ObjectID>
-<a:Name>status</a:Name>
-<a:Code>status</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>方法参数</a:Comment>
-<a:DefaultValue>&#39;&#39;</a:DefaultValue>
-<a:DataType>char(1)</a:DataType>
-<a:Length>1</a:Length>
-</o:Column>
-<o:Column Id="o229">
-<a:ObjectID>448D3EB6-DE24-4BE3-9C29-1FC3C71B0E8D</a:ObjectID>
-<a:Name>create_by</a:Name>
-<a:Code>create_by</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>日志信息</a:Comment>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o230">
-<a:ObjectID>770ED87D-D4D7-499C-A266-7A54051B1A84</a:ObjectID>
-<a:Name>create_time1</a:Name>
-<a:Code>create_time1</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>是否异常</a:Comment>
-<a:DefaultValue>0</a:DefaultValue>
-<a:DataType>datetime</a:DataType>
-</o:Column>
-<o:Column Id="o231">
-<a:ObjectID>12DDF399-7CCB-4117-8B05-6AA9BEE845E5</a:ObjectID>
-<a:Name>update_by</a:Name>
-<a:Code>update_by</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>异常信息</a:Comment>
-<a:DataType>varchar(64)</a:DataType>
-<a:Length>64</a:Length>
-</o:Column>
-<o:Column Id="o232">
-<a:ObjectID>FE101CE4-9B66-4097-944D-36B01A9E2219</a:ObjectID>
-<a:Name>update_time1</a:Name>
-<a:Code>update_time1</a:Code>
-<a:CreationDate>1538297400</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:DataType>datetime</a:DataType>
-</o:Column>
-<o:Column Id="o233">
-<a:ObjectID>D5F1728C-01D0-4C00-9AD6-AAA14228104B</a:ObjectID>
-<a:Name>remark</a:Name>
-<a:Code>remark</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297496</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:Comment>创建时间</a:Comment>
-<a:DataType>varchar(255)</a:DataType>
-<a:Length>255</a:Length>
-</o:Column>
-</c:Columns>
-<c:Keys>
-<o:Key Id="o234">
-<a:ObjectID>43C7AC1D-CE7A-4B55-A474-8CB2376D446F</a:ObjectID>
-<a:Name>Key_1</a:Name>
-<a:Code>Key_1</a:Code>
-<a:CreationDate>1538297386</a:CreationDate>
-<a:Creator>admin</a:Creator>
-<a:ModificationDate>1538297386</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<c:Key.Columns>
-<o:Column Ref="o224"/>
-</c:Key.Columns>
-</o:Key>
-</c:Keys>
-<c:PrimaryKey>
-<o:Key Ref="o234"/>
-</c:PrimaryKey>
-</o:Table>
-</c:Tables>
-<c:DefaultGroups>
-<o:Group Id="o235">
-<a:ObjectID>F2EBEA5B-F352-45CB-B349-39158064CEE8</a:ObjectID>
-<a:Name>PUBLIC</a:Name>
-<a:Code>PUBLIC</a:Code>
-<a:CreationDate>1524449325</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1524449325</a:ModificationDate>
-<a:Modifier>Administrator</a:Modifier>
-</o:Group>
-</c:DefaultGroups>
-<c:TargetModels>
-<o:TargetModel Id="o236">
-<a:ObjectID>41740AEF-D7FB-4738-ABDF-47C3287A6AF6</a:ObjectID>
-<a:Name>MySQL 5.0</a:Name>
-<a:Code>MYSQL50</a:Code>
-<a:CreationDate>1524449337</a:CreationDate>
-<a:Creator>Administrator</a:Creator>
-<a:ModificationDate>1538295558</a:ModificationDate>
-<a:Modifier>admin</a:Modifier>
-<a:TargetModelURL>file:///%_DBMS%/mysql50.xdb</a:TargetModelURL>
-<a:TargetModelID>F4F16ECD-F2F1-4006-AF6F-638D5C65F35E</a:TargetModelID>
-<a:TargetModelClassID>4BA9F647-DAB1-11D1-9944-006097355D9B</a:TargetModelClassID>
-<c:SessionShortcuts>
-<o:Shortcut Ref="o3"/>
-</c:SessionShortcuts>
-</o:TargetModel>
-</c:TargetModels>
-</o:Model>
-</c:Children>
-</o:RootObject>
-
-</Model>
\ No newline at end of file
diff --git a/sql/ry_20240601.sql b/sql/ry_20240601.sql
deleted file mode 100644
index 166b5a9..0000000
--- a/sql/ry_20240601.sql
+++ /dev/null
@@ -1,722 +0,0 @@
--- ----------------------------
--- 1、部门表
--- ----------------------------
-drop table if exists sys_dept;
-create table sys_dept (
-  dept_id           bigint(20)      not null auto_increment    comment '部门id',
-  parent_id         bigint(20)      default 0                  comment '父部门id',
-  ancestors         varchar(50)     default ''                 comment '祖级列表',
-  dept_name         varchar(30)     default ''                 comment '部门名称',
-  order_num         int(4)          default 0                  comment '显示顺序',
-  leader            varchar(20)     default null               comment '负责人',
-  phone             varchar(11)     default null               comment '联系电话',
-  email             varchar(50)     default null               comment '邮箱',
-  status            char(1)         default '0'                comment '部门状态(0正常 1停用)',
-  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time 	    datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  primary key (dept_id)
-) engine=innodb auto_increment=200 comment = '部门表';
-
--- ----------------------------
--- 初始化-部门表数据
--- ----------------------------
-insert into sys_dept values(100,  0,   '0',          '若依科技',   0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(101,  100, '0,100',      '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(102,  100, '0,100',      '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(103,  101, '0,100,101',  '研发部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(104,  101, '0,100,101',  '市场部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(105,  101, '0,100,101',  '测试部门',   3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(106,  101, '0,100,101',  '财务部门',   4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(107,  101, '0,100,101',  '运维部门',   5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(108,  102, '0,100,102',  '市场部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-insert into sys_dept values(109,  102, '0,100,102',  '财务部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
-
-
--- ----------------------------
--- 2、用户信息表
--- ----------------------------
-drop table if exists sys_user;
-create table sys_user (
-  user_id           bigint(20)      not null auto_increment    comment '用户ID',
-  dept_id           bigint(20)      default null               comment '部门ID',
-  login_name        varchar(30)     not null                   comment '登录账号',
-  user_name         varchar(30)     default ''                 comment '用户昵称',
-  user_type         varchar(2)      default '00'               comment '用户类型(00系统用户 01注册用户)',
-  email             varchar(50)     default ''                 comment '用户邮箱',
-  phonenumber       varchar(11)     default ''                 comment '手机号码',
-  sex               char(1)         default '0'                comment '用户性别(0男 1女 2未知)',
-  avatar            varchar(100)    default ''                 comment '头像路径',
-  password          varchar(50)     default ''                 comment '密码',
-  salt              varchar(20)     default ''                 comment '盐加密',
-  status            char(1)         default '0'                comment '帐号状态(0正常 1停用)',
-  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
-  login_ip          varchar(128)    default ''                 comment '最后登录IP',
-  login_date        datetime                                   comment '最后登录时间',
-  pwd_update_date   datetime                                   comment '密码最后更新时间',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time       datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  remark            varchar(500)    default null               comment '备注',
-  primary key (user_id)
-) engine=innodb auto_increment=100 comment = '用户信息表';
-
--- ----------------------------
--- 初始化-用户信息表数据
--- ----------------------------
-insert into sys_user values(1,  103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', null, null, 'admin', sysdate(), '', null, '管理员');
-insert into sys_user values(2,  105, 'ry',    '若依', '00', 'ry@qq.com',  '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', null, null, 'admin', sysdate(), '', null, '测试员');
-
-
--- ----------------------------
--- 3、岗位信息表
--- ----------------------------
-drop table if exists sys_post;
-create table sys_post
-(
-  post_id       bigint(20)      not null auto_increment    comment '岗位ID',
-  post_code     varchar(64)     not null                   comment '岗位编码',
-  post_name     varchar(50)     not null                   comment '岗位名称',
-  post_sort     int(4)          not null                   comment '显示顺序',
-  status        char(1)         not null                   comment '状态(0正常 1停用)',
-  create_by     varchar(64)     default ''                 comment '创建者',
-  create_time   datetime                                   comment '创建时间',
-  update_by     varchar(64)     default ''			       comment '更新者',
-  update_time   datetime                                   comment '更新时间',
-  remark        varchar(500)    default null               comment '备注',
-  primary key (post_id)
-) engine=innodb comment = '岗位信息表';
-
--- ----------------------------
--- 初始化-岗位信息表数据
--- ----------------------------
-insert into sys_post values(1, 'ceo',  '董事长',    1, '0', 'admin', sysdate(), '', null, '');
-insert into sys_post values(2, 'se',   '项目经理',  2, '0', 'admin', sysdate(), '', null, '');
-insert into sys_post values(3, 'hr',   '人力资源',  3, '0', 'admin', sysdate(), '', null, '');
-insert into sys_post values(4, 'user', '普通员工',  4, '0', 'admin', sysdate(), '', null, '');
-
-
--- ----------------------------
--- 4、角色信息表
--- ----------------------------
-drop table if exists sys_role;
-create table sys_role (
-  role_id           bigint(20)      not null auto_increment    comment '角色ID',
-  role_name         varchar(30)     not null                   comment '角色名称',
-  role_key          varchar(100)    not null                   comment '角色权限字符串',
-  role_sort         int(4)          not null                   comment '显示顺序',
-  data_scope        char(1)         default '1'                comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
-  status            char(1)         not null                   comment '角色状态(0正常 1停用)',
-  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time       datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  remark            varchar(500)    default null               comment '备注',
-  primary key (role_id)
-) engine=innodb auto_increment=100 comment = '角色信息表';
-
--- ----------------------------
--- 初始化-角色信息表数据
--- ----------------------------
-insert into sys_role values('1', '超级管理员', 'admin',  1, 1, '0', '0', 'admin', sysdate(), '', null, '超级管理员');
-insert into sys_role values('2', '普通角色',   'common', 2, 2, '0', '0', 'admin', sysdate(), '', null, '普通角色');
-
-
--- ----------------------------
--- 5、菜单权限表
--- ----------------------------
-drop table if exists sys_menu;
-create table sys_menu (
-  menu_id           bigint(20)      not null auto_increment    comment '菜单ID',
-  menu_name         varchar(50)     not null                   comment '菜单名称',
-  parent_id         bigint(20)      default 0                  comment '父菜单ID',
-  order_num         int(4)          default 0                  comment '显示顺序',
-  url               varchar(200)    default '#'                comment '请求地址',
-  target            varchar(20)     default ''                 comment '打开方式(menuItem页签 menuBlank新窗口)',
-  menu_type         char(1)         default ''                 comment '菜单类型(M目录 C菜单 F按钮)',
-  visible           char(1)         default 0                  comment '菜单状态(0显示 1隐藏)',
-  is_refresh        char(1)         default 1                  comment '是否刷新(0刷新 1不刷新)',
-  perms             varchar(100)    default null               comment '权限标识',
-  icon              varchar(100)    default '#'                comment '菜单图标',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time       datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  remark            varchar(500)    default ''                 comment '备注',
-  primary key (menu_id)
-) engine=innodb auto_increment=2000 comment = '菜单权限表';
-
--- ----------------------------
--- 初始化-菜单信息表数据
--- ----------------------------
--- 一级菜单
-insert into sys_menu values('1', '系统管理', '0', '1', '#',                '',          'M', '0', '1', '', 'fa fa-gear',           'admin', sysdate(), '', null, '系统管理目录');
-insert into sys_menu values('2', '系统监控', '0', '2', '#',                '',          'M', '0', '1', '', 'fa fa-video-camera',   'admin', sysdate(), '', null, '系统监控目录');
-insert into sys_menu values('3', '系统工具', '0', '3', '#',                '',          'M', '0', '1', '', 'fa fa-bars',           'admin', sysdate(), '', null, '系统工具目录');
-insert into sys_menu values('4', '若依官网', '0', '4', 'http://ruoyi.vip', 'menuBlank', 'C', '0', '1', '', 'fa fa-location-arrow', 'admin', sysdate(), '', null, '若依官网地址');
--- 二级菜单
-insert into sys_menu values('100',  '用户管理', '1', '1', '/system/user',          '', 'C', '0', '1', 'system:user:view',         'fa fa-user-o',          'admin', sysdate(), '', null, '用户管理菜单');
-insert into sys_menu values('101',  '角色管理', '1', '2', '/system/role',          '', 'C', '0', '1', 'system:role:view',         'fa fa-user-secret',     'admin', sysdate(), '', null, '角色管理菜单');
-insert into sys_menu values('102',  '菜单管理', '1', '3', '/system/menu',          '', 'C', '0', '1', 'system:menu:view',         'fa fa-th-list',         'admin', sysdate(), '', null, '菜单管理菜单');
-insert into sys_menu values('103',  '部门管理', '1', '4', '/system/dept',          '', 'C', '0', '1', 'system:dept:view',         'fa fa-outdent',         'admin', sysdate(), '', null, '部门管理菜单');
-insert into sys_menu values('104',  '岗位管理', '1', '5', '/system/post',          '', 'C', '0', '1', 'system:post:view',         'fa fa-address-card-o',  'admin', sysdate(), '', null, '岗位管理菜单');
-insert into sys_menu values('105',  '字典管理', '1', '6', '/system/dict',          '', 'C', '0', '1', 'system:dict:view',         'fa fa-bookmark-o',      'admin', sysdate(), '', null, '字典管理菜单');
-insert into sys_menu values('106',  '参数设置', '1', '7', '/system/config',        '', 'C', '0', '1', 'system:config:view',       'fa fa-sun-o',           'admin', sysdate(), '', null, '参数设置菜单');
-insert into sys_menu values('107',  '通知公告', '1', '8', '/system/notice',        '', 'C', '0', '1', 'system:notice:view',       'fa fa-bullhorn',        'admin', sysdate(), '', null, '通知公告菜单');
-insert into sys_menu values('108',  '日志管理', '1', '9', '#',                     '', 'M', '0', '1', '',                         'fa fa-pencil-square-o', 'admin', sysdate(), '', null, '日志管理菜单');
-insert into sys_menu values('109',  '在线用户', '2', '1', '/monitor/online',       '', 'C', '0', '1', 'monitor:online:view',      'fa fa-user-circle',     'admin', sysdate(), '', null, '在线用户菜单');
-insert into sys_menu values('110',  '定时任务', '2', '2', '/monitor/job',          '', 'C', '0', '1', 'monitor:job:view',         'fa fa-tasks',           'admin', sysdate(), '', null, '定时任务菜单');
-insert into sys_menu values('111',  '数据监控', '2', '3', '/monitor/data',         '', 'C', '0', '1', 'monitor:data:view',        'fa fa-bug',             'admin', sysdate(), '', null, '数据监控菜单');
-insert into sys_menu values('112',  '服务监控', '2', '4', '/monitor/server',       '', 'C', '0', '1', 'monitor:server:view',      'fa fa-server',          'admin', sysdate(), '', null, '服务监控菜单');
-insert into sys_menu values('113',  '缓存监控', '2', '5', '/monitor/cache',        '', 'C', '0', '1', 'monitor:cache:view',       'fa fa-cube',            'admin', sysdate(), '', null, '缓存监控菜单');
-insert into sys_menu values('114',  '表单构建', '3', '1', '/tool/build',           '', 'C', '0', '1', 'tool:build:view',          'fa fa-wpforms',         'admin', sysdate(), '', null, '表单构建菜单');
-insert into sys_menu values('115',  '代码生成', '3', '2', '/tool/gen',             '', 'C', '0', '1', 'tool:gen:view',            'fa fa-code',            'admin', sysdate(), '', null, '代码生成菜单');
-insert into sys_menu values('116',  '系统接口', '3', '3', '/tool/swagger',         '', 'C', '0', '1', 'tool:swagger:view',        'fa fa-gg',              'admin', sysdate(), '', null, '系统接口菜单');
--- 三级菜单
-insert into sys_menu values('500',  '操作日志', '108', '1', '/monitor/operlog',    '', 'C', '0', '1', 'monitor:operlog:view',     'fa fa-address-book',    'admin', sysdate(), '', null, '操作日志菜单');
-insert into sys_menu values('501',  '登录日志', '108', '2', '/monitor/logininfor', '', 'C', '0', '1', 'monitor:logininfor:view',  'fa fa-file-image-o',    'admin', sysdate(), '', null, '登录日志菜单');
--- 用户管理按钮
-insert into sys_menu values('1000', '用户查询', '100', '1',  '#', '',  'F', '0', '1', 'system:user:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1001', '用户新增', '100', '2',  '#', '',  'F', '0', '1', 'system:user:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1002', '用户修改', '100', '3',  '#', '',  'F', '0', '1', 'system:user:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1003', '用户删除', '100', '4',  '#', '',  'F', '0', '1', 'system:user:remove',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1004', '用户导出', '100', '5',  '#', '',  'F', '0', '1', 'system:user:export',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1005', '用户导入', '100', '6',  '#', '',  'F', '0', '1', 'system:user:import',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1006', '重置密码', '100', '7',  '#', '',  'F', '0', '1', 'system:user:resetPwd',    '#', 'admin', sysdate(), '', null, '');
--- 角色管理按钮
-insert into sys_menu values('1007', '角色查询', '101', '1',  '#', '',  'F', '0', '1', 'system:role:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1008', '角色新增', '101', '2',  '#', '',  'F', '0', '1', 'system:role:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1009', '角色修改', '101', '3',  '#', '',  'F', '0', '1', 'system:role:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1010', '角色删除', '101', '4',  '#', '',  'F', '0', '1', 'system:role:remove',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1011', '角色导出', '101', '5',  '#', '',  'F', '0', '1', 'system:role:export',      '#', 'admin', sysdate(), '', null, '');
--- 菜单管理按钮
-insert into sys_menu values('1012', '菜单查询', '102', '1',  '#', '',  'F', '0', '1', 'system:menu:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1013', '菜单新增', '102', '2',  '#', '',  'F', '0', '1', 'system:menu:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1014', '菜单修改', '102', '3',  '#', '',  'F', '0', '1', 'system:menu:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1015', '菜单删除', '102', '4',  '#', '',  'F', '0', '1', 'system:menu:remove',      '#', 'admin', sysdate(), '', null, '');
--- 部门管理按钮
-insert into sys_menu values('1016', '部门查询', '103', '1',  '#', '',  'F', '0', '1', 'system:dept:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1017', '部门新增', '103', '2',  '#', '',  'F', '0', '1', 'system:dept:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1018', '部门修改', '103', '3',  '#', '',  'F', '0', '1', 'system:dept:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1019', '部门删除', '103', '4',  '#', '',  'F', '0', '1', 'system:dept:remove',      '#', 'admin', sysdate(), '', null, '');
--- 岗位管理按钮
-insert into sys_menu values('1020', '岗位查询', '104', '1',  '#', '',  'F', '0', '1', 'system:post:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1021', '岗位新增', '104', '2',  '#', '',  'F', '0', '1', 'system:post:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1022', '岗位修改', '104', '3',  '#', '',  'F', '0', '1', 'system:post:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1023', '岗位删除', '104', '4',  '#', '',  'F', '0', '1', 'system:post:remove',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1024', '岗位导出', '104', '5',  '#', '',  'F', '0', '1', 'system:post:export',      '#', 'admin', sysdate(), '', null, '');
--- 字典管理按钮
-insert into sys_menu values('1025', '字典查询', '105', '1',  '#', '',  'F', '0', '1', 'system:dict:list',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1026', '字典新增', '105', '2',  '#', '',  'F', '0', '1', 'system:dict:add',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1027', '字典修改', '105', '3',  '#', '',  'F', '0', '1', 'system:dict:edit',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1028', '字典删除', '105', '4',  '#', '',  'F', '0', '1', 'system:dict:remove',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1029', '字典导出', '105', '5',  '#', '',  'F', '0', '1', 'system:dict:export',      '#', 'admin', sysdate(), '', null, '');
--- 参数设置按钮
-insert into sys_menu values('1030', '参数查询', '106', '1',  '#', '',  'F', '0', '1', 'system:config:list',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1031', '参数新增', '106', '2',  '#', '',  'F', '0', '1', 'system:config:add',       '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1032', '参数修改', '106', '3',  '#', '',  'F', '0', '1', 'system:config:edit',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1033', '参数删除', '106', '4',  '#', '',  'F', '0', '1', 'system:config:remove',    '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1034', '参数导出', '106', '5',  '#', '',  'F', '0', '1', 'system:config:export',    '#', 'admin', sysdate(), '', null, '');
--- 通知公告按钮
-insert into sys_menu values('1035', '公告查询', '107', '1',  '#', '',  'F', '0', '1', 'system:notice:list',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1036', '公告新增', '107', '2',  '#', '',  'F', '0', '1', 'system:notice:add',       '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1037', '公告修改', '107', '3',  '#', '',  'F', '0', '1', 'system:notice:edit',      '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1038', '公告删除', '107', '4',  '#', '',  'F', '0', '1', 'system:notice:remove',    '#', 'admin', sysdate(), '', null, '');
--- 操作日志按钮
-insert into sys_menu values('1039', '操作查询', '500', '1',  '#', '',  'F', '0', '1', 'monitor:operlog:list',    '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1040', '操作删除', '500', '2',  '#', '',  'F', '0', '1', 'monitor:operlog:remove',  '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1041', '详细信息', '500', '3',  '#', '',  'F', '0', '1', 'monitor:operlog:detail',  '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1042', '日志导出', '500', '4',  '#', '',  'F', '0', '1', 'monitor:operlog:export',  '#', 'admin', sysdate(), '', null, '');
--- 登录日志按钮
-insert into sys_menu values('1043', '登录查询', '501', '1',  '#', '',  'F', '0', '1', 'monitor:logininfor:list',         '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1044', '登录删除', '501', '2',  '#', '',  'F', '0', '1', 'monitor:logininfor:remove',       '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1045', '日志导出', '501', '3',  '#', '',  'F', '0', '1', 'monitor:logininfor:export',       '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1046', '账户解锁', '501', '4',  '#', '',  'F', '0', '1', 'monitor:logininfor:unlock',       '#', 'admin', sysdate(), '', null, '');
--- 在线用户按钮
-insert into sys_menu values('1047', '在线查询', '109', '1',  '#', '',  'F', '0', '1', 'monitor:online:list',             '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1048', '批量强退', '109', '2',  '#', '',  'F', '0', '1', 'monitor:online:batchForceLogout', '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1049', '单条强退', '109', '3',  '#', '',  'F', '0', '1', 'monitor:online:forceLogout',      '#', 'admin', sysdate(), '', null, '');
--- 定时任务按钮
-insert into sys_menu values('1050', '任务查询', '110', '1',  '#', '',  'F', '0', '1', 'monitor:job:list',                '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1051', '任务新增', '110', '2',  '#', '',  'F', '0', '1', 'monitor:job:add',                 '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1052', '任务修改', '110', '3',  '#', '',  'F', '0', '1', 'monitor:job:edit',                '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1053', '任务删除', '110', '4',  '#', '',  'F', '0', '1', 'monitor:job:remove',              '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1054', '状态修改', '110', '5',  '#', '',  'F', '0', '1', 'monitor:job:changeStatus',        '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1055', '任务详细', '110', '6',  '#', '',  'F', '0', '1', 'monitor:job:detail',              '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1056', '任务导出', '110', '7',  '#', '',  'F', '0', '1', 'monitor:job:export',              '#', 'admin', sysdate(), '', null, '');
--- 代码生成按钮
-insert into sys_menu values('1057', '生成查询', '115', '1',  '#', '',  'F', '0', '1', 'tool:gen:list',     '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1058', '生成修改', '115', '2',  '#', '',  'F', '0', '1', 'tool:gen:edit',     '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1059', '生成删除', '115', '3',  '#', '',  'F', '0', '1', 'tool:gen:remove',   '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1060', '预览代码', '115', '4',  '#', '',  'F', '0', '1', 'tool:gen:preview',  '#', 'admin', sysdate(), '', null, '');
-insert into sys_menu values('1061', '生成代码', '115', '5',  '#', '',  'F', '0', '1', 'tool:gen:code',     '#', 'admin', sysdate(), '', null, '');
-
-
--- ----------------------------
--- 6、用户和角色关联表  用户N-1角色
--- ----------------------------
-drop table if exists sys_user_role;
-create table sys_user_role (
-  user_id   bigint(20) not null comment '用户ID',
-  role_id   bigint(20) not null comment '角色ID',
-  primary key(user_id, role_id)
-) engine=innodb comment = '用户和角色关联表';
-
--- ----------------------------
--- 初始化-用户和角色关联表数据
--- ----------------------------
-insert into sys_user_role values ('1', '1');
-insert into sys_user_role values ('2', '2');
-
-
--- ----------------------------
--- 7、角色和菜单关联表  角色1-N菜单
--- ----------------------------
-drop table if exists sys_role_menu;
-create table sys_role_menu (
-  role_id   bigint(20) not null comment '角色ID',
-  menu_id   bigint(20) not null comment '菜单ID',
-  primary key(role_id, menu_id)
-) engine=innodb comment = '角色和菜单关联表';
-
--- ----------------------------
--- 初始化-角色和菜单关联表数据
--- ----------------------------
-insert into sys_role_menu values ('2', '1');
-insert into sys_role_menu values ('2', '2');
-insert into sys_role_menu values ('2', '3');
-insert into sys_role_menu values ('2', '4');
-insert into sys_role_menu values ('2', '100');
-insert into sys_role_menu values ('2', '101');
-insert into sys_role_menu values ('2', '102');
-insert into sys_role_menu values ('2', '103');
-insert into sys_role_menu values ('2', '104');
-insert into sys_role_menu values ('2', '105');
-insert into sys_role_menu values ('2', '106');
-insert into sys_role_menu values ('2', '107');
-insert into sys_role_menu values ('2', '108');
-insert into sys_role_menu values ('2', '109');
-insert into sys_role_menu values ('2', '110');
-insert into sys_role_menu values ('2', '111');
-insert into sys_role_menu values ('2', '112');
-insert into sys_role_menu values ('2', '113');
-insert into sys_role_menu values ('2', '114');
-insert into sys_role_menu values ('2', '115');
-insert into sys_role_menu values ('2', '116');
-insert into sys_role_menu values ('2', '500');
-insert into sys_role_menu values ('2', '501');
-insert into sys_role_menu values ('2', '1000');
-insert into sys_role_menu values ('2', '1001');
-insert into sys_role_menu values ('2', '1002');
-insert into sys_role_menu values ('2', '1003');
-insert into sys_role_menu values ('2', '1004');
-insert into sys_role_menu values ('2', '1005');
-insert into sys_role_menu values ('2', '1006');
-insert into sys_role_menu values ('2', '1007');
-insert into sys_role_menu values ('2', '1008');
-insert into sys_role_menu values ('2', '1009');
-insert into sys_role_menu values ('2', '1010');
-insert into sys_role_menu values ('2', '1011');
-insert into sys_role_menu values ('2', '1012');
-insert into sys_role_menu values ('2', '1013');
-insert into sys_role_menu values ('2', '1014');
-insert into sys_role_menu values ('2', '1015');
-insert into sys_role_menu values ('2', '1016');
-insert into sys_role_menu values ('2', '1017');
-insert into sys_role_menu values ('2', '1018');
-insert into sys_role_menu values ('2', '1019');
-insert into sys_role_menu values ('2', '1020');
-insert into sys_role_menu values ('2', '1021');
-insert into sys_role_menu values ('2', '1022');
-insert into sys_role_menu values ('2', '1023');
-insert into sys_role_menu values ('2', '1024');
-insert into sys_role_menu values ('2', '1025');
-insert into sys_role_menu values ('2', '1026');
-insert into sys_role_menu values ('2', '1027');
-insert into sys_role_menu values ('2', '1028');
-insert into sys_role_menu values ('2', '1029');
-insert into sys_role_menu values ('2', '1030');
-insert into sys_role_menu values ('2', '1031');
-insert into sys_role_menu values ('2', '1032');
-insert into sys_role_menu values ('2', '1033');
-insert into sys_role_menu values ('2', '1034');
-insert into sys_role_menu values ('2', '1035');
-insert into sys_role_menu values ('2', '1036');
-insert into sys_role_menu values ('2', '1037');
-insert into sys_role_menu values ('2', '1038');
-insert into sys_role_menu values ('2', '1039');
-insert into sys_role_menu values ('2', '1040');
-insert into sys_role_menu values ('2', '1041');
-insert into sys_role_menu values ('2', '1042');
-insert into sys_role_menu values ('2', '1043');
-insert into sys_role_menu values ('2', '1044');
-insert into sys_role_menu values ('2', '1045');
-insert into sys_role_menu values ('2', '1046');
-insert into sys_role_menu values ('2', '1047');
-insert into sys_role_menu values ('2', '1048');
-insert into sys_role_menu values ('2', '1049');
-insert into sys_role_menu values ('2', '1050');
-insert into sys_role_menu values ('2', '1051');
-insert into sys_role_menu values ('2', '1052');
-insert into sys_role_menu values ('2', '1053');
-insert into sys_role_menu values ('2', '1054');
-insert into sys_role_menu values ('2', '1055');
-insert into sys_role_menu values ('2', '1056');
-insert into sys_role_menu values ('2', '1057');
-insert into sys_role_menu values ('2', '1058');
-insert into sys_role_menu values ('2', '1059');
-insert into sys_role_menu values ('2', '1060');
-insert into sys_role_menu values ('2', '1061');
-
--- ----------------------------
--- 8、角色和部门关联表  角色1-N部门
--- ----------------------------
-drop table if exists sys_role_dept;
-create table sys_role_dept (
-  role_id   bigint(20) not null comment '角色ID',
-  dept_id   bigint(20) not null comment '部门ID',
-  primary key(role_id, dept_id)
-) engine=innodb comment = '角色和部门关联表';
-
--- ----------------------------
--- 初始化-角色和部门关联表数据
--- ----------------------------
-insert into sys_role_dept values ('2', '100');
-insert into sys_role_dept values ('2', '101');
-insert into sys_role_dept values ('2', '105');
-
--- ----------------------------
--- 9、用户与岗位关联表  用户1-N岗位
--- ----------------------------
-drop table if exists sys_user_post;
-create table sys_user_post
-(
-  user_id   bigint(20) not null comment '用户ID',
-  post_id   bigint(20) not null comment '岗位ID',
-  primary key (user_id, post_id)
-) engine=innodb comment = '用户与岗位关联表';
-
--- ----------------------------
--- 初始化-用户与岗位关联表数据
--- ----------------------------
-insert into sys_user_post values ('1', '1');
-insert into sys_user_post values ('2', '2');
-
-
--- ----------------------------
--- 10、操作日志记录
--- ----------------------------
-drop table if exists sys_oper_log;
-create table sys_oper_log (
-  oper_id           bigint(20)      not null auto_increment    comment '日志主键',
-  title             varchar(50)     default ''                 comment '模块标题',
-  business_type     int(2)          default 0                  comment '业务类型(0其它 1新增 2修改 3删除)',
-  method            varchar(200)    default ''                 comment '方法名称',
-  request_method    varchar(10)     default ''                 comment '请求方式',
-  operator_type     int(1)          default 0                  comment '操作类别(0其它 1后台用户 2手机端用户)',
-  oper_name         varchar(50)     default ''                 comment '操作人员',
-  dept_name         varchar(50)     default ''                 comment '部门名称',
-  oper_url          varchar(255)    default ''                 comment '请求URL',
-  oper_ip           varchar(128)    default ''                 comment '主机地址',
-  oper_location     varchar(255)    default ''                 comment '操作地点',
-  oper_param        varchar(2000)   default ''                 comment '请求参数',
-  json_result       varchar(2000)   default ''                 comment '返回参数',
-  status            int(1)          default 0                  comment '操作状态(0正常 1异常)',
-  error_msg         varchar(2000)   default ''                 comment '错误消息',
-  oper_time         datetime                                   comment '操作时间',
-  cost_time         bigint(20)      default 0                  comment '消耗时间',
-  primary key (oper_id),
-  key idx_sys_oper_log_bt (business_type),
-  key idx_sys_oper_log_s  (status),
-  key idx_sys_oper_log_ot (oper_time)
-) engine=innodb auto_increment=100 comment = '操作日志记录';
-
-
--- ----------------------------
--- 11、字典类型表
--- ----------------------------
-drop table if exists sys_dict_type;
-create table sys_dict_type
-(
-  dict_id          bigint(20)      not null auto_increment    comment '字典主键',
-  dict_name        varchar(100)    default ''                 comment '字典名称',
-  dict_type        varchar(100)    default ''                 comment '字典类型',
-  status           char(1)         default '0'                comment '状态(0正常 1停用)',
-  create_by        varchar(64)     default ''                 comment '创建者',
-  create_time      datetime                                   comment '创建时间',
-  update_by        varchar(64)     default ''                 comment '更新者',
-  update_time      datetime                                   comment '更新时间',
-  remark           varchar(500)    default null               comment '备注',
-  primary key (dict_id),
-  unique (dict_type)
-) engine=innodb auto_increment=100 comment = '字典类型表';
-
-insert into sys_dict_type values(1,  '用户性别', 'sys_user_sex',        '0', 'admin', sysdate(), '', null, '用户性别列表');
-insert into sys_dict_type values(2,  '菜单状态', 'sys_show_hide',       '0', 'admin', sysdate(), '', null, '菜单状态列表');
-insert into sys_dict_type values(3,  '系统开关', 'sys_normal_disable',  '0', 'admin', sysdate(), '', null, '系统开关列表');
-insert into sys_dict_type values(4,  '任务状态', 'sys_job_status',      '0', 'admin', sysdate(), '', null, '任务状态列表');
-insert into sys_dict_type values(5,  '任务分组', 'sys_job_group',       '0', 'admin', sysdate(), '', null, '任务分组列表');
-insert into sys_dict_type values(6,  '系统是否', 'sys_yes_no',          '0', 'admin', sysdate(), '', null, '系统是否列表');
-insert into sys_dict_type values(7,  '通知类型', 'sys_notice_type',     '0', 'admin', sysdate(), '', null, '通知类型列表');
-insert into sys_dict_type values(8,  '通知状态', 'sys_notice_status',   '0', 'admin', sysdate(), '', null, '通知状态列表');
-insert into sys_dict_type values(9,  '操作类型', 'sys_oper_type',       '0', 'admin', sysdate(), '', null, '操作类型列表');
-insert into sys_dict_type values(10, '系统状态', 'sys_common_status',   '0', 'admin', sysdate(), '', null, '登录状态列表');
-
-
--- ----------------------------
--- 12、字典数据表
--- ----------------------------
-drop table if exists sys_dict_data;
-create table sys_dict_data
-(
-  dict_code        bigint(20)      not null auto_increment    comment '字典编码',
-  dict_sort        int(4)          default 0                  comment '字典排序',
-  dict_label       varchar(100)    default ''                 comment '字典标签',
-  dict_value       varchar(100)    default ''                 comment '字典键值',
-  dict_type        varchar(100)    default ''                 comment '字典类型',
-  css_class        varchar(100)    default null               comment '样式属性(其他样式扩展)',
-  list_class       varchar(100)    default null               comment '表格回显样式',
-  is_default       char(1)         default 'N'                comment '是否默认(Y是 N否)',
-  status           char(1)         default '0'                comment '状态(0正常 1停用)',
-  create_by        varchar(64)     default ''                 comment '创建者',
-  create_time      datetime                                   comment '创建时间',
-  update_by        varchar(64)     default ''                 comment '更新者',
-  update_time      datetime                                   comment '更新时间',
-  remark           varchar(500)    default null               comment '备注',
-  primary key (dict_code)
-) engine=innodb auto_increment=100 comment = '字典数据表';
-
-insert into sys_dict_data values(1,  1,  '男',       '0',       'sys_user_sex',        '',   '',        'Y', '0', 'admin', sysdate(), '', null, '性别男');
-insert into sys_dict_data values(2,  2,  '女',       '1',       'sys_user_sex',        '',   '',        'N', '0', 'admin', sysdate(), '', null, '性别女');
-insert into sys_dict_data values(3,  3,  '未知',     '2',       'sys_user_sex',        '',   '',        'N', '0', 'admin', sysdate(), '', null, '性别未知');
-insert into sys_dict_data values(4,  1,  '显示',     '0',       'sys_show_hide',       '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '显示菜单');
-insert into sys_dict_data values(5,  2,  '隐藏',     '1',       'sys_show_hide',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '隐藏菜单');
-insert into sys_dict_data values(6,  1,  '正常',     '0',       'sys_normal_disable',  '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
-insert into sys_dict_data values(7,  2,  '停用',     '1',       'sys_normal_disable',  '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
-insert into sys_dict_data values(8,  1,  '正常',     '0',       'sys_job_status',      '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
-insert into sys_dict_data values(9,  2,  '暂停',     '1',       'sys_job_status',      '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
-insert into sys_dict_data values(10, 1,  '默认',     'DEFAULT', 'sys_job_group',       '',   '',        'Y', '0', 'admin', sysdate(), '', null, '默认分组');
-insert into sys_dict_data values(11, 2,  '系统',     'SYSTEM',  'sys_job_group',       '',   '',        'N', '0', 'admin', sysdate(), '', null, '系统分组');
-insert into sys_dict_data values(12, 1,  '是',       'Y',       'sys_yes_no',          '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '系统默认是');
-insert into sys_dict_data values(13, 2,  '否',       'N',       'sys_yes_no',          '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '系统默认否');
-insert into sys_dict_data values(14, 1,  '通知',     '1',       'sys_notice_type',     '',   'warning', 'Y', '0', 'admin', sysdate(), '', null, '通知');
-insert into sys_dict_data values(15, 2,  '公告',     '2',       'sys_notice_type',     '',   'success', 'N', '0', 'admin', sysdate(), '', null, '公告');
-insert into sys_dict_data values(16, 1,  '正常',     '0',       'sys_notice_status',   '',   'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态');
-insert into sys_dict_data values(17, 2,  '关闭',     '1',       'sys_notice_status',   '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '关闭状态');
-insert into sys_dict_data values(18, 99, '其他',     '0',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '其他操作');
-insert into sys_dict_data values(19, 1,  '新增',     '1',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '新增操作');
-insert into sys_dict_data values(20, 2,  '修改',     '2',       'sys_oper_type',       '',   'info',    'N', '0', 'admin', sysdate(), '', null, '修改操作');
-insert into sys_dict_data values(21, 3,  '删除',     '3',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '删除操作');
-insert into sys_dict_data values(22, 4,  '授权',     '4',       'sys_oper_type',       '',   'primary', 'N', '0', 'admin', sysdate(), '', null, '授权操作');
-insert into sys_dict_data values(23, 5,  '导出',     '5',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '导出操作');
-insert into sys_dict_data values(24, 6,  '导入',     '6',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '导入操作');
-insert into sys_dict_data values(25, 7,  '强退',     '7',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '强退操作');
-insert into sys_dict_data values(26, 8,  '生成代码', '8',       'sys_oper_type',       '',   'warning', 'N', '0', 'admin', sysdate(), '', null, '生成操作');
-insert into sys_dict_data values(27, 9,  '清空数据', '9',       'sys_oper_type',       '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '清空操作');
-insert into sys_dict_data values(28, 1,  '成功',     '0',       'sys_common_status',   '',   'primary', 'N', '0', 'admin', sysdate(), '', null, '正常状态');
-insert into sys_dict_data values(29, 2,  '失败',     '1',       'sys_common_status',   '',   'danger',  'N', '0', 'admin', sysdate(), '', null, '停用状态');
-
-
--- ----------------------------
--- 13、参数配置表
--- ----------------------------
-drop table if exists sys_config;
-create table sys_config (
-  config_id         int(5)          not null auto_increment    comment '参数主键',
-  config_name       varchar(100)    default ''                 comment '参数名称',
-  config_key        varchar(100)    default ''                 comment '参数键名',
-  config_value      varchar(500)    default ''                 comment '参数键值',
-  config_type       char(1)         default 'N'                comment '系统内置(Y是 N否)',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time       datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  remark            varchar(500)    default null               comment '备注',
-  primary key (config_id)
-) engine=innodb auto_increment=100 comment = '参数配置表';
-
-insert into sys_config values(1,  '主框架页-默认皮肤样式名称',     'sys.index.skinName',               'skin-blue',     'Y', 'admin', sysdate(), '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow');
-insert into sys_config values(2,  '用户管理-账号初始密码',         'sys.user.initPassword',            '123456',        'Y', 'admin', sysdate(), '', null, '初始化密码 123456');
-insert into sys_config values(3,  '主框架页-侧边栏主题',           'sys.index.sideTheme',              'theme-dark',    'Y', 'admin', sysdate(), '', null, '深黑主题theme-dark,浅色主题theme-light,深蓝主题theme-blue');
-insert into sys_config values(4,  '账号自助-是否开启用户注册功能', 'sys.account.registerUser',         'false',         'Y', 'admin', sysdate(), '', null, '是否开启注册用户功能(true开启,false关闭)');
-insert into sys_config values(5,  '用户管理-密码字符范围',         'sys.account.chrtype',              '0',             'Y', 'admin', sysdate(), '', null, '默认任意字符范围,0任意(密码可以输入任意字符),1数字(密码只能为0-9数字),2英文字母(密码只能为a-z和A-Z字母),3字母和数字(密码必须包含字母,数字),4字母数字和特殊字符(目前支持的特殊字符包括:~!@#$%^&*()-=_+)');
-insert into sys_config values(6,  '用户管理-初始密码修改策略',     'sys.account.initPasswordModify',   '1',             'Y', 'admin', sysdate(), '', null, '0:初始密码修改策略关闭,没有任何提示,1:提醒用户,如果未修改初始密码,则在登录时就会提醒修改密码对话框');
-insert into sys_config values(7,  '用户管理-账号密码更新周期',     'sys.account.passwordValidateDays', '0',             'Y', 'admin', sysdate(), '', null, '密码更新周期(填写数字,数据初始化值为0不限制,若修改必须为大于0小于365的正整数),如果超过这个周期登录系统时,则在登录时就会提醒修改密码对话框');
-insert into sys_config values(8,  '主框架页-菜单导航显示风格',     'sys.index.menuStyle',              'default',       'Y', 'admin', sysdate(), '', null, '菜单导航显示风格(default为左侧导航菜单,topnav为顶部导航菜单)');
-insert into sys_config values(9,  '主框架页-是否开启页脚',         'sys.index.footer',                 'true',          'Y', 'admin', sysdate(), '', null, '是否开启底部页脚显示(true显示,false隐藏)');
-insert into sys_config values(10, '主框架页-是否开启页签',         'sys.index.tagsView',               'true',          'Y', 'admin', sysdate(), '', null, '是否开启菜单多页签显示(true显示,false隐藏)');
-insert into sys_config values(11, '用户登录-黑名单列表',           'sys.login.blackIPList',            '',              'Y', 'admin', sysdate(), '', null, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)');
-
-
--- ----------------------------
--- 14、系统访问记录
--- ----------------------------
-drop table if exists sys_logininfor;
-create table sys_logininfor (
-  info_id        bigint(20)     not null auto_increment   comment '访问ID',
-  login_name     varchar(50)    default ''                comment '登录账号',
-  ipaddr         varchar(128)   default ''                comment '登录IP地址',
-  login_location varchar(255)   default ''                comment '登录地点',
-  browser        varchar(50)    default ''                comment '浏览器类型',
-  os             varchar(50)    default ''                comment '操作系统',
-  status         char(1)        default '0'               comment '登录状态(0成功 1失败)',
-  msg            varchar(255)   default ''                comment '提示消息',
-  login_time     datetime                                 comment '访问时间',
-  primary key (info_id),
-  key idx_sys_logininfor_s  (status),
-  key idx_sys_logininfor_lt (login_time)
-) engine=innodb auto_increment=100 comment = '系统访问记录';
-
-
--- ----------------------------
--- 15、在线用户记录
--- ----------------------------
-drop table if exists sys_user_online;
-create table sys_user_online (
-  sessionId         varchar(50)   default ''                comment '用户会话id',
-  login_name        varchar(50)   default ''                comment '登录账号',
-  dept_name         varchar(50)   default ''                comment '部门名称',
-  ipaddr            varchar(128)  default ''                comment '登录IP地址',
-  login_location    varchar(255)  default ''                comment '登录地点',
-  browser           varchar(50)   default ''                comment '浏览器类型',
-  os                varchar(50)   default ''                comment '操作系统',
-  status            varchar(10)   default ''                comment '在线状态on_line在线off_line离线',
-  start_timestamp   datetime                                comment 'session创建时间',
-  last_access_time  datetime                                comment 'session最后访问时间',
-  expire_time       int(5)        default 0                 comment '超时时间,单位为分钟',
-  primary key (sessionId)
-) engine=innodb comment = '在线用户记录';
-
-
--- ----------------------------
--- 16、定时任务调度表
--- ----------------------------
-drop table if exists sys_job;
-create table sys_job (
-  job_id              bigint(20)    not null auto_increment    comment '任务ID',
-  job_name            varchar(64)   default ''                 comment '任务名称',
-  job_group           varchar(64)   default 'DEFAULT'          comment '任务组名',
-  invoke_target       varchar(500)  not null                   comment '调用目标字符串',
-  cron_expression     varchar(255)  default ''                 comment 'cron执行表达式',
-  misfire_policy      varchar(20)   default '3'                comment '计划执行错误策略(1立即执行 2执行一次 3放弃执行)',
-  concurrent          char(1)       default '1'                comment '是否并发执行(0允许 1禁止)',
-  status              char(1)       default '0'                comment '状态(0正常 1暂停)',
-  create_by           varchar(64)   default ''                 comment '创建者',
-  create_time         datetime                                 comment '创建时间',
-  update_by           varchar(64)   default ''                 comment '更新者',
-  update_time         datetime                                 comment '更新时间',
-  remark              varchar(500)  default ''                 comment '备注信息',
-  primary key (job_id, job_name, job_group)
-) engine=innodb auto_increment=100 comment = '定时任务调度表';
-
-insert into sys_job values(1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams',        '0/10 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
-insert into sys_job values(2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')',  '0/15 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
-insert into sys_job values(3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)',  '0/20 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, '');
-
-
--- ----------------------------
--- 17、定时任务调度日志表
--- ----------------------------
-drop table if exists sys_job_log;
-create table sys_job_log (
-  job_log_id          bigint(20)     not null auto_increment    comment '任务日志ID',
-  job_name            varchar(64)    not null                   comment '任务名称',
-  job_group           varchar(64)    not null                   comment '任务组名',
-  invoke_target       varchar(500)   not null                   comment '调用目标字符串',
-  job_message         varchar(500)                              comment '日志信息',
-  status              char(1)        default '0'                comment '执行状态(0正常 1失败)',
-  exception_info      varchar(2000)  default ''                 comment '异常信息',
-  create_time         datetime                                  comment '创建时间',
-  primary key (job_log_id)
-) engine=innodb comment = '定时任务调度日志表';
-
-
--- ----------------------------
--- 18、通知公告表
--- ----------------------------
-drop table if exists sys_notice;
-create table sys_notice (
-  notice_id         int(4)          not null auto_increment    comment '公告ID',
-  notice_title      varchar(50)     not null                   comment '公告标题',
-  notice_type       char(1)         not null                   comment '公告类型(1通知 2公告)',
-  notice_content    longblob        default null               comment '公告内容',
-  status            char(1)         default '0'                comment '公告状态(0正常 1关闭)',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time       datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  remark            varchar(255)    default null               comment '备注',
-  primary key (notice_id)
-) engine=innodb auto_increment=10 comment = '通知公告表';
-
--- ----------------------------
--- 初始化-公告信息表数据
--- ----------------------------
-insert into sys_notice values('1', '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', sysdate(), '', null, '管理员');
-insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容',   '0', 'admin', sysdate(), '', null, '管理员');
-insert into sys_notice values('3', '若依开源框架介绍', '1', '<p><span style=\"color: rgb(230, 0, 0);\">项目介绍</span></p><p><font color=\"#333333\">RuoYi开源项目是为企业用户定制的后台脚手架框架,为企业打造的一站式解决方案,降低企业开发成本,提升开发效率。主要包括用户管理、角色管理、部门管理、菜单管理、参数管理、字典管理、</font><span style=\"color: rgb(51, 51, 51);\">岗位管理</span><span style=\"color: rgb(51, 51, 51);\">、定时任务</span><span style=\"color: rgb(51, 51, 51);\">、</span><span style=\"color: rgb(51, 51, 51);\">服务监控、登录日志、操作日志、代码生成等功能。其中,还支持多数据源、数据权限、国际化、Redis缓存、Docker部署、滑动验证码、第三方认证登录、分布式事务、</span><font color=\"#333333\">分布式文件存储</font><span style=\"color: rgb(51, 51, 51);\">、分库分表处理等技术特点。</span></p><p><img src=\"https://foruda.gitee.com/images/1705030583977401651/5ed5db6a_1151004.png\" style=\"width: 64px;\"><br></p><p><span style=\"color: rgb(230, 0, 0);\">官网及演示</span></p><p><span style=\"color: rgb(51, 51, 51);\">若依官网地址:&nbsp;</span><a href=\"http://ruoyi.vip\" target=\"_blank\">http://ruoyi.vip</a><a href=\"http://ruoyi.vip\" target=\"_blank\"></a></p><p><span style=\"color: rgb(51, 51, 51);\">若依文档地址:&nbsp;</span><a href=\"http://doc.ruoyi.vip\" target=\"_blank\">http://doc.ruoyi.vip</a><br></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【不分离版】:&nbsp;</span><a href=\"http://demo.ruoyi.vip\" target=\"_blank\">http://demo.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【分离版本】:&nbsp;</span><a href=\"http://vue.ruoyi.vip\" target=\"_blank\">http://vue.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【微服务版】:&nbsp;</span><a href=\"http://cloud.ruoyi.vip\" target=\"_blank\">http://cloud.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【移动端版】:&nbsp;</span><a href=\"http://h5.ruoyi.vip\" target=\"_blank\">http://h5.ruoyi.vip</a></p><p><br style=\"color: rgb(48, 49, 51); font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 12px;\"></p>', '0', 'admin', sysdate(), '', null, '管理员');
-
-
--- ----------------------------
--- 19、代码生成业务表
--- ----------------------------
-drop table if exists gen_table;
-create table gen_table (
-  table_id             bigint(20)      not null auto_increment    comment '编号',
-  table_name           varchar(200)    default ''                 comment '表名称',
-  table_comment        varchar(500)    default ''                 comment '表描述',
-  sub_table_name       varchar(64)     default null               comment '关联子表的表名',
-  sub_table_fk_name    varchar(64)     default null               comment '子表关联的外键名',
-  class_name           varchar(100)    default ''                 comment '实体类名称',
-  tpl_category         varchar(200)    default 'crud'             comment '使用的模板(crud单表操作 tree树表操作 sub主子表操作)',
-  package_name         varchar(100)                               comment '生成包路径',
-  module_name          varchar(30)                                comment '生成模块名',
-  business_name        varchar(30)                                comment '生成业务名',
-  function_name        varchar(50)                                comment '生成功能名',
-  function_author      varchar(50)                                comment '生成功能作者',
-  form_col_num         int(1)          default 1                  comment '表单布局(单列 双列 三列)',
-  gen_type             char(1)         default '0'                comment '生成代码方式(0zip压缩包 1自定义路径)',
-  gen_path             varchar(200)    default '/'                comment '生成路径(不填默认项目路径)',
-  options              varchar(1000)                              comment '其它生成选项',
-  create_by            varchar(64)     default ''                 comment '创建者',
-  create_time 	       datetime                                   comment '创建时间',
-  update_by            varchar(64)     default ''                 comment '更新者',
-  update_time          datetime                                   comment '更新时间',
-  remark               varchar(500)    default null               comment '备注',
-  primary key (table_id)
-) engine=innodb auto_increment=1 comment = '代码生成业务表';
-
-
--- ----------------------------
--- 20、代码生成业务表字段
--- ----------------------------
-drop table if exists gen_table_column;
-create table gen_table_column (
-  column_id         bigint(20)      not null auto_increment    comment '编号',
-  table_id          bigint(20)                                 comment '归属表编号',
-  column_name       varchar(200)                               comment '列名称',
-  column_comment    varchar(500)                               comment '列描述',
-  column_type       varchar(100)                               comment '列类型',
-  java_type         varchar(500)                               comment 'JAVA类型',
-  java_field        varchar(200)                               comment 'JAVA字段名',
-  is_pk             char(1)                                    comment '是否主键(1是)',
-  is_increment      char(1)                                    comment '是否自增(1是)',
-  is_required       char(1)                                    comment '是否必填(1是)',
-  is_insert         char(1)                                    comment '是否为插入字段(1是)',
-  is_edit           char(1)                                    comment '是否编辑字段(1是)',
-  is_list           char(1)                                    comment '是否列表字段(1是)',
-  is_query          char(1)                                    comment '是否查询字段(1是)',
-  query_type        varchar(200)    default 'EQ'               comment '查询方式(等于、不等于、大于、小于、范围)',
-  html_type         varchar(200)                               comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
-  dict_type         varchar(200)    default ''                 comment '字典类型',
-  sort              int                                        comment '排序',
-  create_by         varchar(64)     default ''                 comment '创建者',
-  create_time 	    datetime                                   comment '创建时间',
-  update_by         varchar(64)     default ''                 comment '更新者',
-  update_time       datetime                                   comment '更新时间',
-  primary key (column_id)
-) engine=innodb auto_increment=1 comment = '代码生成业务表字段';
\ No newline at end of file

--
Gitblit v1.7.1