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> 腾讯云服务器秒杀区 <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">¥免费开源</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"> - © 2018-2025 All Rights Reserved. RuoYi <br> + © 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 & 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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_blob_triggers.blob_data'>blob_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_qrtz_blob_triggers</td> - <td> ON sched_name, trigger_name, trigger_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_name, trigger_name, trigger_group ) ref <a href='#qrtz_triggers'>qrtz_triggers</a> (sched_name, trigger_name, trigger_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_qrtz_calendars</td> - <td> ON sched_name, calendar_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_cron_triggers.cron_expression'>cron_expression</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_cron_triggers.time_zone_id'>time_zone_id</a></td> - <td> varchar( 80 ) </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_qrtz_cron_triggers</td> - <td> ON sched_name, trigger_name, trigger_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_name, trigger_name, trigger_group ) ref <a href='#qrtz_triggers'>qrtz_triggers</a> (sched_name, trigger_name, trigger_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_name</a></td> - <td> varchar( 120 ) </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_id</a></td> - <td> varchar( 95 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_fired_triggers.trigger_name'>trigger_name</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_fired_triggers.trigger_group'>trigger_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_fired_triggers.instance_name'>instance_name</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_fired_triggers.fired_time'>fired_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_fired_triggers.sched_time'>sched_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( 16 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_fired_triggers.job_name'>job_name</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_fired_triggers.job_group'>job_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_fired_triggers.is_nonconcurrent'>is_nonconcurrent</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_fired_triggers.requests_recovery'>requests_recovery</a></td> - <td> varchar( 1 ) </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_qrtz_fired_triggers</td> - <td> ON sched_name, entry_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_job_details.description'>description</a></td> - <td> varchar( 250 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_job_details.job_class_name'>job_class_name</a></td> - <td> varchar( 250 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_job_details.is_durable'>is_durable</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_job_details.is_nonconcurrent'>is_nonconcurrent</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_job_details.is_update_data'>is_update_data</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_job_details.requests_recovery'>requests_recovery</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_job_details.job_data'>job_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_qrtz_job_details</td> - <td> ON sched_name, job_name, job_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 40 ) </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_qrtz_locks</td> - <td> ON sched_name, lock_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_name</a></td> - <td> varchar( 120 ) </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_group</a></td> - <td> varchar( 200 ) </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_qrtz_paused_trigger_grps</td> - <td> ON sched_name, trigger_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_scheduler_state.last_checkin_time'>last_checkin_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_scheduler_state.checkin_interval'>checkin_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_qrtz_scheduler_state</td> - <td> ON sched_name, instance_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_simple_triggers.repeat_count'>repeat_count</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_simple_triggers.repeat_interval'>repeat_interval</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_simple_triggers.times_triggered'>times_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_qrtz_simple_triggers</td> - <td> ON sched_name, trigger_name, trigger_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_name, trigger_name, trigger_group ) ref <a href='#qrtz_triggers'>qrtz_triggers</a> (sched_name, trigger_name, trigger_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.str_prop_1'>str_prop_1</a></td> - <td> varchar( 512 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.str_prop_2'>str_prop_2</a></td> - <td> varchar( 512 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.str_prop_3'>str_prop_3</a></td> - <td> varchar( 512 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.int_prop_1'>int_prop_1</a></td> - <td> int </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.int_prop_2'>int_prop_2</a></td> - <td> int </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.long_prop_1'>long_prop_1</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.long_prop_2'>long_prop_2</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.dec_prop_1'>dec_prop_1</a></td> - <td> decimal( 13, 4 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.dec_prop_2'>dec_prop_2</a></td> - <td> decimal( 13, 4 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.bool_prop_1'>bool_prop_1</a></td> - <td> varchar( 1 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_simprop_triggers.bool_prop_2'>bool_prop_2</a></td> - <td> varchar( 1 ) </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_qrtz_simprop_triggers</td> - <td> ON sched_name, trigger_name, trigger_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_name, trigger_name, trigger_group ) ref <a href='#qrtz_triggers'>qrtz_triggers</a> (sched_name, trigger_name, trigger_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_name</a></td> - <td> varchar( 120 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </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_name</a></td> - <td> varchar( 200 ) </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_group</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.description'>description</a></td> - <td> varchar( 250 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.next_fire_time'>next_fire_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.prev_fire_time'>prev_fire_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </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_state</a></td> - <td> varchar( 16 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_triggers.trigger_type'>trigger_type</a></td> - <td> varchar( 8 ) </td> - <td> </td> - </tr> - <tr> - <td>*</td> - <td><a name='qrtz_triggers.start_time'>start_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.end_time'>end_time</a></td> - <td> bigint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.calendar_name'>calendar_name</a></td> - <td> varchar( 200 ) </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.misfire_instr'>misfire_instr</a></td> - <td> smallint </td> - <td> </td> - </tr> - <tr> - <td> </td> - <td><a name='qrtz_triggers.job_data'>job_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_qrtz_triggers</td> - <td> ON sched_name, trigger_name, trigger_group</td> - <td> </td> - </tr> - <tr> <td><svg width='14' height='14'><use xlink:href='#idx'/></svg></td><td>sched_name</td> - <td> ON sched_name, job_name, job_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_name, job_name, job_group ) ref <a href='#qrtz_job_details'>qrtz_job_details</a> (sched_name, job_name, job_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 部门id </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.parent_id'>parent_id</a></td> - <td> int DEFAULT 0 </td> - <td> 父部门id </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.dept_name'>dept_name</a></td> - <td> varchar( 30 ) DEFAULT '' </td> - <td> 部门名称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.order_num'>order_num</a></td> - <td> int DEFAULT 0 </td> - <td> 显示顺序 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.leader'>leader</a></td> - <td> varchar( 20 ) DEFAULT '' </td> - <td> 负责人 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.phone'>phone</a></td> - <td> varchar( 20 ) DEFAULT '' </td> - <td> 联系电话 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.email'>email</a></td> - <td> varchar( 20 ) DEFAULT '' </td> - <td> 邮箱 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 部门状态:0正常,1停用 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dept.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dept.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dept.update_time'>update_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_sys_dept</td> - <td> ON dept_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_code</a></td> - <td> int AUTOINCREMENT </td> - <td> 字典编码 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.dict_sort'>dict_sort</a></td> - <td> int DEFAULT 0 </td> - <td> 字典排序 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.dict_label'>dict_label</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 字典标签 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.dict_value'>dict_value</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 字典键值 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.dict_type'>dict_type</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 字典类型 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 状态(0正常 1禁用) </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dict_data.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dict_data.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_data.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_dict_data</td> - <td> ON dict_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 字典主键 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_type.dict_name'>dict_name</a></td> - <td> varchar( 100 ) 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_type</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 字典类型 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_type.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 状态(0正常 1禁用) </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_type.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dict_type.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_type.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_dict_type.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_dict_type.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_dict_type</td> - <td> ON dict_id</td> - <td> </td> - </tr> - <tr> <td><svg width='14' height='14'><use xlink:href='#unq'/></svg></td><td>dict_type</td> - <td> ON dict_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_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_name</a></td> - <td> varchar( 64 ) 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_group</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 任务组名 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.method_name'>method_name</a></td> - <td> varchar( 500 ) DEFAULT '' </td> - <td> 任务方法 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.params'>params</a></td> - <td> varchar( 200 ) DEFAULT '' </td> - <td> 方法参数 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.cron_expression'>cron_expression</a></td> - <td> varchar( 255 ) DEFAULT '' </td> - <td> cron执行表达式 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 状态(0正常 1暂停) </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_job.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_job.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_job</td> - <td> ON job_id, job_name, job_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_log_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 任务日志ID </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_job_log.job_name'>job_name</a></td> - <td> varchar( 64 ) </td> - <td> 任务名称 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_job_log.job_group'>job_group</a></td> - <td> varchar( 64 ) </td> - <td> 任务组名 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job_log.method_name'>method_name</a></td> - <td> varchar( 500 ) </td> - <td> 任务方法 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job_log.params'>params</a></td> - <td> varchar( 200 ) DEFAULT '' </td> - <td> 方法参数 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job_log.job_message'>job_message</a></td> - <td> varchar( 500 ) </td> - <td> 日志信息 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job_log.is_exception'>is_exception</a></td> - <td> int DEFAULT 0 </td> - <td> 是否异常 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_job_log.exception_info'>exception_info</a></td> - <td> text </td> - <td> 异常信息 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_job_log.create_time'>create_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_sys_job_log</td> - <td> ON job_log_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 访问ID </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.login_name'>login_name</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 登录账号 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.ipaddr'>ipaddr</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 登录IP地址 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.browser'>browser</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 浏览器类型 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.os'>os</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 操作系统 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 登录状态 0成功 1失败 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_logininfor.msg'>msg</a></td> - <td> varchar( 255 ) DEFAULT '' </td> - <td> 提示消息 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_logininfor.login_time'>login_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_sys_logininfor</td> - <td> ON info_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 菜单ID </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_menu.menu_name'>menu_name</a></td> - <td> varchar( 50 ) </td> - <td> 菜单名称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.parent_id'>parent_id</a></td> - <td> int DEFAULT 0 </td> - <td> 父菜单ID </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.order_num'>order_num</a></td> - <td> int </td> - <td> 显示顺序 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.url'>url</a></td> - <td> varchar( 200 ) DEFAULT '' </td> - <td> 请求地址 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.menu_type'>menu_type</a></td> - <td> char( 1 ) DEFAULT '' </td> - <td> 类型:M目录,C菜单,F按钮 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.visible'>visible</a></td> - <td> int DEFAULT 0 </td> - <td> 菜单状态:0显示,1隐藏 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.perms'>perms</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 权限标识 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.icon'>icon</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 菜单图标 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_menu.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_menu.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_menu.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_menu</td> - <td> ON menu_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 日志主键 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.title'>title</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 模块标题 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.action'>action</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 功能请求 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.method'>method</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 方法名称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.channel'>channel</a></td> - <td> varchar( 20 ) DEFAULT '' </td> - <td> 来源渠道 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.login_name'>login_name</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 登录账号 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.dept_name'>dept_name</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 部门名称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.oper_url'>oper_url</a></td> - <td> varchar( 255 ) DEFAULT '' </td> - <td> 请求URL </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.oper_ip'>oper_ip</a></td> - <td> varchar( 30 ) DEFAULT '' </td> - <td> 主机地址 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.oper_param'>oper_param</a></td> - <td> varchar( 255 ) DEFAULT '' </td> - <td> 请求参数 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 操作状态 0正常 1异常 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_oper_log.error_msg'>error_msg</a></td> - <td> varchar( 2000 ) DEFAULT '' </td> - <td> 错误消息 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_oper_log.oper_time'>oper_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_sys_oper_log</td> - <td> ON oper_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 岗位ID </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_post.post_code'>post_code</a></td> - <td> varchar( 64 ) </td> - <td> 岗位编码 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_post.post_name'>post_name</a></td> - <td> varchar( 100 ) </td> - <td> 岗位名称 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_post.post_sort'>post_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> </td> - <td><a name='sys_post.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_post.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_post.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_post.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_post.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_post</td> - <td> ON post_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 角色ID </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_role.role_name'>role_name</a></td> - <td> varchar( 30 ) </td> - <td> 角色名称 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_role.role_key'>role_key</a></td> - <td> varchar( 100 ) </td> - <td> 角色权限字符串 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_role.role_sort'>role_sort</a></td> - <td> int </td> - <td> 显示顺序 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_role.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 角色状态:0正常,1禁用 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_role.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_role.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_role.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_role.update_time'>update_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> 更新时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_role.remark'>remark</a></td> - <td> varchar( 500 ) 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_sys_role</td> - <td> ON role_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_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_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_sys_role_menu</td> - <td> ON role_id, menu_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_id</a></td> - <td> int AUTOINCREMENT </td> - <td> 用户ID </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.dept_id'>dept_id</a></td> - <td> int </td> - <td> 部门ID </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.login_name'>login_name</a></td> - <td> varchar( 30 ) DEFAULT '' </td> - <td> 登录账号 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.user_name'>user_name</a></td> - <td> varchar( 30 ) DEFAULT '' </td> - <td> 用户昵称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.email'>email</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 用户邮箱 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.phonenumber'>phonenumber</a></td> - <td> varchar( 20 ) DEFAULT '' </td> - <td> 手机号码 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.password'>password</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 密码 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.salt'>salt</a></td> - <td> varchar( 100 ) DEFAULT '' </td> - <td> 盐加密 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.user_type'>user_type</a></td> - <td> char( 1 ) DEFAULT 'N' </td> - <td> 类型:Y默认用户,N非默认用户 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.status'>status</a></td> - <td> int DEFAULT 0 </td> - <td> 帐号状态:0正常,1禁用 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.refuse_des'>refuse_des</a></td> - <td> varchar( 500 ) DEFAULT '' </td> - <td> 拒绝登录描述 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.create_by'>create_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 创建者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_user.create_time'>create_time</a></td> - <td> timestamp DEFAULT CURRENT_TIMESTAMP </td> - <td> 创建时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user.update_by'>update_by</a></td> - <td> varchar( 64 ) DEFAULT '' </td> - <td> 更新者 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_user.update_time'>update_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_sys_user</td> - <td> ON user_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( 50 ) DEFAULT '' </td> - <td> 用户会话id </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.login_name'>login_name</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 登录账号 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.dept_name'>dept_name</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 部门名称 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.ipaddr'>ipaddr</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 登录IP地址 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.browser'>browser</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 浏览器类型 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.os'>os</a></td> - <td> varchar( 50 ) DEFAULT '' </td> - <td> 操作系统 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.status'>status</a></td> - <td> varchar( 10 ) DEFAULT '' </td> - <td> 在线状态on_line在线off_line离线 </td> - </tr> - <tr> - <td>*</td> - <td><a name='sys_user_online.start_timestamp'>start_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_access_time</a></td> - <td> timestamp DEFAULT '0000-00-00 00:00:00' </td> - <td> session最后访问时间 </td> - </tr> - <tr> - <td> </td> - <td><a name='sys_user_online.expire_time'>expire_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_sys_user_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_id</a></td> - <td> varchar( 64 ) </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_id</a></td> - <td> varchar( 64 ) </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_sys_user_post</td> - <td> ON user_id, post_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_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_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_sys_user_role</td> - <td> ON user_id, role_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=" - -[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&&Column] - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table] -Create=Yes -Drop=Yes -Comment=Yes -Permission=No - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create] -Check=Yes -Physical Options=Yes -Header=Yes -Footer=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create\Check] -Constraint declaration=No - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column] -User datatype=No -Default value=Yes -Check=Yes -Physical Options=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column\Check] -Constraint declaration=No - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key] - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key] -Create=Yes -Drop=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] -Constraint declaration=No -Physical Options=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key] -Create=Yes -Drop=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] -Constraint declaration=No -Physical Options=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key] -Create=Yes -Drop=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key\Create] -Constraint declaration=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index] -Create=Yes -Drop=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Create] -Constraint declaration=Yes -Physical Options=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Filter] -Primary key=No -Foreign key=No -Alternate key=No -Cluster=Yes -Other=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger] -Create=Yes -Drop=Yes -Comment=Yes - -[FolderOptions\Physical Objects\Database Generation\Table&&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=" -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='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" -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='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" -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=!""#$%&'()*+,-./:;<=>?@[\]^_`{|}~ -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=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Object Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> -ELnkShowStrn=Yes -ELnkShowName=Yes -ExtendedLink_SymbolLayout=<Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Source" >[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] </Form>[CRLF]</Form> -FileObject.Stereotype=No -FileObject.DisplayName=Yes -FileObject.LocationOrName=No -FileObject.IconPicture=No -FileObject.IconMode=Yes -FileObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Location" Attribute="LocationOrName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> -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=""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=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No" Filters="&quot;All Columns&quot; PDMCOLNALL &quot;&quot;\r\n&quot;PK Columns&quot; PDMCOLNPK &quot;PRIM \&quot;TRUE\&quot; TRUE&quot;\r\n&quot;Key Columns&quot; PDMCOLNKEY &quot;KEYS \&quot;TRUE\&quot; TRUE&quot;" HasLimit="Yes" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Keys" Collection="Keys" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Triggers" Collection="Triggers" Columns="Stereotype No\r\nDisplayName Yes" HasLimit="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> -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=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nIndexIndicator No" HasLimit="Yes" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Tables" Collection="TemporaryVTables" Columns="Name Yes" HasLimit="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="DisplayName Yes" HasLimit="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> -Procedure.Stereotype=No -Procedure.DisplayName=Yes -Procedure.OwnerDisplayName=No -Procedure.Comment=No -Procedure.IconPicture=No -Procedure_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> -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=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Cardinality" Attribute="Cardinality" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Implementation" Attribute="ImplementationType" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Cons&amp;traint Name" Attribute="ForeignKeyConstraintName" Prefix="" Suffix="" Caption="Cons&amp;traint Name" Mandatory="No" />[CRLF] <StandardAttribute Name="Join" Attribute="JoinExpression" Prefix="" Suffix="" Caption="Join" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Referential integrity" Attribute="Integrity" Prefix="" Suffix="" Caption="Referential integrity" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> -ViewReference.ChildRole=Yes -ViewReference.Stereotype=Yes -ViewReference.DisplayName=No -ViewReference.JoinExpression=No -ViewReference.ParentRole=Yes -ViewReference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Join Expression" Attribute="JoinExpression" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> -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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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>''</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);\">若依官网地址: </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);\">若依文档地址: </span><a href=\"http://doc.ruoyi.vip\" target=\"_blank\">http://doc.ruoyi.vip</a><br></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【不分离版】: </span><a href=\"http://demo.ruoyi.vip\" target=\"_blank\">http://demo.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【分离版本】: </span><a href=\"http://vue.ruoyi.vip\" target=\"_blank\">http://vue.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【微服务版】: </span><a href=\"http://cloud.ruoyi.vip\" target=\"_blank\">http://cloud.ruoyi.vip</a></p><p><span style=\"color: rgb(51, 51, 51);\">演示地址【移动端版】: </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: "Helvetica Neue", 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