From bece56c34a87f3ad3095a266a242a1bde745a0fb Mon Sep 17 00:00:00 2001
From: wangzhijiang <1358525938@qq.com>
Date: Tue, 12 Mar 2024 14:57:18 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E6=A8=A1?=
=?UTF-8?q?=E5=9D=97,=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E8=B0=83?=
=?UTF-8?q?=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../nacos/jero-gateway-router.json | 60 -
.../jero-boot-starter-cloud/nacos/jero.yaml | 321 -
.../jero-boot-starter-cloud/pom.xml | 58 -
.../java/com/jero/config/FeignConfig.java | 170 -
.../cloud/config/PersonBeanConfiguration.java | 24 -
.../cloud/feign/IJeroFeignService.java | 6 -
.../cloud/feign/impl/JeroFeignService.java | 62 -
.../jero-boot-starter-job/pom.xml | 21 -
.../job/config/XxlJobConfiguration.java | 46 -
.../starter/job/prop/XxlJobProperties.java | 35 -
.../main/resources/META-INF/spring.factories | 2 -
.../jero-boot-starter-lock/pom.xml | 37 -
.../boot/starter/lock/annotation/JLock.java | 57 -
.../boot/starter/lock/annotation/JRepeat.java | 36 -
.../starter/lock/annotation/LockConstant.java | 72 -
.../boot/starter/lock/aspect/BaseAspect.java | 67 -
.../lock/aspect/DistributedLockHandler.java | 166 -
.../lock/aspect/RepeatSubmitAspect.java | 80 -
.../lock/client/RedissonLockClient.java | 143 -
.../lock/config/RedissonConfiguration.java | 36 -
.../starter/lock/core/RedissonManager.java | 98 -
.../core/strategy/RedissonConfigStrategy.java | 21 -
.../ClusterRedissonConfigStrategyImpl.java | 43 -
...MasterslaveRedissonConfigStrategyImpl.java | 54 -
.../SentinelRedissonConfigStrategyImpl.java | 47 -
.../StandaloneRedissonConfigStrategyImpl.java | 40 -
.../starter/lock/enums/GlobalConstant.java | 21 -
.../boot/starter/lock/enums/LockModel.java | 22 -
.../lock/enums/RedisConnectionType.java | 39 -
.../starter/lock/prop/RedissonProperties.java | 39 -
.../main/resources/META-INF/spring.factories | 4 -
.../boot/starter/lock/test/LockService.java | 59 -
.../jero/boot/starter/lock/test/LockTest.java | 69 -
.../lock/test/LockTestApplication.java | 15 -
.../jero/boot/starter/lock/test/TestUser.java | 9 -
.../src/test/resources/application.yml | 19 -
.../jero-boot-starter-rabbitmq/pom.xml | 21 -
.../rabbitmq/client/RabbitMqClient.java | 364 -
.../rabbitmq/config/RabbitMqConfig.java | 66 -
.../rabbitmq/core/BaseRabbiMqHandler.java | 35 -
.../rabbitmq/core/MapMessageConverter.java | 36 -
.../rabbitmq/event/BaseApplicationEvent.java | 28 -
.../boot/starter/rabbitmq/event/EventObj.java | 21 -
.../rabbitmq/event/JeroBusEventHandler.java | 8 -
.../event/JeroRemoteApplicationEvent.java | 29 -
.../exchange/DelayExchangeBuilder.java | 36 -
.../rabbitmq/listenter/MqListener.java | 10 -
.../jero-boot-starter/pom.xml | 41 -
.../jero-cloud-module/docker-compose.yml | 92 -
.../jero-cloud-gateway/Dockerfile | 15 -
.../jero-cloud-gateway/pom.xml | 105 -
.../java/com/jero/JeroGatewayApplication.java | 34 -
.../config/GatewayRoutersConfiguration.java | 110 -
.../jero/config/RateLimiterConfiguration.java | 43 -
.../java/com/jero/config/RouterDataType.java | 22 -
.../com/jero/fallback/FallbackController.java | 32 -
.../jero/filter/GlobalAccessTokenFilter.java | 54 -
.../filter/SentinelFilterContextConfig.java | 26 -
.../jero/handler/HystrixFallbackHandler.java | 34 -
.../com/jero/handler/LoderRouderHandler.java | 27 -
.../handler/MySwaggerResourceProvider.java | 67 -
.../handler/SwaggerResourceController.java | 39 -
.../com/jero/loader/DynamicRouteLoader.java | 290 -
.../com/jero/loader/DynamicRouteService.java | 96 -
.../java/com/jero/loader/GatewayRouteVo.java | 16 -
.../com/jero/loader/MyRouteDefinition.java | 38 -
.../src/main/resources/application.yml | 61 -
.../src/main/resources/bootstrap.yml | 47 -
.../src/main/resources/logback-spring.xml | 44 -
.../jero-cloud-monitor/pom.xml | 65 -
.../jero/monitor/JeroMonitorApplication.java | 16 -
.../monitor/config/SecuritySecureConfig.java | 52 -
.../src/main/resources/application.yml | 41 -
.../jero-cloud-nacos/Dockerfile | 15 -
.../jero-cloud-nacos/pom.xml | 75 -
.../alibaba/nacos/JeroNacosApplication.java | 37 -
.../src/main/resources/application.yml | 54 -
.../jero-cloud-sentinel/pom.xml | 111 -
.../JeroSentinelDashboardApplication.java | 49 -
.../src/main/resources/application.properties | 28 -
.../jero-cloud-system-start/Dockerfile | 15 -
.../jero-cloud-system-start/pom.xml | 64 -
.../com/jero/JeroSystemCloudApplication.java | 48 -
.../modules/cloud/constant/CloudConstant.java | 33 -
.../jero/modules/cloud/ebus/DemoBusEvent.java | 27 -
.../controller/JeroTestFeignController.java | 62 -
.../cloud/feign/feign/JeroTestClient.java | 20 -
.../cloud/feign/feign/JeroTestClientDyn.java | 14 -
.../fallback/JeroTestClientFallback.java | 17 -
.../jero/modules/cloud/lock/DemoLockTest.java | 65 -
.../cloud/rabbitmq/HelloReceiver1.java | 36 -
.../cloud/rabbitmq/HelloReceiver2.java | 36 -
.../cloud/rabbitmq/HelloReceiver3.java | 35 -
.../cloud/rabbitmq/HelloTimeReceiver.java | 32 -
.../modules/cloud/xxljob/DemoJobHandler.java | 235 -
.../src/main/resources/application.yml | 6 -
.../src/main/resources/bootstrap.yml | 44 -
.../src/main/resources/logback-spring.xml | 149 -
.../jero-cloud-xxljob/Dockerfile | 16 -
.../jero-cloud-xxljob/README.md | 25 -
.../doc/db/tables_xxl_job.sql | 119 -
.../jero-cloud-xxljob/pom.xml | 87 -
.../xxl/job/admin/XxlJobAdminApplication.java | 16 -
.../job/admin/controller/IndexController.java | 84 -
.../admin/controller/JobApiController.java | 72 -
.../admin/controller/JobCodeController.java | 96 -
.../admin/controller/JobGroupController.java | 202 -
.../admin/controller/JobInfoController.java | 171 -
.../admin/controller/JobLogController.java | 231 -
.../job/admin/controller/UserController.java | 174 -
.../annotation/PermissionLimit.java | 29 -
.../interceptor/CookieInterceptor.java | 43 -
.../interceptor/PermissionInterceptor.java | 58 -
.../controller/interceptor/WebMvcConfig.java | 28 -
.../resolver/WebExceptionResolver.java | 63 -
.../xxl/job/admin/core/alarm/JobAlarm.java | 20 -
.../xxl/job/admin/core/alarm/JobAlarmer.java | 65 -
.../admin/core/alarm/impl/EmailJobAlarm.java | 118 -
.../admin/core/conf/XxlJobAdminConfig.java | 156 -
.../job/admin/core/cron/CronExpression.java | 1809 ---
.../admin/core/exception/XxlJobException.java | 14 -
.../xxl/job/admin/core/model/XxlJobGroup.java | 67 -
.../xxl/job/admin/core/model/XxlJobInfo.java | 218 -
.../xxl/job/admin/core/model/XxlJobLog.java | 157 -
.../job/admin/core/model/XxlJobLogGlue.java | 75 -
.../job/admin/core/model/XxlJobLogReport.java | 54 -
.../job/admin/core/model/XxlJobRegistry.java | 55 -
.../xxl/job/admin/core/model/XxlJobUser.java | 73 -
.../job/admin/core/old/RemoteHttpJobBean.java | 0
.../core/old/XxlJobDynamicScheduler.java | 0
.../job/admin/core/old/XxlJobThreadPool.java | 0
.../core/route/ExecutorRouteStrategyEnum.java | 48 -
.../job/admin/core/route/ExecutorRouter.java | 24 -
.../route/strategy/ExecutorRouteBusyover.java | 48 -
.../strategy/ExecutorRouteConsistentHash.java | 79 -
.../route/strategy/ExecutorRouteFailover.java | 48 -
.../route/strategy/ExecutorRouteFirst.java | 19 -
.../core/route/strategy/ExecutorRouteLFU.java | 87 -
.../core/route/strategy/ExecutorRouteLRU.java | 73 -
.../route/strategy/ExecutorRouteLast.java | 19 -
.../route/strategy/ExecutorRouteRandom.java | 23 -
.../route/strategy/ExecutorRouteRound.java | 53 -
.../admin/core/scheduler/XxlJobScheduler.java | 101 -
.../core/thread/JobFailMonitorHelper.java | 118 -
.../admin/core/thread/JobLogReportHelper.java | 157 -
.../core/thread/JobLosedMonitorHelper.java | 96 -
.../core/thread/JobRegistryMonitorHelper.java | 127 -
.../admin/core/thread/JobScheduleHelper.java | 378 -
.../core/thread/JobTriggerPoolHelper.java | 135 -
.../admin/core/trigger/TriggerTypeEnum.java | 26 -
.../job/admin/core/trigger/XxlJobTrigger.java | 249 -
.../xxl/job/admin/core/util/CookieUtil.java | 101 -
.../com/xxl/job/admin/core/util/FtlUtil.java | 33 -
.../com/xxl/job/admin/core/util/I18nUtil.java | 89 -
.../xxl/job/admin/core/util/JacksonUtil.java | 80 -
.../job/admin/core/util/LocalCacheUtil.java | 138 -
.../com/xxl/job/admin/dao/XxlJobGroupDao.java | 37 -
.../com/xxl/job/admin/dao/XxlJobInfoDao.java | 49 -
.../com/xxl/job/admin/dao/XxlJobLogDao.java | 62 -
.../xxl/job/admin/dao/XxlJobLogGlueDao.java | 24 -
.../xxl/job/admin/dao/XxlJobLogReportDao.java | 26 -
.../xxl/job/admin/dao/XxlJobRegistryDao.java | 38 -
.../com/xxl/job/admin/dao/XxlJobUserDao.java | 31 -
.../xxl/job/admin/service/LoginService.java | 109 -
.../xxl/job/admin/service/XxlJobService.java | 86 -
.../job/admin/service/impl/AdminBizImpl.java | 183 -
.../admin/service/impl/XxlJobServiceImpl.java | 403 -
.../src/main/resources/application.yml | 77 -
.../main/resources/i18n/message_en.properties | 264 -
.../resources/i18n/message_zh_CN.properties | 264 -
.../resources/i18n/message_zh_TC.properties | 264 -
.../src/main/resources/logback.xml | 29 -
.../mybatis-mapper/XxlJobGroupMapper.xml | 88 -
.../mybatis-mapper/XxlJobInfoMapper.xml | 229 -
.../mybatis-mapper/XxlJobLogGlueMapper.xml | 71 -
.../mybatis-mapper/XxlJobLogMapper.xml | 261 -
.../mybatis-mapper/XxlJobLogReportMapper.xml | 62 -
.../mybatis-mapper/XxlJobRegistryMapper.xml | 62 -
.../mybatis-mapper/XxlJobUserMapper.xml | 87 -
.../Ionicons/css/ionicons.min.css | 11 -
.../Ionicons/fonts/ionicons.eot | Bin 120724 -> 0 bytes
.../Ionicons/fonts/ionicons.svg | 2230 ----
.../Ionicons/fonts/ionicons.ttf | Bin 188508 -> 0 bytes
.../Ionicons/fonts/ionicons.woff | Bin 67904 -> 0 bytes
.../bower_components/PACE/pace.min.js | 2 -
.../PACE/themes/blue/pace-theme-flash.css | 77 -
.../daterangepicker.css | 269 -
.../daterangepicker.js | 1653 ---
.../bootstrap/css/bootstrap.min.css | 6 -
.../bootstrap/css/bootstrap.min.css.map | 1 -
.../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
.../fonts/glyphicons-halflings-regular.svg | 288 -
.../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
.../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
.../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
.../bootstrap/js/bootstrap.min.js | 7 -
.../css/dataTables.bootstrap.min.css | 1 -
.../js/dataTables.bootstrap.min.js | 8 -
.../js/jquery.dataTables.min.js | 166 -
.../bower_components/fastclick/fastclick.js | 841 --
.../font-awesome/css/font-awesome.css.map | 7 -
.../font-awesome/css/font-awesome.min.css | 4 -
.../font-awesome/fonts/FontAwesome.otf | Bin 134808 -> 0 bytes
.../fonts/fontawesome-webfont.eot | Bin 165742 -> 0 bytes
.../fonts/fontawesome-webfont.svg | 2671 -----
.../fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes
.../fonts/fontawesome-webfont.woff | Bin 98024 -> 0 bytes
.../fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes
.../jquery.slimscroll.min.js | 16 -
.../bower_components/jquery/jquery.min.js | 2 -
.../bower_components/moment/moment.min.js | 1 -
.../static/adminlte/dist/css/AdminLTE.min.css | 7 -
.../dist/css/skins/_all-skins.min.css | 1 -
.../static/adminlte/dist/js/adminlte.min.js | 14 -
.../adminlte/plugins/iCheck/icheck.min.js | 10 -
.../adminlte/plugins/iCheck/square/blue.css | 62 -
.../adminlte/plugins/iCheck/square/blue.png | Bin 2185 -> 0 bytes
.../plugins/iCheck/square/blue@2x.png | Bin 4485 -> 0 bytes
.../src/main/resources/static/favicon.ico | Bin 4286 -> 0 bytes
.../src/main/resources/static/js/common.1.js | 156 -
.../src/main/resources/static/js/index.js | 207 -
.../resources/static/js/jobcode.index.1.js | 97 -
.../resources/static/js/jobgroup.index.1.js | 359 -
.../resources/static/js/jobinfo.index.1.js | 682 --
.../resources/static/js/joblog.detail.1.js | 91 -
.../resources/static/js/joblog.index.1.js | 391 -
.../src/main/resources/static/js/login.1.js | 66 -
.../main/resources/static/js/user.index.1.js | 328 -
.../codemirror/addon/hint/anyword-hint.js | 41 -
.../codemirror/addon/hint/show-hint.css | 36 -
.../codemirror/addon/hint/show-hint.js | 434 -
.../plugins/codemirror/lib/codemirror.css | 346 -
.../plugins/codemirror/lib/codemirror.js | 9698 -----------------
.../plugins/codemirror/mode/clike/clike.js | 879 --
.../codemirror/mode/javascript/javascript.js | 899 --
.../static/plugins/codemirror/mode/php/php.js | 234 -
.../codemirror/mode/powershell/powershell.js | 398 -
.../plugins/codemirror/mode/python/python.js | 409 -
.../plugins/codemirror/mode/shell/shell.js | 152 -
.../static/plugins/cronGen/cronGen.js | 1079 --
.../static/plugins/cronGen/cronGen_en.js | 1079 --
.../plugins/echarts/echarts.common.min.js | 22 -
.../static/plugins/jquery/jquery.cookie.js | 117 -
.../plugins/jquery/jquery.validate.min.js | 4 -
.../resources/static/plugins/layer/layer.js | 2 -
.../plugins/layer/theme/default/icon-ext.png | Bin 5911 -> 0 bytes
.../plugins/layer/theme/default/icon.png | Bin 11493 -> 0 bytes
.../plugins/layer/theme/default/layer.css | 1 -
.../plugins/layer/theme/default/loading-0.gif | Bin 5793 -> 0 bytes
.../plugins/layer/theme/default/loading-1.gif | Bin 701 -> 0 bytes
.../plugins/layer/theme/default/loading-2.gif | Bin 1787 -> 0 bytes
.../templates/common/common.exception.ftl | 31 -
.../templates/common/common.macro.ftl | 239 -
.../src/main/resources/templates/help.ftl | 47 -
.../src/main/resources/templates/index.ftl | 147 -
.../templates/jobcode/jobcode.index.ftl | 164 -
.../templates/jobgroup/jobgroup.index.ftl | 172 -
.../templates/jobinfo/jobinfo.index.ftl | 440 -
.../templates/joblog/joblog.detail.ftl | 73 -
.../templates/joblog/joblog.index.ftl | 180 -
.../src/main/resources/templates/login.ftl | 45 -
.../resources/templates/user/user.index.ftl | 188 -
.../jero-cloud-module/pom.xml | 23 -
.../src/main/resources/application-dev.yml | 64 -
.../src/main/resources/application-prod.yml | 64 -
.../src/main/resources/application-test.yml | 65 -
266 files changed, 43620 deletions(-)
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero-gateway-router.json
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero.yaml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/config/FeignConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/config/PersonBeanConfiguration.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/IJeroFeignService.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/impl/JeroFeignService.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/config/XxlJobConfiguration.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/prop/XxlJobProperties.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/resources/META-INF/spring.factories
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JLock.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JRepeat.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/LockConstant.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/BaseAspect.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/DistributedLockHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/RepeatSubmitAspect.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/client/RedissonLockClient.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/config/RedissonConfiguration.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/RedissonManager.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/RedissonConfigStrategy.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/GlobalConstant.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/LockModel.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/RedisConnectionType.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/prop/RedissonProperties.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/resources/META-INF/spring.factories
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockService.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTest.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTestApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/TestUser.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/client/RabbitMqClient.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/config/RabbitMqConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/MapMessageConverter.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/BaseApplicationEvent.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/EventObj.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroBusEventHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroRemoteApplicationEvent.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/listenter/MqListener.java
delete mode 100644 byd-structuredplugins-serve/jero-boot-starter/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/docker-compose.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/Dockerfile
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/JeroGatewayApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/GatewayRoutersConfiguration.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RateLimiterConfiguration.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RouterDataType.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/fallback/FallbackController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/GlobalAccessTokenFilter.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/SentinelFilterContextConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/HystrixFallbackHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/LoderRouderHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/MySwaggerResourceProvider.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/SwaggerResourceController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteLoader.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteService.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/GatewayRouteVo.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/MyRouteDefinition.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/bootstrap.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/logback-spring.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/JeroMonitorApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/config/SecuritySecureConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/Dockerfile
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/java/com/alibaba/nacos/JeroNacosApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeroSentinelDashboardApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/resources/application.properties
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/Dockerfile
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/JeroSystemCloudApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/constant/CloudConstant.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/ebus/DemoBusEvent.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/controller/JeroTestFeignController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClient.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClientDyn.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/fallback/JeroTestClientFallback.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/lock/DemoLockTest.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver1.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver2.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver3.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloTimeReceiver.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/xxljob/DemoJobHandler.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/bootstrap.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/logback-spring.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/Dockerfile
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/README.md
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/doc/db/tables_xxl_job.sql
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/pom.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/application.yml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_en.properties
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/logback.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css.map
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/moment/moment.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/dist/js/adminlte.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/favicon.ico
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/common.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/index.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/jobcode.index.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/jobgroup.index.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/jobinfo.index.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/joblog.detail.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/joblog.index.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/login.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/js/user.index.1.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/clike/clike.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/php/php.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/python/python.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/shell/shell.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen_en.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/echarts/echarts.common.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.cookie.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.validate.min.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/layer.js
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon-ext.png
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon.png
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/layer.css
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-0.gif
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-1.gif
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-2.gif
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/common/common.exception.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/common/common.macro.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/help.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/jobcode/jobcode.index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/jobgroup/jobgroup.index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/jobinfo/jobinfo.index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/joblog/joblog.detail.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/joblog/joblog.index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/login.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/templates/user/user.index.ftl
delete mode 100644 byd-structuredplugins-serve/jero-cloud-module/pom.xml
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero-gateway-router.json b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero-gateway-router.json
deleted file mode 100644
index 2232333..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero-gateway-router.json
+++ /dev/null
@@ -1,60 +0,0 @@
-[{
- "id": "jero-system",
- "order": 0,
- "predicates": [{
- "name": "Path",
- "args": {
- "_genkey_0": "/sys/**",
- "_genkey_1": "/eoa/**",
- "_genkey_2": "/joa/**",
- "_genkey_3": "/jmreport/**",
- "_genkey_4": "/bigscreen/**",
- "_genkey_5": "/desform/**",
- "_genkey_6": "/online/**",
- "_genkey_8": "/act/**",
- "_genkey_9": "/plug-in/**",
- "_genkey_10": "/generic/**",
- "_genkey_11": "/v1/**"
- }
- }],
- "filters": [],
- "uri": "lb://jero-system"
-}, {
- "id": "jero-demo",
- "order": 1,
- "predicates": [{
- "name": "Path",
- "args": {
- "_genkey_0": "/mock/**",
- "_genkey_1": "/test/**",
- "_genkey_2": "/bigscreen/template1/**",
- "_genkey_3": "/bigscreen/template2/**"
- }
- }],
- "filters": [],
- "uri": "lb://jero-demo"
-}, {
- "id": "jero-system-websocket",
- "order": 2,
- "predicates": [{
- "name": "Path",
- "args": {
- "_genkey_0": "/websocket/**",
- "_genkey_1": "/eoaSocket/**",
- "_genkey_2": "/newsWebsocket/**"
- }
- }],
- "filters": [],
- "uri": "lb:ws://jero-system"
-}, {
- "id": "jero-demo-websocket",
- "order": 3,
- "predicates": [{
- "name": "Path",
- "args": {
- "_genkey_0": "/vxeSocket/**"
- }
- }],
- "filters": [],
- "uri": "lb:ws://jero-demo"
-}]
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero.yaml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero.yaml
deleted file mode 100644
index 18a8c94..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/nacos/jero.yaml
+++ /dev/null
@@ -1,321 +0,0 @@
-# 标准配置的模板,可自行删减
-server:
- tomcat:
- max-swallow-size: -1
- error:
- include-exception: true
- include-stacktrace: ALWAYS
- include-message: ALWAYS
- compression:
- enabled: true
- min-response-size: 1024
- mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
-management:
- health:
- mail:
- enabled: false
- endpoints:
- web:
- exposure:
- include: "*" #暴露所有节点
- health:
- sensitive: true #关闭过滤敏感信息
- endpoint:
- health:
- show-details: ALWAYS #显示详细信息
-spring:
- servlet:
- multipart:
- max-file-size: 10MB
- max-request-size: 10MB
- mail:
- host: smtp.163.com
- username: test@163.com
- password: ??
- properties:
- mail:
- smtp:
- auth: true
- starttls:
- enable: true
- required: true
- ## quartz定时任务,采用数据库方式
- quartz:
- job-store-type: jdbc
- initialize-schema: embedded
- #定时任务启动开关,true-开 false-关
- auto-startup: true
- #启动时更新己存在的Job
- overwrite-existing-jobs: true
- properties:
- org:
- quartz:
- scheduler:
- instanceName: MyScheduler
- instanceId: AUTO
- jobStore:
- class: org.quartz.impl.jdbcjobstore.JobStoreTX
- driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
- tablePrefix: QRTZ_
- isClustered: true
- misfireThreshold: 60000
- clusterCheckinInterval: 10000
- threadPool:
- class: org.quartz.simpl.SimpleThreadPool
- threadCount: 10
- threadPriority: 5
- threadsInheritContextClassLoaderOfInitializingThread: true
- #json 时间戳统一转换
- jackson:
- date-format: yyyy-MM-dd HH:mm:ss
- time-zone: GMT+8
- jpa:
- open-in-view: false
- activiti:
- check-process-definitions: false
- #启用作业执行器
- async-executor-activate: false
- #启用异步执行器
- job-executor-activate: false
- aop:
- proxy-target-class: true
- #配置freemarker
- freemarker:
- # 设置模板后缀名
- suffix: .ftl
- # 设置文档类型
- content-type: text/html
- # 设置页面编码格式
- charset: UTF-8
- # 设置页面缓存
- cache: false
- prefer-file-system-access: false
- # 设置ftl文件路径
- template-loader-path:
- - classpath:/templates
- # 设置静态文件路径,js,css等
- mvc:
- static-path-pattern: /**
- resource:
- static-locations: classpath:/static/,classpath:/public/
- autoconfigure:
- exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
- datasource:
- druid:
- stat-view-servlet:
- enabled: true
- loginUsername: druid
- loginPassword: druid
- allow:
- web-stat-filter:
- enabled: true
- dynamic:
- druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
- # 连接池的配置信息
- # 初始化大小,最小,最大
- initial-size: 5
- min-idle: 5
- maxActive: 20
- # 配置获取连接等待超时的时间
- maxWait: 60000
- # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
- timeBetweenEvictionRunsMillis: 60000
- # 配置一个连接在池中最小生存的时间,单位是毫秒
- minEvictableIdleTimeMillis: 300000
- validationQuery: SELECT 1
- testWhileIdle: true
- testOnBorrow: false
- testOnReturn: false
- # 打开PSCache,并且指定每个连接上PSCache的大小
- poolPreparedStatements: true
- maxPoolPreparedStatementPerConnectionSize: 20
- # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
- filters: stat,wall,slf4j
- # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
- connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000;druid.stat.logSlowSql\=true
- datasource:
- master:
- url: jdbc:mysql://127.0.0.1:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
- username: root
- password: 123456
- driver-class-name: com.mysql.cj.jdbc.Driver
- # url: jdbc:mysql://127.0.0.1:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
- # username: root
- # password: 123456
- # driver-class-name: com.mysql.cj.jdbc.Driver
- # 多数据源配置
- #multi-datasource1:
- #url: jdbc:mysql://localhost:3306/jero-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
- #username: root
- #password: root
- #driver-class-name: com.mysql.cj.jdbc.Driver
- #redis 配置
- redis:
- database: 3
- host: 121.36.69.172
- lettuce:
- pool:
- max-active: 8 #最大连接数据库连接数,设 0 为没有限制
- max-idle: 8 #最大等待连接中的数量,设 0 为没有限制
- max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
- min-idle: 0 #最小等待连接中的数量,设 0 为没有限制
- shutdown-timeout: 100ms
- password: 'hzwlsoft.com'
- port: 4780
- #rabbitmq 配置
- rabbitmq:
- host: 121.36.69.172
- username: admin
- password: hzwlsoft.com
- port: 5672
- publisher-confirm-type: correlated
- publisher-returns: true
- virtual-host: /
- listener:
- simple:
- acknowledge-mode: manual
- #消费者的最小数量
- concurrency: 1
- #消费者的最大数量
- max-concurrency: 1
- #是否支持重试
- retry:
- enabled: true
-#mybatis plus 设置
-mybatis-plus:
- mapper-locations: classpath*:com/jero/**/xml/*Mapper.xml
- global-config:
- # 关闭MP3.0自带的banner
- banner: false
- db-config:
- #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
- id-type: ASSIGN_ID
- # 默认数据库表下划线命名
- table-underline: true
- configuration:
- # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- # 返回类型为Map,显示null对应的字段
- call-setters-on-nulls: true
-#jero专用配置
-jero :
- # 签名密钥串(前后端要一致,正式发布请自行修改)
- signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
- # 本地:local\Minio:minio\阿里云:alioss
- uploadType: local
- path :
- #文件上传根目录 设置
- upload: D://opt//upFiles
- #webapp文件路径
- webapp: D://opt//webapp
- shiro:
- excludeUrls: /test/jeroDemo/demo3,/test/jeroDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
- #阿里云oss存储配置
- oss:
- endpoint: oss-cn-beijing.aliyuncs.com
- accessKey: ??
- secretKey: ??
- bucketName: jeroos
- staticDomain: jerodev
- # ElasticSearch 6设置
- elasticsearch:
- cluster-name: jero-ES
- cluster-nodes: 127.0.0.1:9200
- check-enabled: false
- # 表单设计器配置
- desform:
- # 主题颜色(仅支持 16进制颜色代码)
- theme-color: "#1890ff"
- # 文件、图片上传方式,可选项:qiniu(七牛云)、system(跟随系统配置)
- upload-type: system
- # 在线预览文件服务器地址配置
- file-view-domain: 127.0.0.1:8012
- # minio文件上传
- minio:
- minio_url: http://minio.jero.com
- minio_name: ??
- minio_pass: ??
- bucketName: otatest
- #大屏报表参数设置
- jmreport:
- mode: dev
- #数据字典是否可以全局看到
- saas: false
- #是否需要校验token
- is_verify_token: false
- #必须校验方法
- verify_methods: remove,delete,save,add,update
- #Wps在线文档
- wps:
- domain: https://wwo.wps.cn/office/
- appid: ??
- appsecret: ??
- #xxl-job配置
- xxljob:
- enabled: false
- adminAddresses: http://127.0.0.1:9080/xxl-job-admin
- appname: ${spring.application.name}
- accessToken: ''
- address: 127.0.0.1:30007
- ip: 127.0.0.1
- port: 30007
- logPath: logs/jero/job/jobhandler/
- logRetentionDays: 30
- route:
- config:
- data-id: jero-gateway-router
- group: DEFAULT_GROUP
- #自定义路由配置 yml nacos database
- data-type: yml
- #分布式锁配置
- redisson:
- address: 121.36.69.172:4780
- password: 'hzwlsoft.com'
- type: STANDALONE
- enabled: true
- # 文件限制后缀黑名单
- fileSuffixLimits : 0x00,%00,\\00,.jsp,.exe,.php,.asp,.aspx,.jspx,.xml,.html,.js,.sh,.bin
- # 跨站白名单
- whiteUrls:
-#cas单点登录
-cas:
- prefixUrl: http://cas.example.org:8443/cas
-#Mybatis输出sql日志
-logging:
- level:
- com.jero.modules.system.mapper : info
-#swagger
-knife4j:
- #开启增强配置
- enable: true
- #开启生产环境屏蔽
- production: false
- basic:
- enable: false
- username: jero
- password: jero.com
-#第三方登录
-justauth:
- enabled: true
- type:
- GITHUB:
- client-id: true
- client-secret: true
- redirect-uri: http://sso.test.com:8080/jero-boot/sys/thirdLogin/github/callback
- WECHAT_ENTERPRISE:
- client-id: true
- client-secret: true
- redirect-uri: http://sso.test.com:8080/jero-boot/sys/thirdLogin/wechat_enterprise/callback
- agent-id: 1000002
- DINGTALK:
- client-id: true
- client-secret: true
- redirect-uri: http://sso.test.com:8080/jero-boot/sys/thirdLogin/dingtalk/callback
- WECHAT_OPEN:
- client-id: ??
- client-secret: ??
- redirect-uri: http://sso.test.com:8080/jero-boot/sys/thirdLogin/wechat_open/callback
- cache:
- type: default
- prefix: 'demo::'
- timeout: 1h
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/pom.xml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/pom.xml
deleted file mode 100644
index 1b71630..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/pom.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
- laws-starter
- com.jero.boot
- 2.5.1
-
- 4.0.0
- laws-starter-cloud
-
-
-
- com.jero.boot
- jero-system-cloud-api
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
- com.alibaba.nacos
- nacos-client
-
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
-
-
- com.alibaba.nacos
- nacos-client
-
-
-
-
-
- com.alibaba.nacos
- nacos-client
- 2.0.4
-
-
-
- org.springframework.cloud
- spring-cloud-starter-openfeign
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-sentinel
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/config/FeignConfig.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/config/FeignConfig.java
deleted file mode 100644
index 820f33d..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/config/FeignConfig.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package com.jero.config;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer;
-import feign.Feign;
-import feign.Logger;
-import feign.RequestInterceptor;
-import feign.codec.Decoder;
-import feign.codec.Encoder;
-import feign.form.spring.SpringFormEncoder;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.common.config.mqtoken.UserTokenContext;
-import com.jero.common.constant.CommonConstant;
-import com.jero.common.util.DateUtils;
-import com.jero.common.util.PathMatcherUtil;
-import com.jero.config.sign.interceptor.SignAuthConfiguration;
-import com.jero.config.sign.util.HttpUtils;
-import com.jero.config.sign.util.SignUtil;
-import org.springframework.beans.factory.ObjectFactory;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.cloud.openfeign.FeignAutoConfiguration;
-import org.springframework.cloud.openfeign.support.SpringDecoder;
-import org.springframework.cloud.openfeign.support.SpringEncoder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.annotation.Scope;
-import org.springframework.http.MediaType;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.SortedMap;
-
-@ConditionalOnClass(Feign.class)
-@AutoConfigureBefore(FeignAutoConfiguration.class)
-@Slf4j
-@Configuration
-public class FeignConfig {
-
- @Bean
- public RequestInterceptor requestInterceptor() {
- return requestTemplate -> {
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (null != attributes) {
- HttpServletRequest request = attributes.getRequest();
- log.debug("Feign request: {}", request.getRequestURI());
- // 将token信息放入header中
- String token = getToken(request);
- log.debug("Feign request token: {}", token);
- requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
-
- //根据URL地址过滤请求 【字典表参数签名验证】
- if (PathMatcherUtil.matches(Arrays.asList(SignAuthConfiguration.urlList),requestTemplate.path())) {
- try {
- log.info("============================ [begin] fegin starter url ============================");
- log.info(requestTemplate.path());
- log.info(requestTemplate.method());
- String queryLine = requestTemplate.queryLine();
- queryLine = getQueryLine(queryLine);
- log.info(queryLine);
- if(requestTemplate.body()!=null){
- log.info(new String(requestTemplate.body()));
- }
- SortedMap allParams = HttpUtils.getAllParams(requestTemplate.path(),queryLine,requestTemplate.body(),requestTemplate.method());
- String sign = SignUtil.getParamsSign(allParams);
- log.info(" Feign request params sign: {}",sign);
- log.info("============================ [end] fegin starter url ============================");
- requestTemplate.header(CommonConstant.X_SIGN, sign);
- requestTemplate.header(CommonConstant.X_TIMESTAMP, DateUtils.getCurrentTimestamp().toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }else{
- String token = UserTokenContext.getToken();
- log.debug("Feign request token: {}", token);
- requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
- }
- };
- }
-
- private String getQueryLine(String queryLine) {
- if(queryLine!=null && queryLine.startsWith("?")){
- queryLine = queryLine.substring(1);
- }
- return queryLine;
- }
-
- private String getToken(HttpServletRequest request) {
- String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
- if(token==null || "".equals(token)){
- token = request.getParameter("token");
- }
- return token;
- }
-
-
- /**
- * Feign 客户端的日志记录,默认级别为NONE
- * Logger.Level 的具体级别如下:
- * NONE:不记录任何信息
- * BASIC:仅记录请求方法、URL以及响应状态码和执行时间
- * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息
- * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据
- */
- @Bean
- Logger.Level feignLoggerLevel() {
- return Logger.Level.FULL;
- }
-
- /**
- * Feign支持文件上传
- * @param messageConverters
- * @return
- */
- @Bean
- @Primary
- @Scope("prototype")
- public Encoder multipartFormEncoder(ObjectFactory messageConverters) {
- return new SpringFormEncoder(new SpringEncoder(messageConverters));
- }
-
- // update-begin--Author:sunjianlei Date:20210604 for: 给 Feign 添加 FastJson 的解析支持 ----------
- @Bean
- public Encoder feignEncoder() {
- return new SpringEncoder(feignHttpMessageConverter());
- }
-
- @Bean
- public Decoder feignDecoder() {
- return new SpringDecoder(feignHttpMessageConverter());
- }
-
- /**
- * 设置解码器为fastjson
- *
- * @return
- */
- private ObjectFactory feignHttpMessageConverter() {
- final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(this.getFastJsonConverter());
- return () -> httpMessageConverters;
- }
-
- private FastJsonHttpMessageConverter getFastJsonConverter() {
- FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
-
- List supportedMediaTypes = new ArrayList<>();
- MediaType mediaTypeJson = MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE);
- supportedMediaTypes.add(mediaTypeJson);
- converter.setSupportedMediaTypes(supportedMediaTypes);
- FastJsonConfig config = new FastJsonConfig();
- config.getSerializeConfig().put(JSON.class, new SwaggerJsonSerializer());
- config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);
- converter.setFastJsonConfig(config);
-
- return converter;
- }
- // update-end--Author:sunjianlei Date:20210604 for: 给 Feign 添加 FastJson 的解析支持 ----------
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/config/PersonBeanConfiguration.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/config/PersonBeanConfiguration.java
deleted file mode 100644
index d12412c..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/config/PersonBeanConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.jero.starter.cloud.config;
-
-import feign.Client;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
-import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory;
-import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class PersonBeanConfiguration {
-
- /**
- * 创建FeignClient
- */
- @Bean
- @ConditionalOnMissingBean
- public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory,
- SpringClientFactory clientFactory) {
- return new LoadBalancerFeignClient(new Client.Default(null, null),
- cachingFactory, clientFactory);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/IJeroFeignService.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/IJeroFeignService.java
deleted file mode 100644
index 74e1d6b..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/IJeroFeignService.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.jero.starter.cloud.feign;
-
-public interface IJeroFeignService {
-
- T newInstance(Class apiType, String name);
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/impl/JeroFeignService.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/impl/JeroFeignService.java
deleted file mode 100644
index aa837af..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-cloud/src/main/java/com/jero/starter/cloud/feign/impl/JeroFeignService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.jero.starter.cloud.feign.impl;
-
-import feign.Client;
-import feign.Contract;
-import feign.Feign;
-import feign.codec.Decoder;
-import feign.codec.Encoder;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.common.constant.CommonConstant;
-import com.jero.starter.cloud.feign.IJeroFeignService;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.cloud.openfeign.FeignAutoConfiguration;
-import org.springframework.cloud.openfeign.FeignClientsConfiguration;
-import org.springframework.context.annotation.Import;
-import org.springframework.stereotype.Service;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-
-@Service
-@Slf4j
-@ConditionalOnClass(Feign.class)
-@AutoConfigureBefore(FeignAutoConfiguration.class)
-@Import(FeignClientsConfiguration.class)
-public class JeroFeignService implements IJeroFeignService {
-
-
- //Feign 原生构造器
- Feign.Builder builder;
-
- //创建构造器
- public JeroFeignService(Decoder decoder, Encoder encoder, Client client, Contract contract) {
- this.builder = Feign.builder()
- .client(client)
- .encoder(encoder)
- .decoder(decoder)
- .contract(contract);
-
- builder.requestInterceptor(requestTemplate -> {
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (null != attributes) {
- HttpServletRequest request = attributes.getRequest();
- log.info("Feign request: {}", request.getRequestURI());
- // 将token信息放入header中
- String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
- if(token==null){
- token = request.getParameter("token");
- }
- log.info("Feign request token: {}", token);
- requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
- }
- });
- }
-
-
- @Override
- public T newInstance(Class clientClass, String serviceName) {
- return builder.target(clientClass, String.format("http://%s/", serviceName));
- }
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/pom.xml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/pom.xml
deleted file mode 100644
index 75a7619..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- laws-starter
- com.jero.boot
- 2.5.1
-
- 4.0.0
- laws-starter-job
- laws-starter-定时任务
-
-
- com.xuxueli
- xxl-job-core
- ${xxl-job-core.version}
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/config/XxlJobConfiguration.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/config/XxlJobConfiguration.java
deleted file mode 100644
index 7248582..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/config/XxlJobConfiguration.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.jero.boot.starter.job.config;
-
-import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.job.prop.XxlJobProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.annotation.Resource;
-
-/**
- * 定时任务配置
-
- */
-@Slf4j
-@Configuration
-@EnableConfigurationProperties(value = XxlJobProperties.class)
-@ConditionalOnProperty(value = "jero.xxljob.enabled", havingValue = "true", matchIfMissing = true)
-public class XxlJobConfiguration {
-
-
- @Resource
- private XxlJobProperties xxlJobProperties;
-
- //@Bean(initMethod = "start", destroyMethod = "destroy")
- @Bean
- @ConditionalOnClass()
- public XxlJobSpringExecutor xxlJobExecutor() {
- log.info(">>>>>>>>>>> xxl-job config init.");
- XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
- xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
- xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppname());
-// xxlJobSpringExecutor.setIp(xxlJobProperties.getIp());
-// xxlJobSpringExecutor.setPort(xxlJobProperties.getPort());
- xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());
- xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath());
- xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays());
- return xxlJobSpringExecutor;
- }
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/prop/XxlJobProperties.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/prop/XxlJobProperties.java
deleted file mode 100644
index 5925c9d..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/java/com/jero/boot/starter/job/prop/XxlJobProperties.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jero.boot.starter.job.prop;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-@Data
-@ConfigurationProperties(prefix = "jero.xxljob")
-public class XxlJobProperties {
-
-
- private String adminAddresses;
-
-
- private String appname;
-
-
- private String ip;
-
-
- private int port;
-
-
- private String accessToken;
-
-
- private String logPath;
-
-
- private int logRetentionDays;
-
- /**
- * 是否开启xxljob
- */
- private Boolean enable = true;
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/resources/META-INF/spring.factories b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index 22b8f89..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-job/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,2 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-com.jero.boot.starter.job.config.XxlJobConfiguration
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/pom.xml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/pom.xml
deleted file mode 100644
index a92e9b8..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- laws-starter
- com.jero.boot
- 2.5.1
-
- 4.0.0
- laws-starter-lock
- laws-starter-分布式锁
-
-
- org.redisson
- redisson
-
-
- org.projectlombok
- lombok
- provided
-
-
- org.apache.commons
- commons-lang3
-
-
- org.springframework.boot
- spring-boot-starter-aop
-
-
- com.google.guava
- guava
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JLock.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JLock.java
deleted file mode 100644
index c2e9051..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JLock.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.jero.boot.starter.lock.annotation;
-
-import com.jero.boot.starter.lock.enums.LockModel;
-
-import java.lang.annotation.*;
-
-/**
- * Redisson分布式锁注解
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-public @interface JLock {
-
- /**
- * 锁的模式:如果不设置,自动模式,当参数只有一个.使用 REENTRANT 参数多个 MULTIPLE
- */
- LockModel lockModel() default LockModel.AUTO;
-
- /**
- * 如果keys有多个,如果不设置,则使用 联锁
- * @return
- */
- String[] lockKey() default {};
-
- /**
- * key的静态常量:当key的spel的值是LIST,数组时使用+号连接将会被spel认为这个变量是个字符串
- * @return
- */
- String keyConstant() default "";
-
-
- /**
- * 锁超时时间,默认30000毫秒
- *
- * @return int
- */
- long expireSeconds() default 30000L;
-
- /**
- * 等待加锁超时时间,默认10000毫秒 -1 则表示一直等待
- *
- * @return int
- */
- long waitTime() default 10000L;
-
- /**
- * 未取到锁时提示信息
- *
- * @return
- */
- String failMsg() default "获取锁失败,请稍后重试";
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JRepeat.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JRepeat.java
deleted file mode 100644
index 0e531c2..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/JRepeat.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.boot.starter.lock.annotation;
-
-/**
- * @author zyf
- */
-
-import java.lang.annotation.*;
-
-/**
- * 防止重复提交的注解
- *
- * @author 2019年6月18日
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.METHOD})
-@Documented
-public @interface JRepeat {
-
- /**
- * 超时时间
- *
- * @return
- */
- int lockTime();
-
-
- /**
- * redis 锁key的
- *
- * @return redis 锁key
- */
- String lockKey() default "";
-
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/LockConstant.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/LockConstant.java
deleted file mode 100644
index ef7888a..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/annotation/LockConstant.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.jero.boot.starter.lock.annotation;
-
-/**
- * @author zyf
- * @date 2019/10/26 18:26
- */
-
-/**
- * 分布式锁枚举类
- * @author zyf
- */
-public enum LockConstant {
- /**
- * 通用锁常量
- */
- COMMON("commonLock:", 1, 500, "请勿重复点击");
- /**
- * 分布式锁前缀
- */
- private String keyPrefix;
- /**
- * 等到最大时间,强制获取锁
- */
- private int waitTime;
- /**
- * 锁失效时间
- */
- private int leaseTime;
- /**
- * 加锁提示
- */
- private String message;
-
- LockConstant(String keyPrefix, int waitTime, int leaseTime, String message) {
- this.keyPrefix = keyPrefix;
- this.waitTime = waitTime;
- this.leaseTime = leaseTime;
- this.message = message;
- }
-
- public String getKeyPrefix() {
- return keyPrefix;
- }
-
- public void setKeyPrefix(String keyPrefix) {
- this.keyPrefix = keyPrefix;
- }
-
- public int getWaitTime() {
- return waitTime;
- }
-
- public void setWaitTime(int waitTime) {
- this.waitTime = waitTime;
- }
-
- public int getLeaseTime() {
- return leaseTime;
- }
-
- public void setLeaseTime(int leaseTime) {
- this.leaseTime = leaseTime;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/BaseAspect.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/BaseAspect.java
deleted file mode 100644
index a9a2c96..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/BaseAspect.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.jero.boot.starter.lock.aspect;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.expression.EvaluationContext;
-import org.springframework.expression.Expression;
-import org.springframework.expression.ExpressionParser;
-import org.springframework.expression.spel.standard.SpelExpressionParser;
-import org.springframework.expression.spel.support.StandardEvaluationContext;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author zyf
- */
-@Slf4j
-public class BaseAspect {
-
- /**
- * 通过spring SpEL 获取参数
- *
- * @param key 定义的key值 以#开头 例如:#user
- * @param parameterNames 形参
- * @param values 形参值
- * @param keyConstant key的常亮
- * @return
- */
- public List getValueBySpEL(String key, String[] parameterNames, Object[] values, String keyConstant) {
- List keys = new ArrayList<>();
- if (!key.contains("#")) {
- String s = "redis:lock:" + key + keyConstant;
- log.info("lockKey:" + s);
- keys.add(s);
- return keys;
- }
- //spel解析器
- ExpressionParser parser = new SpelExpressionParser();
- //spel上下文
- EvaluationContext context = new StandardEvaluationContext();
- for (int i = 0; i < parameterNames.length; i++) {
- context.setVariable(parameterNames[i], values[i]);
- }
- Expression expression = parser.parseExpression(key);
- Object value = expression.getValue(context);
- if (value != null) {
- if (value instanceof List) {
- List value1 = (List) value;
- for (Object o : value1) {
- addKeys(keys, o, keyConstant);
- }
- } else if (value.getClass().isArray()) {
- Object[] obj = (Object[]) value;
- for (Object o : obj) {
- addKeys(keys, o, keyConstant);
- }
- } else {
- addKeys(keys, value, keyConstant);
- }
- }
- log.info("表达式key={},value={}", key, keys);
- return keys;
- }
-
- private void addKeys(List keys, Object o, String keyConstant) {
- keys.add("redis:lock:" + o.toString() + keyConstant);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/DistributedLockHandler.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/DistributedLockHandler.java
deleted file mode 100644
index 97d643e..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/DistributedLockHandler.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package com.jero.boot.starter.lock.aspect;
-
-import com.jero.boot.starter.lock.annotation.JLock;
-import com.jero.boot.starter.lock.enums.LockModel;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.redisson.RedissonMultiLock;
-import org.redisson.RedissonRedLock;
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * 分布式锁解析器
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-@Aspect
-@Component
-public class DistributedLockHandler extends BaseAspect{
-
-
- @Autowired(required = false)
- private RedissonClient redissonClient;
-
- /**
- * 切面环绕通知
- *
- * @param joinPoint
- * @param jLock
- * @return Object
- */
- @SneakyThrows
- @Around("@annotation(jLock)")
- public Object around(ProceedingJoinPoint joinPoint, JLock jLock) {
- Object obj = null;
- RLock rLock = getLock(joinPoint, jLock);
- boolean res = false;
- //获取超时时间
- long expireSeconds = jLock.expireSeconds();
- //等待多久,n秒内获取不到锁,则直接返回
- long waitTime = jLock.waitTime();
- //执行aop
- if (rLock != null) {
- try {
- if (waitTime == -1) {
- res = true;
- //一直等待加锁
- rLock.lock(expireSeconds, TimeUnit.MILLISECONDS);
- } else {
- res = rLock.tryLock(waitTime, expireSeconds, TimeUnit.MILLISECONDS);
- }
- if (res) {
- obj = joinPoint.proceed();
- } else {
- log.error("获取锁异常");
- }
- } finally {
- if (res) {
- rLock.unlock();
- }
- }
- }
- log.info("结束RedisLock环绕通知...");
- return obj;
- }
-
- @SneakyThrows
- private RLock getLock(ProceedingJoinPoint joinPoint, JLock jLock) {
- String[] keys = jLock.lockKey();
- if (keys.length == 0) {
- throw new IllegalArgumentException("keys不能为空");
- }
- String[] parameterNames = new LocalVariableTableParameterNameDiscoverer().getParameterNames(((MethodSignature) joinPoint.getSignature()).getMethod());
- Object[] args = joinPoint.getArgs();
-
- LockModel lockModel = jLock.lockModel();
- if (!lockModel.equals(LockModel.MULTIPLE) && !lockModel.equals(LockModel.REDLOCK) && keys.length > 1) {
- throw new IllegalArgumentException("参数有多个,锁模式为->" + lockModel.name() + ".无法锁定");
- }
- RLock rLock = null;
- String keyConstant = jLock.keyConstant();
- lockModel = getLockModel(keys, lockModel);
- switch (lockModel) {
- case FAIR:
- rLock = redissonClient.getFairLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0));
- break;
- case REDLOCK:
- List rLocks = new ArrayList<>();
- getRedLock(keys, parameterNames, args, keyConstant, rLocks);
- RLock[] locks = new RLock[rLocks.size()];
- int index = 0;
- for (RLock r : rLocks) {
- locks[index++] = r;
- }
- rLock = new RedissonRedLock(locks);
- break;
- case MULTIPLE:
- rLocks = new ArrayList<>();
-
- getRedLock(keys, parameterNames, args, keyConstant, rLocks);
- locks = new RLock[rLocks.size()];
- index = 0;
- for (RLock r : rLocks) {
- locks[index++] = r;
- }
- rLock = new RedissonMultiLock(locks);
- break;
- case REENTRANT:
- List valueBySpEL = getValueBySpEL(keys[0], parameterNames, args, keyConstant);
- //如果spel表达式是数组或者LIST 则使用红锁
- if (valueBySpEL.size() == 1) {
- rLock = redissonClient.getLock(valueBySpEL.get(0));
- } else {
- locks = new RLock[valueBySpEL.size()];
- index = 0;
- for (String s : valueBySpEL) {
- locks[index++] = redissonClient.getLock(s);
- }
- rLock = new RedissonRedLock(locks);
- }
- break;
- case READ:
- rLock = redissonClient.getReadWriteLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0)).readLock();
- break;
- case WRITE:
- rLock = redissonClient.getReadWriteLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0)).writeLock();
- break;
- default: break;
- }
- return rLock;
- }
-
- private LockModel getLockModel(String[] keys, LockModel lockModel) {
- if (lockModel.equals(LockModel.AUTO)) {
- if (keys.length > 1) {
- lockModel = LockModel.REDLOCK;
- } else {
- lockModel = LockModel.REENTRANT;
- }
- }
- return lockModel;
- }
-
- private void getRedLock(String[] keys, String[] parameterNames, Object[] args, String keyConstant, List rLocks) {
- for (String key : keys) {
- List valueBySpEL = getValueBySpEL(key, parameterNames, args, keyConstant);
- for (String s : valueBySpEL) {
- rLocks.add(redissonClient.getLock(s));
- }
- }
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/RepeatSubmitAspect.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/RepeatSubmitAspect.java
deleted file mode 100644
index 6fe8560..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/aspect/RepeatSubmitAspect.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.jero.boot.starter.lock.aspect;
-
-/**
- * @author zyf
- */
-
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
-import com.jero.boot.starter.lock.annotation.JRepeat;
-import com.jero.boot.starter.lock.client.RedissonLockClient;
-import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.Objects;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 防止重复提交分布式锁拦截器
- *
- * @author 2019年6月18日
- */
-@Aspect
-@Component
-public class RepeatSubmitAspect extends BaseAspect{
-
- @Resource
- private RedissonLockClient redissonLockClient;
-
- /***
- * 定义controller切入点拦截规则,拦截JRepeat注解的业务方法
- */
- @Pointcut("@annotation(jRepeat)")
- public void pointCut(JRepeat jRepeat) {
- // do point
- }
-
- /**
- * AOP分布式锁拦截
- *
- * @param joinPoint
- * @return
- * @throws Exception
- */
- @Around("pointCut(jRepeat)")
- public Object repeatSubmit(ProceedingJoinPoint joinPoint,JRepeat jRepeat) throws Throwable {
- String[] parameterNames = new LocalVariableTableParameterNameDiscoverer().getParameterNames(((MethodSignature) joinPoint.getSignature()).getMethod());
- if (Objects.nonNull(jRepeat)) {
- // 获取参数
- Object[] args = joinPoint.getArgs();
- // 进行一些参数的处理,比如获取订单号,操作人id等
- String key =getValueBySpEL(jRepeat.lockKey(), parameterNames, args,"RepeatSubmit").get(0);
- // 公平加锁,lockTime后锁自动释放
- boolean isLocked = false;
- try {
- isLocked = redissonLockClient.fairLock(key, TimeUnit.SECONDS, jRepeat.lockTime());
- // 如果成功获取到锁就继续执行
- if (isLocked) {
- // 执行进程
- return joinPoint.proceed();
- } else {
- // 未获取到锁
- throw new IllegalArgumentException("请勿重复提交");
- }
- } finally {
- // 如果锁还存在,在方法执行完成后,释放锁
- if (isLocked) {
- redissonLockClient.unlock(key);
- }
- }
- }
-
- return joinPoint.proceed();
- }
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/client/RedissonLockClient.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/client/RedissonLockClient.java
deleted file mode 100644
index c9c85be..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/client/RedissonLockClient.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.jero.boot.starter.lock.client;
-
-import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * 分布式锁实现基于Redisson
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-@Component
-public class RedissonLockClient {
-
- @Autowired
- private RedissonClient redissonClient;
-
- @Autowired
- private RedisTemplate redisTemplate;
-
- /**
- * 获取锁
- */
- public RLock getLock(String lockKey) {
- return redissonClient.getLock(lockKey);
- }
-
- /**
- * 加锁操作
- *
- * @return boolean
- */
- public boolean tryLock(String lockName, long expireSeconds) {
- return tryLock(lockName, 0, expireSeconds);
- }
-
-
- /**
- * 加锁操作
- *
- * @return boolean
- */
- public boolean tryLock(String lockName, long waitTime, long expireSeconds) {
- RLock rLock = getLock(lockName);
- boolean getLock = false;
- try {
- getLock = rLock.tryLock(waitTime, expireSeconds, TimeUnit.SECONDS);
- if (getLock) {
- log.info("获取锁成功,lockName={}", lockName);
- } else {
- log.info("获取锁失败,lockName={}", lockName);
- }
- } catch (InterruptedException e) {
- log.error("获取式锁异常,lockName=" + lockName, e);
- Thread.currentThread().interrupt();
- }finally {
- rLock.unlock();
- }
- return getLock;
- }
-
-
- public boolean fairLock(String lockKey, TimeUnit unit, int leaseTime) {
- RLock fairLock = redissonClient.getFairLock(lockKey);
- try {
- boolean existKey = existKey(lockKey);
- // 已经存在了,就直接返回
- if (existKey) {
- return false;
- }
- return fairLock.tryLock(3, leaseTime, unit);
- } catch (InterruptedException e) {
- e.printStackTrace();
- Thread.currentThread().interrupt();
- }finally {
- fairLock.unlock();
- }
- return false;
- }
-
- public boolean existKey(String key) {
- return redisTemplate.hasKey(key);
- }
- /**
- * 锁lockKey
- *
- * @param lockKey
- * @return
- */
- public RLock lock(String lockKey) {
- RLock lock = getLock(lockKey);
- try {
- lock.lock();
- }catch (Exception e){
- e.printStackTrace();
- } finally {
- lock.unlock();
- }
- return lock;
- }
-
- /**
- * 锁lockKey
- *
- * @param lockKey
- * @param leaseTime
- * @return
- */
- public RLock lock(String lockKey, long leaseTime) {
- RLock lock = getLock(lockKey);
- try {
- lock.lock(leaseTime, TimeUnit.SECONDS);
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- lock.unlock();
- }
- return lock;
- }
-
-
- /**
- * 解锁
- *
- * @param lockName 锁名称
- */
- public void unlock(String lockName) {
- try {
- redissonClient.getLock(lockName).unlock();
- } catch (Exception e) {
- log.error("解锁异常,lockName=" + lockName, e);
- }
- }
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/config/RedissonConfiguration.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/config/RedissonConfiguration.java
deleted file mode 100644
index b1f26db..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/config/RedissonConfiguration.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.boot.starter.lock.config;
-
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.lock.core.RedissonManager;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import org.redisson.api.RedissonClient;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-
-/**
- * Redisson自动化配置
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-@Configuration
-@ConditionalOnClass(RedissonProperties.class)
-@EnableConfigurationProperties(RedissonProperties.class)
-public class RedissonConfiguration {
-
-
-
- @Bean
- @ConditionalOnMissingBean(RedissonClient.class)
- public RedissonClient redissonClient(RedissonProperties redissonProperties) {
- RedissonManager redissonManager = new RedissonManager(redissonProperties);
- log.info("RedissonManager初始化完成,当前连接方式:" + redissonProperties.getType() + ",连接地址:" + redissonProperties.getAddress());
- return redissonManager.getRedisson();
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/RedissonManager.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/RedissonManager.java
deleted file mode 100644
index 56c9eb4..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/RedissonManager.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.jero.boot.starter.lock.core;
-
-
-import com.google.common.base.Preconditions;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.lock.core.strategy.RedissonConfigStrategy;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import com.jero.boot.starter.lock.core.strategy.impl.ClusterRedissonConfigStrategyImpl;
-import com.jero.boot.starter.lock.core.strategy.impl.MasterslaveRedissonConfigStrategyImpl;
-import com.jero.boot.starter.lock.core.strategy.impl.SentinelRedissonConfigStrategyImpl;
-import com.jero.boot.starter.lock.core.strategy.impl.StandaloneRedissonConfigStrategyImpl;
-import com.jero.boot.starter.lock.enums.RedisConnectionType;
-import org.redisson.Redisson;
-import org.redisson.config.Config;
-
-
-/**
- * Redisson配置管理器,用于初始化的redisson实例
- *
- * @author zyf
- * @date 2020-11-12
- */
-@Slf4j
-public class RedissonManager {
-
- private Config config = new Config();
-
- private Redisson redisson = null;
-
- public RedissonManager() {
- }
-
- public RedissonManager(RedissonProperties redissonProperties) {
- //装配开关
- Boolean enabled = redissonProperties.getEnabled();
- if (enabled != null && enabled) {
- try {
- config = RedissonConfigFactory.getInstance().createConfig(redissonProperties);
- redisson = (Redisson) Redisson.create(config);
- } catch (Exception e) {
- log.error("Redisson初始化错误", e);
- }
- }
- }
-
- public Redisson getRedisson() {
- return redisson;
- }
-
- /**
- * Redisson连接方式配置工厂
- * 双重检查锁
- */
- static class RedissonConfigFactory {
-
- private RedissonConfigFactory() {
- }
-
- private static RedissonConfigFactory factory = null;
-
- public static RedissonConfigFactory getInstance() {
- synchronized (Object.class) {
- if (factory == null) {
- factory = new RedissonConfigFactory();
- }
- }
- return factory;
- }
-
- /**
- * 根据连接类型創建连接方式的配置
- *
- * @param redissonProperties
- * @return Config
- */
- Config createConfig(RedissonProperties redissonProperties) {
- Preconditions.checkNotNull(redissonProperties);
- Preconditions.checkNotNull(redissonProperties.getAddress(), "redis地址未配置");
- RedisConnectionType connectionType = redissonProperties.getType();
- // 声明连接方式
- RedissonConfigStrategy redissonConfigStrategy;
- if (connectionType.equals(RedisConnectionType.SENTINEL)) {
- redissonConfigStrategy = new SentinelRedissonConfigStrategyImpl();
- } else if (connectionType.equals(RedisConnectionType.CLUSTER)) {
- redissonConfigStrategy = new ClusterRedissonConfigStrategyImpl();
- } else if (connectionType.equals(RedisConnectionType.MASTERSLAVE)) {
- redissonConfigStrategy = new MasterslaveRedissonConfigStrategyImpl();
- } else {
- redissonConfigStrategy = new StandaloneRedissonConfigStrategyImpl();
- }
- Preconditions.checkNotNull(redissonConfigStrategy, "连接方式创建异常");
-
- return redissonConfigStrategy.createRedissonConfig(redissonProperties);
- }
- }
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/RedissonConfigStrategy.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/RedissonConfigStrategy.java
deleted file mode 100644
index e729208..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/RedissonConfigStrategy.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.jero.boot.starter.lock.core.strategy;
-
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import org.redisson.config.Config;
-
-/**
- * Redisson配置构建接口
- *
- * @author zyf
- * @date 2020-11-11
- */
-public interface RedissonConfigStrategy {
-
- /**
- * 根据不同的Redis配置策略创建对应的Config
- *
- * @param redissonProperties
- * @return Config
- */
- Config createRedissonConfig(RedissonProperties redissonProperties);
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java
deleted file mode 100644
index b58ab44..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.jero.boot.starter.lock.core.strategy.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import com.jero.boot.starter.lock.core.strategy.RedissonConfigStrategy;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import com.jero.boot.starter.lock.enums.GlobalConstant;
-import org.redisson.config.Config;
-
-
-/**
- * 集群方式Redisson配置
- * cluster方式至少6个节点(3主3从)
- * 配置方式:127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-public class ClusterRedissonConfigStrategyImpl implements RedissonConfigStrategy {
-
- @Override
- public Config createRedissonConfig(RedissonProperties redissonProperties) {
- Config config = new Config();
- try {
- String address = redissonProperties.getAddress();
- String password = redissonProperties.getPassword();
- String[] addrTokens = address.split(",");
- // 设置集群(cluster)节点的服务IP和端口
- for (int i = 0; i < addrTokens.length; i++) {
- config.useClusterServers().addNodeAddress(GlobalConstant.REDIS_CONNECTION_PREFIX + addrTokens[i]);
- if (StringUtils.isNotBlank(password)) {
- config.useClusterServers().setPassword(password);
- }
- }
- log.info("初始化集群方式Config,连接地址:" + address);
- } catch (Exception e) {
- log.error("集群Redisson初始化错误", e);
- e.printStackTrace();
- }
- return config;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java
deleted file mode 100644
index 052b04f..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.jero.boot.starter.lock.core.strategy.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import com.jero.boot.starter.lock.core.strategy.RedissonConfigStrategy;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import com.jero.boot.starter.lock.enums.GlobalConstant;
-import org.redisson.config.Config;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 主从方式Redisson配置
- * 配置方式: 127.0.0.1:6379(主),127.0.0.1:6380(子),127.0.0.1:6381(子)
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-public class MasterslaveRedissonConfigStrategyImpl implements RedissonConfigStrategy {
-
- @Override
- public Config createRedissonConfig(RedissonProperties redissonProperties) {
- Config config = new Config();
- try {
- String address = redissonProperties.getAddress();
- String password = redissonProperties.getPassword();
- int database = redissonProperties.getDatabase();
- String[] addrTokens = address.split(",");
- String masterNodeAddr = addrTokens[0];
- // 设置主节点ip
- config.useMasterSlaveServers().setMasterAddress(masterNodeAddr);
- if (StringUtils.isNotBlank(password)) {
- config.useMasterSlaveServers().setPassword(password);
- }
- config.useMasterSlaveServers().setDatabase(database);
- // 设置从节点,移除第一个节点,默认第一个为主节点
- List slaveList = new ArrayList<>();
- for (String addrToken : addrTokens) {
- slaveList.add(GlobalConstant.REDIS_CONNECTION_PREFIX + addrToken);
- }
- slaveList.remove(0);
-
- config.useMasterSlaveServers().addSlaveAddress(slaveList.toArray(new String[0]));
- log.info("初始化主从方式Config,redisAddress:" + address);
- } catch (Exception e) {
- log.error("主从Redisson初始化错误", e);
- e.printStackTrace();
- }
- return config;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java
deleted file mode 100644
index 9351941..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.jero.boot.starter.lock.core.strategy.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import com.jero.boot.starter.lock.core.strategy.RedissonConfigStrategy;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import com.jero.boot.starter.lock.enums.GlobalConstant;
-import org.redisson.config.Config;
-
-
-/**
- * 哨兵方式Redis连接配置
- * 比如sentinel.conf里配置为sentinel monitor my-sentinel-name 127.0.0.1 6379 2,那么这里就配置my-sentinel-name
- * 配置方式:my-sentinel-name,127.0.0.1:26379,127.0.0.1:26389,127.0.0.1:26399
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-public class SentinelRedissonConfigStrategyImpl implements RedissonConfigStrategy {
-
- @Override
- public Config createRedissonConfig(RedissonProperties redissonProperties) {
- Config config = new Config();
- try {
- String address = redissonProperties.getAddress();
- String password = redissonProperties.getPassword();
- int database = redissonProperties.getDatabase();
- String[] addrTokens = address.split(",");
- String sentinelAliasName = addrTokens[0];
- // 设置redis配置文件sentinel.conf配置的sentinel别名
- config.useSentinelServers().setMasterName(sentinelAliasName);
- config.useSentinelServers().setDatabase(database);
- if (StringUtils.isNotBlank(password)) {
- config.useSentinelServers().setPassword(password);
- }
- // 设置哨兵节点的服务IP和端口
- for (int i = 1; i < addrTokens.length; i++) {
- config.useSentinelServers().addSentinelAddress(GlobalConstant.REDIS_CONNECTION_PREFIX+ addrTokens[i]);
- }
- log.info("初始化哨兵方式Config,redisAddress:" + address);
- } catch (Exception e) {
- log.error("哨兵Redisson初始化错误", e);
- e.printStackTrace();
- }
- return config;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java
deleted file mode 100644
index ec339fd..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.jero.boot.starter.lock.core.strategy.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import com.jero.boot.starter.lock.core.strategy.RedissonConfigStrategy;
-import com.jero.boot.starter.lock.prop.RedissonProperties;
-import com.jero.boot.starter.lock.enums.GlobalConstant;
-import org.redisson.config.Config;
-
-
-/**
- * 单机方式Redisson配置
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Slf4j
-public class StandaloneRedissonConfigStrategyImpl implements RedissonConfigStrategy {
-
- @Override
- public Config createRedissonConfig(RedissonProperties redissonProperties) {
- Config config = new Config();
- try {
- String address = redissonProperties.getAddress();
- String password = redissonProperties.getPassword();
- int database = redissonProperties.getDatabase();
- String redisAddr = GlobalConstant.REDIS_CONNECTION_PREFIX + address;
- config.useSingleServer().setAddress(redisAddr);
- config.useSingleServer().setDatabase(database);
- if (StringUtils.isNotBlank(password)) {
- config.useSingleServer().setPassword(password);
- }
- log.info("初始化Redisson单机配置,连接地址:" + address);
- } catch (Exception e) {
- log.error("单机Redisson初始化错误", e);
- e.printStackTrace();
- }
- return config;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/GlobalConstant.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/GlobalConstant.java
deleted file mode 100644
index 8d1c284..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/GlobalConstant.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.jero.boot.starter.lock.enums;
-
-/**
- * 全局常量枚举
- *
- * @author zyf
- * @date 2020-11-11
- */
-
-public class GlobalConstant {
-
- private GlobalConstant(){
-
- }
-
- /**
- * Redis地址连接前缀
- */
- public static final String REDIS_CONNECTION_PREFIX = "redis://";
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/LockModel.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/LockModel.java
deleted file mode 100644
index e478600..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/LockModel.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.jero.boot.starter.lock.enums;
-
-/**
- * 锁的模式
- * @author jero
- */
-public enum LockModel {
- //可重入锁
- REENTRANT,
- //公平锁
- FAIR,
- //联锁(可以把一组锁当作一个锁来加锁和释放)
- MULTIPLE,
- //红锁
- REDLOCK,
- //读锁
- READ,
- //写锁
- WRITE,
- //自动模式,当参数只有一个.使用 REENTRANT 参数多个 REDLOCK
- AUTO
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/RedisConnectionType.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/RedisConnectionType.java
deleted file mode 100644
index 8ac0185..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/enums/RedisConnectionType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jero.boot.starter.lock.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * Redis连接方式
- * @author zyf
- * @date 2020-11-11
- */
-@Getter
-@AllArgsConstructor
-public enum RedisConnectionType {
- /**
- * 单机部署方式(默认)
- */
- STANDALONE("standalone", "单机部署方式"),
- /**
- * 哨兵部署方式
- */
- SENTINEL("sentinel", "哨兵部署方式"),
- /**
- * 集群部署方式
- */
- CLUSTER("cluster", "集群方式"),
- /**
- * 主从部署方式
- */
- MASTERSLAVE("masterslave", "主从部署方式");
-
- /**
- * 编码
- */
- private final String code;
- /**
- * 名称
- */
- private final String name;
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/prop/RedissonProperties.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/prop/RedissonProperties.java
deleted file mode 100644
index c5b8f2e..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/java/com/jero/boot/starter/lock/prop/RedissonProperties.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jero.boot.starter.lock.prop;
-
-import lombok.Data;
-import com.jero.boot.starter.lock.enums.RedisConnectionType;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * Redisson配置映射类
- *
- * @author zyf
- * @date 2020-11-11
- */
-@Data
-@ConfigurationProperties(prefix = "jero.redisson")
-public class RedissonProperties {
-
- /**
- * redis主机地址,ip:port,多个用逗号(,)分隔
- */
- private String address;
- /**
- * 连接类型
- */
- private RedisConnectionType type;
- /**
- * 密码
- */
- private String password;
- /**
- * 数据库(默认0)
- */
- private int database;
-
- /**
- * 是否装配redisson配置
- */
- private Boolean enabled = true;
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/resources/META-INF/spring.factories b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index e235d2c..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,4 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
- com.jero.boot.starter.lock.config.RedissonConfiguration
-
-
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockService.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockService.java
deleted file mode 100644
index c39a37d..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockService.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.jero.boot.starter.lock.test;
-
-import com.jero.boot.starter.lock.annotation.JLock;
-import com.jero.boot.starter.lock.annotation.JRepeat;
-import com.jero.boot.starter.lock.annotation.LockConstant;
-import com.jero.boot.starter.lock.client.RedissonLockClient;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-
-@Service
-public class LockService {
-
- @Resource
- private RedissonLockClient redissonLockClient;
-
- int n = 10;
-
- /**
- * 模拟秒杀(注解方式)
- */
- @JLock(lockKey = "#productId", expireSeconds = 5000)
- public void seckill(String productId) {
- if (n <= 0) {
- System.out.println("活动已结束,请下次再来");
- return;
- }
- System.out.println(Thread.currentThread().getName() + ":秒杀到了商品");
- System.out.println(--n);
- }
-
- /**
- * 模拟秒杀(编程方式)
- */
- public void seckill2(String productId) {
- redissonLockClient.tryLock(productId, 5000);
- if (n <= 0) {
- System.out.println("活动已结束,请下次再来");
- return;
- }
- System.out.println(Thread.currentThread().getName() + ":秒杀到了商品");
- System.out.println(--n);
- redissonLockClient.unlock(productId);
- }
-
-
- /**
- * 测试重复提交
- */
- @JRepeat(lockKey = "#name", lockTime = 5)
- public void reSubmit(String name) {
- try {
- Thread.sleep(1500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("提交成功" + name);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTest.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTest.java
deleted file mode 100644
index 2fe9690..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.jero.boot.starter.lock.test;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.IntStream;
-
-import static junit.framework.TestCase.assertNull;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = LockTestApplication.class)
-public class LockTest {
- @Autowired
- LockService lockService;
-
- /**
- * 测试分布式锁(模拟秒杀)
- */
- @Test
- public void test1() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(6);
- IntStream.range(0, 30).forEach(i -> executorService.submit(() -> {
- try {
- lockService.seckill("20120508784");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }));
- assertNull(executorService.awaitTermination(30, TimeUnit.SECONDS));
- }
-
- /**
- * 测试分布式锁(模拟秒杀)
- */
- @Test
- public void test2() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(6);
- IntStream.range(0, 30).forEach(i -> executorService.submit(() -> {
- try {
- lockService.seckill2("20120508784");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }));
- assertNull(executorService.awaitTermination(30, TimeUnit.SECONDS));
- }
-
- /**
- * 测试分布式锁(模拟重复提交)
- */
- @Test
- public void test3() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(6);
- IntStream.range(0, 20).forEach(i -> executorService.submit(() -> {
- try {
- lockService.reSubmit("test");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }));
- assertNull(executorService.awaitTermination(30, TimeUnit.SECONDS));
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTestApplication.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTestApplication.java
deleted file mode 100644
index a99222c..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/LockTestApplication.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.jero.boot.starter.lock.test;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-
-@SpringBootApplication(scanBasePackages = "com.jero")
-@EnableAspectJAutoProxy
-public class LockTestApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(LockTestApplication.class, args);
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/TestUser.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/TestUser.java
deleted file mode 100644
index 1404c2d..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/java/org/jero/boot/starter/lock/test/TestUser.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.jero.boot.starter.lock.test;
-
-import lombok.Data;
-
-@Data
-public class TestUser {
- private String userId;
- private String userName;
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/resources/application.yml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/resources/application.yml
deleted file mode 100644
index 38d4b45..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-lock/src/test/resources/application.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-spring:
- redis:
- database: 0
- host: 127.0.0.1
- lettuce:
- pool:
- max-active: 8 #最大连接数据库连接数,设 0 为没有限制
- max-idle: 8 #最大等待连接中的数量,设 0 为没有限制
- max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
- min-idle: 0 #最小等待连接中的数量,设 0 为没有限制
- shutdown-timeout: 100ms
- password: hzwlsoft123
- port: 6379
-jero :
- redisson:
- address: 127.0.0.1:6379
- password: hzwlsoft123
- type: STANDALONE
- enabled: true
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/pom.xml b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/pom.xml
deleted file mode 100644
index c33db29..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- laws-starter
- com.jero.boot
- 2.5.1
-
- 4.0.0
- laws-starter-rabbitmq
- laws-starter-消息队列
-
-
-
- org.springframework.cloud
- spring-cloud-starter-bus-amqp
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/client/RabbitMqClient.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/client/RabbitMqClient.java
deleted file mode 100644
index be3ed08..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/client/RabbitMqClient.java
+++ /dev/null
@@ -1,364 +0,0 @@
-package com.jero.boot.starter.rabbitmq.client;
-
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.event.EventObj;
-import com.jero.boot.starter.rabbitmq.event.JeroRemoteApplicationEvent;
-import com.jero.boot.starter.rabbitmq.exchange.DelayExchangeBuilder;
-import com.jero.common.annotation.RabbitComponent;
-import com.jero.common.base.BaseMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.amqp.core.*;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
-import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.bus.BusProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.annotation.Resource;
-import java.lang.reflect.Method;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * 消息队列客户端
- */
-@Slf4j
-@Configuration
-public class RabbitMqClient {
-
- private final RabbitAdmin rabbitAdmin;
-
- private final RabbitTemplate rabbitTemplate;
-
-
- @Resource
- private SimpleMessageListenerContainer messageListenerContainer;
-
- @Resource
- BusProperties busProperties;
- @Resource
- private ApplicationEventPublisher publisher;
-
-
- @Resource
- private ApplicationContext applicationContext;
-
-
- @Bean
- public void initQueue() {
- Map beansWithRqbbitComponentMap = this.applicationContext.getBeansWithAnnotation(RabbitComponent.class);
- Class extends Object> clazz = null;
- for (Map.Entry entry : beansWithRqbbitComponentMap.entrySet()) {
- log.info("初始化队列............");
- //获取到实例对象的class信息
- clazz = entry.getValue().getClass();
- Method[] methods = clazz.getMethods();
- RabbitListener rabbitListener = clazz.getAnnotation(RabbitListener.class);
- if (ObjectUtil.isNotEmpty(rabbitListener)) {
- createQueue(rabbitListener);
- }
- for (Method method : methods) {
- RabbitListener methodRabbitListener = method.getAnnotation(RabbitListener.class);
- if (ObjectUtil.isNotEmpty(methodRabbitListener)) {
- createQueue(methodRabbitListener);
- }
- }
-
- }
- }
-
- /**
- * 初始化队列
- *
- * @param rabbitListener
- */
- private void createQueue(RabbitListener rabbitListener) {
- String[] queues = rabbitListener.queues();
- DirectExchange directExchange = createExchange(DelayExchangeBuilder.DELAY_EXCHANGE);
- //创建交换机
- rabbitAdmin.declareExchange(directExchange);
- if (ObjectUtil.isNotEmpty(queues)) {
- for (String queueName : queues) {
- Properties result = rabbitAdmin.getQueueProperties(queueName);
- if (ObjectUtil.isEmpty(result)) {
- Queue queue = new Queue(queueName);
- addQueue(queue);
- Binding binding = BindingBuilder.bind(queue).to(directExchange).with(queueName);
- rabbitAdmin.declareBinding(binding);
- log.info("创建队列:" + queueName);
- }else{
- log.info("已有队列:" + queueName);
- }
- }
- }
- }
-
-
- private Map sentObj = new HashMap<>();
-
-
- @Autowired
- public RabbitMqClient(RabbitAdmin rabbitAdmin, RabbitTemplate rabbitTemplate) {
- this.rabbitAdmin = rabbitAdmin;
- this.rabbitTemplate = rabbitTemplate;
- }
-
-
- /**
- * 发送远程事件
- *
- * @param handlerName
- * @param baseMap
- */
- public void publishEvent(String handlerName, BaseMap baseMap) {
- EventObj eventObj = new EventObj();
- eventObj.setHandlerName(handlerName);
- eventObj.setBaseMap(baseMap);
- publisher.publishEvent(new JeroRemoteApplicationEvent(eventObj, busProperties.getId()));
- }
-
- /**
- * 转换Message对象
- *
- * @param messageType 返回消息类型 MessageProperties类中常量
- * @param msg
- * @return
- */
- public Message getMessage(String messageType, Object msg) {
- MessageProperties messageProperties = new MessageProperties();
- messageProperties.setContentType(messageType);
- return new Message(msg.toString().getBytes(), messageProperties);
- }
-
- /**
- * 有绑定Key的Exchange发送
- *
- * @param routingKey
- * @param msg
- */
- public void sendMessageToExchange(TopicExchange topicExchange, String routingKey, Object msg) {
- Message message = getMessage(MessageProperties.CONTENT_TYPE_JSON, msg);
- rabbitTemplate.send(topicExchange.getName(), routingKey, message);
- }
-
- /**
- * 没有绑定KEY的Exchange发送
- *
- * @param exchange
- * @param msg
- */
- public void sendMessageToExchange(TopicExchange topicExchange, AbstractExchange exchange, String msg) {
- addExchange(exchange);
- log.info("RabbitMQ send " + exchange.getName() + "->" + msg);
- rabbitTemplate.convertAndSend(topicExchange.getName(), msg);
- }
-
-
- /**
- * 发送消息
- *
- * @param queueName 队列名称
- * @param params 消息内容map
- */
- public void sendMessage(String queueName, Object params) {
- log.info("发送消息到mq");
- try {
- rabbitTemplate.convertAndSend(DelayExchangeBuilder.DELAY_EXCHANGE, queueName, params, message -> message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 发送消息
- *
- * @param queueName 队列名称
- */
- public void sendMessage(String queueName) {
- this.send(queueName, this.sentObj, 0);
- this.sentObj.clear();
- }
-
-
- public RabbitMqClient put(String key, Object value) {
- this.sentObj.put(key, value);
- return this;
- }
-
- /**
- * 延迟发送消息
- *
- * @param queueName 队列名称
- * @param params 消息内容params
- * @param expiration 延迟时间 单位毫秒
- */
- public void sendMessage(String queueName, Object params, Integer expiration) {
- this.send(queueName, params, expiration);
- }
-
- private void send(String queueName, Object params, Integer expiration) {
- Queue queue = new Queue(queueName);
- addQueue(queue);
- CustomExchange customExchange = DelayExchangeBuilder.buildExchange();
- rabbitAdmin.declareExchange(customExchange);
- Binding binding = BindingBuilder.bind(queue).to(customExchange).with(queueName).noargs();
- rabbitAdmin.declareBinding(binding);
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- log.debug("发送时间:" + sf.format(new Date()));
- messageListenerContainer.setQueueNames(queueName);
-/* messageListenerContainer.setMessageListener(new MqListener() {
- @Override
- public void onMessage(Message message, Channel channel) {
- MqListener messageListener = SpringContextHolder.getHandler(queueName + "Listener", MqListener.class);
- if (ObjectUtil.isNotEmpty(messageListener)) {
- messageListener.onMessage(message, channel);
- }
- }
- });*/
- rabbitTemplate.convertAndSend(DelayExchangeBuilder.DEFAULT_DELAY_EXCHANGE, queueName, params, message -> {
- if (expiration != null && expiration > 0) {
- message.getMessageProperties().setHeader("x-delay", expiration);
- }
- return message;
- });
- }
-
-
- /**
- * 给queue发送消息
- *
- * @param queueName
- */
- public String receiveFromQueue(String queueName) {
- return receiveFromQueue(DirectExchange.DEFAULT, queueName);
- }
-
- /**
- * 给direct交换机指定queue发送消息
- *
- * @param directExchange
- * @param queueName
- */
- public String receiveFromQueue(DirectExchange directExchange, String queueName) {
- Queue queue = new Queue(queueName);
- addQueue(queue);
- Binding binding = BindingBuilder.bind(queue).to(directExchange).withQueueName();
- rabbitAdmin.declareBinding(binding);
- String messages = (String) rabbitTemplate.receiveAndConvert(queueName);
- log.info("Receive:" + messages);
- return messages;
- }
-
- /**
- * 创建Exchange
- *
- * @param exchange
- */
- public void addExchange(AbstractExchange exchange) {
- rabbitAdmin.declareExchange(exchange);
- }
-
- /**
- * 删除一个Exchange
- *
- * @param exchangeName
- */
- public boolean deleteExchange(String exchangeName) {
- return rabbitAdmin.deleteExchange(exchangeName);
- }
-
-
- /**
- * 声明其名称自动命名的队列。它是用exclusive=true、autoDelete=true和 durable = false
- *
- * @return Queue
- */
- public Queue addQueue() {
- return rabbitAdmin.declareQueue();
- }
-
- /**
- * 创建一个指定的Queue
- *
- * @param queue
- * @return queueName
- */
- public String addQueue(Queue queue) {
- return rabbitAdmin.declareQueue(queue);
- }
-
- /**
- * 删除一个队列
- *
- * @param queueName the name of the queue.
- * @param unused true if the queue should be deleted only if not in use.
- * @param empty true if the queue should be deleted only if empty.
- */
- public void deleteQueue(String queueName, boolean unused, boolean empty) {
- rabbitAdmin.deleteQueue(queueName, unused, empty);
- }
-
- /**
- * 删除一个队列
- *
- * @param queueName
- * @return true if the queue existed and was deleted.
- */
- public boolean deleteQueue(String queueName) {
- return rabbitAdmin.deleteQueue(queueName);
- }
-
- /**
- * 绑定一个队列到一个匹配型交换器使用一个routingKey
- *
- * @param queue
- * @param exchange
- * @param routingKey
- */
- public void addBinding(Queue queue, TopicExchange exchange, String routingKey) {
- Binding binding = BindingBuilder.bind(queue).to(exchange).with(routingKey);
- rabbitAdmin.declareBinding(binding);
- }
-
- /**
- * 绑定一个Exchange到一个匹配型Exchange 使用一个routingKey
- *
- * @param exchange
- * @param topicExchange
- * @param routingKey
- */
- public void addBinding(Exchange exchange, TopicExchange topicExchange, String routingKey) {
- Binding binding = BindingBuilder.bind(exchange).to(topicExchange).with(routingKey);
- rabbitAdmin.declareBinding(binding);
- }
-
- /**
- * 去掉一个binding
- *
- * @param binding
- */
- public void removeBinding(Binding binding) {
- rabbitAdmin.removeBinding(binding);
- }
-
- /**
- * 创建交换器
- *
- * @param exchangeName
- * @return
- */
- public DirectExchange createExchange(String exchangeName) {
- return new DirectExchange(exchangeName, true, false);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/config/RabbitMqConfig.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/config/RabbitMqConfig.java
deleted file mode 100644
index ad54f6c..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/config/RabbitMqConfig.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.jero.boot.starter.rabbitmq.config;
-
-import com.jero.boot.starter.rabbitmq.event.JeroRemoteApplicationEvent;
-import com.jero.common.config.mqtoken.TransmitUserTokenFilter;
-import org.springframework.amqp.core.AcknowledgeMode;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
-import org.springframework.cloud.bus.jackson.RemoteApplicationEventScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.UUID;
-
-/**
- * 消息队列配置类
- *
- * @author zyf
- */
-@Configuration
-@RemoteApplicationEventScan(basePackageClasses = JeroRemoteApplicationEvent.class)
-public class RabbitMqConfig {
-
-
- @Bean
- public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
- RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
- //设置忽略声明异常
- rabbitAdmin.setIgnoreDeclarationExceptions(true);
- return rabbitAdmin;
- }
-
- /**
- * 注入获取token过滤器
- * @return
- */
- @Bean
- public TransmitUserTokenFilter transmitUserInfoFromHttpHeader(){
- return new TransmitUserTokenFilter();
- }
-
- @Bean
- public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
- SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
- container.setConnectionFactory(connectionFactory);
- //手动确认
- container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
- //当前的消费者数量
- container.setConcurrentConsumers(1);
- //最大的消费者数量
- container.setMaxConcurrentConsumers(1);
- //是否重回队列
- container.setDefaultRequeueRejected(true);
-
- //消费端的标签策略
- /*container.setConsumerTagStrategy(new ConsumerTagStrategy() {
- @Override
- public String createConsumerTag(String queue) {
- return queue + "_" + UUID.randomUUID().toString();
- }
- });*/
- container.setConsumerTagStrategy(queue-> queue + "_" + UUID.randomUUID());
- return container;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java
deleted file mode 100644
index 014c9f6..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jero.boot.starter.rabbitmq.core;
-
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.listenter.MqListener;
-import com.jero.common.config.mqtoken.UserTokenContext;
-
-import java.io.IOException;
-
-@Slf4j
-public class BaseRabbiMqHandler {
-
- private String token= UserTokenContext.getToken();
-
- public void onMessage(T t, Long deliveryTag, Channel channel, MqListener mqListener) {
- try {
- UserTokenContext.setToken(token);
- mqListener.handler(t, channel);
- channel.basicAck(deliveryTag, false);
- } catch (Exception e) {
- log.info("接收消息失败,重新放回队列");
- try {
- /**
- * deliveryTag:该消息的index
- * multiple:是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
- * requeue:被拒绝的是否重新入队列
- */
- channel.basicNack(deliveryTag, false, true);
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
-
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/MapMessageConverter.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/MapMessageConverter.java
deleted file mode 100644
index a850940..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/core/MapMessageConverter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.boot.starter.rabbitmq.core;
-
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.core.MessageProperties;
-import org.springframework.amqp.support.converter.MessageConversionException;
-import org.springframework.amqp.support.converter.MessageConverter;
-
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-
-public class MapMessageConverter implements MessageConverter {
- @Override
- public Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException {
- return new Message(object.toString().getBytes(), messageProperties);
- }
-
- @Override
- public Object fromMessage(Message message) throws MessageConversionException {
- String contentType = message.getMessageProperties().getContentType();
- if (null != contentType && contentType.contains("text")) {
- return new String(message.getBody());
- } else {
- ObjectInputStream objInt = null;
- try {
- ByteArrayInputStream byteInt = new ByteArrayInputStream(message.getBody());
- objInt = new ObjectInputStream(byteInt);
- //byte[]转map
- return objInt.readObject();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return null;
-
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/BaseApplicationEvent.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/BaseApplicationEvent.java
deleted file mode 100644
index 4f54542..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/BaseApplicationEvent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.jero.boot.starter.rabbitmq.event;
-
-import cn.hutool.core.util.ObjectUtil;
-
-import com.jero.common.util.SpringContextHolder;
-import org.springframework.context.ApplicationListener;
-import org.springframework.stereotype.Component;
-
-/**
- * 监听远程事件,并分发消息到业务模块消息处理器
- */
-@Component
-public class BaseApplicationEvent implements ApplicationListener {
-
- @Override
- public void onApplicationEvent(JeroRemoteApplicationEvent jeroRemoteApplicationEvent) {
- EventObj eventObj = jeroRemoteApplicationEvent.getEventObj();
- if (ObjectUtil.isNotEmpty(eventObj)) {
- //获取业务模块消息处理器
- JeroBusEventHandler busEventHandler = SpringContextHolder.getHandler(eventObj.getHandlerName(), JeroBusEventHandler.class);
- if (ObjectUtil.isNotEmpty(busEventHandler)) {
- //通知业务模块
- busEventHandler.onMessage(eventObj);
- }
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/EventObj.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/EventObj.java
deleted file mode 100644
index 4b62a32..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/EventObj.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.jero.boot.starter.rabbitmq.event;
-
-import lombok.Data;
-import com.jero.common.base.BaseMap;
-
-import java.io.Serializable;
-
-/**
- * 远程事件数据对象
- */
-@Data
-public class EventObj implements Serializable {
- /**
- * 数据对象
- */
- private BaseMap baseMap;
- /**
- * 自定义业务模块消息处理器beanName
- */
- private String handlerName;
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroBusEventHandler.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroBusEventHandler.java
deleted file mode 100644
index fa9397d..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroBusEventHandler.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.jero.boot.starter.rabbitmq.event;
-
-/**
- * 业务模块消息处理器接口
- */
-public interface JeroBusEventHandler {
- void onMessage(EventObj map);
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroRemoteApplicationEvent.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroRemoteApplicationEvent.java
deleted file mode 100644
index 8b046dc..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/event/JeroRemoteApplicationEvent.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.jero.boot.starter.rabbitmq.event;
-
-import lombok.Data;
-import org.springframework.cloud.bus.event.RemoteApplicationEvent;
-
-/**
- * 自定义网关刷新远程事件
- *
- * @author : zyf
- * @date :2020-11-10
- */
-@Data
-public class JeroRemoteApplicationEvent extends RemoteApplicationEvent {
-
- private JeroRemoteApplicationEvent() {
- }
-
- private EventObj eventObj;
-
- public JeroRemoteApplicationEvent(EventObj source, String originService, String destinationService) {
- super(source, originService, destinationService);
- this.eventObj = source;
- }
-
- public JeroRemoteApplicationEvent(EventObj source, String originService) {
- super(source, originService, null);
- this.eventObj = source;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java
deleted file mode 100644
index 6cd5b19..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.boot.starter.rabbitmq.exchange;
-
-import org.springframework.amqp.core.CustomExchange;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 延迟交换器构造器
- * @author: zyf
- * @date: 2019/3/8 13:31
- * @description:
- */
-public class DelayExchangeBuilder {
- /**
- * 默认延迟消息交换器
- */
- public static final String DEFAULT_DELAY_EXCHANGE = "jero.delayed.exchange";
- /**
- * 普通交换器
- */
- public static final String DELAY_EXCHANGE = "jero.direct.exchange";
-
- private DelayExchangeBuilder() {
- }
-
- /**
- * 构建延迟消息交换器
- * @return
- */
- public static CustomExchange buildExchange() {
- Map args = new HashMap<>();
- args.put("x-delayed-type", "direct");
- return new CustomExchange(DEFAULT_DELAY_EXCHANGE, "x-delayed-message", true, false, args);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/listenter/MqListener.java b/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/listenter/MqListener.java
deleted file mode 100644
index e7fb890..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/jero-boot-starter-rabbitmq/src/main/java/com/jero/boot/starter/rabbitmq/listenter/MqListener.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.jero.boot.starter.rabbitmq.listenter;
-
-import com.rabbitmq.client.Channel;
-
-public interface MqListener {
-
- default void handler(T map, Channel channel) {
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-boot-starter/pom.xml b/byd-structuredplugins-serve/jero-boot-starter/pom.xml
deleted file mode 100644
index 382c465..0000000
--- a/byd-structuredplugins-serve/jero-boot-starter/pom.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
- com.jero.boot
- byd-structuredplugins
- 2.5.1
-
- 4.0.0
- laws-starter
- pom
-
-
- 1.8
- UTF-8
-
-
-
- laws-starter-cloud
- laws-starter-job
- laws-starter-lock
- laws-starter-rabbitmq
-
-
-
-
- com.jero.boot
- laws-base-tools
-
-
-
- org.springframework.boot
- spring-boot-autoconfigure
-
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/docker-compose.yml b/byd-structuredplugins-serve/jero-cloud-module/docker-compose.yml
deleted file mode 100644
index 6bbc5bd..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/docker-compose.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-version: '2'
-services:
- jero-boot-mysql:
- build:
- context: ../db
- environment:
- MYSQL_ROOT_PASSWORD: root
- MYSQL_ROOT_HOST: '%'
- TZ: Asia/Shanghai
- restart: always
- container_name: jero-boot-mysql
- command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
- --lower_case_table_names=1
- --max_allowed_packet=128M
- --default-authentication-plugin=caching_sha2_password
- ports:
- - 3306:3306
-
- jero-boot-redis:
- image: redis:5.0
- ports:
- - 6379:6379
- restart: always
- container_name: jero-boot-redis
- hostname: jero-boot-redis
-
- jero-boot-nacos:
- restart: always
- image: nacos/nacos-server:1.4.0
- container_name: jero-boot-nacos
- hostname: jero-boot-nacos
- ports:
- - 8848:8848
- depends_on:
- - jero-boot-mysql
-# volumes:
-# - ./init/docker-startup.sh:/home/nacos/bin/docker-startup.sh
-# - ./init/application.properties:/home/nacos/conf/application.properties
- environment:
- MODE: standalone
- PREFER_HOST_MODE: hostname
- SPRING_DATASOURCE_PLATFORM: mysql
- MYSQL_SERVICE_HOST: jero-boot-mysql
- MYSQL_SERVICE_PORT: 3306
- MYSQL_SERVICE_USER: root
- MYSQL_SERVICE_PASSWORD: root
- MYSQL_SERVICE_DB_NAME: nacos
-
- jero-boot-gateway:
- build:
- context: ./jero-cloud-gateway
- ports:
- - 9999:9999
- depends_on:
- - jero-boot-nacos
- - jero-boot-redis
- container_name: jero-boot-gateway
- hostname: jero-boot-gateway
-
- jero-boot-system:
- depends_on:
- - jero-boot-mysql
- - jero-boot-redis
- - jero-boot-nacos
- build:
- context: ./jero-cloud-system-start
- container_name: jero-boot-system
- hostname: jero-boot-system
- restart: on-failure
- environment:
- - TZ=Asia/Shanghai
-
- jero-boot-xxljob:
- build:
- context: ./jero-cloud-xxljob
- ports:
- - 9080:9080
- container_name: jero-boot-xxljob
- hostname: jero-boot-xxljob
-
-# jero-boot-rabbitmq:
-# # image: rabbitmq:3-management
-# image: rabbitmq:3
-# ports:
-# - 5672:5672
-# # - 15672:15672
-# restart: always
-# container_name: jero-boot-rabbitmq
-# hostname: jero-boot-rabbitmq
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/Dockerfile b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/Dockerfile
deleted file mode 100644
index 7c15acc..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM anapsix/alpine-java:8_server-jre_unlimited
-
-MAINTAINER test@163.com
-
-RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
-RUN mkdir -p /jero-cloud-gateway
-
-WORKDIR /jero-cloud-gateway
-
-EXPOSE 9999
-
-ADD ./target/jero-cloud-gateway-2.5.1.jar ./
-
-CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jero-cloud-gateway-2.5.1.jar
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/pom.xml
deleted file mode 100644
index 0747fc6..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/pom.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
- 4.0.0
-
- jero-cloud-gateway
-
-
-
- com.jero.boot
- laws-starter-cloud
-
-
- com.jero.boot
- jero-system-cloud-api
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-gateway
-
-
-
- com.alibaba.cloud
- spring-cloud-alibaba-sentinel-gateway
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-sentinel
-
-
- com.alibaba.csp
- sentinel-web-servlet
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
-
- org.springframework.cloud
- spring-cloud-starter-netflix-hystrix
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-redis-reactive
-
-
-
- org.apache.commons
- commons-pool2
-
-
-
- javax.servlet
- javax.servlet-api
-
-
-
-
- com.github.xiaoymin
- knife4j-spring-ui
- ${knife4j-spring-ui.version}
-
-
- com.github.xiaoymin
- knife4j-spring-boot-starter
- ${knife4j-spring-boot-starter.version}
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
- src/main/resources
- true
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/JeroGatewayApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/JeroGatewayApplication.java
deleted file mode 100644
index f34f3f5..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/JeroGatewayApplication.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.jero;
-
-import com.jero.loader.DynamicRouteLoader;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-
-import javax.annotation.Resource;
-
-@EnableFeignClients
-@EnableDiscoveryClient
-@SpringBootApplication
-public class JeroGatewayApplication implements CommandLineRunner {
-
- @Resource
- private DynamicRouteLoader dynamicRouteLoader;
-
- public static void main(String[] args) {
- SpringApplication.run(JeroGatewayApplication.class, args);
- }
-
-
- /**
- * 容器初始化后加载路由
- * @param strings
- */
- @Override
- public void run(String... strings) {
- dynamicRouteLoader.refresh();
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/GatewayRoutersConfiguration.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/GatewayRoutersConfiguration.java
deleted file mode 100644
index 9c57f39..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/GatewayRoutersConfiguration.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.jero.config;
-
-import lombok.extern.slf4j.Slf4j;
-import com.jero.handler.HystrixFallbackHandler;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.web.reactive.function.server.RequestPredicates;
-import org.springframework.web.reactive.function.server.RouterFunction;
-import org.springframework.web.reactive.function.server.RouterFunctions;
-import org.springframework.web.reactive.function.server.ServerResponse;
-
-import javax.annotation.Resource;
-
-import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
-import static org.springframework.web.reactive.function.server.RouterFunctions.route;
-import static org.springframework.web.reactive.function.server.ServerResponse.ok;
-
-/**
- * @author scott
- * @date 2020/05/26
- * 路由配置信息
- */
-@Slf4j
-@Configuration
-public class GatewayRoutersConfiguration {
-
- public static final long DEFAULT_TIMEOUT = 30000;
-
- public static String SERVER_ADDR;
-
- public static String NAMESPACE;
-
- public static String DATA_ID;
-
- public static String ROUTE_GROUP;
-
- /**
- * 路由配置文件数据获取方式yml,nacos,database
- */
- public static String DATA_TYPE;
-
- @Value("${spring.cloud.nacos.discovery.server-addr}")
- public void setServerAddr(String serverAddr) {
- synchronized (GatewayRoutersConfiguration.class){
- if(SERVER_ADDR == null){
- SERVER_ADDR = serverAddr;
- }
- }
- }
-
- @Value("${spring.cloud.nacos.discovery.namespace}")
- public void setNamespace(String namespace) {
- synchronized (GatewayRoutersConfiguration.class){
- if(NAMESPACE == null){
- NAMESPACE = namespace;
- }
- }
- }
-
- @Value("${jero.route.config.data-id:#{null}}")
- public void setRouteDataId(String dataId) {
- synchronized (GatewayRoutersConfiguration.class){
- if(DATA_ID == null){
- DATA_ID = dataId + ".json";
- }
- }
- }
-
- @Value("${jero.route.config.group:DEFAULT_GROUP:#{null}}")
- public void setRouteGroup(String routeGroup) {
- synchronized (GatewayRoutersConfiguration.class){
- if(ROUTE_GROUP == null){
- ROUTE_GROUP = routeGroup;
- }
- }
- }
-
- @Value("${jero.route.config.data-type}")
- public void setDataType(String dataType) {
- synchronized (GatewayRoutersConfiguration.class){
- if(DATA_TYPE == null){
- DATA_TYPE = dataType;
- }
- }
-
- }
-
-
- /**
- * 路由断言
- * @return
- */
- @Bean
- public RouterFunction routerFunction() {
- return RouterFunctions.route(
- RequestPredicates.path("/globalFallback").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), hystrixFallbackHandler);
-
- }
-
- @Bean
- public RouterFunction indexRouter(@Value("classpath:/META-INF/resources/doc.html") final org.springframework.core.io.Resource indexHtml) {
- return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).syncBody(indexHtml));
- }
-
- @Resource
- private HystrixFallbackHandler hystrixFallbackHandler;
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RateLimiterConfiguration.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RateLimiterConfiguration.java
deleted file mode 100644
index 796943c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RateLimiterConfiguration.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.jero.config;
-
-import com.jero.filter.GlobalAccessTokenFilter;
-import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import reactor.core.publisher.Mono;
-
-/**
- * @author scott
- * @date 2020/5/26
- * 路由限流配置
- */
-@Configuration
-public class RateLimiterConfiguration {
- /**
- * IP限流 (通过exchange对象可以获取到请求信息,这边用了HostName)
- */
- @Bean
- @Primary
- public KeyResolver ipKeyResolver() {
- return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
- }
-
- /**
- * 用户限流 (通过exchange对象可以获取到请求信息,获取当前请求的用户 TOKEN)
- */
- @Bean
- public KeyResolver userKeyResolver() {
- //使用这种方式限流,请求Header中必须携带X-Access-Token参数
- return exchange -> Mono.just(exchange.getRequest().getHeaders().getFirst(GlobalAccessTokenFilter.X_ACCESS_TOKEN));
- }
-
- /**
- * 接口限流 (获取请求地址的uri作为限流key)
- */
- @Bean
- public KeyResolver apiKeyResolver() {
- return exchange -> Mono.just(exchange.getRequest().getPath().value());
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RouterDataType.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RouterDataType.java
deleted file mode 100644
index c1215be..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/config/RouterDataType.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.jero.config;
-
-/**
- * nocos配置方式枚举
- */
-public class RouterDataType {
- private RouterDataType(){
-
- }
- /**
- * 数据库加载路由配置
- */
- public static final String DATABASE = "database";
- /**
- * 本地yml加载路由配置
- */
- public static final String YML = "yml";
- /**
- * nacos加载路由配置
- */
- public static final String NACOS = "nacos";
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/fallback/FallbackController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/fallback/FallbackController.java
deleted file mode 100644
index ac78452..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/fallback/FallbackController.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.jero.fallback;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Mono;
-
-/**
- * 响应超时熔断处理器
- *
- * @author zyf
- */
-@RestController
-public class FallbackController {
-
- /**
- * 全局熔断处理
- * @return
- */
- @RequestMapping("/fallback")
- public Mono fallback() {
- return Mono.just("访问超时,请稍后再试!");
- }
-
- /**
- * demo熔断处理
- * @return
- */
- @RequestMapping("/demo/fallback")
- public Mono fallback2() {
- return Mono.just("访问超时,请稍后再试!");
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/GlobalAccessTokenFilter.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/GlobalAccessTokenFilter.java
deleted file mode 100644
index 948db91..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/GlobalAccessTokenFilter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.jero.filter;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Mono;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
-import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.addOriginalRequestUrl;
-
-/**
- *
- */
-@Slf4j
-@Component
-public class GlobalAccessTokenFilter implements GlobalFilter, Ordered {
- public static final String X_ACCESS_TOKEN = "X-Access-Token";
- public static final String X_GATEWAY_BASE_PATH = "X_GATEWAY_BASE_PATH";
-
- @Override
- public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
-
- String scheme = exchange.getRequest().getURI().getScheme();
- String host = exchange.getRequest().getURI().getHost();
- int port = exchange.getRequest().getURI().getPort();
- String basePath = scheme + "://" + host + ":" + port;
-
- // 1. 重写StripPrefix(获取真实的URL)
- addOriginalRequestUrl(exchange, exchange.getRequest().getURI());
- String rawPath = exchange.getRequest().getURI().getRawPath();
- String newPath = File.separator + Arrays.stream(StringUtils.tokenizeToStringArray(rawPath, File.separator)).skip(1L).collect(Collectors.joining("/"));
- ServerHttpRequest newRequest = exchange.getRequest().mutate().path(newPath).build();
- exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, newRequest.getURI());
-
- //将现在的request,添加当前身份
- ServerHttpRequest mutableReq = exchange.getRequest().mutate().header("Authorization-UserName", "").header(X_GATEWAY_BASE_PATH,basePath).build();
- ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build();
- return chain.filter(mutableExchange);
- }
-
- @Override
- public int getOrder() {
- return 0;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/SentinelFilterContextConfig.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/SentinelFilterContextConfig.java
deleted file mode 100644
index 68e4172..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/filter/SentinelFilterContextConfig.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.jero.filter;
-
-import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.servlet.Filter;
-
-/**
- * @author Administrator
- */
-@Configuration
-public class SentinelFilterContextConfig {
- @Bean
- public FilterRegistrationBean sentinelFilterRegistration() {
- FilterRegistrationBean registration = new FilterRegistrationBean<>();
- registration.setFilter(new CommonFilter());
- registration.addUrlPatterns("/*");
- // 入口资源关闭聚合
- registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
- registration.setName("sentinelFilter");
- registration.setOrder(1);
- return registration;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/HystrixFallbackHandler.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/HystrixFallbackHandler.java
deleted file mode 100644
index b6dda85..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/HystrixFallbackHandler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.jero.handler;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.function.BodyInserters;
-import org.springframework.web.reactive.function.server.HandlerFunction;
-import org.springframework.web.reactive.function.server.ServerRequest;
-import org.springframework.web.reactive.function.server.ServerResponse;
-import reactor.core.publisher.Mono;
-
-import java.util.Optional;
-
-import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR;
-
-/**
- * @author scott
- * @date 2020/05/26
- * Hystrix 降级处理
- */
-@Slf4j
-@Component
-public class HystrixFallbackHandler implements HandlerFunction {
- @Override
- public Mono handle(ServerRequest serverRequest) {
- Optional originalUris = serverRequest.attribute(GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
-
- originalUris.ifPresent(originalUri -> log.error("网关执行请求:{}失败,hystrix服务降级处理", originalUri));
-
- return ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR.value())
- .header("Content-Type","text/plain; charset=utf-8").body(BodyInserters.fromObject("访问超时,请稍后再试"));
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/LoderRouderHandler.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/LoderRouderHandler.java
deleted file mode 100644
index 2f72b4c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/LoderRouderHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.jero.handler;
-
-import com.jero.common.base.BaseMap;
-import com.jero.common.modules.redis.listener.JeroRedisListerer;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.loader.DynamicRouteLoader;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * 路由刷新监听
- */
-@Slf4j
-@Component
-public class LoderRouderHandler implements JeroRedisListerer {
-
- @Resource
- private DynamicRouteLoader dynamicRouteLoader;
-
-
- @Override
- public void onMessage(BaseMap message) {
- dynamicRouteLoader.refresh();
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/MySwaggerResourceProvider.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/MySwaggerResourceProvider.java
deleted file mode 100644
index aa63e36..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/MySwaggerResourceProvider.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.jero.handler;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.gateway.route.RouteLocator;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-import springfox.documentation.swagger.web.SwaggerResource;
-import springfox.documentation.swagger.web.SwaggerResourcesProvider;
-
-import java.util.*;
-
-/**
- * 聚合各个服务的swagger接口
- */
-@Component
-@Primary
-public class MySwaggerResourceProvider implements SwaggerResourcesProvider {
- /**
- * swagger2默认的url后缀
- */
- private static final String SWAGGER2URL = "/v2/api-docs";
-
- /**
- * 网关路由
- */
- private final RouteLocator routeLocator;
-
- /**
- * 网关应用名称
- */
- @Value("${spring.application.name}")
- private String self;
-
- @Autowired
- public MySwaggerResourceProvider(RouteLocator routeLocator) {
- this.routeLocator = routeLocator;
- }
-
- @Override
- public List get() {
- List resources = new ArrayList<>();
- List routeHosts = new ArrayList<>();
- // 获取所有可用的host:serviceId
- routeLocator.getRoutes().filter(route -> route.getUri().getHost() != null)
- .filter(route -> !self.equals(route.getUri().getHost()))
- .subscribe(route -> routeHosts.add(route.getUri().getHost()));
-
- // 记录已经添加过的server,存在同一个应用注册了多个服务在nacos上
- Set dealed = new HashSet<>();
- routeHosts.forEach(instance -> {
- // 拼接url
- String url = "/" + instance.toLowerCase() + SWAGGER2URL;
- if (!dealed.contains(url)) {
- dealed.add(url);
- SwaggerResource swaggerResource = new SwaggerResource();
- swaggerResource.setUrl(url);
- swaggerResource.setName(instance);
- //Swagger排除监控
- if(instance.indexOf("jero-cloud-monitor")==-1){
- resources.add(swaggerResource);
- }
- }
- });
- return resources;
- }
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/SwaggerResourceController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/SwaggerResourceController.java
deleted file mode 100644
index 0315cd1..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/handler/SwaggerResourceController.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jero.handler;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.swagger.web.*;
-
-import java.util.List;
-
-/**
- * swagger聚合接口,三个接口都是 doc.html需要访问的接口
- */
-@RestController
-@RequestMapping("/swagger-resources")
-public class SwaggerResourceController {
- private MySwaggerResourceProvider swaggerResourceProvider;
-
- @Autowired
- public SwaggerResourceController(MySwaggerResourceProvider swaggerResourceProvider) {
- this.swaggerResourceProvider = swaggerResourceProvider;
- }
-
- @RequestMapping(value = "/configuration/security")
- public ResponseEntity securityConfiguration() {
- return new ResponseEntity<>(SecurityConfigurationBuilder.builder().build(), HttpStatus.OK);
- }
-
- @RequestMapping(value = "/configuration/ui")
- public ResponseEntity uiConfiguration() {
- return new ResponseEntity<>(UiConfigurationBuilder.builder().build(), HttpStatus.OK);
- }
-
- @RequestMapping
- public ResponseEntity> swaggerResources() {
- return new ResponseEntity<>(swaggerResourceProvider.get(), HttpStatus.OK);
- }
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteLoader.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteLoader.java
deleted file mode 100644
index c5df47a..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteLoader.java
+++ /dev/null
@@ -1,290 +0,0 @@
-package com.jero.loader;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.api.NacosFactory;
-import com.alibaba.nacos.api.config.ConfigService;
-import com.alibaba.nacos.api.config.listener.Listener;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.google.common.collect.Lists;
-import com.jero.common.constant.CacheConstant;
-import com.jero.common.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import com.jero.config.GatewayRoutersConfiguration;
-import com.jero.config.RouterDataType;
-import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
-import org.springframework.cloud.gateway.filter.FilterDefinition;
-import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
-import org.springframework.cloud.gateway.route.InMemoryRouteDefinitionRepository;
-import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.ApplicationEventPublisherAware;
-import org.springframework.context.annotation.DependsOn;
-import org.springframework.stereotype.Component;
-import reactor.core.publisher.Mono;
-
-import javax.annotation.PostConstruct;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.Executor;
-
-/**
- * 动态路由加载器
- *
- * @author : zyf
- * @date :2020-11-10
- */
-@Slf4j
-@Component
-@DependsOn({"gatewayRoutersConfiguration"})
-public class DynamicRouteLoader implements ApplicationEventPublisherAware {
-
-
- private ApplicationEventPublisher publisher;
-
- private InMemoryRouteDefinitionRepository repository;
-
- private DynamicRouteService dynamicRouteService;
-
- private ConfigService configService;
-
- private RedisUtil redisUtil;
-
- private static String updateRouteText = "update route : {}";
-
-
- public DynamicRouteLoader(InMemoryRouteDefinitionRepository repository, DynamicRouteService dynamicRouteService, RedisUtil redisUtil) {
- if(this.repository == null){
- this.repository = repository;
- }
- this.dynamicRouteService = dynamicRouteService;
- this.redisUtil = redisUtil;
- }
-
- @PostConstruct
- public void init() {
- String dataType = GatewayRoutersConfiguration.DATA_TYPE;
- log.info("初始化路由,dataType:"+ dataType);
- if (RouterDataType.NACOS.endsWith(dataType)) {
- loadRoutesByNacos();
- }
- //从数据库加载路由
- if (RouterDataType.DATABASE.endsWith(dataType)) {
- loadRoutesByRedis();
- }
- }
-
-
- /**
- * 刷新路由
- *
- * @return
- */
- public Mono refresh() {
- String dataType = GatewayRoutersConfiguration.DATA_TYPE;
- if (!RouterDataType.YML.endsWith(dataType)) {
- this.init();
- }
- return Mono.empty();
- }
-
-
- /**
- * 从nacos中读取路由配置
- *
- * @return
- */
- private void loadRoutesByNacos() {
- List routes = Lists.newArrayList();
- configService = createConfigService();
- try {
- String configInfo = "";
- if (configService == null) {
- log.warn("initConfigService fail");
- }else {
- configInfo = configService.getConfig(GatewayRoutersConfiguration.DATA_ID, GatewayRoutersConfiguration.ROUTE_GROUP, GatewayRoutersConfiguration.DEFAULT_TIMEOUT);
- }
- if (StringUtils.isNotBlank(configInfo)) {
- log.info("获取网关当前配置:\r\n{}", configInfo);
- routes = JSON.parseArray(configInfo, RouteDefinition.class);
- }
- } catch (NacosException e) {
- log.error("初始化网关路由时发生错误", e);
- e.printStackTrace();
- }
- for (RouteDefinition definition : routes) {
- log.info(updateRouteText, definition.toString());
- dynamicRouteService.add(definition);
- }
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- dynamicRouteByNacosListener(GatewayRoutersConfiguration.DATA_ID, GatewayRoutersConfiguration.ROUTE_GROUP);
- }
-
-
- /**
- * 从redis中读取路由配置
- *
- * @return
- */
- private void loadRoutesByRedis() {
- List routes = Lists.newArrayList();
- configService = createConfigService();
- if (configService == null) {
- log.warn("initConfigService fail");
- }
- Object configInfo = redisUtil.get(CacheConstant.GATEWAY_ROUTES);
- if (ObjectUtil.isNotEmpty(configInfo)) {
- log.info("获取网关当前配置:\r\n{}", configInfo);
- JSONArray array = JSON.parseArray(configInfo.toString());
- try {
- routes = getRoutesByJson(array);
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- }
- for (MyRouteDefinition definition : routes) {
- log.info(updateRouteText, definition.toString());
- Integer status=definition.getStatus();
- if(status.equals(0)){
- dynamicRouteService.delete(definition.getId());
- }else{
- dynamicRouteService.add(definition);
- }
- }
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- }
-
- /**
- * redis中的信息需要处理下 转成RouteDefinition对象
- * - id: login
- * uri: lb://cloud-jero-system
- * predicates:
- * - Path=/jero-boot/sys/**,
- *
- * @param array
- * @return
- */
- public static List getRoutesByJson(JSONArray array) throws URISyntaxException {
- List ls = new ArrayList<>();
- for (int i = 0; i < array.size(); i++) {
- JSONObject obj = array.getJSONObject(i);
- MyRouteDefinition route = new MyRouteDefinition();
- route.setId(obj.getString("routerId"));
- route.setStatus(obj.getInteger("status"));
- Object uri = obj.get("uri");
- if (uri == null) {
- route.setUri(new URI("lb://" + obj.getString("name")));
- } else {
- route.setUri(new URI(obj.getString("uri")));
- }
- Object predicates = obj.get("predicates");
- if (predicates != null) {
- JSONArray list = JSON.parseArray(predicates.toString());
- List predicateDefinitionList = getPredicateDefinitions(list);
- route.setPredicates(predicateDefinitionList);
- }
-
- Object filters = obj.get("filters");
- if (filters != null) {
- JSONArray list = JSON.parseArray(filters.toString());
- List filterDefinitionList = new ArrayList<>();
- if (ObjectUtil.isNotEmpty(list)) {
- addFilterDefinition(list, filterDefinitionList);
- route.setFilters(filterDefinitionList);
- }
- }
- ls.add(route);
- }
- return ls;
- }
-
- private static void addFilterDefinition(JSONArray list, List filterDefinitionList) {
- for (Object map : list) {
- JSONObject json = (JSONObject) map;
- JSONArray jsonArray = json.getJSONArray("args");
- String name = json.getString("name");
- FilterDefinition filterDefinition = new FilterDefinition();
- for (Object o : jsonArray) {
- JSONObject params = (JSONObject) o;
- filterDefinition.addArg(params.getString("key"), params.get("value").toString());
- }
- filterDefinition.setName(name);
- filterDefinitionList.add(filterDefinition);
- }
- }
-
- private static List getPredicateDefinitions(JSONArray list) {
- List predicateDefinitionList = new ArrayList<>();
- for (Object map : list) {
- JSONObject json = (JSONObject) map;
- PredicateDefinition predicateDefinition = new PredicateDefinition();
- predicateDefinition.setName(json.getString("name"));
- JSONArray jsonArray = json.getJSONArray("args");
- for (int j = 0; j < jsonArray.size(); j++) {
- predicateDefinition.addArg("_genkey" + j, jsonArray.get(j).toString());
- }
- predicateDefinitionList.add(predicateDefinition);
- }
- return predicateDefinitionList;
- }
-
-
- /**
- * 监听Nacos下发的动态路由配置
- *
- * @param dataId
- * @param group
- */
- public void dynamicRouteByNacosListener(String dataId, String group) {
- try {
- configService.addListener(dataId, group, new Listener() {
- @Override
- public void receiveConfigInfo(String configInfo) {
- log.info("进行网关更新:\n\r{}", configInfo);
- List definitionList = JSON.parseArray(configInfo, RouteDefinition.class);
- for (RouteDefinition definition : definitionList) {
- log.info(updateRouteText, definition.toString());
- dynamicRouteService.update(definition);
- }
- }
-
- @Override
- public Executor getExecutor() {
- log.info("getExecutor\n\r");
- return null;
- }
- });
- } catch (Exception e) {
- log.error("从nacos接收动态路由配置出错!!!", e);
- }
- }
-
- /**
- * 创建ConfigService
- *
- * @return
- */
- private ConfigService createConfigService() {
- try {
- Properties properties = new Properties();
- properties.setProperty("serverAddr", GatewayRoutersConfiguration.SERVER_ADDR);
- properties.setProperty("namespace", GatewayRoutersConfiguration.NAMESPACE);
- configService = NacosFactory.createConfigService(properties);
- return configService;
- } catch (Exception e) {
- log.error("创建ConfigService异常", e);
- return null;
- }
- }
-
- @Override
- public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
- this.publisher = applicationEventPublisher;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteService.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteService.java
deleted file mode 100644
index bf9a8da..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/DynamicRouteService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.jero.loader;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
-import org.springframework.cloud.gateway.route.InMemoryRouteDefinitionRepository;
-import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.cloud.gateway.route.RouteDefinitionWriter;
-import org.springframework.cloud.gateway.support.NotFoundException;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.ApplicationEventPublisherAware;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import reactor.core.publisher.Mono;
-
-/**
- * 动态更新路由网关service
- * 1)实现一个Spring提供的事件推送接口ApplicationEventPublisherAware
- * 2)提供动态路由的基础方法,可通过获取bean操作该类的方法。该类提供新增路由、更新路由、删除路由,然后实现发布的功能。
- *
- * @author zyf
- */
-@Slf4j
-@Service
-public class DynamicRouteService implements ApplicationEventPublisherAware {
-
- @Autowired
- private RouteDefinitionWriter routeDefinitionWriter;
-
- @Autowired
- private InMemoryRouteDefinitionRepository repository;
-
- /**
- * 发布事件
- */
-
- private ApplicationEventPublisher publisher;
-
- @Override
- public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
- this.publisher = applicationEventPublisher;
- }
-
- /**
- * 删除路由
- *
- * @param id
- * @return
- */
- public synchronized void delete(String id) {
- try {
- repository.delete(Mono.just(id)).subscribe();
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- }catch (Exception e){
- e.printStackTrace();
- }
- }
-
- /**
- * 更新路由
- *
- * @param definition
- * @return
- */
- public synchronized String update(RouteDefinition definition) {
- try {
- log.info("gateway update route {}", definition);
- delete(definition.getId());
- } catch (Exception e) {
- return "update fail,not find route routeId: " + definition.getId();
- }
- try {
- repository.save(Mono.just(definition)).subscribe();
- this.publisher.publishEvent(new RefreshRoutesEvent(this));
- return "success";
- } catch (Exception e) {
- return "update route fail";
- }
- }
-
- /**
- * 增加路由
- *
- * @param definition
- * @return
- */
- public synchronized String add(RouteDefinition definition) {
- log.info("gateway add route {}", definition);
- try {
- repository.save(Mono.just(definition)).subscribe();
- } catch (Exception e) {
- log.error(e.toString());
- }
- return "success";
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/GatewayRouteVo.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/GatewayRouteVo.java
deleted file mode 100644
index dbc22ea..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/GatewayRouteVo.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.jero.loader;
-
-import lombok.Data;
-
-@Data
-public class GatewayRouteVo {
- private String id;
- private String name;
- private String uri;
- private String predicates;
- private String filters;
- private Integer stripPrefix;
- private Integer retryable;
- private Integer persist;
- private Integer status;
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/MyRouteDefinition.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/MyRouteDefinition.java
deleted file mode 100644
index 2579f84..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/java/com/jero/loader/MyRouteDefinition.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.jero.loader;
-
-import org.springframework.cloud.gateway.route.RouteDefinition;
-
-import java.util.Objects;
-
-/**
- * 自定义RouteDefinition
- * @author zyf
- */
-public class MyRouteDefinition extends RouteDefinition {
- /**
- * 路由状态
- */
- private Integer status;
-
- public Integer getStatus() {
- return status;
- }
-
- public void setStatus(Integer status) {
- this.status = status;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- if (!super.equals(o)) return false;
- MyRouteDefinition that = (MyRouteDefinition) o;
- return Objects.equals(status, that.status);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(super.hashCode(), status);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/application.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/application.yml
deleted file mode 100644
index bf427c9..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/application.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-server:
- port: 8080
-spring:
- application:
- name: jero-gateway
- cloud:
- gateway:
- discovery:
- locator:
- enabled: true
- globalcors:
- cors-configurations:
- '[/**]':
- allowCredentials: true
- allowedOrigins: "*"
- allowedMethods: "*"
- allowedHeaders: "*"
- #如果启用nacos或者数据库配置请删除一下配置
- routes:
- - id: jero-demo
- uri: lb://jero-demo
- predicates:
- - Path=/mock/**,/test/**,/bigscreen/template1/**,/bigscreen/template2/**
- - id: jero-system
- uri: lb://jero-system
- predicates:
- - Path=/sys/**,/eoa/**,/v1/**,/joa/**,/online/**,/bigscreen/**,/jmreport/**,/desform/**,/act/**,/plug-in/**,/generic/**
- - id: jero-system-websocket
- uri: lb:ws://jero-system
- predicates:
- - Path=/websocket/**,/eoaSocket/**,/newsWebsocket/**
- - id: jero-demo-websocket
- uri: lb:ws://jero-demo
- predicates:
- - Path=/vxeSocket/**
- # 全局熔断降级配置
- default-filters:
- - name: Hystrix
- args:
- name: default
- #转发地址
- fallbackUri: 'forward:/fallback'
- - name: Retry
- args:
- #重试次数,默认值是 3 次
- retries: 3
- #HTTP 的状态返回码
- statuses: BAD_GATEWAY,BAD_REQUEST
- #指定哪些方法的请求需要进行重试逻辑,默认值是 GET 方法
- methods: GET,POST
-# hystrix 信号量隔离,10秒后自动超时
-hystrix:
- enabled: true
- shareSecurityContext: true
- command:
- default:
- execution:
- isolation:
- strategy: SEMAPHORE
- thread:
- timeoutInMilliseconds: 10000
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/bootstrap.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/bootstrap.yml
deleted file mode 100644
index 336a8cf..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-# 以下@符号包裹的配置,均在父POM中进行定义.
-# 在微服务环境下,该配置文件会先于application.yml加载
-# 对应到nacos配置的data-id是 application.name(应用名称) + profiles.active(开发环境是dev)
-spring:
- profiles:
- # 当前激活环境
- active: @profile.name@
- cloud:
- #配置Bus id(远程推送事件)
- bus:
- id: ${spring.application.name}:${server.port}
- nacos:
- config:
- # Nacos 认证用户
- username: nacos
- # Nacos 认证密码
- password: nacos
- # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
- namespace: @config.namespace@
- # 配置中心地址
- server-addr: @config.server-addr@
- # 配置对应的分组
- group: @config.group@
- # 配置nacos中的配置文件名称
- prefix: jero-gateway
- # 配置文件后缀
- file-extension: yaml
- # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
- #shared-configs[0]:
- #data-id: @prefix.name@-common.yaml # 配置文件名-Data Id
- #group: @config.group@ # 默认为DEFAULT_GROUP
- #refresh: false # 是否动态刷新,默认为false
- discovery:
- namespace: @config.namespace@
- server-addr: @config.server-addr@
- watch:
- enabled: false
-jero:
- # 签名密钥串(前后端要一致)
- signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
- # 文件限制后缀黑名单
- fileSuffixLimits: 0x00,%00,\\00,.jsp,.exe,.php,.asp,.aspx,.jspx,.xml,.html,.js,.sh,.bin
- # 跨站白名单
- whiteUrls:
- route:
- config:
- data-type: yml
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/logback-spring.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/logback-spring.xml
deleted file mode 100644
index 32f29c6..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-gateway/src/main/resources/logback-spring.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n
-
-
-
-
-
-
-
- ${LOG_HOME}/jeroboot-%d{yyyy-MM-dd}.%i.log
-
- 30
- 10MB
-
-
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/pom.xml
deleted file mode 100644
index 437f5f3..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
- 4.0.0
- jero-cloud-monitor
-
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- de.codecentric
- spring-boot-admin-starter-server
- 2.3.1
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
- src/main/resources
- true
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/JeroMonitorApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/JeroMonitorApplication.java
deleted file mode 100644
index 8011010..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/JeroMonitorApplication.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.jero.monitor;
-
-import de.codecentric.boot.admin.server.config.EnableAdminServer;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * 监控服务
- */
-@SpringBootApplication
-@EnableAdminServer
-public class JeroMonitorApplication {
- public static void main(String[] args) {
- SpringApplication.run(JeroMonitorApplication.class);
- }
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/config/SecuritySecureConfig.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/config/SecuritySecureConfig.java
deleted file mode 100644
index ddf4e13..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/java/com/jero/monitor/config/SecuritySecureConfig.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.jero.monitor.config;
-
-import de.codecentric.boot.admin.server.config.AdminServerProperties;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
-import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
-
-/**
- * @author scott
- */
-@Configuration
-public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
-
- private final String adminContextPath;
-
- public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
- this.adminContextPath = adminServerProperties.getContextPath();
- }
-
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- // 登录成功处理类
- SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
- successHandler.setTargetUrlParameter("redirectTo");
- successHandler.setDefaultTargetUrl(adminContextPath + "/");
-
- http.authorizeRequests()
- //静态文件允许访问
- .antMatchers(adminContextPath + "/assets/**").permitAll()
- //登录页面允许访问
- .antMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll()
- //其他所有请求需要登录
- .anyRequest().authenticated()
- .and()
- //登录页面配置,用于替换security默认页面
- .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
- //登出页面配置,用于替换security默认页面
- .logout().logoutUrl(adminContextPath + "/logout").and()
- .httpBasic().and()
- .csrf()
- .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
- .ignoringAntMatchers(
- "/instances",
- "/actuator/**"
- );
-
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/resources/application.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/resources/application.yml
deleted file mode 100644
index fea8e76..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-monitor/src/main/resources/application.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-server:
- port: 9111
-spring:
- boot:
- admin:
- ui:
- title: JeroCloud监控中心
- client:
- instance:
- metadata:
- tags:
- environment: local
- security:
- user:
-
-
-
-
- name: "admin"
- password: "admin"
- application:
- name: jero-monitor
- cloud:
- nacos:
- discovery:
- server-addr: @config.server-addr@
- metadata:
- user.name: ${spring.security.user.name}
- user.password: ${spring.security.user.password}
-# 服务端点检查
-management:
- trace:
- http:
- enabled: true
- endpoints:
- web:
- exposure:
- include: "*"
- endpoint:
- health:
- show-details: always
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/Dockerfile b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/Dockerfile
deleted file mode 100644
index b0701d0..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM anapsix/alpine-java:8_server-jre_unlimited
-
-MAINTAINER jeroos@163.com
-
-RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
-RUN mkdir -p /jero-cloud-nacos
-
-WORKDIR /jero-cloud-nacos
-
-EXPOSE 8848
-
-ADD ./target/jero-cloud-nacos-2.5.1.jar ./
-
-CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jero-cloud-nacos-2.5.1.jar
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/pom.xml
deleted file mode 100644
index 47a8ae2..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
- 4.0.0
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
-
- jero-cloud-nacos
- jero-cloud-nacos
- nacos启动模块
-
-
-
- aliyun
- aliyun Repository
- https://maven.aliyun.com/repository/public
-
- false
-
-
-
- jeecg
- jeecg Repository
- https://maven.jeecg.org/nexus/content/repositories/jeecg
-
- false
-
-
-
-
-
-
- org.apache.tomcat.embed
- tomcat-embed-jasper
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- com.alibaba.nacos
- nacos-naming
- 2.0.4
-
-
- com.alibaba.nacos
- nacos-istio
- 2.0.4
-
-
- com.alibaba.nacos
- nacos-config
- 2.0.4
-
-
- com.alibaba.nacos
- nacos-console
- 2.0.4
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/java/com/alibaba/nacos/JeroNacosApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/java/com/alibaba/nacos/JeroNacosApplication.java
deleted file mode 100644
index ed8f469..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/java/com/alibaba/nacos/JeroNacosApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.alibaba.nacos;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-/**
- * Nacos 启动类
- * 引用的nacos console 源码运行,简化开发
- * 生产建议从官网下载最新版配置运行
- * @author zyf
- */
-@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
-@ServletComponentScan
-@EnableScheduling
-public class JeroNacosApplication {
-
- /**
- * 是否单机模式启动
- */
- private static String standalone = "true";
-
- /**
- * 是否开启鉴权
- */
- private static String enabled = "false";
-
- public static void main(String[] args) {
- System.setProperty("nacos.standalone", standalone);
- System.setProperty("nacos.core.auth.enabled", enabled);
- System.setProperty("server.tomcat.basedir","logs");
- //自定义启动端口号
- System.setProperty("server.port","8848");
- SpringApplication.run(JeroNacosApplication.class, args);
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/resources/application.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/resources/application.yml
deleted file mode 100644
index de98ea2..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-nacos/src/main/resources/application.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-server:
- servlet:
- contextPath: /nacos
- tomcat:
- accesslog:
- enabled: true
- pattern: '%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i'
- basedir: ''
-spring:
- datasource:
- platform: mysql
-db:
- num: 1
- password:
- '0': 123456
- url:
- '0': jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
- user:
- '0': root
-management:
- metrics:
- export:
- elastic:
- enabled: false
- influx:
- enabled: false
-nacos:
- core:
- auth:
- caching:
- enabled: true
- default:
- token:
- expire:
- seconds: 18000
- secret:
- key: SecretKey012345678901234567890123456789012345678901234567890123456789
- enabled: false
- system:
- type: nacos
- istio:
- mcp:
- server:
- enabled: false
- naming:
- empty-service:
- auto-clean: true
- clean:
- initial-delay-ms: 50000
- period-time-ms: 30000
- security:
- ignore:
- urls: /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
- standalone: true
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/pom.xml
deleted file mode 100644
index 91e1742..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/pom.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
- 4.0.0
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
- jero-cloud-sentinel
- jero-cloud-sentinel
- sentinel启动模块
-
-
-
- aliyun
- aliyun Repository
- https://maven.aliyun.com/repository/public
-
- false
-
-
-
- jeecg
- jeecg Repository
- https://maven.jeecg.org/nexus/content/repositories/jeecg
-
- false
-
-
-
-
-
-
- org.jeecgframework.cloud
- sentinel-dashboard
- 1.8.2
-
-
- com.alibaba.csp
- sentinel-datasource-nacos
-
-
- com.alibaba.csp
- sentinel-core
-
-
- com.alibaba.csp
- sentinel-web-servlet
-
-
- com.alibaba.csp
- sentinel-transport-simple-http
-
-
- com.alibaba.csp
- sentinel-parameter-flow-control
-
-
- com.alibaba.csp
- sentinel-api-gateway-adapter-common
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-undertow
-
-
-
- commons-lang
- commons-lang
- 2.6
-
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.3
-
-
- org.apache.httpcomponents
- httpcore
- 4.4.5
-
-
- org.apache.httpcomponents
- httpasyncclient
- 4.1.3
-
-
- org.apache.httpcomponents
- httpcore-nio
- 4.4.6
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeroSentinelDashboardApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeroSentinelDashboardApplication.java
deleted file mode 100644
index 33d8fc7..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeroSentinelDashboardApplication.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 1999-2018 Alibaba Group Holding Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.alibaba.csp.sentinel.dashboard;
-
-import com.alibaba.csp.sentinel.init.InitExecutor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.env.Environment;
-
-/**
- * Sentinel dashboard application.
- *
- * @author Carpenter Lee
- */
-@SpringBootApplication
-@Slf4j
-public class JeroSentinelDashboardApplication {
-
- public static void main(String[] args) {
- System.setProperty("csp.sentinel.app.type", "1");
- triggerSentinelInit();
- ConfigurableApplicationContext application = SpringApplication.run(JeroSentinelDashboardApplication.class, args);
- Environment env = application.getEnvironment();
- String port = env.getProperty("server.port");
- log.info("\n----------------------------------------------------------\n\t" +
- "Application SentinelDashboard is running! Access URLs:\n\t" +
- "Local: \t\thttp://localhost:" + port + "/\n\t" +
- "----------------------------------------------------------");
- }
-
- private static void triggerSentinelInit() {
- new Thread(InitExecutor::doInit).start();
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/resources/application.properties b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/resources/application.properties
deleted file mode 100644
index 1d74c17..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-sentinel/src/main/resources/application.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#spring settings
-spring.http.encoding.force=true
-spring.http.encoding.charset=UTF-8
-spring.http.encoding.enabled=true
-
-#cookie name setting
-server.servlet.session.cookie.name=sentinel_dashboard_cookie
-#spring.cloud.nacos.config.server-addr=127.0.0.1:8848
-#spring.cloud.nacos.config.namespace=
-#spring.cloud.nacos.config.group-id=DEFAULT_GROUP
-server.port=8087
-
-#logging settings
-logging.level.org.springframework.web=INFO
-logging.file=${user.home}/logs/csp/sentinel-dashboard.log
-logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
-#logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
-
-#auth settings
-auth.filter.exclude-urls=/,/auth/login,/auth/logout,/registry/machine,/version
-auth.filter.exclude-url-suffixes=htm,html,js,css,map,ico,ttf,woff,png
-# If auth.enabled=false, Sentinel console disable login
-auth.username=sentinel
-auth.password=sentinel
-
-# Inject the dashboard version. It's required to enable
-# filtering in pom.xml for this resource file.
-sentinel.dashboard.version=1.8.2
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/Dockerfile b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/Dockerfile
deleted file mode 100644
index da873c0..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM anapsix/alpine-java:8_server-jre_unlimited
-
-MAINTAINER test@163.com
-
-RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
-RUN mkdir -p /jero-cloud-system
-
-WORKDIR /jero-cloud-system
-
-EXPOSE 7001
-
-ADD ./target/jero-cloud-system-start-2.5.1.jar ./
-
-CMD sleep 10;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jero-cloud-system-start-2.5.1.jar
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/pom.xml
deleted file mode 100644
index abf8497..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/pom.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
- 4.0.0
- jero-cloud-system-start
- System项目微服务启动
-
-
-
-
- com.jero.boot
- laws-starter-cloud
-
-
-
- com.jero.boot
- jero-system-cloud-api
-
-
-
-
-
- com.jero.boot
- laws-module-system
-
-
-
- com.jero.boot
- laws-base-generater
- ${jero.version}
-
-
-
- com.jero.boot
- laws-starter-rabbitmq
-
-
-
- com.jero.boot
- laws-starter-job
-
-
-
- com.jero.boot
- laws-starter-lock
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/JeroSystemCloudApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/JeroSystemCloudApplication.java
deleted file mode 100644
index e5a8a6b..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/JeroSystemCloudApplication.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.jero;
-
-import lombok.extern.slf4j.Slf4j;
-import com.jero.common.util.oConvertUtils;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 微服务启动类(采用此类启动项目为微服务模式)
- * 注意: 需要先在naocs里面创建配置文件,参考文档 xxx
- */
-@Slf4j
-@SpringBootApplication
-@EnableFeignClients(basePackages = {"com.jero"})
-@EnableScheduling
-public class JeroSystemCloudApplication extends SpringBootServletInitializer {
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(JeroSystemCloudApplication.class);
- }
-
- public static void main(String[] args) throws UnknownHostException {
- String subString = "/doc.html\n";
- ConfigurableApplicationContext application = SpringApplication.run(JeroSystemCloudApplication.class, args);
- Environment env = application.getEnvironment();
- String ip = InetAddress.getLocalHost().getHostAddress();
- String port = env.getProperty("server.port");
- String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path"));
- log.info("\n----------------------------------------------------------\n\t" +
- "Application jero-boot is running! Access URLs:\n\t" +
- "Local: \t\thttp://localhost:" + port + path + subString +
- "External: \thttp://" + ip + ":" + port + path + subString +
- "Swagger文档: \thttp://" + ip + ":" + port + path + subString +
- "----------------------------------------------------------");
-
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/constant/CloudConstant.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/constant/CloudConstant.java
deleted file mode 100644
index ba65b8d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/constant/CloudConstant.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.jero.modules.cloud.constant;
-
-/**
- * 微服务单元测试常量定义
- */
-public class CloudConstant {
- private CloudConstant(){
-
- }
-
- /**
- * 微服务名【对应模块jero-boot-module-demo】
- */
- public static final String SERVER_NAME_JERO_DEMO = "jero-demo";
-
- /**
- * MQ测试队列名字
- */
- public static final String MQ_JERO_PLACE_ORDER = "jero_place_order";
- public static final String MQ_JERO_PLACE_ORDER_TIME = "jero_place_order_time";
-
- /**
- * MQ测试消息总线
- */
- public static final String MQ_DEMO_BUS_EVENT = "demoBusEvent";
-
- /**
- * 分布式锁lock key
- */
- public static final String REDISSON_DEMO_LOCK_KEY1 = "demoLockKey1";
- public static final String REDISSON_DEMO_LOCK_KEY2 = "demoLockKey2";
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/ebus/DemoBusEvent.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/ebus/DemoBusEvent.java
deleted file mode 100644
index 744696b..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/ebus/DemoBusEvent.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.jero.modules.cloud.ebus;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.event.EventObj;
-import com.jero.boot.starter.rabbitmq.event.JeroBusEventHandler;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import org.springframework.stereotype.Component;
-
-/**
- * 消息处理器【发布订阅】
- */
-@Slf4j
-@Component(CloudConstant.MQ_DEMO_BUS_EVENT)
-public class DemoBusEvent implements JeroBusEventHandler {
-
-
- @Override
- public void onMessage(EventObj obj) {
- if (ObjectUtil.isNotEmpty(obj)) {
- BaseMap baseMap = obj.getBaseMap();
- String orderId = baseMap.get("orderId");
- log.info("业务处理----订单ID:" + orderId);
- }
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/controller/JeroTestFeignController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/controller/JeroTestFeignController.java
deleted file mode 100644
index 74a316d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/controller/JeroTestFeignController.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.jero.modules.cloud.feign.controller;
-
-
-import cn.hutool.core.util.RandomUtil;
-import com.jero.common.api.vo.Results;
-import com.jero.starter.cloud.feign.impl.JeroFeignService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import com.jero.boot.starter.rabbitmq.client.RabbitMqClient;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import com.jero.modules.cloud.feign.feign.JeroTestClient;
-import com.jero.modules.cloud.feign.feign.JeroTestClientDyn;
-import org.apache.poi.ss.formula.functions.T;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-
-@RestController
-@RequestMapping("/sys/test")
-@Api(tags = "【微服务】单元测试")
-public class JeroTestFeignController {
-
- @Autowired
- private JeroFeignService jeroFeignService;
- @Autowired
- private JeroTestClient jeroTestClient;
- @Autowired
- private RabbitMqClient rabbitMqClient;
-
- @GetMapping("getMessage")
- @ApiOperation(value = "测试feign", notes = "测试feign")
- public Results getMessage() {
- return jeroTestClient.getMessage("jero-boot");
- }
-
- @GetMapping("getMessage2")
- @ApiOperation(value = "测试动态feign", notes = "测试动态feign")
- public Results getMessage2() {
- JeroTestClientDyn myClientDyn = jeroFeignService.newInstance(JeroTestClientDyn.class, CloudConstant.SERVER_NAME_JERO_DEMO);
- return myClientDyn.getMessage("动态fegin——jero-boot2");
- }
-
- @GetMapping(value = "/rabbitmq")
- @ApiOperation(value = "测试rabbitmq", notes = "测试rabbitmq")
- public Results rabbitMqClientTest(HttpServletRequest req) {
- //rabbitmq消息队列测试
- BaseMap map = new BaseMap();
- map.put("orderId", RandomUtil.randomNumbers(10));
- rabbitMqClient.sendMessage(CloudConstant.MQ_JERO_PLACE_ORDER, map);
- rabbitMqClient.sendMessage(CloudConstant.MQ_JERO_PLACE_ORDER_TIME, map,10);
-
- //rabbitmq消息总线测试
- BaseMap params = new BaseMap();
- params.put("orderId", "123456");
- rabbitMqClient.publishEvent(CloudConstant.MQ_DEMO_BUS_EVENT, params);
- return Results.OK("MQ发送消息成功");
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClient.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClient.java
deleted file mode 100644
index af1ecac..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClient.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.jero.modules.cloud.feign.feign;
-
-import com.jero.common.api.vo.Results;
-import com.jero.modules.cloud.constant.CloudConstant;
-import com.jero.modules.cloud.feign.feign.fallback.JeroTestClientFallback;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-/**
- * 常规feign接口定义
- */
-@FeignClient(value = CloudConstant.SERVER_NAME_JERO_DEMO, fallbackFactory = JeroTestClientFallback.class)
-@Component
-public interface JeroTestClient {
-
- @GetMapping(value = "/test/getMessage")
- Results getMessage(@RequestParam("name") String name);
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClientDyn.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClientDyn.java
deleted file mode 100644
index 48064f4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/JeroTestClientDyn.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.jero.modules.cloud.feign.feign;
-
-import com.jero.common.api.vo.Results;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-/**
- * 动态feign接口定义
- */
-public interface JeroTestClientDyn {
-
- @GetMapping(value = "/test/getMessage")
- Results getMessage(@RequestParam("name") String name);
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/fallback/JeroTestClientFallback.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/fallback/JeroTestClientFallback.java
deleted file mode 100644
index 7cfce58..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/feign/feign/fallback/JeroTestClientFallback.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.jero.modules.cloud.feign.feign.fallback;
-
-import feign.hystrix.FallbackFactory;
-import com.jero.modules.cloud.feign.feign.JeroTestClient;
-import org.springframework.stereotype.Component;
-
-/**
- * @author qinfeng
- */
-@Component
-public class JeroTestClientFallback implements FallbackFactory {
-
- @Override
- public JeroTestClient create(Throwable throwable) {
- return null;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/lock/DemoLockTest.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/lock/DemoLockTest.java
deleted file mode 100644
index 15c5110..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/lock/DemoLockTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.jero.modules.cloud.lock;
-
-import com.jero.boot.starter.lock.annotation.JLock;
-import com.jero.boot.starter.lock.client.RedissonLockClient;
-import com.jero.boot.starter.rabbitmq.client.RabbitMqClient;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * 分布式锁测试demo
- */
-@Slf4j
-@Component
-public class DemoLockTest {
- @Autowired
- RedissonLockClient redissonLock;
- @Autowired
- RabbitMqClient rabbitMqClient;
-
- /**
- * 测试分布式锁【注解方式】
- * 注释掉测试环境
- */
-// @Scheduled(cron = "0/5 * * * * ?")
- @JLock(lockKey = CloudConstant.REDISSON_DEMO_LOCK_KEY1)
- public void execute() throws InterruptedException {
- log.info("执行execute任务开始,休眠三秒");
- Thread.sleep(3000);
- log.info("=======================业务逻辑1=============================");
- Map map = new BaseMap();
- map.put("orderId", "BJ0001");
- rabbitMqClient.sendMessage(CloudConstant.MQ_JERO_PLACE_ORDER, map);
- //延迟10秒发送
- map.put("orderId", "NJ0002");
- rabbitMqClient.sendMessage(CloudConstant.MQ_JERO_PLACE_ORDER, map, 10000);
- log.info("execute任务结束,休眠三秒");
- }
-
- public DemoLockTest() {
- // do other
- }
-
- /**
- * 测试分布式锁【编码方式】
- */
- //@Scheduled(cron = "0/5 * * * * ?")
- public void execute2() throws InterruptedException {
- if (redissonLock.tryLock(CloudConstant.REDISSON_DEMO_LOCK_KEY2, -1, 6000)) {
- log.info("执行任务execute2开始,休眠十秒");
- Thread.sleep(10000);
- log.info("=======================业务逻辑2=============================");
- log.info("定时execute2结束,休眠十秒");
-
- redissonLock.unlock(CloudConstant.REDISSON_DEMO_LOCK_KEY2);
- } else {
- log.info("execute2获取锁失败");
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver1.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver1.java
deleted file mode 100644
index 4dcaf97..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver1.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.modules.cloud.rabbitmq;
-
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.core.BaseRabbiMqHandler;
-import com.jero.boot.starter.rabbitmq.listenter.MqListener;
-import com.jero.common.annotation.RabbitComponent;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import org.springframework.amqp.rabbit.annotation.RabbitHandler;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.support.AmqpHeaders;
-import org.springframework.messaging.handler.annotation.Header;
-
-/**
- * RabbitMq接受者1
- * (@RabbitListener声明类上,一个类只能监听一个队列)
- */
-@Slf4j
-@RabbitListener(queues = CloudConstant.MQ_JERO_PLACE_ORDER)
-@RabbitComponent(value = "helloReceiver1")
-public class HelloReceiver1 extends BaseRabbiMqHandler {
-
- @RabbitHandler
- public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
- super.onMessage(baseMap, deliveryTag, channel, new MqListener() {
- @Override
- public void handler(BaseMap map, Channel channel) {
- //业务处理
- String orderId = map.get("orderId").toString();
- log.info("MQ Receiver1,orderId : " + orderId);
- }
- });
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver2.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver2.java
deleted file mode 100644
index ecd7d8c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver2.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jero.modules.cloud.rabbitmq;
-
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.core.BaseRabbiMqHandler;
-import com.jero.boot.starter.rabbitmq.listenter.MqListener;
-import com.jero.common.annotation.RabbitComponent;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import org.springframework.amqp.rabbit.annotation.RabbitHandler;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.support.AmqpHeaders;
-import org.springframework.messaging.handler.annotation.Header;
-
-/**
- * RabbitMq接受者2
- * (@RabbitListener声明类上,一个类只能监听一个队列)
- */
-@Slf4j
-@RabbitListener(queues = CloudConstant.MQ_JERO_PLACE_ORDER)
-@RabbitComponent(value = "helloReceiver2")
-public class HelloReceiver2 extends BaseRabbiMqHandler {
-
- @RabbitHandler
- public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
- super.onMessage(baseMap, deliveryTag, channel, new MqListener() {
- @Override
- public void handler(BaseMap map, Channel channel) {
- //业务处理
- String orderId = map.get("orderId").toString();
- log.info("MQ Receiver2,orderId : " + orderId);
- }
- });
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver3.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver3.java
deleted file mode 100644
index 63dbea4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloReceiver3.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jero.modules.cloud.rabbitmq;
-
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.core.BaseRabbiMqHandler;
-import com.jero.boot.starter.rabbitmq.listenter.MqListener;
-import com.jero.common.annotation.RabbitComponent;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import org.springframework.amqp.rabbit.annotation.RabbitHandler;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.support.AmqpHeaders;
-import org.springframework.messaging.handler.annotation.Header;
-
-/**
- * RabbitMq接受者3
- * (@RabbitListener声明类方法上,一个类可以多监听多个队列)
- */
-@Slf4j
-@RabbitComponent(value = "helloReceiver3")
-public class HelloReceiver3 extends BaseRabbiMqHandler {
-
- @RabbitListener(queues = CloudConstant.MQ_JERO_PLACE_ORDER)
- public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
- super.onMessage(baseMap, deliveryTag, channel, new MqListener() {
- @Override
- public void handler(BaseMap map, Channel channel) {
- //业务处理
- String orderId = map.get("orderId").toString();
- log.info("MQ Receiver3,orderId : " + orderId);
- }
- });
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloTimeReceiver.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloTimeReceiver.java
deleted file mode 100644
index 3215553..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/rabbitmq/HelloTimeReceiver.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.jero.modules.cloud.rabbitmq;
-
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import com.jero.boot.starter.rabbitmq.core.BaseRabbiMqHandler;
-import com.jero.boot.starter.rabbitmq.listenter.MqListener;
-import com.jero.common.annotation.RabbitComponent;
-import com.jero.common.base.BaseMap;
-import com.jero.modules.cloud.constant.CloudConstant;
-import org.springframework.amqp.rabbit.annotation.RabbitHandler;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.support.AmqpHeaders;
-import org.springframework.messaging.handler.annotation.Header;
-
-@Slf4j
-@RabbitListener(queues = CloudConstant.MQ_JERO_PLACE_ORDER_TIME)
-@RabbitComponent(value = "helloTimeReceiver")
-public class HelloTimeReceiver extends BaseRabbiMqHandler {
-
- @RabbitHandler
- public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
- super.onMessage(baseMap, deliveryTag, channel, new MqListener() {
- @Override
- public void handler(BaseMap map, Channel channel) {
- //业务处理
- String orderId = map.get("orderId").toString();
- log.info("Time Receiver1,orderId : " + orderId);
- }
- });
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/xxljob/DemoJobHandler.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/xxljob/DemoJobHandler.java
deleted file mode 100644
index 25a2c2c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/java/com/jero/modules/cloud/xxljob/DemoJobHandler.java
+++ /dev/null
@@ -1,235 +0,0 @@
-
-package com.jero.modules.cloud.xxljob;;
-
-
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.IJobHandler;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
-import com.xxl.job.core.util.ShardingUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Arrays;
-
-
-/**
- * xxl-job定时任务测试
- */
-@Component
-@Slf4j
-public class DemoJobHandler {
-
-
- /**
- * 简单任务
- *
- * @param params
- * @return
- */
-
- @XxlJob(value = "demoJob")
- public ReturnT demoJobHandler(String params) {
- log.info("我是定时任务,我执行了...............................");
- return ReturnT.SUCCESS;
- }
-
- /**
- * 2、分片广播任务
- */
-
- @XxlJob("shardingJobHandler")
- public ReturnT shardingJobHandler(String param) throws Exception {
-
- // 分片参数
- ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
- XxlJobLogger.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardingVO.getIndex(), shardingVO.getTotal());
-
- // 业务逻辑
- for (int i = 0; i < shardingVO.getTotal(); i++) {
- if (i == shardingVO.getIndex()) {
- XxlJobLogger.log("第 {} 片, 命中分片开始处理", i);
- } else {
- XxlJobLogger.log("第 {} 片, 忽略", i);
- }
- }
-
- return ReturnT.SUCCESS;
- }
-
-
- /**
- * 3、命令行任务
- */
-
- @XxlJob("commandJobHandler")
- public ReturnT commandJobHandler(String param) throws Exception {
- String command = param;
- int exitValue = -1;
-
- BufferedReader bufferedReader = null;
- try {
- // command process
- Process process = Runtime.getRuntime().exec(command);
- BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());
- bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
-
- // command log
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- XxlJobLogger.log(line);
- }
-
- // command exit
- process.waitFor();
- exitValue = process.exitValue();
- } catch (Exception e) {
- XxlJobLogger.log(e);
- } finally {
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- }
-
- if (exitValue == 0) {
- return IJobHandler.SUCCESS;
- } else {
- return new ReturnT(IJobHandler.FAIL.getCode(), "command exit value(" + exitValue + ") is failed");
- }
- }
-
-
- /**
- * 4、跨平台Http任务
- * 参数示例:
- * "url: http://www.baidu.com\n" +
- * "method: get\n" +
- * "data: content\n";
- */
-
- @XxlJob("httpJobHandler")
- public ReturnT httpJobHandler(String param) throws Exception {
-
- // param parse
- if (param == null || param.trim().length() == 0) {
- XxlJobLogger.log("param[" + param + "] invalid.");
- return ReturnT.FAIL;
- }
- String[] httpParams = param.split("\n");
- String url = null;
- String method = null;
- String data = null;
- for (String httpParam : httpParams) {
- if (httpParam.startsWith("url:")) {
- url = httpParam.substring(httpParam.indexOf("url:") + 4).trim();
- }
- if (httpParam.startsWith("method:")) {
- method = httpParam.substring(httpParam.indexOf("method:") + 7).trim().toUpperCase();
- }
- if (httpParam.startsWith("data:")) {
- data = httpParam.substring(httpParam.indexOf("data:") + 5).trim();
- }
- }
-
- // param valid
- if (url == null || url.trim().length() == 0) {
- XxlJobLogger.log("url[" + url + "] invalid.");
- return ReturnT.FAIL;
- }
- if (method == null || !Arrays.asList("GET", "POST").contains(method)) {
- XxlJobLogger.log("method[" + method + "] invalid.");
- return ReturnT.FAIL;
- }
-
- // request
- HttpURLConnection connection = null;
- BufferedReader bufferedReader = null;
- try {
- // connection
- URL realUrl = new URL(url);
- connection = (HttpURLConnection) realUrl.openConnection();
-
- // connection setting
- connection.setRequestMethod(method);
- connection.setDoOutput(true);
- connection.setDoInput(true);
- connection.setUseCaches(false);
- connection.setReadTimeout(5 * 1000);
- connection.setConnectTimeout(3 * 1000);
- connection.setRequestProperty("connection", "Keep-Alive");
- connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");
-
- // do connection
- connection.connect();
-
- // data
- if (data != null && data.trim().length() > 0) {
- DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
- dataOutputStream.write(data.getBytes("UTF-8"));
- dataOutputStream.flush();
- dataOutputStream.close();
- }
-
- // valid StatusCode
- int statusCode = connection.getResponseCode();
- if (statusCode != 200) {
- throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid.");
- }
-
- // result
- bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
- StringBuilder result = new StringBuilder();
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- result.append(line);
- }
- String responseMsg = result.toString();
-
- XxlJobLogger.log(responseMsg);
- return ReturnT.SUCCESS;
- } catch (Exception e) {
- XxlJobLogger.log(e);
- return ReturnT.FAIL;
- } finally {
- try {
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- if (connection != null) {
- connection.disconnect();
- }
- } catch (Exception e2) {
- XxlJobLogger.log(e2);
- }
- }
-
- }
-
-
- /**
- * 5、生命周期任务示例:任务初始化与销毁时,支持自定义相关逻辑;
- */
-
- @XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy")
- public ReturnT demoJobHandler2(String param) throws Exception {
- XxlJobLogger.log("XXL-JOB, Hello World.");
- return ReturnT.SUCCESS;
- }
-
- public void init() {
- log.info("init");
- }
-
- public void destroy() {
- log.info("destory");
- }
-
-}
-
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/application.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/application.yml
deleted file mode 100644
index afc3cbe..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/application.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-server:
- #微服务端口
- port: 7001
-spring:
- application:
- name: jero-system
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/bootstrap.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/bootstrap.yml
deleted file mode 100644
index 5ff4265..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# 以下@符号包裹的配置,均在父POM中进行定义.
-# 在微服务环境下,该配置文件会先于application.yml加载
-# 对应到nacos配置的data-id是 application.name(应用名称) + profiles.active(开发环境是dev)
-spring:
- profiles:
- # 当前激活环境
- active: @profile.name@
- cloud:
- #配置Bus id(远程推送事件)
- bus:
- id: ${spring.application.name}:${server.port}
- nacos:
- config:
- # Nacos 认证用户
- username: nacos
- # Nacos 认证密码
- password: nacos
- # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
- namespace: @config.namespace@
- # 配置中心地址
- server-addr: @config.server-addr@
- # 配置对应的分组
- group: @config.group@
- # 配置nacos中的配置文件名称
- prefix: jero-system
- # 配置文件后缀
- file-extension: yaml
- # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
- #shared-configs[0]:
- #data-id: @prefix.name@-common.yaml # 配置文件名-Data Id
- #group: @config.group@ # 默认为DEFAULT_GROUP
- #refresh: false # 是否动态刷新,默认为false
- discovery:
- namespace: @config.namespace@
- server-addr: @config.server-addr@
- watch:
- enabled: false
-jero:
- # 签名密钥串(前后端要一致)
- signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
- # 文件限制后缀黑名单
- fileSuffixLimits: 0x00,%00,\\00,.jsp,.exe,.php,.asp,.aspx,.jspx,.xml,.html,.js,.sh,.bin
- # 跨站白名单
- whiteUrls:
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/logback-spring.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/logback-spring.xml
deleted file mode 100644
index 6611fcc..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-system-start/src/main/resources/logback-spring.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n
- UTF-8
-
-
-
-
-
-
-
- ${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log
-
- 30
- 100MB
-
-
-
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n
- UTF-8
-
-
-
-
-
-
-
- ERROR
- ACCEPT
- DENY
-
-
-
- ${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-error.%d{yyyy-MM-dd}.%i.log
-
- 30
-
- 100MB
-
-
-
-
- [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n
- UTF-8
-
-
-
-
-
-
-
-
- /${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.html
-
- 30
- 100MB
-
-
-
- %p%d%msg%M%F{32}%L
-
-
-
-
-
-
-
-
-
- INFO
- ACCEPT
- DENY
-
-
-
- ${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_info.%d{yyyy-MM-dd}.%i.log
-
- 15
-
- 100MB
-
-
-
-
- [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n
- UTF-8
-
-
-
-
-
-
- WARN
-
-
-
-
- ${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_warn.%d{yyyy-MM-dd}.%i.log
-
- 30
-
- 100MB
-
-
-
-
-
- [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n
- UTF-8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/Dockerfile b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/Dockerfile
deleted file mode 100644
index 42aafab..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM anapsix/alpine-java:8_server-jre_unlimited
-
-MAINTAINER test@163.com
-
-RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
-RUN mkdir -p /jero-cloud-xxljob
-
-WORKDIR /jero-cloud-xxljob
-
-EXPOSE 9080
-
-ADD ./target/jero-cloud-xxljob-2.5.1.jar ./
-
-CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jero-cloud-xxljob-2.5.1.jar
-
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/README.md b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/README.md
deleted file mode 100644
index 62abbb8..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-- 初始化数据库(mysql)
-
- jero-cloud-xxljob\doc\db\tables_xxl_job.sql
-
-- 修改数据库连接
-
- jero-cloud-xxljob\src\main\resources\application.yml
-
-- 启动项目
-
- jero-cloud-xxljob\src\main\java\com\xxl\job\admin\XxlJobAdminApplication.java
-
- - 访问项目
- http://127.0.0.1:9080/xxl-job-admin/toLogin
- admin/123456
-
- - docker方式安装
-
- https://my.oschina.net/xxxx/blog/4729020
-
-
-
- 概念说明
- 1、手工创建执行器,AppName对应服务名字 比如: jero-demo
- 2、手工创建定时任务,选择执行器(服务)、JobHandler对应XxlJob的值
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/doc/db/tables_xxl_job.sql b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/doc/db/tables_xxl_job.sql
deleted file mode 100644
index 52e015c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/doc/db/tables_xxl_job.sql
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# XXL-JOB v2.2.0
-# Copyright (c) 2015-present, xuxueli.
-
-CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
-use `xxl_job`;
-
-SET NAMES utf8mb4;
-
-CREATE TABLE `xxl_job_info` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
- `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
- `job_desc` varchar(255) NOT NULL,
- `add_time` datetime DEFAULT NULL,
- `update_time` datetime DEFAULT NULL,
- `author` varchar(64) DEFAULT NULL COMMENT '作者',
- `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
- `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
- `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
- `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
- `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
- `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
- `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
- `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
- `glue_source` mediumtext COMMENT 'GLUE源代码',
- `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
- `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
- `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
- `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
- `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
- `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_log` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
- `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
- `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
- `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
- `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
- `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
- `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
- `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
- `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
- `trigger_msg` text COMMENT '调度-日志',
- `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
- `handle_code` int(11) NOT NULL COMMENT '执行-状态',
- `handle_msg` text COMMENT '执行-日志',
- `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
- PRIMARY KEY (`id`),
- KEY `I_trigger_time` (`trigger_time`),
- KEY `I_handle_code` (`handle_code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_log_report` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
- `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
- `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
- `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
- PRIMARY KEY (`id`),
- UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_logglue` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
- `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
- `glue_source` mediumtext COMMENT 'GLUE源代码',
- `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
- `add_time` datetime DEFAULT NULL,
- `update_time` datetime DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_registry` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `registry_group` varchar(50) NOT NULL,
- `registry_key` varchar(255) NOT NULL,
- `registry_value` varchar(255) NOT NULL,
- `update_time` datetime DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_group` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
- `title` varchar(12) NOT NULL COMMENT '执行器名称',
- `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
- `address_list` varchar(512) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_user` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `username` varchar(50) NOT NULL COMMENT '账号',
- `password` varchar(50) NOT NULL COMMENT '密码',
- `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
- `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
- PRIMARY KEY (`id`),
- UNIQUE KEY `i_username` (`username`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE `xxl_job_lock` (
- `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
- PRIMARY KEY (`lock_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-
-INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL);
-INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_cron`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
-INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
-INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');
-
-commit;
-
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/pom.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/pom.xml
deleted file mode 100644
index 47a7b22..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/pom.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
- jero-cloud-module
- com.jero.boot
- 2.5.1
-
- 4.0.0
-
- jero-cloud-xxljob
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- org.springframework.boot
- spring-boot-starter-freemarker
-
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
- 2.1.3
-
-
-
- mysql
- mysql-connector-java
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-mail
-
-
-
- com.xuxueli
- xxl-job-core
- ${xxl-job-core.version}
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- package
-
- repackage
-
-
-
-
- true
- com.xxl.job.admin.XxlJobAdminApplication
-
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java
deleted file mode 100644
index fce10a8..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.xxl.job.admin;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * @author xuxueli 2018-10-28 00:38:13
- */
-@SpringBootApplication
-public class XxlJobAdminApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(XxlJobAdminApplication.class, args);
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java
deleted file mode 100644
index 066c1da..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.springframework.beans.propertyeditors.CustomDateEditor;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-public class IndexController {
-
- @Resource
- private XxlJobService xxlJobService;
- @Resource
- private LoginService loginService;
-
-
- @RequestMapping("/")
- public String index(Model model) {
-
- Map dashboardMap = xxlJobService.dashboardInfo();
- model.addAllAttributes(dashboardMap);
-
- return "index";
- }
-
- @RequestMapping("/chartInfo")
- @ResponseBody
- public ReturnT> chartInfo(Date startDate, Date endDate) {
- return xxlJobService.chartInfo(startDate, endDate);
- }
-
- @RequestMapping("/toLogin")
- @PermissionLimit(limit=false)
- public String toLogin(HttpServletRequest request, HttpServletResponse response) {
- if (loginService.ifLogin(request, response) != null) {
- return "redirect:/";
- }
- return "login";
- }
-
- @PostMapping("login")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
- boolean ifRem = ifRemember!=null && ifRemember.trim().length()>0 && "on".equals(ifRemember);
- return loginService.login(request, response, userName, password, ifRem);
- }
-
- @PostMapping("logout")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT logout(HttpServletRequest request, HttpServletResponse response){
- return loginService.logout(request, response);
- }
-
- @RequestMapping("/help")
- public String help() {
- return "help";
- }
-
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- dateFormat.setLenient(false);
- binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java
deleted file mode 100644
index 2bed115..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.core.biz.AdminBiz;
-import com.xxl.job.core.biz.model.HandleCallbackParam;
-import com.xxl.job.core.biz.model.RegistryParam;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.util.GsonTool;
-import com.xxl.job.core.util.XxlJobRemotingUtil;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/5/10.
- */
-@Controller
-@RequestMapping("/api")
-public class JobApiController {
-
- @Resource
- private AdminBiz adminBiz;
-
- /**
- * api
- *
- * @param uri
- * @param data
- * @return
- */
- @RequestMapping("/{uri}")
- @ResponseBody
- @PermissionLimit(limit=false)
- public ReturnT api(HttpServletRequest request, @PathVariable("uri") String uri, @RequestBody(required = false) String data) {
-
- // valid
- if (!"POST".equalsIgnoreCase(request.getMethod())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "invalid request, HttpMethod not support.");
- }
- if (uri==null || uri.trim().length()==0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "invalid request, uri-mapping empty.");
- }
- if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null
- && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0
- && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN))) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "The access token is wrong.");
- }
-
- // services mapping
- if ("callback".equals(uri)) {
- List callbackParamList = GsonTool.fromJson(data, List.class, HandleCallbackParam.class);
- return adminBiz.callback(callbackParamList);
- } else if ("registry".equals(uri)) {
- RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
- return adminBiz.registry(registryParam);
- } else if ("registryRemove".equals(uri)) {
- RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
- return adminBiz.registryRemove(registryParam);
- } else {
- return new ReturnT<>(ReturnT.FAIL_CODE, "invalid request, uri-mapping("+ uri +") not found.");
- }
-
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
deleted file mode 100644
index 927f56d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogGlueDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.List;
-
-/**
- * job code controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/jobcode")
-public class JobCodeController {
-
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobLogGlueDao xxlJobLogGlueDao;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, int jobId) {
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
- List jobLogGlues = xxlJobLogGlueDao.findByJobId(jobId);
-
- if (jobInfo == null) {
- throw new IllegalArgumentException(I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
- if (GlueTypeEnum.BEAN == GlueTypeEnum.match(jobInfo.getGlueType())) {
- throw new IllegalArgumentException(I18nUtil.getString("jobinfo_glue_gluetype_unvalid"));
- }
-
- // valid permission
- JobInfoController.validPermission(request, jobInfo.getJobGroup());
-
- // Glue类型-字典
- model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());
-
- model.addAttribute("jobInfo", jobInfo);
- model.addAttribute("jobLogGlues", jobLogGlues);
- return "jobcode/jobcode.index";
- }
-
- @RequestMapping("/save")
- @ResponseBody
- public ReturnT save(Model model, int id, String glueSource, String glueRemark) {
- // valid
- if (glueRemark==null) {
- return new ReturnT<>(500, (I18nUtil.getString("system_please_input") + I18nUtil.getString("jobinfo_glue_remark")) );
- }
- if (glueRemark.length()<4 || glueRemark.length()>100) {
- return new ReturnT<>(500, I18nUtil.getString("jobinfo_glue_remark_limit"));
- }
- XxlJobInfo existsJobInfo = xxlJobInfoDao.loadById(id);
- if (existsJobInfo == null) {
- return new ReturnT<>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
-
- // update new code
- existsJobInfo.setGlueSource(glueSource);
- existsJobInfo.setGlueRemark(glueRemark);
- existsJobInfo.setGlueUpdatetime(new Date());
-
- existsJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(existsJobInfo);
-
- // log old code
- XxlJobLogGlue xxlJobLogGlue = new XxlJobLogGlue();
- xxlJobLogGlue.setJobId(existsJobInfo.getId());
- xxlJobLogGlue.setGlueType(existsJobInfo.getGlueType());
- xxlJobLogGlue.setGlueSource(glueSource);
- xxlJobLogGlue.setGlueRemark(glueRemark);
-
- xxlJobLogGlue.setAddTime(new Date());
- xxlJobLogGlue.setUpdateTime(new Date());
- xxlJobLogGlueDao.save(xxlJobLogGlue);
-
- // remove code backup more than 30
- xxlJobLogGlueDao.removeOld(existsJobInfo.getId(), 30);
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
deleted file mode 100644
index 79e03d0..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobRegistryDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.RegistryConfig;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.*;
-
-/**
- * job group controller
- * @author xuxueli 2016-10-02 20:52:56
- */
-@Controller
-@RequestMapping("/jobgroup")
-public class JobGroupController {
-
- @Resource
- public XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
-
- private String systemPleaseInput= "system_please_input";
-
- @RequestMapping
- public String index(Model model) {
- return "jobgroup/jobgroup.index";
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map pageList(HttpServletRequest request,
- @RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- String appname, String title) {
-
- // page query
- List list = xxlJobGroupDao.pageList(start, length, appname, title);
- int listCount = xxlJobGroupDao.pageListCount(start, length, appname, title);
-
- // package result
- Map maps = new HashMap<>();
- maps.put("recordsTotal", listCount); // 总记录数
- maps.put("recordsFiltered", listCount); // 过滤后的总记录数
- maps.put("data", list); // 分页列表
- return maps;
- }
-
- @RequestMapping("/save")
- @ResponseBody
- public ReturnT save(XxlJobGroup xxlJobGroup){
-
- // valid
- if (xxlJobGroup.getAppname()==null || xxlJobGroup.getAppname().trim().length()==0) {
- return new ReturnT<>(500, (I18nUtil.getString(systemPleaseInput)+"AppName") );
- }
- if (xxlJobGroup.getAppname().length()<4 || xxlJobGroup.getAppname().length()>64) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_appname_length") );
- }
- if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
- return new ReturnT<>(500, (I18nUtil.getString(systemPleaseInput) + I18nUtil.getString("jobgroup_field_title")) );
- }
- if (xxlJobGroup.getAddressType()!=0) {
- ReturnT x = getStringReturnT(xxlJobGroup);
- if (x != null) {
- return x;
- }
- }
-
- int ret = xxlJobGroupDao.save(xxlJobGroup);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- private ReturnT getStringReturnT(XxlJobGroup xxlJobGroup) {
- if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
- }
- String[] addresss = xxlJobGroup.getAddressList().split(",");
- for (String item: addresss) {
- if (item==null || item.trim().length()==0) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid") );
- }
- }
- return null;
- }
-
- @RequestMapping("/update")
- @ResponseBody
- public ReturnT update(XxlJobGroup xxlJobGroup){
- // valid
- if (xxlJobGroup.getAppname()==null || xxlJobGroup.getAppname().trim().length()==0) {
- return new ReturnT<>(500, (I18nUtil.getString(systemPleaseInput)+"AppName") );
- }
- if (xxlJobGroup.getAppname().length()<4 || xxlJobGroup.getAppname().length()>64) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_appname_length") );
- }
- if (xxlJobGroup.getTitle()==null || xxlJobGroup.getTitle().trim().length()==0) {
- return new ReturnT<>(500, (I18nUtil.getString(systemPleaseInput) + I18nUtil.getString("jobgroup_field_title")) );
- }
- if (xxlJobGroup.getAddressType() == 0) {
- // 0=自动注册
- List registryList = findRegistryByAppName(xxlJobGroup.getAppname());
- StringBuilder addressListStr = getStringBuilder(registryList);
- xxlJobGroup.setAddressList(addressListStr.toString());
- } else {
- // 1=手动录入
- if (xxlJobGroup.getAddressList()==null || xxlJobGroup.getAddressList().trim().length()==0) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_addressType_limit") );
- }
- if (getAddresss(xxlJobGroup))
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_field_registryList_unvalid"));
- }
-
- int ret = xxlJobGroupDao.update(xxlJobGroup);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- private boolean getAddresss(XxlJobGroup xxlJobGroup) {
- String[] addresss = xxlJobGroup.getAddressList().split(",");
- for (String item : addresss) {
- if (item == null || item.trim().length() == 0) {
- return true;
- }
- }
- return false;
- }
-
- private StringBuilder getStringBuilder(List registryList) {
- StringBuilder addressListStr = new StringBuilder();
- if (registryList!=null && !registryList.isEmpty()) {
- Collections.sort(registryList);
- addressListStr = new StringBuilder();
- for (String item:registryList) {
- addressListStr.append(item).append(",");
- }
- addressListStr = new StringBuilder(addressListStr.substring(0, addressListStr.length() - 1));
- }
- return addressListStr;
- }
-
- private List findRegistryByAppName(String appnameParam){
- HashMap> appAddressMap = new HashMap<>();
- List list = xxlJobRegistryDao.findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (list != null) {
- for (XxlJobRegistry item: list) {
- if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
- String appname = item.getRegistryKey();
- List registryList = appAddressMap.get(appname);
- if (registryList == null) {
- registryList = new ArrayList<>();
- }
-
- if (!registryList.contains(item.getRegistryValue())) {
- registryList.add(item.getRegistryValue());
- }
- appAddressMap.put(appname, registryList);
- }
- }
- }
- return appAddressMap.get(appnameParam);
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- public ReturnT remove(int id){
-
- // valid
- int count = xxlJobInfoDao.pageListCount(0, 10, id, -1, null, null, null);
- if (count > 0) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_del_limit_0") );
- }
-
- List allList = xxlJobGroupDao.findAll();
- if (allList.size() == 1) {
- return new ReturnT<>(500, I18nUtil.getString("jobgroup_del_limit_1") );
- }
-
- int ret = xxlJobGroupDao.remove(id);
- return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
- }
-
- @RequestMapping("/loadById")
- @ResponseBody
- public ReturnT loadById(int id){
- XxlJobGroup jobGroup = xxlJobGroupDao.load(id);
- return jobGroup!=null?new ReturnT<>(jobGroup):new ReturnT<>(ReturnT.FAIL_CODE, null);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
deleted file mode 100644
index d65417e..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import com.xxl.job.core.util.DateUtil;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.text.ParseException;
-import java.util.*;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/jobinfo")
-public class JobInfoController {
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobService xxlJobService;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) {
-
- // 枚举-字典
- model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 路由策略-列表
- model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); // Glue类型-字典
- model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); // 阻塞处理策略-字典
-
- // 执行器列表
- List jobGroupListAll = xxlJobGroupDao.findAll();
-
- // filter group
- List jobGroupList = filterJobGroupByRole(request, jobGroupListAll);
- if (!jobGroupList.isEmpty()) {
- throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
- }
-
- model.addAttribute("JobGroupList", jobGroupList);
- model.addAttribute("jobGroup", jobGroup);
-
- return "jobinfo/jobinfo.index";
- }
-
- public static List filterJobGroupByRole(HttpServletRequest request, List jobGroupListAll){
- List jobGroupList = new ArrayList<>();
- if (jobGroupListAll!=null && !jobGroupListAll.isEmpty()) {
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getRole() == 1) {
- jobGroupList = jobGroupListAll;
- } else {
- List groupIdStrs = new ArrayList<>();
- if (loginUser.getPermission()!=null && loginUser.getPermission().trim().length()>0) {
- groupIdStrs = Arrays.asList(loginUser.getPermission().trim().split(","));
- }
- for (XxlJobGroup groupItem:jobGroupListAll) {
- getAdd(jobGroupList, groupIdStrs, groupItem);
- }
- }
- }
- return jobGroupList;
- }
-
- private static void getAdd(List jobGroupList, List groupIdStrs, XxlJobGroup groupItem) {
- if (groupIdStrs.contains(String.valueOf(groupItem.getId()))) {
- jobGroupList.add(groupItem);
- }
- }
-
- public static void validPermission(HttpServletRequest request, int jobGroup) {
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (!loginUser.validPermission(jobGroup)) {
- throw new IllegalArgumentException(I18nUtil.getString("system_permission_limit") + "[username="+ loginUser.getUsername() +"]");
- }
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map pageList(@RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
-
- return xxlJobService.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
- }
-
- @RequestMapping("/add")
- @ResponseBody
- public ReturnT add(XxlJobInfo jobInfo) {
- return xxlJobService.add(jobInfo);
- }
-
- @RequestMapping("/update")
- @ResponseBody
- public ReturnT update(XxlJobInfo jobInfo) {
- return xxlJobService.update(jobInfo);
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- public ReturnT remove(int id) {
- return xxlJobService.remove(id);
- }
-
- @RequestMapping("/stop")
- @ResponseBody
- public ReturnT pause(int id) {
- return xxlJobService.stop(id);
- }
-
- @RequestMapping("/start")
- @ResponseBody
- public ReturnT start(int id) {
- return xxlJobService.start(id);
- }
-
- @RequestMapping("/trigger")
- @ResponseBody
- //@PermissionLimit(limit = false)
- public ReturnT triggerJob(int id, String executorParam, String addressList) {
- // force cover job param
- if (executorParam == null) {
- executorParam = "";
- }
-
- JobTriggerPoolHelper.trigger(id, TriggerTypeEnum.MANUAL, -1, null, executorParam, addressList);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/nextTriggerTime")
- @ResponseBody
- public ReturnT> nextTriggerTime(String cron) {
- List result = new ArrayList<>();
- try {
- CronExpression cronExpression = new CronExpression(cron);
- Date lastTime = new Date();
- for (int i = 0; i < 5; i++) {
- lastTime = cronExpression.getNextValidTimeAfter(lastTime);
- if (lastTime != null) {
- result.add(DateUtil.formatDateTime(lastTime));
- } else {
- break;
- }
- }
- } catch (ParseException e) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid"));
- }
- return new ReturnT<>(result);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java
deleted file mode 100644
index 036dbe4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogDao;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.KillParam;
-import com.xxl.job.core.biz.model.LogParam;
-import com.xxl.job.core.biz.model.LogResult;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
-@Controller
-@RequestMapping("/joblog")
-public class JobLogController {
- private static Logger logger = LoggerFactory.getLogger(JobLogController.class);
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- public XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobLogDao xxlJobLogDao;
-
- @RequestMapping
- public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) {
-
- // 执行器列表
- List jobGroupListAll = xxlJobGroupDao.findAll();
-
- // filter group
- List jobGroupList = JobInfoController.filterJobGroupByRole(request, jobGroupListAll);
- if (jobGroupList==null || jobGroupList.isEmpty()) {
- throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
- }
-
- model.addAttribute("JobGroupList", jobGroupList);
-
- // 任务
- if (jobId > 0) {
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
- if (jobInfo == null) {
- throw new IllegalArgumentException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid"));
- }
-
- model.addAttribute("jobInfo", jobInfo);
-
- // valid permission
- JobInfoController.validPermission(request, jobInfo.getJobGroup());
- }
-
- return "joblog/joblog.index";
- }
-
- @RequestMapping("/getJobsByGroup")
- @ResponseBody
- public ReturnT> getJobsByGroup(int jobGroup){
- List list = xxlJobInfoDao.getJobsByGroup(jobGroup);
- return new ReturnT<>(list);
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map pageList(HttpServletRequest request,
- @RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- int jobGroup, int jobId, int logStatus, String filterTime) {
-
- // valid permission
- JobInfoController.validPermission(request, jobGroup); // 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup
-
- // parse param
- Date triggerTimeStart = null;
- Date triggerTimeEnd = null;
- if (filterTime!=null && filterTime.trim().length()>0) {
- String[] temp = filterTime.split(" - ");
- if (temp.length == 2) {
- triggerTimeStart = DateUtil.parseDateTime(temp[0]);
- triggerTimeEnd = DateUtil.parseDateTime(temp[1]);
- }
- }
-
- // page query
- List list = xxlJobLogDao.pageList(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
- int listCount = xxlJobLogDao.pageListCount(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus);
-
- // package result
- Map maps = new HashMap<>();
- maps.put("recordsTotal", listCount); // 总记录数
- maps.put("recordsFiltered", listCount); // 过滤后的总记录数
- maps.put("data", list); // 分页列表
- return maps;
- }
-
- @RequestMapping("/logDetailPage")
- public String logDetailPage(int id, Model model){
-
- // base check
- XxlJobLog jobLog = xxlJobLogDao.load(id);
- if (jobLog == null) {
- throw new IllegalArgumentException(I18nUtil.getString("joblog_logid_unvalid"));
- }
-
- model.addAttribute("triggerCode", jobLog.getTriggerCode());
- model.addAttribute("handleCode", jobLog.getHandleCode());
- model.addAttribute("executorAddress", jobLog.getExecutorAddress());
- model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime());
- model.addAttribute("logId", jobLog.getId());
- return "joblog/joblog.detail";
- }
-
- @RequestMapping("/logDetailCat")
- @ResponseBody
- public ReturnT logDetailCat(String executorAddress, long triggerTime, long logId, int fromLineNum){
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(executorAddress);
- ReturnT logResult = executorBiz.log(new LogParam(triggerTime, logId, fromLineNum));
-
- // is end
- if (logResult.getContent()!=null && logResult.getContent().getFromLineNum() > logResult.getContent().getToLineNum()) {
- XxlJobLog jobLog = xxlJobLogDao.load(logId);
- if (jobLog.getHandleCode() > 0) {
- logResult.getContent().setEnd(true);
- }
- }
-
- return logResult;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
- }
- }
-
- @RequestMapping("/logKill")
- @ResponseBody
- public ReturnT logKill(int id){
- // base check
- XxlJobLog log = xxlJobLogDao.load(id);
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId());
- if (jobInfo==null) {
- return new ReturnT<>(500, I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
- }
- if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
- return new ReturnT<>(500, I18nUtil.getString("joblog_kill_log_limit"));
- }
-
- // request of kill
- ReturnT runResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(log.getExecutorAddress());
- runResult = executorBiz.kill(new KillParam(jobInfo.getId()));
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- runResult = new ReturnT<>(500, e.getMessage());
- }
-
- if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
- log.setHandleCode(ReturnT.FAIL_CODE);
- log.setHandleMsg( I18nUtil.getString("joblog_kill_log_byman")+":" + (runResult.getMsg()!=null?runResult.getMsg():""));
- log.setHandleTime(new Date());
- xxlJobLogDao.updateHandleInfo(log);
- return new ReturnT<>(runResult.getMsg());
- } else {
- return new ReturnT<>(500, runResult.getMsg());
- }
- }
-
- @RequestMapping("/clearLog")
- @ResponseBody
- public ReturnT clearLog(int jobGroup, int jobId, int type){
-
- Date clearBeforeTime = null;
- int clearBeforeNum = 0;
- if (type == 1) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -1); // 清理一个月之前日志数据
- } else if (type == 2) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -3); // 清理三个月之前日志数据
- } else if (type == 3) {
- clearBeforeTime = DateUtil.addMonths(new Date(), -6); // 清理六个月之前日志数据
- } else if (type == 4) {
- clearBeforeTime = DateUtil.addYears(new Date(), -1); // 清理一年之前日志数据
- } else if (type == 5) {
- clearBeforeNum = 1000; // 清理一千条以前日志数据
- } else if (type == 6) {
- clearBeforeNum = 10000; // 清理一万条以前日志数据
- } else if (type == 7) {
- clearBeforeNum = 30000; // 清理三万条以前日志数据
- } else if (type == 8) {
- clearBeforeNum = 100000; // 清理十万条以前日志数据
- } else if (type == 9) {
- clearBeforeNum = 0; // 清理所有日志数据
- } else {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_clean_type_unvalid"));
- }
-
- List logIds = null;
- do {
- logIds = xxlJobLogDao.findClearLogIds(jobGroup, jobId, clearBeforeTime, clearBeforeNum, 1000);
- if (logIds!=null && !logIds.isEmpty()) {
- xxlJobLogDao.clearLog(logIds);
- }
- } while (logIds!=null && !logIds.isEmpty());
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java
deleted file mode 100644
index 9b7d5fa..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.xxl.job.admin.controller;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobUserDao;
-import com.xxl.job.admin.service.LoginService;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.util.DigestUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author xuxueli 2019-05-04 16:39:50
- */
-@Controller
-@RequestMapping("/user")
-public class UserController {
-
- @Resource
- private XxlJobUserDao xxlJobUserDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- private String systemLenghLimit ="system_lengh_limit";
- private String fourTwenty ="[4-20]";
-
- @RequestMapping
- @PermissionLimit(adminuser = true)
- public String index(Model model) {
-
- // 执行器列表
- List groupList = xxlJobGroupDao.findAll();
- model.addAttribute("groupList", groupList);
-
- return "user/user.index";
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public Map pageList(@RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- String username, int role) {
-
- // page list
- List list = xxlJobUserDao.pageList(start, length, username, role);
- int listCount = xxlJobUserDao.pageListCount(start, length, username, role);
-
- // package result
- Map maps = new HashMap<>();
- maps.put("recordsTotal", listCount); // 总记录数
- maps.put("recordsFiltered", listCount); // 过滤后的总记录数
- maps.put("data", list); // 分页列表
- return maps;
- }
-
- @RequestMapping("/add")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT add(XxlJobUser xxlJobUser) {
-
- // valid username
- if (!StringUtils.hasText(xxlJobUser.getUsername())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_username") );
- }
- xxlJobUser.setUsername(xxlJobUser.getUsername().trim());
- if (!(xxlJobUser.getUsername().length()>=4 && xxlJobUser.getUsername().length()<=20)) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(systemLenghLimit)+fourTwenty );
- }
- // valid password
- if (!StringUtils.hasText(xxlJobUser.getPassword())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("system_please_input")+I18nUtil.getString("user_password") );
- }
- xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
- if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(systemLenghLimit)+fourTwenty );
- }
- // md5 password
- xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
-
- // check repeat
- XxlJobUser existUser = xxlJobUserDao.loadByUserName(xxlJobUser.getUsername());
- if (existUser != null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("user_username_repeat") );
- }
-
- // write
- xxlJobUserDao.save(xxlJobUser);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/update")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT update(HttpServletRequest request, XxlJobUser xxlJobUser) {
-
- // avoid opt login seft
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getUsername().equals(xxlJobUser.getUsername())) {
- return new ReturnT<>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
- }
-
- // valid password
- if (StringUtils.hasText(xxlJobUser.getPassword())) {
- xxlJobUser.setPassword(xxlJobUser.getPassword().trim());
- if (!(xxlJobUser.getPassword().length()>=4 && xxlJobUser.getPassword().length()<=20)) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(systemLenghLimit)+fourTwenty );
- }
- // md5 password
- xxlJobUser.setPassword(DigestUtils.md5DigestAsHex(xxlJobUser.getPassword().getBytes()));
- } else {
- xxlJobUser.setPassword(null);
- }
-
- // write
- xxlJobUserDao.update(xxlJobUser);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/remove")
- @ResponseBody
- @PermissionLimit(adminuser = true)
- public ReturnT remove(HttpServletRequest request, int id) {
-
- // avoid opt login seft
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
- if (loginUser.getId() == id) {
- return new ReturnT<>(ReturnT.FAIL.getCode(), I18nUtil.getString("user_update_loginuser_limit"));
- }
-
- xxlJobUserDao.delete(id);
- return ReturnT.SUCCESS;
- }
-
- @RequestMapping("/updatePwd")
- @ResponseBody
- public ReturnT updatePwd(HttpServletRequest request, String password){
-
- // valid password
- if (password==null || password.trim().length()==0){
- return new ReturnT<>(ReturnT.FAIL.getCode(), "密码不可为空");
- }
- password = password.trim();
- if (!(password.length()>=4 && password.length()<=20)) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(systemLenghLimit)+fourTwenty );
- }
-
- // md5 password
- String md5Password = DigestUtils.md5DigestAsHex(password.getBytes());
-
- // update pwd
- XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
-
- // do write
- XxlJobUser existUser = xxlJobUserDao.loadByUserName(loginUser.getUsername());
- existUser.setPassword(md5Password);
- xxlJobUserDao.update(existUser);
-
- return ReturnT.SUCCESS;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
deleted file mode 100644
index 379efd4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.xxl.job.admin.controller.annotation;
-
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 权限限制
- * @author xuxueli 2015-12-12 18:29:02
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface PermissionLimit {
-
- /**
- * 登录拦截 (默认拦截)
- */
- boolean limit() default true;
-
- /**
- * 要求管理员权限
- *
- * @return
- */
- boolean adminuser() default false;
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
deleted file mode 100644
index 658f8a6..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import com.xxl.job.admin.core.util.FtlUtil;
-import com.xxl.job.admin.core.util.I18nUtil;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-
-/**
- * push cookies to model as cookieMap
- *
- * @author xuxueli 2015-12-12 18:09:04
- */
-@Component
-public class CookieInterceptor extends HandlerInterceptorAdapter {
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
-
- // cookie
- if (modelAndView!=null && request.getCookies()!=null && request.getCookies().length>0) {
- HashMap cookieMap = new HashMap<>();
- for (Cookie ck : request.getCookies()) {
- cookieMap.put(ck.getName(), ck);
- }
- modelAndView.addObject("cookieMap", cookieMap);
- }
-
- // static method
- if (modelAndView != null) {
- modelAndView.addObject("I18nUtil", FtlUtil.generateStaticModel(I18nUtil.class.getName()));
- }
-
- super.postHandle(request, response, handler, modelAndView);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
deleted file mode 100644
index 73d9aec..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import com.xxl.job.admin.controller.annotation.PermissionLimit;
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.service.LoginService;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * 权限拦截
- *
- * @author xuxueli 2015-12-12 18:09:04
- */
-@Component
-public class PermissionInterceptor extends HandlerInterceptorAdapter {
-
- @Resource
- private LoginService loginService;
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-
- if (!(handler instanceof HandlerMethod)) {
- return super.preHandle(request, response, handler);
- }
-
- // if need login
- boolean needLogin = true;
- boolean needAdminuser = false;
- HandlerMethod method = (HandlerMethod)handler;
- PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
- if (permission!=null) {
- needLogin = permission.limit();
- needAdminuser = permission.adminuser();
- }
-
- if (needLogin) {
- XxlJobUser loginUser = loginService.ifLogin(request, response);
- if (loginUser == null) {
- response.sendRedirect(request.getContextPath() + "/toLogin");
- return false;
- }
- if (needAdminuser && loginUser.getRole()!=1) {
- throw new IllegalArgumentException(I18nUtil.getString("system_permission_limit"));
- }
- request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
- }
-
- return super.preHandle(request, response, handler);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
deleted file mode 100644
index 0be6ba6..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.xxl.job.admin.controller.interceptor;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import javax.annotation.Resource;
-
-/**
- * web mvc config
- *
- * @author xuxueli 2018-04-02 20:48:20
- */
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
-
- @Resource
- private PermissionInterceptor permissionInterceptor;
- @Resource
- private CookieInterceptor cookieInterceptor;
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(permissionInterceptor).addPathPatterns("/**");
- registry.addInterceptor(cookieInterceptor).addPathPatterns("/**");
- }
-
-}
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
deleted file mode 100644
index d5448d7..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.xxl.job.admin.controller.resolver;
-
-import com.xxl.job.admin.core.exception.XxlJobException;
-import com.xxl.job.admin.core.util.JacksonUtil;
-import com.xxl.job.core.biz.model.ReturnT;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.HandlerExceptionResolver;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * common exception resolver
- *
- * @author xuxueli 2016-1-6 19:22:18
- */
-@Slf4j
-@Component
-public class WebExceptionResolver implements HandlerExceptionResolver {
-
- @Override
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex) {
-
- if (!(ex instanceof XxlJobException)) {
- log.error("WebExceptionResolver:{}", ex);
- }
-
- // if json
- boolean isJson = false;
- HandlerMethod method = (HandlerMethod)handler;
- ResponseBody responseBody = method.getMethodAnnotation(ResponseBody.class);
- if (responseBody != null) {
- isJson = true;
- }
-
- // error result
- ReturnT errorResult = new ReturnT<>(ReturnT.FAIL_CODE, ex.toString().replace("\n", " "));
-
- // response
- ModelAndView mv = new ModelAndView();
- if (isJson) {
- try {
- response.setContentType("application/json;charset=utf-8");
- response.getWriter().print(JacksonUtil.writeValueAsString(errorResult));
- } catch (IOException e) {
- log.error(e.getMessage(), e);
- }
- return mv;
- } else {
-
- mv.addObject("exceptionMsg", errorResult.getMsg());
- mv.setViewName("/common/common.exception");
- return mv;
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java
deleted file mode 100644
index 4165ff3..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.xxl.job.admin.core.alarm;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-
-/**
- * @author xuxueli 2020-01-19
- */
-public interface JobAlarm {
-
- /**
- * job alarm
- *
- * @param info
- * @param jobLog
- * @return
- */
- public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java
deleted file mode 100644
index addeb2e..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.xxl.job.admin.core.alarm;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class JobAlarmer implements ApplicationContextAware, InitializingBean {
- private static Logger logger = LoggerFactory.getLogger(JobAlarmer.class);
-
- private ApplicationContext applicationContext;
- private List jobAlarmList;
-
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception {
- Map serviceBeanMap = applicationContext.getBeansOfType(JobAlarm.class);
- if (!serviceBeanMap.isEmpty()) {
- jobAlarmList = new ArrayList<>(serviceBeanMap.values());
- }
- }
-
- /**
- * job alarm
- *
- * @param info
- * @param jobLog
- * @return
- */
- public boolean alarm(XxlJobInfo info, XxlJobLog jobLog) {
-
- boolean result = false;
- if (jobAlarmList!=null && !jobAlarmList.isEmpty()) {
- result = true; // success means all-success
- for (JobAlarm alarm: jobAlarmList) {
- boolean resultItem = false;
- try {
- resultItem = alarm.doAlarm(info, jobLog);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- if (!resultItem) {
- result = false;
- }
- }
- }
-
- return result;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
deleted file mode 100644
index 5fa2bf2..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.xxl.job.admin.core.alarm.impl;
-
-import com.xxl.job.admin.core.alarm.JobAlarm;
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.model.ReturnT;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.mail.javamail.MimeMessageHelper;
-import org.springframework.stereotype.Component;
-
-import javax.mail.internet.MimeMessage;
-import java.text.MessageFormat;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * job alarm by email
- *
- * @author xuxueli 2020-01-19
- */
-@Component
-public class EmailJobAlarm implements JobAlarm {
- private static Logger logger = LoggerFactory.getLogger(EmailJobAlarm.class);
-
- private static final String TD = "\n";
-
- /**
- * fail alarm
- *
- * @param jobLog
- */
- public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog){
- boolean alarmResult = true;
-
- // send monitor email
- if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
-
- // alarmContent
- String alarmContent = "Alarm Job LogId=" + jobLog.getId();
- if (jobLog.getTriggerCode() != ReturnT.SUCCESS_CODE) {
- alarmContent += " TriggerMsg= " + jobLog.getTriggerMsg();
- }
- if (jobLog.getHandleCode()>0 && jobLog.getHandleCode() != ReturnT.SUCCESS_CODE) {
- alarmContent += " HandleCode=" + jobLog.getHandleMsg();
- }
-
- // email info
- XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(info.getJobGroup());
- String personal = I18nUtil.getString("admin_name_full");
- String title = I18nUtil.getString("jobconf_monitor");
- String content = MessageFormat.format(loadEmailJobAlarmTemplate(),
- group!=null?group.getTitle():"null",
- info.getId(),
- info.getJobDesc(),
- alarmContent);
-
- Set emailSet = new HashSet<>(Arrays.asList(info.getAlarmEmail().split(",")));
- for (String email: emailSet) {
-
- // make mail
- try {
- MimeMessage mimeMessage = XxlJobAdminConfig.getAdminConfig().getMailSender().createMimeMessage();
-
- MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
- helper.setFrom(XxlJobAdminConfig.getAdminConfig().getEmailUserName(), personal);
- helper.setTo(email);
- helper.setSubject(title);
- helper.setText(content, true);
-
- XxlJobAdminConfig.getAdminConfig().getMailSender().send(mimeMessage);
- } catch (Exception e) {
- logger.error(">>>>>>>>>>> xxl-job, job fail alarm email send error, JobLogId:{}", jobLog.getId(), e);
-
- alarmResult = false;
- }
-
- }
- }
-
- return alarmResult;
- }
-
- /**
- * load email job alarm template
- *
- * @return
- */
- private static final String loadEmailJobAlarmTemplate(){
-
- return "" + I18nUtil.getString("jobconf_monitor_detail") + ":" +
- " \n" +
- " " +
- " \n" +
- " "+ I18nUtil.getString("jobinfo_field_jobgroup") +TD +
- " "+ I18nUtil.getString("jobinfo_field_id") +TD +
- " "+ I18nUtil.getString("jobinfo_field_jobdesc") +TD +
- " "+ I18nUtil.getString("jobconf_monitor_alarm_title") +TD +
- " "+ I18nUtil.getString("jobconf_monitor_alarm_content") +TD +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " {0} \n" +
- " {1} \n" +
- " {2} \n" +
- " "+ I18nUtil.getString("jobconf_monitor_alarm_type") +TD +
- " {3} \n" +
- " \n" +
- " \n" +
- "
";
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
deleted file mode 100644
index dd385f1..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package com.xxl.job.admin.core.conf;
-
-import com.xxl.job.admin.core.alarm.JobAlarmer;
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.dao.*;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import javax.sql.DataSource;
-import java.util.Arrays;
-
-/**
- * xxl-job config
- *
- * @author xuxueli 2017-04-28
- */
-
-@Component
-public class XxlJobAdminConfig implements InitializingBean, DisposableBean {
-
- private static XxlJobAdminConfig adminConfig = null;
- public static XxlJobAdminConfig getAdminConfig() {
- return adminConfig;
- }
-
-
- // ---------------------- XxlJobScheduler ----------------------
-
- private XxlJobScheduler xxlJobScheduler;
-
- @Override
- public void afterPropertiesSet() throws Exception {
- xxlJobScheduler = new XxlJobScheduler();
- xxlJobScheduler.init();
- }
-
- @Override
- public void destroy() throws Exception {
- xxlJobScheduler.destroy();
- }
-
-
- // ---------------------- XxlJobScheduler ----------------------
-
- // conf
- @Value("${xxl.job.i18n}")
- private String i18n;
-
- @Value("${xxl.job.accessToken}")
- private String accessToken;
-
- @Value("${spring.mail.username}")
- private String emailUserName;
-
- @Value("${xxl.job.triggerpool.fast.max}")
- private int triggerPoolFastMax;
-
- @Value("${xxl.job.triggerpool.slow.max}")
- private int triggerPoolSlowMax;
-
- @Value("${xxl.job.logretentiondays}")
- private int logretentiondays;
-
- // dao, service
-
- @Resource
- private XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobLogReportDao xxlJobLogReportDao;
- @Resource
- private JavaMailSender mailSender;
- @Resource
- private DataSource dataSource;
- @Resource
- private JobAlarmer jobAlarmer;
-
-
- public String getI18n() {
- if (!Arrays.asList("zh_CN", "zh_TC", "en").contains(i18n)) {
- return "zh_CN";
- }
- return i18n;
- }
-
- public String getAccessToken() {
- return accessToken;
- }
-
- public String getEmailUserName() {
- return emailUserName;
- }
-
- public int getTriggerPoolFastMax() {
- if (triggerPoolFastMax < 200) {
- return 200;
- }
- return triggerPoolFastMax;
- }
-
- public int getTriggerPoolSlowMax() {
- if (triggerPoolSlowMax < 100) {
- return 100;
- }
- return triggerPoolSlowMax;
- }
-
- public int getLogretentiondays() {
- if (logretentiondays < 7) {
- return -1; // Limit greater than or equal to 7, otherwise close
- }
- return logretentiondays;
- }
-
- public XxlJobLogDao getXxlJobLogDao() {
- return xxlJobLogDao;
- }
-
- public XxlJobInfoDao getXxlJobInfoDao() {
- return xxlJobInfoDao;
- }
-
- public XxlJobRegistryDao getXxlJobRegistryDao() {
- return xxlJobRegistryDao;
- }
-
- public XxlJobGroupDao getXxlJobGroupDao() {
- return xxlJobGroupDao;
- }
-
- public XxlJobLogReportDao getXxlJobLogReportDao() {
- return xxlJobLogReportDao;
- }
-
- public JavaMailSender getMailSender() {
- return mailSender;
- }
-
- public DataSource getDataSource() {
- return dataSource;
- }
-
- public JobAlarmer getJobAlarmer() {
- return jobAlarmer;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
deleted file mode 100644
index 384a42d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
+++ /dev/null
@@ -1,1809 +0,0 @@
-/*
- * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package com.xxl.job.admin.core.cron;
-
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.Serializable;
-import java.text.ParseException;
-import java.util.*;
-
-/**
- * Provides a parser and evaluator for unix-like cron expressions. Cron
- * expressions provide the ability to specify complex time combinations such as
- * "At 8:00am every Monday through Friday" or "At 1:30am every
- * last Friday of the month".
- *
- * Cron expressions are comprised of 6 required fields and one optional field
- * separated by white space. The fields respectively are described as follows:
- *
- *
- *
- * Field Name
- *
- * Allowed Values
- *
- * Allowed Special Characters
- *
- *
- * Seconds
- *
- * 0-59
- *
- * , - * /
- *
- *
- * Minutes
- *
- * 0-59
- *
- * , - * /
- *
- *
- * Hours
- *
- * 0-23
- *
- * , - * /
- *
- *
- * Day-of-month
- *
- * 1-31
- *
- * , - * ? / L W
- *
- *
- * Month
- *
- * 0-11 or JAN-DEC
- *
- * , - * /
- *
- *
- * Day-of-Week
- *
- * 1-7 or SUN-SAT
- *
- * , - * ? / L #
- *
- *
- * Year (Optional)
- *
- * empty, 1970-2199
- *
- * , - * /
- *
- *
- *
- * The '*' character is used to specify all values. For example, "*"
- * in the minute field means "every minute".
- *
- * The '?' character is allowed for the day-of-month and day-of-week fields. It
- * is used to specify 'no specific value'. This is useful when you need to
- * specify something in one of the two fields, but not the other.
- *
- * The '-' character is used to specify ranges For example "10-12" in
- * the hour field means "the hours 10, 11 and 12".
- *
- * The ',' character is used to specify additional values. For example
- * "MON,WED,FRI" in the day-of-week field means "the days Monday,
- * Wednesday, and Friday".
- *
- * The '/' character is used to specify increments. For example "0/15"
- * in the seconds field means "the seconds 0, 15, 30, and 45". And
- * "5/15" in the seconds field means "the seconds 5, 20, 35, and
- * 50". Specifying '*' before the '/' is equivalent to specifying 0 is
- * the value to start with. Essentially, for each field in the expression, there
- * is a set of numbers that can be turned on or off. For seconds and minutes,
- * the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to
- * 31, and for months 0 to 11 (JAN to DEC). The "/" character simply helps you turn
- * on every "nth" value in the given set. Thus "7/6" in the
- * month field only turns on month "7", it does NOT mean every 6th
- * month, please note that subtlety.
- *
- * The 'L' character is allowed for the day-of-month and day-of-week fields.
- * This character is short-hand for "last", but it has different
- * meaning in each of the two fields. For example, the value "L" in
- * the day-of-month field means "the last day of the month" - day 31
- * for January, day 28 for February on non-leap years. If used in the
- * day-of-week field by itself, it simply means "7" or
- * "SAT". But if used in the day-of-week field after another value, it
- * means "the last xxx day of the month" - for example "6L"
- * means "the last friday of the month". You can also specify an offset
- * from the last day of the month, such as "L-3" which would mean the third-to-last
- * day of the calendar month. When using the 'L' option, it is important not to
- * specify lists, or ranges of values, as you'll get confusing/unexpected results.
- *
- * The 'W' character is allowed for the day-of-month field. This character
- * is used to specify the weekday (Monday-Friday) nearest the given day. As an
- * example, if you were to specify "15W" as the value for the
- * day-of-month field, the meaning is: "the nearest weekday to the 15th of
- * the month". So if the 15th is a Saturday, the trigger will fire on
- * Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the
- * 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th.
- * However if you specify "1W" as the value for day-of-month, and the
- * 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not
- * 'jump' over the boundary of a month's days. The 'W' character can only be
- * specified when the day-of-month is a single day, not a range or list of days.
- *
- * The 'L' and 'W' characters can also be combined for the day-of-month
- * expression to yield 'LW', which translates to "last weekday of the
- * month".
- *
- * The '#' character is allowed for the day-of-week field. This character is
- * used to specify "the nth" XXX day of the month. For example, the
- * value of "6#3" in the day-of-week field means the third Friday of
- * the month (day 6 = Friday and "#3" = the 3rd one in the month).
- * Other examples: "2#1" = the first Monday of the month and
- * "4#5" = the fifth Wednesday of the month. Note that if you specify
- * "#5" and there is not 5 of the given day-of-week in the month, then
- * no firing will occur that month. If the '#' character is used, there can
- * only be one expression in the day-of-week field ("3#1,6#3" is
- * not valid, since there are two expressions).
- *
- *
- *
- * The legal characters and the names of months and days of the week are not
- * case sensitive.
- *
- *
- * NOTES:
- *
- * Support for specifying both a day-of-week and a day-of-month value is
- * not complete (you'll need to use the '?' character in one of these fields).
- *
- * Overflowing ranges is supported - that is, having a larger number on
- * the left hand side than the right. You might do 22-2 to catch 10 o'clock
- * at night until 2 o'clock in the morning, or you might have NOV-FEB. It is
- * very important to note that overuse of overflowing ranges creates ranges
- * that don't make sense and no effort has been made to determine which
- * interpretation CronExpression chooses. An example would be
- * "0 0 14-6 ? * FRI-MON".
- *
- *
- *
- * @author Sharada Jambula, James House
- * @author Contributions from Mads Henderson
- * @author Refactoring from CronTrigger to CronExpression by Aaron Craven
- *
- * Borrowed from quartz v2.3.1
- */
-@Slf4j
-public final class CronExpression implements Serializable, Cloneable {
-
- private static final long serialVersionUID = 12423409423L;
-
- protected static final int SECOND = 0;
- protected static final int MINUTE = 1;
- protected static final int HOUR = 2;
- protected static final int DAY_OF_MONTH = 3;
- protected static final int MONTH = 4;
- protected static final int DAY_OF_WEEK = 5;
- protected static final int YEAR = 6;
- protected static final int ALL_SPEC_INT = 99; // '*'
- protected static final int NO_SPEC_INT = 98; // '?'
- protected static final Integer ALL_SPEC = ALL_SPEC_INT;
- protected static final Integer NO_SPEC = NO_SPEC_INT;
-
- protected static final Map monthMap = new HashMap<>(20);
- protected static final Map dayMap = new HashMap<>(60);
-
- static {
- monthMap.put("JAN", 0);
- monthMap.put("FEB", 1);
- monthMap.put("MAR", 2);
- monthMap.put("APR", 3);
- monthMap.put("MAY", 4);
- monthMap.put("JUN", 5);
- monthMap.put("JUL", 6);
- monthMap.put("AUG", 7);
- monthMap.put("SEP", 8);
- monthMap.put("OCT", 9);
- monthMap.put("NOV", 10);
- monthMap.put("DEC", 11);
-
- dayMap.put("SUN", 1);
- dayMap.put("MON", 2);
- dayMap.put("TUE", 3);
- dayMap.put("WED", 4);
- dayMap.put("THU", 5);
- dayMap.put("FRI", 6);
- dayMap.put("SAT", 7);
- }
-
- private final String cronExpressionData;
- private TimeZone timeZone = null;
- protected transient TreeSet seconds;
- protected transient TreeSet minutes;
- protected transient TreeSet hours;
- protected transient TreeSet daysOfMonth;
- protected transient TreeSet months;
- protected transient TreeSet daysOfWeek;
- protected transient TreeSet years;
-
- protected transient boolean lastdayOfWeek = false;
- protected transient int nthdayOfWeek = 0;
- protected transient boolean lastdayOfMonth = false;
- protected transient boolean nearestWeekday = false;
- protected transient int lastdayOffset = 0;
- protected transient boolean expressionParsed = false;
-
- public static final int MAX_YEAR = Calendar.getInstance().get(Calendar.YEAR) + 100;
-
- /**
- * Constructs a new CronExpression based on the specified
- * parameter.
- *
- * @param cronExpression String representation of the cron expression the
- * new object should represent
- * @throws java.text.ParseException if the string expression cannot be parsed into a valid
- * CronExpression
- */
- public CronExpression(String cronExpression) throws ParseException {
- if (cronExpression == null) {
- throw new IllegalArgumentException("cronExpression cannot be null");
- }
-
- this.cronExpressionData = cronExpression.toUpperCase(Locale.US);
-
- buildExpression(this.cronExpressionData);
- }
-
- /**
- * Constructs a new {@code CronExpression} as a copy of an existing
- * instance.
- *
- * @param expression The existing cron expression to be copied
- */
- public CronExpression(CronExpression expression) {
- /*
- * We don't call the other constructor here since we need to swallow the
- * ParseException. We also elide some of the sanity checking as it is
- * not logically trippable.
- */
- this.cronExpressionData = expression.getCronExpression();
- try {
- buildExpression(cronExpressionData);
- } catch (ParseException ex) {
- throw new AssertionError();
- }
- if (expression.getTimeZone() != null) {
- setTimeZone((TimeZone) expression.getTimeZone().clone());
- }
- }
-
- /**
- * Indicates whether the given date satisfies the cron expression. Note that
- * milliseconds are ignored, so two Dates falling on different milliseconds
- * of the same second will always have the same result here.
- *
- * @param date the date to evaluate
- * @return a boolean indicating whether the given date satisfies the cron
- * expression
- */
- public boolean isSatisfiedBy(Date date) {
- Calendar testDateCal = Calendar.getInstance(getTimeZone());
- testDateCal.setTime(date);
- testDateCal.set(Calendar.MILLISECOND, 0);
- Date originalDate = testDateCal.getTime();
-
- testDateCal.add(Calendar.SECOND, -1);
-
- Date timeAfter = getTimeAfter(testDateCal.getTime());
-
- return ((timeAfter != null) && (timeAfter.equals(originalDate)));
- }
-
- /**
- * Returns the next date/time after the given date/time which
- * satisfies the cron expression.
- *
- * @param date the date/time at which to begin the search for the next valid
- * date/time
- * @return the next valid date/time
- */
- public Date getNextValidTimeAfter(Date date) {
- return getTimeAfter(date);
- }
-
- /**
- * Returns the next date/time after the given date/time which does
- * not satisfy the expression
- *
- * @param date the date/time at which to begin the search for the next
- * invalid date/time
- * @return the next valid date/time
- */
- public Date getNextInvalidTimeAfter(Date date) {
- long difference = 1000;
-
- //move back to the nearest second so differences will be accurate
- Calendar adjustCal = Calendar.getInstance(getTimeZone());
- adjustCal.setTime(date);
- adjustCal.set(Calendar.MILLISECOND, 0);
- Date lastDate = adjustCal.getTime();
-
- Date newDate;
-
- //FUTURE_TODO: (QUARTZ-481) IMPROVE THIS! The following is a BAD solution to this problem. Performance will be very bad here, depending on the cron expression. It is, however A solution.
-
- //keep getting the next included time until it's farther than one second
- // apart. At that point, lastDate is the last valid fire time. We return
- // the second immediately following it.
- while (difference == 1000) {
- newDate = getTimeAfter(lastDate);
- if (newDate == null) {
- break;
- }
-
- difference = newDate.getTime() - lastDate.getTime();
-
- if (difference == 1000) {
- lastDate = newDate;
- }
- }
-
- return new Date(lastDate.getTime() + 1000);
- }
-
- /**
- * Returns the time zone for which this CronExpression
- * will be resolved.
- */
- public TimeZone getTimeZone() {
- if (timeZone == null) {
- timeZone = TimeZone.getDefault();
- }
-
- return timeZone;
- }
-
- /**
- * Sets the time zone for which this CronExpression
- * will be resolved.
- */
- public void setTimeZone(TimeZone timeZone) {
- this.timeZone = timeZone;
- }
-
- /**
- * Returns the string representation of the CronExpression
- *
- * @return a string representation of the CronExpression
- */
- @Override
- public String toString() {
- return cronExpressionData;
- }
-
- /**
- * Indicates whether the specified cron expression can be parsed into a
- * valid cron expression
- *
- * @param cronExpression the expression to evaluate
- * @return a boolean indicating whether the given expression is a valid cron
- * expression
- */
- public static boolean isValidExpression(String cronExpression) {
-
- try {
- new CronExpression(cronExpression);
- } catch (ParseException pe) {
- return false;
- }
-
- return true;
- }
-
- public static void validateExpression(String cronExpression) throws ParseException {
-
- new CronExpression(cronExpression);
- }
-
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Expression Parsing Functions
- //
- ////////////////////////////////////////////////////////////////////////////
-
- protected void buildExpression(String expression) throws ParseException {
- expressionParsed = true;
-
- try {
-
- getTime();
-
- int exprOn = SECOND;
-
- StringTokenizer exprsTok = new StringTokenizer(expression, " \t",
- false);
-
- while (exprsTok.hasMoreTokens() && exprOn <= YEAR) {
- String expr = exprsTok.nextToken().trim();
- getExprOn(exprOn, expr);
-
- StringTokenizer vTok = new StringTokenizer(expr, ",");
- while (vTok.hasMoreTokens()) {
- String v = vTok.nextToken();
- storeExpressionVals(0, v, exprOn);
- }
-
- exprOn++;
- }
-
- if (exprOn <= DAY_OF_WEEK) {
- throw new ParseException("Unexpected end of expression.",
- expression.length());
- }
-
- if (exprOn <= YEAR) {
- storeExpressionVals(0, "*", YEAR);
- }
-
- TreeSet dow = getSet(DAY_OF_WEEK);
- TreeSet dom = getSet(DAY_OF_MONTH);
-
- // Copying the logic from the UnsupportedOperationException below
- assert dom != null;
- boolean dayOfMSpec = !dom.contains(NO_SPEC);
- boolean dayOfWSpec = !dow.contains(NO_SPEC);
- if ((!dayOfMSpec || dayOfWSpec) && (!dayOfWSpec || dayOfMSpec)) {
- throw new ParseException(
- "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.", 0);
- }
- } catch (ParseException pe) {
- throw pe;
- } catch (Exception e) {
- throw new ParseException("Illegal cron expression format ("
- + e.toString() + ")", 0);
- }
- }
-
- private void getTime() {
- if (seconds == null) {
- seconds = new TreeSet<>();
- }
- if (minutes == null) {
- minutes = new TreeSet<>();
- }
- if (hours == null) {
- hours = new TreeSet<>();
- }
- if (daysOfMonth == null) {
- daysOfMonth = new TreeSet<>();
- }
- if (months == null) {
- months = new TreeSet<>();
- }
- if (daysOfWeek == null) {
- daysOfWeek = new TreeSet<>();
- }
- if (years == null) {
- years = new TreeSet<>();
- }
- }
-
- private void getExprOn(int exprOn, String expr) throws ParseException {
- // throw an exception if L is used with other days of the month
- if (exprOn == DAY_OF_MONTH && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
- throw new ParseException("Support for specifying 'L' and 'LW' with other days of the month is not implemented", -1);
- }
- // throw an exception if L is used with other days of the week
- if (exprOn == DAY_OF_WEEK && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) {
- throw new ParseException("Support for specifying 'L' with other days of the week is not implemented", -1);
- }
- if (exprOn == DAY_OF_WEEK && expr.indexOf('#') != -1 && expr.indexOf('#', expr.indexOf('#') + 1) != -1) {
- throw new ParseException("Support for specifying multiple \"nth\" days is not implemented.", -1);
- }
- }
-
- protected int storeExpressionVals(int pos, String s, int type)
- throws ParseException {
-
- int incr = 0;
- int i = skipWhiteSpace(pos, s);
- if (i >= s.length()) {
- return i;
- }
- char c = s.charAt(i);
- if ((c >= 'A') && (c <= 'Z') && (!s.equals("L")) && (!s.equals("LW")) && (!s.matches("^L-\\d*W?"))) {
- String sub = s.substring(i, i + 3);
- return getReturn(s, type, incr, i, sub);
- }
-
- if (c == '?') {
- return getType(s, type, i);
- }
-
- return getReturn(s, type, incr, i, c);
- }
-
- private int getReturn(String s, int type, int incr, int i, String sub) throws ParseException {
- char c;
- int sval = -1;
- int eval = -1;
- if (type == MONTH) {
- sval = getMonthNumber(sub) + 1;
- getSval(i, sub, sval <= 0, "Invalid Month value: '");
- if (s.length() > i + 3) {
- c = s.charAt(i + 3);
- if (c == '-') {
- i += 4;
- sub = s.substring(i, i + 3);
- eval = getMonthNumber(sub) + 1;
- getSval(i, sub, eval <= 0, "Invalid Month value: '");
- }
- }
- } else if (type == DAY_OF_WEEK) {
- sval = getDayOfWeekNumber(sub);
- getSval(i, sub, sval < 0, "Invalid Day-of-Week value: '");
- if (s.length() > i + 3) {
- c = s.charAt(i + 3);
- if (c == '-') {
- i += 4;
- sub = s.substring(i, i + 3);
- eval = getDayOfWeekNumber(sub);
- }
- i = getI(s, i, c, sub, eval);
- }
-
- } else {
- throw new ParseException(
- "Illegal characters for this position: '" + sub + "'",
- i);
- }
- incr = getIncr(incr, eval != -1, 1);
- addToSet(sval, eval, incr, type);
- return (i + 3);
- }
-
- private int getI(String s, int i, char c, String sub, int eval) throws ParseException {
- if (c == '-') {
- getSval(i, sub, eval < 0, "Invalid Day-of-Week value: '");
- } else if (c == '#') {
- i = getNthdayOfWeek(s, i);
- } else if (c == 'L') {
- lastdayOfWeek = true;
- i++;
- }
- return i;
- }
-
- private int getReturn(String s, int type, int incr, int i, char c) throws ParseException {
- if (c == '*' || c == '/') {
- return getC(s, type, incr, i, c);
- } else if (c == 'L') {
- return getType1(s, type, i);
- } else if (c >= '0' && c <= '9') {
- int val = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- addToSet(val, -1, -1, type);
- } else {
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(val, s, i);
- val = vs.value;
- i = vs.pos;
- }
- i = checkNext(i, s, val, type);
- return i;
- }
- } else {
- throw new ParseException("Unexpected character: " + c, i);
- }
-
- return i;
- }
-
- private int getType1(String s, int type, int i) throws ParseException {
- char c;
- i++;
- if (type == DAY_OF_MONTH) {
- lastdayOfMonth = true;
- }
- if (type == DAY_OF_WEEK) {
- addToSet(7, 7, 0, type);
- }
- if (type == DAY_OF_MONTH && s.length() > i) {
- c = s.charAt(i);
- if (c == '-') {
- ValueSet vs = getValue(0, s, i + 1);
- lastdayOffset = vs.value;
- if (lastdayOffset > 30) {
- throw new ParseException("Offset from last day must be <= 30", i + 1);
- }
- i = vs.pos;
- }
- if (s.length() > i) {
- c = s.charAt(i);
- if (c == 'W') {
- nearestWeekday = true;
- i++;
- }
- }
- }
- return i;
- }
-
- private int getC(String s, int type, int incr, int i, char c) throws ParseException {
- if (c == '*' && (i + 1) >= s.length()) {
- addToSet(ALL_SPEC_INT, -1, incr, type);
- return i + 1;
- } else if (c == '/'
- && ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s
- .charAt(i + 1) == '\t')) {
- throw new ParseException("'/' must be followed by an integer.", i);
- } else if (c == '*') {
- i++;
- }
- c = s.charAt(i);
- if (c == '/') { // is an increment specified?
- i++;
- if (i >= s.length()) {
- throw new ParseException("Unexpected end of string.", i);
- }
-
- incr = getNumericValue(s, i);
-
- i++;
- if (incr > 10) {
- i++;
- }
- checkIncrementRange(incr, type, i);
- } else {
- incr = 1;
- }
-
- addToSet(ALL_SPEC_INT, -1, incr, type);
- return i;
- }
-
- private int getType(String s, int type, int i) throws ParseException {
- i++;
- if ((i + 1) < s.length()
- && (s.charAt(i) != ' ' && s.charAt(i + 1) != '\t')) {
- throw new ParseException("Illegal character after '?': "
- + s.charAt(i), i);
- }
- if (type != DAY_OF_WEEK && type != DAY_OF_MONTH) {
- throw new ParseException(
- "'?' can only be specified for Day-of-Month or Day-of-Week.",
- i);
- }
- if (type == DAY_OF_WEEK && !lastdayOfMonth) {
- int val = daysOfMonth.last();
- if (val == NO_SPEC_INT) {
- throw new ParseException(
- "'?' can only be specified for Day-of-Month -OR- Day-of-Week.",
- i);
- }
- }
-
- addToSet(NO_SPEC_INT, -1, 0, type);
- return i;
- }
-
- private int getIncr(int incr, boolean b, int i2) {
- if (b) {
- incr = i2;
- }
- return incr;
- }
-
- private int getNthdayOfWeek(String s, int i) throws ParseException {
- try {
- i += 4;
- nthdayOfWeek = Integer.parseInt(s.substring(i));
- if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
- throw new IllegalArgumentException();
- }
- } catch (Exception e) {
- throw new ParseException(
- "A numeric value between 1 and 5 must follow the '#' option",
- i);
- }
- return i;
- }
-
- private void getSval(int i, String sub, boolean b, String s2) throws ParseException {
- if (b) {
- throw new ParseException(s2 + sub + "'", i);
- }
- }
-
- private void checkIncrementRange(int incr, int type, int idxPos) throws ParseException {
- if (incr > 59 && (type == SECOND || type == MINUTE)) {
- throw new ParseException("Increment > 60 : " + incr, idxPos);
- } else if (incr > 23 && (type == HOUR)) {
- throw new ParseException("Increment > 24 : " + incr, idxPos);
- } else if (incr > 31 && (type == DAY_OF_MONTH)) {
- throw new ParseException("Increment > 31 : " + incr, idxPos);
- } else if (incr > 7 && (type == DAY_OF_WEEK)) {
- throw new ParseException("Increment > 7 : " + incr, idxPos);
- } else if (incr > 12 && (type == MONTH)) {
- throw new ParseException("Increment > 12 : " + incr, idxPos);
- }
- }
-
- protected int checkNext(int pos, String s, int val, int type)
- throws ParseException {
-
- int end = -1;
- int i = pos;
-
- if (i >= s.length()) {
- addToSet(val, end, -1, type);
- return i;
- }
-
- char c = s.charAt(pos);
-
- if (c == 'L') {
- return getType(val, type, i);
- }
-
- if (c == 'W') {
- return getType1(val, type, i);
- }
-
- if (c == '#') {
- return getType2(s, val, type, i);
- }
-
- if (c == '-') {
- return getC1(s, val, type, i);
- }
-
- if (c == '/') {
- getParseException(s, i);
-
- i++;
- c = s.charAt(i);
- int v2 = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- checkIncrementRange(v2, type, i);
- addToSet(val, end, v2, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v2, s, i);
- int v3 = vs.value;
- checkIncrementRange(v3, type, i);
- addToSet(val, end, v3, type);
- i = vs.pos;
- return i;
- } else {
- throw new ParseException("Unexpected character '" + c + "' after '/'", i);
- }
- }
-
- addToSet(val, end, 0, type);
- i++;
- return i;
- }
-
- private int getC1(String s, int val, int type, int i) throws ParseException {
- char c;
- int end;
- i++;
- c = s.charAt(i);
- int v = Integer.parseInt(String.valueOf(c));
- end = v;
- i++;
- if (i >= s.length()) {
- addToSet(val, end, 1, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v, s, i);
- end = vs.value;
- i = vs.pos;
- }
- if (i < s.length() && ((s.charAt(i)) == '/')) {
- return getC(s, val, type, end, i);
- } else {
- addToSet(val, end, 1, type);
- return i;
- }
- }
-
- private int getC(String s, int val, int type, int end, int i) throws ParseException {
- char c;
- i++;
- c = s.charAt(i);
- int v2 = Integer.parseInt(String.valueOf(c));
- i++;
- if (i >= s.length()) {
- addToSet(val, end, v2, type);
- return i;
- }
- c = s.charAt(i);
- if (c >= '0' && c <= '9') {
- ValueSet vs = getValue(v2, s, i);
- int v3 = vs.value;
- addToSet(val, end, v3, type);
- i = vs.pos;
- return i;
- } else {
- addToSet(val, end, v2, type);
- return i;
- }
- }
-
- private void getParseException(String s, int i) throws ParseException {
- if ((i + 1) >= s.length() || s.charAt(i + 1) == ' ' || s.charAt(i + 1) == '\t') {
- throw new ParseException("'/' must be followed by an integer.", i);
- }
- }
-
- private int getType2(String s, int val, int type, int i) throws ParseException {
- if (type != DAY_OF_WEEK) {
- throw new ParseException("'#' option is not valid here. (pos=" + i + ")", i);
- }
- i++;
- try {
- nthdayOfWeek = Integer.parseInt(s.substring(i));
- if (nthdayOfWeek < 1 || nthdayOfWeek > 5) {
- throw new IllegalArgumentException();
- }
- } catch (Exception e) {
- throw new ParseException(
- "A numeric value between 1 and 5 must follow the '#' option",
- i);
- }
-
- TreeSet set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- private int getType1(int val, int type, int i) throws ParseException {
- if (type == DAY_OF_MONTH) {
- nearestWeekday = true;
- } else {
- throw new ParseException("'W' option is not valid here. (pos=" + i + ")", i);
- }
- if (val > 31) {
- throw new ParseException("The 'W' option does not make sense with values larger than 31 (max number of days in a month)", i);
- }
- TreeSet set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- private int getType(int val, int type, int i) throws ParseException {
- if (type == DAY_OF_WEEK) {
- if (val < 1 || val > 7) {
- throw new ParseException("Day-of-Week values must be between 1 and 7", -1);
- }
- lastdayOfWeek = true;
- } else {
- throw new ParseException("'L' option is not valid here. (pos=" + i + ")", i);
- }
- TreeSet set = getSet(type);
- set.add(val);
- i++;
- return i;
- }
-
- public String getCronExpression() {
- return cronExpressionData;
- }
-
- public String getExpressionSummary() {
- StringBuilder buf = new StringBuilder();
-
- buf.append("seconds: ");
- buf.append(getExpressionSetSummary(seconds));
- buf.append("\n");
- buf.append("minutes: ");
- buf.append(getExpressionSetSummary(minutes));
- buf.append("\n");
- buf.append("hours: ");
- buf.append(getExpressionSetSummary(hours));
- buf.append("\n");
- buf.append("daysOfMonth: ");
- buf.append(getExpressionSetSummary(daysOfMonth));
- buf.append("\n");
- buf.append("months: ");
- buf.append(getExpressionSetSummary(months));
- buf.append("\n");
- buf.append("daysOfWeek: ");
- buf.append(getExpressionSetSummary(daysOfWeek));
- buf.append("\n");
- buf.append("lastdayOfWeek: ");
- buf.append(lastdayOfWeek);
- buf.append("\n");
- buf.append("nearestWeekday: ");
- buf.append(nearestWeekday);
- buf.append("\n");
- buf.append("NthDayOfWeek: ");
- buf.append(nthdayOfWeek);
- buf.append("\n");
- buf.append("lastdayOfMonth: ");
- buf.append(lastdayOfMonth);
- buf.append("\n");
- buf.append("years: ");
- buf.append(getExpressionSetSummary(years));
- buf.append("\n");
-
- return buf.toString();
- }
-
- protected String getExpressionSetSummary(java.util.Set set) {
-
- if (set.contains(NO_SPEC)) {
- return "?";
- }
- if (set.contains(ALL_SPEC)) {
- return "*";
- }
-
- StringBuilder buf = new StringBuilder();
-
- Iterator itr = set.iterator();
- boolean first = true;
- while (itr.hasNext()) {
- Integer iVal = itr.next();
- String val = iVal.toString();
- if (!first) {
- buf.append(",");
- }
- buf.append(val);
- first = false;
- }
-
- return buf.toString();
- }
-
- protected String getExpressionSetSummary(java.util.ArrayList list) {
-
- if (list.contains(NO_SPEC)) {
- return "?";
- }
- if (list.contains(ALL_SPEC)) {
- return "*";
- }
-
- StringBuilder buf = new StringBuilder();
-
- Iterator itr = list.iterator();
- boolean first = true;
- while (itr.hasNext()) {
- Integer iVal = itr.next();
- String val = iVal.toString();
- if (!first) {
- buf.append(",");
- }
- buf.append(val);
- first = false;
- }
-
- return buf.toString();
- }
-
- protected int skipWhiteSpace(int i, String s) {
- while (i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t')){
- i++;
- }
- return i;
- }
-
- protected int findNextWhiteSpace(int i, String s) {
- while (i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t')){
- i++;
- }
-
- return i;
- }
-
- protected void addToSet(int val, int end, int incr, int type)
- throws ParseException {
-
- TreeSet set = getSet(type);
-
- getTypeVal(val, end, type);
-
- if (setAdd(val, incr, set)) {
- return;
- }
-
- getAt(val, end, incr, type, set);
- }
-
- private void getAt(int val, int end, int incr, int type, TreeSet set) {
- int startAt = val;
- int stopAt = end;
-
- if (val == ALL_SPEC_INT && incr <= 0) {
- incr = 1;
- set.add(ALL_SPEC); // put in a marker, but also fill values
- }
-
- if (type == SECOND || type == MINUTE) {
- stopAt = getAt(stopAt, stopAt == -1, 59);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 0);
- } else if (type == HOUR) {
- stopAt = getAt(stopAt, stopAt == -1, 23);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 0);
- } else if (type == DAY_OF_MONTH) {
- stopAt = getAt(stopAt, stopAt == -1, 31);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 1);
- } else if (type == MONTH) {
- stopAt = getAt(stopAt, stopAt == -1, 12);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 1);
- } else if (type == DAY_OF_WEEK) {
- stopAt = getAt(stopAt, stopAt == -1, 7);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 1);
- } else if (type == YEAR) {
- stopAt = getAt(stopAt, stopAt == -1, MAX_YEAR);
- startAt = getAt(startAt, isFlag(startAt, -1, ALL_SPEC_INT), 1970);
- }
-
- // if the end of the range is before the start, then we need to overflow into
- // the next day, month etc. This is done by adding the maximum amount for that
- // type, and using modulus max to determine the value being added.
- int max = -1;
- if (stopAt < startAt) {
- switch (type) {
- case SECOND:
- max = 60;
- break;
- case MINUTE:
- max = 60;
- break;
- case HOUR:
- max = 24;
- break;
- case MONTH:
- max = 12;
- break;
- case DAY_OF_WEEK:
- max = 7;
- break;
- case DAY_OF_MONTH:
- max = 31;
- break;
- case YEAR:
- throw new IllegalArgumentException("Start year must be less than stop year");
- default:
- throw new IllegalArgumentException("Unexpected type encountered");
- }
- stopAt += max;
- }
-
- setAdd1(incr, type, set, startAt, stopAt, max);
- }
-
- private boolean isFlag(int startAt, int i, int allSpecInt) {
- return startAt == i || startAt == allSpecInt;
- }
-
- private int getAt(int stopAt, boolean b, int i) {
- if (b) {
- stopAt = i;
- }
- return stopAt;
- }
-
- private void setAdd1(int incr, int type, TreeSet set, int startAt, int stopAt, int max) {
- for (int i = startAt; i <= stopAt; i += incr) {
- if (max == -1) {
- // ie: there's no max to overflow over
- set.add(i);
- } else {
- // take the modulus to get the real value
- int i2 = i % max;
-
- // 1-indexed ranges should not include 0, and should include their max
- if (i2 == 0 && (type == MONTH || type == DAY_OF_WEEK || type == DAY_OF_MONTH)) {
- i2 = max;
- }
-
- set.add(i2);
- }
- }
- }
-
- private boolean setAdd(int val, int incr, TreeSet set) {
- if ((incr == 0 || incr == -1) && val != ALL_SPEC_INT) {
- if (val != -1) {
- set.add(val);
- } else {
- set.add(NO_SPEC);
- }
-
- return true;
- }
- return false;
- }
-
- private void getTypeVal(int val, int end, int type) throws ParseException {
- if (type == SECOND || type == MINUTE) {
- if (isBoolean(val, end, 0, 59)) {
- throw new ParseException(
- "Minute and Second values must be between 0 and 59",
- -1);
- }
- } else if (type == HOUR) {
- if (isBoolean(val, end, 0, 23)) {
- throw new ParseException(
- "Hour values must be between 0 and 23", -1);
- }
- } else if (type == DAY_OF_MONTH) {
- if (isBoolean1(val, end)) {
- throw new ParseException(
- "Day of month values must be between 1 and 31", -1);
- }
- } else if (type == MONTH) {
- if (isBoolean(val, end, 1, 12)) {
- throw new ParseException(
- "Month values must be between 1 and 12", -1);
- }
- } else if (isBoolean2(val, end, type)) {
- throw new ParseException(
- "Day-of-Week values must be between 1 and 7", -1);
- }
- }
-
- private boolean isBoolean2(int val, int end, int type) {
- return (type == DAY_OF_WEEK) && (val == 0 || val > 7 || end > 7) && (val != ALL_SPEC_INT) && (val != NO_SPEC_INT);
- }
-
- private boolean isBoolean1(int val, int end) {
- return (val < 1 || val > 31 || end > 31) && (val != ALL_SPEC_INT)
- && (val != NO_SPEC_INT);
- }
-
- private boolean isBoolean(int val, int end, int i, int i2) {
- return (val < i || val > i2 || end > i2) && (val != ALL_SPEC_INT);
- }
-
- TreeSet getSet(int type) {
- switch (type) {
- case SECOND:
- return seconds;
- case MINUTE:
- return minutes;
- case HOUR:
- return hours;
- case DAY_OF_MONTH:
- return daysOfMonth;
- case MONTH:
- return months;
- case DAY_OF_WEEK:
- return daysOfWeek;
- case YEAR:
- return years;
- default:
- return new TreeSet<>();
- }
- }
-
- protected ValueSet getValue(int v, String s, int i) {
- char c = s.charAt(i);
- StringBuilder s1 = new StringBuilder(String.valueOf(v));
- while (c >= '0' && c <= '9') {
- s1.append(c);
- i++;
- if (i >= s.length()) {
- break;
- }
- c = s.charAt(i);
- }
- ValueSet val = new ValueSet();
-
- val.pos = (i < s.length()) ? i : i + 1;
- val.value = Integer.parseInt(s1.toString());
- return val;
- }
-
- protected int getNumericValue(String s, int i) {
- int endOfVal = findNextWhiteSpace(i, s);
- String val = s.substring(i, endOfVal);
- return Integer.parseInt(val);
- }
-
- protected int getMonthNumber(String s) {
- Integer integer = monthMap.get(s);
-
- if (integer == null) {
- return -1;
- }
-
- return integer;
- }
-
- protected int getDayOfWeekNumber(String s) {
- Integer integer = dayMap.get(s);
-
- if (integer == null) {
- return -1;
- }
-
- return integer;
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Computation Functions
- //
- ////////////////////////////////////////////////////////////////////////////
-
- public Date getTimeAfter(Date afterTime) {
-
- // Computation is based on Gregorian year only.
- Calendar cl = new java.util.GregorianCalendar(getTimeZone());
-
- // move ahead one second, since we're computing the time *after* the
- // given time
- afterTime = new Date(afterTime.getTime() + 1000);
- // CronTrigger does not deal with milliseconds
- cl.setTime(afterTime);
- cl.set(Calendar.MILLISECOND, 0);
-
- boolean gotOne = false;
- // loop until we've computed the next time, or we've past the endTime
- while (!gotOne) {
-
- if (cl.get(Calendar.YEAR) > 2999) { // prevent endless loop...
- return null;
- }
-
- SortedSet st = null;
- int t = 0;
-
- int sec = cl.get(Calendar.SECOND);
- int min = cl.get(Calendar.MINUTE);
-
- // get second.................................................
- sec = getSec(cl, sec, min);
-
- min = cl.get(Calendar.MINUTE);
- int hr = cl.get(Calendar.HOUR_OF_DAY);
- t = -1;
-
- // get minute.................................................
- st = minutes.tailSet(min);
- if (st != null && !st.isEmpty()) {
- t = min;
- min = st.first();
- } else {
- min = minutes.first();
- hr++;
- }
- if (min != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, min);
- setCalendarHour(cl, hr);
- continue;
- }
- cl.set(Calendar.MINUTE, min);
-
- hr = cl.get(Calendar.HOUR_OF_DAY);
- int day = cl.get(Calendar.DAY_OF_MONTH);
- t = -1;
-
- // get hour...................................................
- st = hours.tailSet(hr);
- if (st != null && !st.isEmpty()) {
- t = hr;
- hr = st.first();
- } else {
- hr = hours.first();
- day++;
- }
- if (hr != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- setCalendarHour(cl, hr);
- continue;
- }
- cl.set(Calendar.HOUR_OF_DAY, hr);
-
- day = cl.get(Calendar.DAY_OF_MONTH);
- int mon = cl.get(Calendar.MONTH) + 1;
- // '+ 1' because calendar is 0-based for this field, and we are
- // 1-based
- t = -1;
- int tmon = mon;
-
- // get day...................................................
- boolean dayOfMSpec = !daysOfMonth.contains(NO_SPEC);
- boolean dayOfWSpec = !daysOfWeek.contains(NO_SPEC);
- if (dayOfMSpec && !dayOfWSpec) { // get day by day of month rule
- st = daysOfMonth.tailSet(day);
- if (lastdayOfMonth) {
- if (!nearestWeekday) {
- t = day;
- day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- day -= lastdayOffset;
- if (t > day) {
- mon++;
- if (mon > 12) {
- mon = 1;
- tmon = 3333; // ensure test of mon != tmon further below fails
- cl.add(Calendar.YEAR, 1);
- }
- day = 1;
- }
- } else {
- t = day;
- day = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- day -= lastdayOffset;
-
- java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
- tcal.set(Calendar.SECOND, 0);
- tcal.set(Calendar.MINUTE, 0);
- tcal.set(Calendar.HOUR_OF_DAY, 0);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
-
- int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- int dow = tcal.get(Calendar.DAY_OF_WEEK);
-
- day = getDay(day, ldom, dow);
-
- tcal.set(Calendar.SECOND, sec);
- tcal.set(Calendar.MINUTE, min);
- tcal.set(Calendar.HOUR_OF_DAY, hr);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- Date nTime = tcal.getTime();
- if (nTime.before(afterTime)) {
- day = 1;
- mon++;
- }
- }
- } else if (nearestWeekday) {
- t = day;
- day = daysOfMonth.first();
-
- java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
- tcal.set(Calendar.SECOND, 0);
- tcal.set(Calendar.MINUTE, 0);
- tcal.set(Calendar.HOUR_OF_DAY, 0);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
-
- int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- int dow = tcal.get(Calendar.DAY_OF_WEEK);
-
- day = getDay(day, ldom, dow);
-
-
- tcal.set(Calendar.SECOND, sec);
- tcal.set(Calendar.MINUTE, min);
- tcal.set(Calendar.HOUR_OF_DAY, hr);
- tcal.set(Calendar.DAY_OF_MONTH, day);
- tcal.set(Calendar.MONTH, mon - 1);
- Date nTime = tcal.getTime();
- if (nTime.before(afterTime)) {
- day = daysOfMonth.first();
- mon++;
- }
- } else if (st != null && !st.isEmpty()) {
- t = day;
- day = st.first();
- // make sure we don't over-run a short month, such as february
- int lastDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
- if (day > lastDay) {
- day = daysOfMonth.first();
- mon++;
- }
- } else {
- day = daysOfMonth.first();
- mon++;
- }
-
- if (getContinue2(cl, t, day, mon, tmon)) continue;
- } else if (dayOfWSpec && !dayOfMSpec) { // get day by day of week rule
- if (lastdayOfWeek) { // are we looking for the last XXX day of
- // the month?
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int daysToAdd = getDaysToAdd(cDow, dow);
-
- int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
-
- if (day + daysToAdd > lDay) { // did we already miss the
- // last one?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- continue;
- }
-
- // find date of last occurrence of this day in this month...
- daysToAdd = getDaysToAdd(day, daysToAdd, lDay);
-
- day += daysToAdd;
-
- if (daysToAdd > 0) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' here because we are not promoting the month
- continue;
- }
-
- } else if (nthdayOfWeek != 0) {
- // are we looking for the Nth XXX day in the month?
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int daysToAdd = getDaysToAdd1(dow, cDow);
-
- boolean dayShifted = isDayShifted(daysToAdd);
-
- day += daysToAdd;
- int weekOfMonth = getWeekOfMonth(day);
-
- daysToAdd = (nthdayOfWeek - weekOfMonth) * 7;
- day += daysToAdd;
- if (getContinue(cl, day, mon, daysToAdd, dayShifted)) {
- continue;
- }
- } else {
- int cDow = cl.get(Calendar.DAY_OF_WEEK); // current d-o-w
- int dow = daysOfWeek.first(); // desired
- // d-o-w
- st = daysOfWeek.tailSet(cDow);
- dow = getDow(dow, st != null && !st.isEmpty(), st.first());
-
- int daysToAdd = getDaysToAdd(cDow, dow);
-
- int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
-
- if (getContinue(cl, day, mon, daysToAdd, lDay)) {
- continue;
- }
- }
- } else { // dayOfWSpec && !dayOfMSpec
- throw new UnsupportedOperationException(
- "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.");
- }
- cl.set(Calendar.DAY_OF_MONTH, day);
-
- mon = cl.get(Calendar.MONTH) + 1;
- // '+ 1' because calendar is 0-based for this field, and we are
- // 1-based
- int year = cl.get(Calendar.YEAR);
- t = -1;
-
- // test for expressions that never generate a valid fire date,
- // but keep looping...
- if (year > MAX_YEAR) {
- return null;
- }
-
- // get month...................................................
- st = months.tailSet(mon);
- if (st != null && !st.isEmpty()) {
- t = mon;
- mon = st.first();
- } else {
- mon = months.first();
- year++;
- }
- if (mon != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
- cl.set(Calendar.YEAR, year);
- continue;
- }
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
-
- year = cl.get(Calendar.YEAR);
-
- // get year...................................................
- st = years.tailSet(year);
- if (st != null && !st.isEmpty()) {
- t = year;
- year = st.first();
- } else {
- return null; // ran out of years...
- }
-
- if (year != t) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, 0);
- // '- 1' because calendar is 0-based for this field, and we are
- // 1-based
- cl.set(Calendar.YEAR, year);
- continue;
- }
- cl.set(Calendar.YEAR, year);
-
- gotOne = true;
- }
-
- return cl.getTime();
- }
-
- private boolean getContinue2(Calendar cl, int t, int day, int mon, int tmon) {
- if (day != t || mon != tmon) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field, and we
- // are 1-based
- return true;
- }
- return false;
- }
-
- private int getDow(int dow, boolean b, Integer first) {
- if (b) {
- dow = first;
- }
- return dow;
- }
-
- private boolean getContinue(Calendar cl, int day, int mon, int daysToAdd, boolean dayShifted) {
- if (daysToAdd < 0
- || day > getLastDayOfMonth(mon, cl
- .get(Calendar.YEAR))) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- return true;
- } else if (daysToAdd > 0 || dayShifted) {
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' here because we are NOT promoting the month
- return true;
- }
- return false;
- }
-
- private int getWeekOfMonth(int day) {
- int weekOfMonth = day / 7;
- if (day % 7 > 0) {
- weekOfMonth++;
- }
- return weekOfMonth;
- }
-
- private boolean isDayShifted(int daysToAdd) {
- boolean dayShifted = false;
- if (daysToAdd > 0) {
- dayShifted = true;
- }
- return dayShifted;
- }
-
- private int getDaysToAdd1(int dow, int cDow) {
- int daysToAdd = 0;
- if (cDow < dow) {
- daysToAdd = dow - cDow;
- } else if (cDow > dow) {
- daysToAdd = dow + (7 - cDow);
- }
- return daysToAdd;
- }
-
- private int getDaysToAdd(int day, int daysToAdd, int lDay) {
- while ((day + daysToAdd + 7) <= lDay) {
- daysToAdd += 7;
- }
- return daysToAdd;
- }
-
- private int getDay(int day, int ldom, int dow) {
- if (dow == Calendar.SATURDAY && day == 1) {
- day += 2;
- } else if (dow == Calendar.SATURDAY) {
- day -= 1;
- } else if (dow == Calendar.SUNDAY && day == ldom) {
- day -= 2;
- } else if (dow == Calendar.SUNDAY) {
- day += 1;
- }
- return day;
- }
-
- private int getDaysToAdd(int cDow, int dow) {
- int daysToAdd = 0;
- if (cDow < dow) {
- daysToAdd = dow - cDow;
- }
- if (cDow > dow) {
- daysToAdd = dow + (7 - cDow);
- }
- return daysToAdd;
- }
-
- private boolean getContinue(Calendar cl, int day, int mon, int daysToAdd, int lDay) {
- if (day + daysToAdd > lDay) { // will we pass the end of
- // the month?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, 1);
- cl.set(Calendar.MONTH, mon);
- // no '- 1' here because we are promoting the month
- return true;
- } else if (daysToAdd > 0) { // are we swithing days?
- cl.set(Calendar.SECOND, 0);
- cl.set(Calendar.MINUTE, 0);
- cl.set(Calendar.HOUR_OF_DAY, 0);
- cl.set(Calendar.DAY_OF_MONTH, day + daysToAdd);
- cl.set(Calendar.MONTH, mon - 1);
- // '- 1' because calendar is 0-based for this field,
- // and we are 1-based
- return true;
- }
- return false;
- }
-
- private int getSec(Calendar cl, int sec, int min) {
- SortedSet st;
- st = seconds.tailSet(sec);
- if (st != null && !st.isEmpty()) {
- sec = st.first();
- } else {
- sec = seconds.first();
- min++;
- cl.set(Calendar.MINUTE, min);
- }
- cl.set(Calendar.SECOND, sec);
- return sec;
- }
-
- /**
- * Advance the calendar to the particular hour paying particular attention
- * to daylight saving problems.
- *
- * @param cal the calendar to operate on
- * @param hour the hour to set
- */
- protected void setCalendarHour(Calendar cal, int hour) {
- cal.set(java.util.Calendar.HOUR_OF_DAY, hour);
- if (cal.get(java.util.Calendar.HOUR_OF_DAY) != hour && hour != 24) {
- cal.set(java.util.Calendar.HOUR_OF_DAY, hour + 1);
- }
- }
-
- /**
- * NOT YET IMPLEMENTED: Returns the time before the given time
- * that the CronExpression matches.
- */
- public Date getTimeBefore(Date endTime) {
- if(Objects.isNull(endTime)){
- log.info("未使用参数");
- }
- // FUTURE_TODO: implement QUARTZ-423
- return null;
- }
-
- /**
- * NOT YET IMPLEMENTED: Returns the final time that the
- * CronExpression will match.
- */
- public Date getFinalFireTime() {
- // FUTURE_TODO: implement QUARTZ-423
- return null;
- }
-
- protected boolean isLeapYear(int year) {
- return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
- }
-
- protected int getLastDayOfMonth(int monthNum, int year) {
-
- switch (monthNum) {
- case 1:
- return 31;
- case 2:
- return (isLeapYear(year)) ? 29 : 28;
- case 3:
- return 31;
- case 4:
- return 30;
- case 5:
- return 31;
- case 6:
- return 30;
- case 7:
- return 31;
- case 8:
- return 31;
- case 9:
- return 30;
- case 10:
- return 31;
- case 11:
- return 30;
- case 12:
- return 31;
- default:
- throw new IllegalArgumentException("Illegal month number: "
- + monthNum);
- }
- }
-
-
- private void readObject(java.io.ObjectInputStream stream)
- throws java.io.IOException, ClassNotFoundException {
-
- stream.defaultReadObject();
- try {
- buildExpression(cronExpressionData);
- } catch (Exception ignore) {
- log.error("异常:", ignore);
- }
- }
-
- /**
- * @deprecated
- * @return
- */
- @Override
- @Deprecated
- public Object clone() {
- return new CronExpression(this);
- }
-}
-
-class ValueSet {
- int value;
-
- int pos;
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
deleted file mode 100644
index faa6063..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.xxl.job.admin.core.exception;
-
-/**
- * @author xuxueli 2019-05-04 23:19:29
- */
-public class XxlJobException extends RuntimeException {
-
- public XxlJobException() {
- }
- public XxlJobException(String message) {
- super(message);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
deleted file mode 100644
index 99d7d36..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-public class XxlJobGroup {
-
- private int id;
- private String appname;
- private String title;
- private int addressType; // 执行器地址类型:0=自动注册、1=手动录入
- private String addressList; // 执行器地址列表,多地址逗号分隔(手动录入)
-
- // registry list
- private List registryList; // 执行器地址列表(系统注册)
- public List getRegistryList() {
- if (addressList!=null && addressList.trim().length()>0) {
- registryList = new ArrayList<>(Arrays.asList(addressList.split(",")));
- }
- return registryList;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getAppname() {
- return appname;
- }
-
- public void setAppname(String appname) {
- this.appname = appname;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public int getAddressType() {
- return addressType;
- }
-
- public void setAddressType(int addressType) {
- this.addressType = addressType;
- }
-
- public String getAddressList() {
- return addressList;
- }
-
- public void setAddressList(String addressList) {
- this.addressList = addressList;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
deleted file mode 100644
index 1e4a74b..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job info
- *
- * @author xuxueli 2016-1-12 18:25:49
- */
-public class XxlJobInfo {
-
- private int id; // 主键ID
-
- private int jobGroup; // 执行器主键ID
- private String jobCron; // 任务执行CRON表达式
- private String jobDesc;
-
- private Date addTime;
- private Date updateTime;
-
- private String author; // 负责人
- private String alarmEmail; // 报警邮件
-
- private String executorRouteStrategy; // 执行器路由策略
- private String executorHandler; // 执行器,任务Handler名称
- private String executorParam; // 执行器,任务参数
- private String executorBlockStrategy; // 阻塞处理策略
- private int executorTimeout; // 任务执行超时时间,单位秒
- private int executorFailRetryCount; // 失败重试次数
-
- private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum
- private String glueSource; // GLUE源代码
- private String glueRemark; // GLUE备注
- private Date glueUpdatetime; // GLUE更新时间
-
- private String childJobId; // 子任务ID,多个逗号分隔
-
- private int triggerStatus; // 调度状态:0-停止,1-运行
- private long triggerLastTime; // 上次调度时间
- private long triggerNextTime; // 下次调度时间
-
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public int getJobGroup() {
- return jobGroup;
- }
-
- public void setJobGroup(int jobGroup) {
- this.jobGroup = jobGroup;
- }
-
- public String getJobCron() {
- return jobCron;
- }
-
- public void setJobCron(String jobCron) {
- this.jobCron = jobCron;
- }
-
- public String getJobDesc() {
- return jobDesc;
- }
-
- public void setJobDesc(String jobDesc) {
- this.jobDesc = jobDesc;
- }
-
- public Date getAddTime() {
- return addTime;
- }
-
- public void setAddTime(Date addTime) {
- this.addTime = addTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
- public String getAuthor() {
- return author;
- }
-
- public void setAuthor(String author) {
- this.author = author;
- }
-
- public String getAlarmEmail() {
- return alarmEmail;
- }
-
- public void setAlarmEmail(String alarmEmail) {
- this.alarmEmail = alarmEmail;
- }
-
- public String getExecutorRouteStrategy() {
- return executorRouteStrategy;
- }
-
- public void setExecutorRouteStrategy(String executorRouteStrategy) {
- this.executorRouteStrategy = executorRouteStrategy;
- }
-
- public String getExecutorHandler() {
- return executorHandler;
- }
-
- public void setExecutorHandler(String executorHandler) {
- this.executorHandler = executorHandler;
- }
-
- public String getExecutorParam() {
- return executorParam;
- }
-
- public void setExecutorParam(String executorParam) {
- this.executorParam = executorParam;
- }
-
- public String getExecutorBlockStrategy() {
- return executorBlockStrategy;
- }
-
- public void setExecutorBlockStrategy(String executorBlockStrategy) {
- this.executorBlockStrategy = executorBlockStrategy;
- }
-
- public int getExecutorTimeout() {
- return executorTimeout;
- }
-
- public void setExecutorTimeout(int executorTimeout) {
- this.executorTimeout = executorTimeout;
- }
-
- public int getExecutorFailRetryCount() {
- return executorFailRetryCount;
- }
-
- public void setExecutorFailRetryCount(int executorFailRetryCount) {
- this.executorFailRetryCount = executorFailRetryCount;
- }
-
- public String getGlueType() {
- return glueType;
- }
-
- public void setGlueType(String glueType) {
- this.glueType = glueType;
- }
-
- public String getGlueSource() {
- return glueSource;
- }
-
- public void setGlueSource(String glueSource) {
- this.glueSource = glueSource;
- }
-
- public String getGlueRemark() {
- return glueRemark;
- }
-
- public void setGlueRemark(String glueRemark) {
- this.glueRemark = glueRemark;
- }
-
- public Date getGlueUpdatetime() {
- return glueUpdatetime;
- }
-
- public void setGlueUpdatetime(Date glueUpdatetime) {
- this.glueUpdatetime = glueUpdatetime;
- }
-
- public String getChildJobId() {
- return childJobId;
- }
-
- public void setChildJobId(String childJobId) {
- this.childJobId = childJobId;
- }
-
- public int getTriggerStatus() {
- return triggerStatus;
- }
-
- public void setTriggerStatus(int triggerStatus) {
- this.triggerStatus = triggerStatus;
- }
-
- public long getTriggerLastTime() {
- return triggerLastTime;
- }
-
- public void setTriggerLastTime(long triggerLastTime) {
- this.triggerLastTime = triggerLastTime;
- }
-
- public long getTriggerNextTime() {
- return triggerNextTime;
- }
-
- public void setTriggerNextTime(long triggerNextTime) {
- this.triggerNextTime = triggerNextTime;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
deleted file mode 100644
index 7d3072a..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job log, used to track trigger process
- * @author xuxueli 2015-12-19 23:19:09
- */
-public class XxlJobLog {
-
- private long id;
-
- // job info
- private int jobGroup;
- private int jobId;
-
- // execute info
- private String executorAddress;
- private String executorHandler;
- private String executorParam;
- private String executorShardingParam;
- private int executorFailRetryCount;
-
- // trigger info
- private Date triggerTime;
- private int triggerCode;
- private String triggerMsg;
-
- // handle info
- private Date handleTime;
- private int handleCode;
- private String handleMsg;
-
- // alarm info
- private int alarmStatus;
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public int getJobGroup() {
- return jobGroup;
- }
-
- public void setJobGroup(int jobGroup) {
- this.jobGroup = jobGroup;
- }
-
- public int getJobId() {
- return jobId;
- }
-
- public void setJobId(int jobId) {
- this.jobId = jobId;
- }
-
- public String getExecutorAddress() {
- return executorAddress;
- }
-
- public void setExecutorAddress(String executorAddress) {
- this.executorAddress = executorAddress;
- }
-
- public String getExecutorHandler() {
- return executorHandler;
- }
-
- public void setExecutorHandler(String executorHandler) {
- this.executorHandler = executorHandler;
- }
-
- public String getExecutorParam() {
- return executorParam;
- }
-
- public void setExecutorParam(String executorParam) {
- this.executorParam = executorParam;
- }
-
- public String getExecutorShardingParam() {
- return executorShardingParam;
- }
-
- public void setExecutorShardingParam(String executorShardingParam) {
- this.executorShardingParam = executorShardingParam;
- }
-
- public int getExecutorFailRetryCount() {
- return executorFailRetryCount;
- }
-
- public void setExecutorFailRetryCount(int executorFailRetryCount) {
- this.executorFailRetryCount = executorFailRetryCount;
- }
-
- public Date getTriggerTime() {
- return triggerTime;
- }
-
- public void setTriggerTime(Date triggerTime) {
- this.triggerTime = triggerTime;
- }
-
- public int getTriggerCode() {
- return triggerCode;
- }
-
- public void setTriggerCode(int triggerCode) {
- this.triggerCode = triggerCode;
- }
-
- public String getTriggerMsg() {
- return triggerMsg;
- }
-
- public void setTriggerMsg(String triggerMsg) {
- this.triggerMsg = triggerMsg;
- }
-
- public Date getHandleTime() {
- return handleTime;
- }
-
- public void setHandleTime(Date handleTime) {
- this.handleTime = handleTime;
- }
-
- public int getHandleCode() {
- return handleCode;
- }
-
- public void setHandleCode(int handleCode) {
- this.handleCode = handleCode;
- }
-
- public String getHandleMsg() {
- return handleMsg;
- }
-
- public void setHandleMsg(String handleMsg) {
- this.handleMsg = handleMsg;
- }
-
- public int getAlarmStatus() {
- return alarmStatus;
- }
-
- public void setAlarmStatus(int alarmStatus) {
- this.alarmStatus = alarmStatus;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
deleted file mode 100644
index 2f59ffa..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * xxl-job log for glue, used to track job code process
- * @author xuxueli 2016-5-19 17:57:46
- */
-public class XxlJobLogGlue {
-
- private int id;
- private int jobId; // 任务主键ID
- private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum
- private String glueSource;
- private String glueRemark;
- private Date addTime;
- private Date updateTime;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public int getJobId() {
- return jobId;
- }
-
- public void setJobId(int jobId) {
- this.jobId = jobId;
- }
-
- public String getGlueType() {
- return glueType;
- }
-
- public void setGlueType(String glueType) {
- this.glueType = glueType;
- }
-
- public String getGlueSource() {
- return glueSource;
- }
-
- public void setGlueSource(String glueSource) {
- this.glueSource = glueSource;
- }
-
- public String getGlueRemark() {
- return glueRemark;
- }
-
- public void setGlueRemark(String glueRemark) {
- this.glueRemark = glueRemark;
- }
-
- public Date getAddTime() {
- return addTime;
- }
-
- public void setAddTime(Date addTime) {
- this.addTime = addTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
deleted file mode 100644
index e58ff1a..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-public class XxlJobLogReport {
-
- private int id;
-
- private Date triggerDay;
-
- private int runningCount;
- private int sucCount;
- private int failCount;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public Date getTriggerDay() {
- return triggerDay;
- }
-
- public void setTriggerDay(Date triggerDay) {
- this.triggerDay = triggerDay;
- }
-
- public int getRunningCount() {
- return runningCount;
- }
-
- public void setRunningCount(int runningCount) {
- this.runningCount = runningCount;
- }
-
- public int getSucCount() {
- return sucCount;
- }
-
- public void setSucCount(int sucCount) {
- this.sucCount = sucCount;
- }
-
- public int getFailCount() {
- return failCount;
- }
-
- public void setFailCount(int failCount) {
- this.failCount = failCount;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
deleted file mode 100644
index 924d6d3..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import java.util.Date;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-public class XxlJobRegistry {
-
- private int id;
- private String registryGroup;
- private String registryKey;
- private String registryValue;
- private Date updateTime;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getRegistryGroup() {
- return registryGroup;
- }
-
- public void setRegistryGroup(String registryGroup) {
- this.registryGroup = registryGroup;
- }
-
- public String getRegistryKey() {
- return registryKey;
- }
-
- public void setRegistryKey(String registryKey) {
- this.registryKey = registryKey;
- }
-
- public String getRegistryValue() {
- return registryValue;
- }
-
- public void setRegistryValue(String registryValue) {
- this.registryValue = registryValue;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
deleted file mode 100644
index db17327..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.xxl.job.admin.core.model;
-
-import org.springframework.util.StringUtils;
-
-/**
- * @author xuxueli 2019-05-04 16:43:12
- */
-public class XxlJobUser {
-
- private int id;
- private String username; // 账号
- private String password; // 密码
- private int role; // 角色:0-普通用户、1-管理员
- private String permission; // 权限:执行器ID列表,多个逗号分割
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public int getRole() {
- return role;
- }
-
- public void setRole(int role) {
- this.role = role;
- }
-
- public String getPermission() {
- return permission;
- }
-
- public void setPermission(String permission) {
- this.permission = permission;
- }
-
- // plugin
- public boolean validPermission(int jobGroup){
- if (this.role == 1) {
- return true;
- } else {
- if (StringUtils.hasText(this.permission)) {
- for (String permissionItem : this.permission.split(",")) {
- if (String.valueOf(jobGroup).equals(permissionItem)) {
- return true;
- }
- }
- }
- return false;
- }
-
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java
deleted file mode 100644
index e69de29..0000000
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
deleted file mode 100644
index e69de29..0000000
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java
deleted file mode 100644
index e69de29..0000000
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
deleted file mode 100644
index 7fff93a..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.xxl.job.admin.core.route;
-
-import com.xxl.job.admin.core.route.strategy.*;
-import com.xxl.job.admin.core.util.I18nUtil;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public enum ExecutorRouteStrategyEnum {
-
- FIRST(I18nUtil.getString("jobconf_route_first"), new ExecutorRouteFirst()),
- LAST(I18nUtil.getString("jobconf_route_last"), new ExecutorRouteLast()),
- ROUND(I18nUtil.getString("jobconf_route_round"), new ExecutorRouteRound()),
- RANDOM(I18nUtil.getString("jobconf_route_random"), new ExecutorRouteRandom()),
- CONSISTENT_HASH(I18nUtil.getString("jobconf_route_consistenthash"), new ExecutorRouteConsistentHash()),
- LEAST_FREQUENTLY_USED(I18nUtil.getString("jobconf_route_lfu"), new ExecutorRouteLFU()),
- LEAST_RECENTLY_USED(I18nUtil.getString("jobconf_route_lru"), new ExecutorRouteLRU()),
- FAILOVER(I18nUtil.getString("jobconf_route_failover"), new ExecutorRouteFailover()),
- BUSYOVER(I18nUtil.getString("jobconf_route_busyover"), new ExecutorRouteBusyover()),
- SHARDING_BROADCAST(I18nUtil.getString("jobconf_route_shard"), null);
-
- ExecutorRouteStrategyEnum(String title, ExecutorRouter router) {
- this.title = title;
- this.router = router;
- }
-
- private String title;
- private ExecutorRouter router;
-
- public String getTitle() {
- return title;
- }
- public ExecutorRouter getRouter() {
- return router;
- }
-
- public static ExecutorRouteStrategyEnum match(String name, ExecutorRouteStrategyEnum defaultItem){
- if (name != null) {
- for (ExecutorRouteStrategyEnum item: ExecutorRouteStrategyEnum.values()) {
- if (item.name().equals(name)) {
- return item;
- }
- }
- }
- return defaultItem;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
deleted file mode 100644
index 5de9a1d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xxl.job.admin.core.route;
-
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public abstract class ExecutorRouter {
- protected static Logger logger = LoggerFactory.getLogger(ExecutorRouter.class);
-
- /**
- * route address
- *
- * @param addressList
- * @return ReturnT.content=address
- */
- public abstract ReturnT route(TriggerParam triggerParam, List addressList);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
deleted file mode 100644
index ae5e631..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.IdleBeatParam;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteBusyover extends ExecutorRouter {
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- StringBuilder idleBeatResultSB = new StringBuilder();
- for (String address : addressList) {
- // beat
- ReturnT idleBeatResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- idleBeatResult = executorBiz.idleBeat(new IdleBeatParam(triggerParam.getJobId()));
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- idleBeatResult = new ReturnT<>(ReturnT.FAIL_CODE, ""+e );
- }
- idleBeatResultSB.append( (idleBeatResultSB.length()>0)?" ":"")
- .append(I18nUtil.getString("jobconf_idleBeat") + ":")
- .append(" address:").append(address)
- .append(" code:").append(idleBeatResult.getCode())
- .append(" msg:").append(idleBeatResult.getMsg());
-
- // beat success
- if (idleBeatResult.getCode() == ReturnT.SUCCESS_CODE) {
- idleBeatResult.setMsg(idleBeatResultSB.toString());
- idleBeatResult.setContent(address);
- return idleBeatResult;
- }
- }
-
- return new ReturnT<>(ReturnT.FAIL_CODE, idleBeatResultSB.toString());
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
deleted file mode 100644
index 227f83c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.nio.charset.StandardCharsets;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * 分组下机器地址相同,不同JOB均匀散列在不同机器上,保证分组下机器分配JOB平均;且每个JOB固定调度其中一台机器;
- * a、virtual node:解决不均衡问题
- * b、hash method replace hashCode:String的hashCode可能重复,需要进一步扩大hashCode的取值范围
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteConsistentHash extends ExecutorRouter {
-
- private static final int VIRTUAL_NODE_NUM = 100;
-
- /**
- * get hash code on 2^32 ring (md5散列的方式计算hash值)
- * @param key
- * @return
- */
- private static long hash(String key) {
-
- // md5 byte
- MessageDigest md5;
- try {
- md5 = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- throw new IllegalArgumentException("MD5 not supported", e);
- }
- md5.reset();
- byte[] keyBytes = null;
- keyBytes = key.getBytes(StandardCharsets.UTF_8);
- md5.update(keyBytes);
- byte[] digest = md5.digest();
-
- // hash code, Truncate to 32-bits
- long hashCode = ((long) (digest[3] & 0xFF) << 24)
- | ((long) (digest[2] & 0xFF) << 16)
- | ((long) (digest[1] & 0xFF) << 8)
- | (digest[0] & 0xFF);
-
- return hashCode & 0xffffffffL;
- }
-
- public String hashJob(int jobId, List addressList) {
-
- // ------A1------A2-------A3------
- // -----------J1------------------
- TreeMap addressRing = new TreeMap<>();
- for (String address: addressList) {
- for (int i = 0; i < VIRTUAL_NODE_NUM; i++) {
- long addressHash = hash("SHARD-" + address + "-NODE-" + i);
- addressRing.put(addressHash, address);
- }
- }
-
- long jobHash = hash(String.valueOf(jobId));
- SortedMap lastRing = addressRing.tailMap(jobHash);
- if (!lastRing.isEmpty()) {
- return lastRing.get(lastRing.firstKey());
- }
- return addressRing.firstEntry().getValue();
- }
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- String address = hashJob(triggerParam.getJobId(), addressList);
- return new ReturnT<>(address);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
deleted file mode 100644
index fea76aa..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteFailover extends ExecutorRouter {
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
-
- StringBuilder beatResultSB = new StringBuilder();
- for (String address : addressList) {
- // beat
- ReturnT beatResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- beatResult = executorBiz.beat();
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- beatResult = new ReturnT<>(ReturnT.FAIL_CODE, ""+e );
- }
- beatResultSB.append( (beatResultSB.length()>0)?" ":"")
- .append(I18nUtil.getString("jobconf_beat") + ":")
- .append(" address:").append(address)
- .append(" code:").append(beatResult.getCode())
- .append(" msg:").append(beatResult.getMsg());
-
- // beat success
- if (beatResult.getCode() == ReturnT.SUCCESS_CODE) {
-
- beatResult.setMsg(beatResultSB.toString());
- beatResult.setContent(address);
- return beatResult;
- }
- }
- return new ReturnT<>(ReturnT.FAIL_CODE, beatResultSB.toString());
-
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
deleted file mode 100644
index ef8f4bf..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteFirst extends ExecutorRouter {
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList){
- return new ReturnT<>(addressList.get(0));
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
deleted file mode 100644
index 64f5088..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import lombok.extern.slf4j.Slf4j;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 单个JOB对应的每个执行器,使用频率最低的优先被选举
- * a(*)、LFU(Least Frequently Used):最不经常使用,频率/次数
- * b、LRU(Least Recently Used):最近最久未使用,时间
- *
- * Created by xuxueli on 17/3/10.
- */
-@Slf4j
-public class ExecutorRouteLFU extends ExecutorRouter {
-
- private static ConcurrentMap> jobLfuMap = new ConcurrentHashMap<>();
- private long cacheValidTime = 0;
-
- private static Random rand;
- static {
- try {
- rand = SecureRandom.getInstanceStrong();
- } catch (NoSuchAlgorithmException e) {
- log.info("Exception:{}", e.getMessage());
- }
- }
-
- public String route(int jobId, List addressList) {
-
- // cache clear
- if (System.currentTimeMillis() > cacheValidTime) {
- jobLfuMap.clear();
- cacheValidTime = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // lfu item init
- HashMap lfuItemMap = jobLfuMap.get(jobId); // Key排序可以用TreeMap+构造入参Compare;Value排序暂时只能通过ArrayList;
- if (lfuItemMap == null) {
- lfuItemMap = new HashMap<>();
- jobLfuMap.putIfAbsent(jobId, lfuItemMap); // 避免重复覆盖
- }
-
- // put new
- for (String address: addressList) {
- if (!lfuItemMap.containsKey(address) || lfuItemMap.get(address) >1000000 ) {
- // 初始化时主动Random一次,缓解首次压力
- lfuItemMap.put(address, rand.nextInt(addressList.size()));
- }
- }
- // remove old
- List delKeys = new ArrayList<>();
- for (String existKey: lfuItemMap.keySet()) {
- if (!addressList.contains(existKey)) {
- delKeys.add(existKey);
- }
- }
- if (!delKeys.isEmpty()) {
- for (String delKey: delKeys) {
- lfuItemMap.remove(delKey);
- }
- }
-
- // load least userd count address
- List> lfuItemList = new ArrayList<>(lfuItemMap.entrySet());
- Collections.sort(lfuItemList, Comparator.comparing(Map.Entry::getValue));
-
- Map.Entry addressItem = lfuItemList.get(0);
- addressItem.setValue(addressItem.getValue() + 1);
-
- return addressItem.getKey();
- }
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- String address = route(triggerParam.getJobId(), addressList);
- return new ReturnT<>(address);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
deleted file mode 100644
index 19874da..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 单个JOB对应的每个执行器,最久为使用的优先被选举
- * a、LFU(Least Frequently Used):最不经常使用,频率/次数
- * b(*)、LRU(Least Recently Used):最近最久未使用,时间
- *
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteLRU extends ExecutorRouter {
-
- private static ConcurrentMap> jobLRUMap = new ConcurrentHashMap<>();
- private long cacheValidTime = 0;
-
- public String route(int jobId, List addressList) {
-
- // cache clear
- if (System.currentTimeMillis() > cacheValidTime) {
- jobLRUMap.clear();
- cacheValidTime = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // init lru
- LinkedHashMap lruItem = jobLRUMap.get(jobId);
- if (lruItem == null) {
- /**
- * LinkedHashMap
- * a、accessOrder:true=访问顺序排序(get/put时排序);false=插入顺序排期;
- * b、removeEldestEntry:新增元素时将会调用,返回true时会删除最老元素;可封装LinkedHashMap并重写该方法,比如定义最大容量,超出是返回true即可实现固定长度的LRU算法;
- */
- lruItem = new LinkedHashMap<>(16, 0.75f, true);
- jobLRUMap.putIfAbsent(jobId, lruItem);
- }
-
- // put new
- for (String address: addressList) {
- lruItem.computeIfAbsent(address,key->address);
- }
- // remove old
- List delKeys = new ArrayList<>();
- for (String existKey: lruItem.keySet()) {
- if (!addressList.contains(existKey)) {
- delKeys.add(existKey);
- }
- }
- if (!delKeys.isEmpty()) {
- for (String delKey: delKeys) {
- lruItem.remove(delKey);
- }
- }
-
- // load
- String eldestKey = lruItem.entrySet().iterator().next().getKey();
- return lruItem.get(eldestKey);
- }
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- String address = route(triggerParam.getJobId(), addressList);
- return new ReturnT<>(address);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
deleted file mode 100644
index 8a858bb..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteLast extends ExecutorRouter {
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- return new ReturnT<>(addressList.get(addressList.size()-1));
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
deleted file mode 100644
index 70c15a4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-
-import java.util.List;
-import java.util.Random;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-public class ExecutorRouteRandom extends ExecutorRouter {
-
- private static Random localRandom = new Random();
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- String address = addressList.get(localRandom.nextInt(addressList.size()));
- return new ReturnT<>(address);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
deleted file mode 100644
index 6533925..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.xxl.job.admin.core.route.strategy;
-
-import com.xxl.job.admin.core.route.ExecutorRouter;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import lombok.extern.slf4j.Slf4j;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * Created by xuxueli on 17/3/10.
- */
-@Slf4j
-public class ExecutorRouteRound extends ExecutorRouter {
-
- private static ConcurrentMap routeCountEachJob = new ConcurrentHashMap<>();
- private static long cacheValidTime = 0;
-
- private static Random rand;
- static {
- try {
- rand = SecureRandom.getInstanceStrong();
- } catch (NoSuchAlgorithmException e) {
- log.info("Exception:{}", e.getMessage());
- }
- }
-
- private static int count(int jobId) {
- // cache clear
- if (System.currentTimeMillis() > cacheValidTime) {
- routeCountEachJob.clear();
- cacheValidTime = System.currentTimeMillis() + 1000*60*60*24;
- }
-
- // count++
- Integer count = routeCountEachJob.get(jobId);
- count = (count==null || count>1000000)?(rand.nextInt(100)):++count; // 初始化时主动Random一次,缓解首次压力
- routeCountEachJob.put(jobId, count);
- return count;
- }
-
- @Override
- public ReturnT route(TriggerParam triggerParam, List addressList) {
- String address = addressList.get(count(triggerParam.getJobId())%addressList.size());
- return new ReturnT<>(address);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
deleted file mode 100644
index 21df50d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.xxl.job.admin.core.scheduler;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.thread.*;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.client.ExecutorBizClient;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * @author xuxueli 2018-10-28 00:18:17
- */
-
-public class XxlJobScheduler {
- private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);
-
-
- public void init() {
- // init i18n
- initI18n();
-
- // admin registry monitor run
- JobRegistryMonitorHelper.getInstance().start();
-
- // admin fail-monitor run
- JobFailMonitorHelper.getInstance().start();
-
- // admin lose-monitor run
- JobLosedMonitorHelper.getInstance().start();
-
- // admin trigger pool start
- JobTriggerPoolHelper.toStart();
-
- // admin log report start
- JobLogReportHelper.getInstance().start();
-
- // start-schedule
- JobScheduleHelper.getInstance().start();
-
- logger.info(">>>>>>>>> init xxl-job admin success.");
- }
-
-
- public void destroy() {
-
- // stop-schedule
- JobScheduleHelper.getInstance().toStop();
-
- // admin log report stop
- JobLogReportHelper.getInstance().toStop();
-
- // admin trigger pool stop
- JobTriggerPoolHelper.toStop();
-
- // admin lose-monitor stop
- JobLosedMonitorHelper.getInstance().toStop();
-
- // admin fail-monitor stop
- JobFailMonitorHelper.getInstance().toStop();
-
- // admin registry stop
- JobRegistryMonitorHelper.getInstance().toStop();
-
- }
-
- // ---------------------- I18n ----------------------
-
- private void initI18n(){
- for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) {
- item.setTitle(I18nUtil.getString("jobconf_block_".concat(item.name())));
- }
- }
-
- // ---------------------- executor-client ----------------------
- private static ConcurrentMap executorBizRepository = new ConcurrentHashMap<>();
- public static ExecutorBiz getExecutorBiz(String address) {
- // valid
- if (address==null || address.trim().length()==0) {
- return null;
- }
-
- // load-cache
- address = address.trim();
- ExecutorBiz executorBiz = executorBizRepository.get(address);
- if (executorBiz != null) {
- return executorBiz;
- }
-
- // set-cache
- executorBiz = new ExecutorBizClient(address, XxlJobAdminConfig.getAdminConfig().getAccessToken());
-
- executorBizRepository.put(address, executorBiz);
- return executorBiz;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
deleted file mode 100644
index 7a220c5..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job monitor instance
- *
- * @author xuxueli 2015-9-1 18:05:56
- */
-@Slf4j
-public class JobFailMonitorHelper {
-
- private static JobFailMonitorHelper instance = new JobFailMonitorHelper();
-
- public static JobFailMonitorHelper getInstance() {
- return instance;
- }
-
- // ---------------------- monitor ----------------------
-
- private Thread monitorThread;
- private volatile boolean toStop = false;
-
- public void start() {
- monitorThread = new Thread(() -> {
- // monitor
- getWhile();
-
- log.info(">>>>>>>>>>> xxl-job, job fail monitor thread stop");
-
-
- });
- monitorThread.setDaemon(true);
- monitorThread.setName("xxl-job, admin JobFailMonitorHelper");
- monitorThread.start();
- }
-
- private void getWhile() {
- while (!toStop) {
- try {
- List failLogIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findFailJobLogIds(1000);
- if (failLogIds != null && !failLogIds.isEmpty()) {
- getFor(failLogIds);
- }
-
- } catch (Exception e) {
- if (!toStop) {
- log.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e);
- }
- }
-
- try {
- TimeUnit.SECONDS.sleep(10);
- } catch (Exception e) {
- if (!toStop) {
- log.error(e.getMessage(), e);
- }
- Thread.currentThread().interrupt();
- }
-
- }
- }
-
- private void getFor(List failLogIds) {
- for (long failLogId : failLogIds) {
-
- // lock log
- int lockRet = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, 0, -1);
- if (lockRet < 1) {
- continue;
- }
- XxlJobLog log = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().load(failLogId);
- XxlJobInfo info = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(log.getJobId());
-
- // 1、fail retry monitor
- if (log.getExecutorFailRetryCount() > 0) {
- JobTriggerPoolHelper.trigger(log.getJobId(), TriggerTypeEnum.RETRY, (log.getExecutorFailRetryCount() - 1), log.getExecutorShardingParam(), log.getExecutorParam(), null);
- String retryMsg = " >>>>>>>>>>>" + I18nUtil.getString("jobconf_trigger_type_retry") + "<<<<<<<<<<< ";
- log.setTriggerMsg(log.getTriggerMsg() + retryMsg);
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(log);
- }
-
- // 2、fail alarm monitor
- int newAlarmStatus = 0; // 告警状态:0-默认、-1=锁定状态、1-无需告警、2-告警成功、3-告警失败
- if (info != null && info.getAlarmEmail() != null && info.getAlarmEmail().trim().length() > 0) {
- boolean alarmResult = XxlJobAdminConfig.getAdminConfig().getJobAlarmer().alarm(info, log);
- newAlarmStatus = alarmResult ? 2 : 3;
- } else {
- newAlarmStatus = 1;
- }
-
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateAlarmStatus(failLogId, -1, newAlarmStatus);
- }
- }
-
- public void toStop() {
- toStop = true;
- // interrupt and wait
- monitorThread.interrupt();
- try {
- monitorThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
deleted file mode 100644
index fb38c30..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job log report helper
- *
- * @author xuxueli 2019-11-22
- */
-@Slf4j
-public class JobLogReportHelper {
-
- private static JobLogReportHelper instance = new JobLogReportHelper();
-
- public static JobLogReportHelper getInstance() {
- return instance;
- }
-
-
- private Thread logrThread;
- private volatile boolean toStop = false;
-
- public void start() {
- logrThread = new Thread(() -> {
- // last clean log time
- long lastCleanLogTime = 0;
- getWhile(lastCleanLogTime);
-
- log.info(">>>>>>>>>>> xxl-job, job log report thread stop");
- });
- logrThread.setDaemon(true);
- logrThread.setName("xxl-job, admin JobLogReportHelper");
- logrThread.start();
- }
-
- private void getWhile(long lastCleanLogTime) {
- while (!toStop) {
- // 1、log-report refresh: refresh log report in 3 days
- try {
- getFor();
-
- } catch (Exception e) {
- if (!toStop) {
- log.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);
- }
- }
-
- // 2、log-clean: switch open & once each day
- lastCleanLogTime = getLastCleanLogTime(lastCleanLogTime);
-
- try {
- TimeUnit.MINUTES.sleep(1);
- } catch (Exception e) {
- if (!toStop) {
- log.error(e.getMessage(), e);
- }
- Thread.currentThread().interrupt();
- }
-
- }
- }
-
- private long getLastCleanLogTime(long lastCleanLogTime) {
- if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays() > 0
- && System.currentTimeMillis() - lastCleanLogTime > 24 * 60 * 60 * 1000) {
-
- // expire-time
- Calendar expiredDay = Calendar.getInstance();
- expiredDay.add(Calendar.DAY_OF_MONTH, -1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays());
- expiredDay.set(Calendar.HOUR_OF_DAY, 0);
- expiredDay.set(Calendar.MINUTE, 0);
- expiredDay.set(Calendar.SECOND, 0);
- expiredDay.set(Calendar.MILLISECOND, 0);
- Date clearBeforeTime = expiredDay.getTime();
-
- // clean expired log
- List logIds = null;
- do {
- logIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findClearLogIds(0, 0, clearBeforeTime, 0, 1000);
- if (logIds != null && !logIds.isEmpty()) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);
- }
- } while (logIds != null && !logIds.isEmpty());
-
- // update clean time
- lastCleanLogTime = System.currentTimeMillis();
- }
- return lastCleanLogTime;
- }
-
- private void getFor() {
- for (int i = 0; i < 3; i++) {
- // today
- Calendar itemDay = Calendar.getInstance();
- itemDay.add(Calendar.DAY_OF_MONTH, -i);
- itemDay.set(Calendar.HOUR_OF_DAY, 0);
- itemDay.set(Calendar.MINUTE, 0);
- itemDay.set(Calendar.SECOND, 0);
- itemDay.set(Calendar.MILLISECOND, 0);
-
- Date todayFrom = itemDay.getTime();
-
- itemDay.set(Calendar.HOUR_OF_DAY, 23);
- itemDay.set(Calendar.MINUTE, 59);
- itemDay.set(Calendar.SECOND, 59);
- itemDay.set(Calendar.MILLISECOND, 999);
-
- Date todayTo = itemDay.getTime();
-
- // refresh log-report every minute
- XxlJobLogReport xxlJobLogReport = new XxlJobLogReport();
- xxlJobLogReport.setTriggerDay(todayFrom);
- xxlJobLogReport.setRunningCount(0);
- xxlJobLogReport.setSucCount(0);
- xxlJobLogReport.setFailCount(0);
-
- Map triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLogReport(todayFrom, todayTo);
- if (triggerCountMap != null && triggerCountMap.size() > 0) {
- int triggerDayCount = triggerCountMap.containsKey("triggerDayCount") ? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCount"))) : 0;
- int triggerDayCountRunning = triggerCountMap.containsKey("triggerDayCountRunning") ? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountRunning"))) : 0;
- int triggerDayCountSuc = triggerCountMap.containsKey("triggerDayCountSuc") ? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountSuc"))) : 0;
- int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
-
- xxlJobLogReport.setRunningCount(triggerDayCountRunning);
- xxlJobLogReport.setSucCount(triggerDayCountSuc);
- xxlJobLogReport.setFailCount(triggerDayCountFail);
- }
-
- // do refresh
- int ret = XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().update(xxlJobLogReport);
- if (ret < 1) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);
- }
- }
- }
-
- public void toStop() {
- toStop = true;
- // interrupt and wait
- logrThread.interrupt();
- try {
- logrThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java
deleted file mode 100644
index 5a75d4e..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.util.DateUtil;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job lose-monitor instance
- *
- * @author xuxueli 2015-9-1 18:05:56
- */
-@Slf4j
-public class JobLosedMonitorHelper {
-
- private static JobLosedMonitorHelper instance = new JobLosedMonitorHelper();
-
- public static JobLosedMonitorHelper getInstance() {
- return instance;
- }
-
- // ---------------------- monitor ----------------------
-
- private Thread monitorThread;
- private volatile boolean toStop = false;
-
- public void start() {
- monitorThread = new Thread(() -> {
- // monitor
- getWhile();
- log.info(">>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop");
- });
- monitorThread.setDaemon(true);
- monitorThread.setName("xxl-job, admin JobLosedMonitorHelper");
- monitorThread.start();
- }
-
- private void getWhile() {
- while (!toStop) {
- try {
- // 任务结果丢失处理:调度记录停留在 "运行中" 状态超过10min,且对应执行器心跳注册失败不在线,则将本地调度主动标记失败;
- Date losedTime = DateUtil.addMinutes(new Date(), -10);
- List losedJobIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findLostJobIds(losedTime);
-
- if (losedJobIds != null && !losedJobIds.isEmpty()) {
- getFor(losedJobIds);
- }
- } catch (Exception e) {
- if (!toStop) {
- log.error(">>>>>>>>>>> xxl-job, job fail monitor thread error:{}", e);
- }
- }
- try {
- TimeUnit.SECONDS.sleep(60);
- } catch (Exception e) {
- if (!toStop) {
- log.error(e.getMessage(), e);
- }
- Thread.currentThread().interrupt();
- }
- }
- }
-
- private void getFor(List losedJobIds) {
- for (Long logId : losedJobIds) {
-
- XxlJobLog jobLog = new XxlJobLog();
- jobLog.setId(logId);
-
- jobLog.setHandleTime(new Date());
- jobLog.setHandleCode(ReturnT.FAIL_CODE);
- jobLog.setHandleMsg(I18nUtil.getString("joblog_lost_fail"));
-
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateHandleInfo(jobLog);
- }
- }
-
- public void toStop() {
- toStop = true;
- // interrupt and wait
- monitorThread.interrupt();
- try {
- monitorThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
deleted file mode 100644
index 01f12ec..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import com.xxl.job.core.enums.RegistryConfig;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * job registry instance
- *
- * @author xuxueli 2016-10-02 19:10:24
- */
-@Slf4j
-public class JobRegistryMonitorHelper {
-
- private static JobRegistryMonitorHelper instance = new JobRegistryMonitorHelper();
-
- public static JobRegistryMonitorHelper getInstance() {
- return instance;
- }
-
- private Thread registryThread;
- private volatile boolean toStop = false;
-
- public void start() {
- registryThread = new Thread(() -> {
- getWhile();
- log.info(">>>>>>>>>>> xxl-job, job registry monitor thread stop");
- });
- registryThread.setDaemon(true);
- registryThread.setName("xxl-job, admin JobRegistryMonitorHelper");
- registryThread.start();
- }
-
- private void getWhile() {
- while (!toStop) {
- try {
- // auto registry group
- List groupList = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().findByAddressType(0);
- getGroupList(groupList);
- } catch (Exception e) {
- if (!toStop) {
- log.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
- }
- }
- try {
- TimeUnit.SECONDS.sleep(RegistryConfig.BEAT_TIMEOUT);
- } catch (InterruptedException e) {
- if (!toStop) {
- log.error(">>>>>>>>>>> xxl-job, job registry monitor thread error:{}", e);
- }
- Thread.currentThread().interrupt();
- }
- }
- }
-
- private void getGroupList(List groupList) {
- if (groupList != null && !groupList.isEmpty()) {
-
- // remove dead address (admin/executor)
- List ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDead(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (ids != null && !ids.isEmpty()) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(ids);
- }
-
- // fresh online address (admin/executor)
- HashMap> appAddressMap = new HashMap<>();
- List list = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
- if (list != null) {
- getFor(appAddressMap, list);
- }
-
- // fresh group address
- getFreshGroupAddress(groupList, appAddressMap);
- }
- }
-
- private void getFreshGroupAddress(List groupList, HashMap> appAddressMap) {
- for (XxlJobGroup group : groupList) {
- List registryList = appAddressMap.get(group.getAppname());
- StringBuilder addressListStr = new StringBuilder();
- if (registryList != null && !registryList.isEmpty()) {
- Collections.sort(registryList);
- for (String item : registryList) {
- addressListStr.append(item).append(",");
- }
- addressListStr = new StringBuilder(addressListStr.substring(0, addressListStr.length() - 1));
- }
- group.setAddressList(addressListStr.toString());
- XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().update(group);
- }
- }
-
- private void getFor(HashMap> appAddressMap, List list) {
- for (XxlJobRegistry item : list) {
- if (RegistryConfig.RegistType.EXECUTOR.name().equals(item.getRegistryGroup())) {
- String appname = item.getRegistryKey();
- List registryList = appAddressMap.get(appname);
- if (registryList == null) {
- registryList = new ArrayList<>();
- }
-
- if (!registryList.contains(item.getRegistryValue())) {
- registryList.add(item.getRegistryValue());
- }
- appAddressMap.put(appname, registryList);
- }
- }
- }
-
- public void toStop() {
- toStop = true;
- // interrupt and wait
- registryThread.interrupt();
- try {
- registryThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
deleted file mode 100644
index 813fd9d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
+++ /dev/null
@@ -1,378 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import lombok.extern.slf4j.Slf4j;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author xuxueli 2019-05-21
- */
-@Slf4j
-public class JobScheduleHelper {
-
- private static JobScheduleHelper instance = new JobScheduleHelper();
-
- public static JobScheduleHelper getInstance() {
- return instance;
- }
-
- public static final long PRE_READ_MS = 5000; // pre read
-
- private Thread scheduleThread;
- private Thread ringThread;
- private volatile boolean scheduleThreadToStop = false;
- private volatile boolean ringThreadToStop = false;
- private static Map> ringData = new ConcurrentHashMap<>();
-
- public void start() {
-
- // schedule thread
- scheduleThread = new Thread(() -> {
- getThread();
- log.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop");
- });
- scheduleThread.setDaemon(true);
- scheduleThread.setName("xxl-job, admin JobScheduleHelper#scheduleThread");
- scheduleThread.start();
-
-
- // ring thread
- ringThread = new Thread(() -> {
- // align second
- getThread1();
- log.info(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop");
- });
- ringThread.setDaemon(true);
- ringThread.setName("xxl-job, admin JobScheduleHelper#ringThread");
- ringThread.start();
- }
-
- private void getThread1() {
- try {
- TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis() % 1000);
- } catch (InterruptedException e) {
- if (!ringThreadToStop) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
- while (!ringThreadToStop) {
-
- try {
- // second data
- getSecondData();
- } catch (Exception e) {
- if (!ringThreadToStop) {
- log.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e);
- }
- }
-
- // next second, align second
- try {
- TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis() % 1000);
- } catch (InterruptedException e) {
- if (!ringThreadToStop) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
-
- }
- }
- }
-
- private void getSecondData() {
- List ringItemData = new ArrayList<>();
- int nowSecond = Calendar.getInstance().get(Calendar.SECOND); // 避免处理耗时太长,跨过刻度,向前校验一个刻度;
- for (int i = 0; i < 2; i++) {
- List tmpData = ringData.remove((nowSecond + 60 - i) % 60);
- if (tmpData != null) {
- ringItemData.addAll(tmpData);
- }
- }
-
- // ring trigger
- log.debug(">>>>>>>>>>> xxl-job, time-ring beat : " + nowSecond + " = " + Arrays.asList(ringItemData));
- if (!ringItemData.isEmpty()) {
- // do trigger
- for (int jobId : ringItemData) {
- // do trigger
- JobTriggerPoolHelper.trigger(jobId, TriggerTypeEnum.CRON, -1, null, null, null);
- }
- // clear
- ringItemData.clear();
- }
- }
-
- private void getThread() {
- try {
- TimeUnit.MILLISECONDS.sleep(5000 - System.currentTimeMillis() % 1000);
- } catch (InterruptedException e) {
- if (!scheduleThreadToStop) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
- log.info(">>>>>>>>> init xxl-job admin scheduler success.");
- // pre-read count: treadpool-size * trigger-qps (each trigger cost 50ms, qps = 1000/50 = 20)
- int preReadCount = (XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax() + XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax()) * 20;
-
- while (!scheduleThreadToStop) {
- // Scan Job
- getWhile(preReadCount);
- }
- }
-
- private void getWhile(int preReadCount) {
- long start = System.currentTimeMillis();
- Connection conn = null;
- Boolean connAutoCommit = null;
- PreparedStatement preparedStatement = null;
-
- boolean preReadSuc = true;
- try {
-
- conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
- connAutoCommit = conn.getAutoCommit();
- conn.setAutoCommit(false);
-
- preparedStatement = conn.prepareStatement("select * from xxl_job_lock where lock_name = 'schedule_lock' for update");
- preparedStatement.execute();
-
- // tx start
-
- // 1、pre read
- long nowTime = System.currentTimeMillis();
- List scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(nowTime + PRE_READ_MS, preReadCount);
- if (scheduleList != null && !scheduleList.isEmpty()) {
- // 2、push time-ring
- getFor(nowTime, scheduleList);
-
- // 3、update trigger info
- for (XxlJobInfo jobInfo : scheduleList) {
- XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleUpdate(jobInfo);
- }
-
- } else {
- preReadSuc = false;
- }
-
- // tx stop
-
-
- } catch (Exception e) {
- if (!scheduleThreadToStop) {
- log.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}", e);
- }
- } finally {
-
- // commit
- getFinally(conn, connAutoCommit, preparedStatement);
- }
- long cost = System.currentTimeMillis() - start;
-
-
- // Wait seconds, align second
- getCost(preReadSuc, cost);
- }
-
- private void getCost(boolean preReadSuc, long cost) {
- if (cost < 1000) { // scan-overtime, not wait
- try {
- TimeUnit.MILLISECONDS.sleep((preReadSuc ? 1000 : PRE_READ_MS) - System.currentTimeMillis() % 1000);
- } catch (InterruptedException e) {
- if (!scheduleThreadToStop) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
- }
- }
-
- private void getFinally(Connection conn, Boolean connAutoCommit, PreparedStatement preparedStatement) {
- if (conn != null) {
- try {
- conn.commit();
- } catch (SQLException e) {
- getScheduleThreadToStop(e);
- }
- try {
- conn.setAutoCommit(connAutoCommit);
- } catch (SQLException e) {
- getScheduleThreadToStop(e);
- }
- try {
- conn.close();
- } catch (SQLException e) {
- getScheduleThreadToStop(e);
- }
- }
-
- // close PreparedStatement
- if (null != preparedStatement) {
- try {
- preparedStatement.close();
- } catch (SQLException e) {
- getScheduleThreadToStop(e);
- }
- }
- }
-
- private void getScheduleThreadToStop(SQLException e) {
- if (!scheduleThreadToStop) {
- log.error(e.getMessage(), e);
- }
- }
-
- private void getFor(long nowTime, List scheduleList) throws ParseException {
- for (XxlJobInfo jobInfo : scheduleList) {
-
- // time-ring jump
- if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
- // 2.1、trigger-expire > 5s:pass && make next-trigger-time
- log.warn(">>>>>>>>>>> xxl-job, schedule misfire, jobId = " + jobInfo.getId());
-
- // fresh next
- refreshNextValidTime(jobInfo, new Date());
-
- } else if (nowTime > jobInfo.getTriggerNextTime()) {
- // 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
-
- // 1、trigger
- JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.CRON, -1, null, null, null);
- log.debug(">>>>>>>>>>> xxl-job, schedule push trigger : jobId = {}", jobInfo.getId());
-
- // 2、fresh next
- refreshNextValidTime(jobInfo, new Date());
-
- // next-trigger-time in 5s, pre-read again
- if (jobInfo.getTriggerStatus() == 1 && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
-
- // 1、make ring second
- int ringSecond = (int) ((jobInfo.getTriggerNextTime() / 1000) % 60);
-
- // 2、push time ring
- pushTimeRing(ringSecond, jobInfo.getId());
-
- // 3、fresh next
- refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
-
- }
-
- } else {
- // 2.3、trigger-pre-read:time-ring trigger && make next-trigger-time
-
- // 1、make ring second
- int ringSecond = (int) ((jobInfo.getTriggerNextTime() / 1000) % 60);
-
- // 2、push time ring
- pushTimeRing(ringSecond, jobInfo.getId());
-
- // 3、fresh next
- refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
-
- }
-
- }
- }
-
- private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws ParseException {
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(fromTime);
- if (nextValidTime != null) {
- jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
- jobInfo.setTriggerNextTime(nextValidTime.getTime());
- } else {
- jobInfo.setTriggerStatus(0);
- jobInfo.setTriggerLastTime(0);
- jobInfo.setTriggerNextTime(0);
- }
- }
-
- private void pushTimeRing(int ringSecond, int jobId) {
- // push async ring
- List ringItemData = ringData.computeIfAbsent(ringSecond, k -> new ArrayList<>());
- ringItemData.add(jobId);
-
- log.debug(">>>>>>>>>>> xxl-job, schedule push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData));
- }
-
- public void toStop() {
-
- // 1、stop schedule
- scheduleThreadToStop = true;
- try {
- TimeUnit.SECONDS.sleep(1); // wait
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- if (scheduleThread.getState() != Thread.State.TERMINATED) {
- // interrupt and wait
- scheduleThread.interrupt();
- try {
- scheduleThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
- // if has ring data
- boolean hasRingData = isHasRingData();
- if (hasRingData) {
- try {
- TimeUnit.SECONDS.sleep(8);
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
- // stop ring (wait job-in-memory stop)
- ringThreadToStop = true;
- try {
- TimeUnit.SECONDS.sleep(1);
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- if (ringThread.getState() != Thread.State.TERMINATED) {
- // interrupt and wait
- ringThread.interrupt();
- try {
- ringThread.join();
- } catch (InterruptedException e) {
- log.error(e.getMessage(), e);
- Thread.currentThread().interrupt();
- }
- }
-
- log.info(">>>>>>>>>>> xxl-job, JobScheduleHelper stop");
- }
-
- private boolean isHasRingData() {
- boolean hasRingData = false;
- if (!ringData.isEmpty()) {
- Set>> entries = ringData.entrySet();
- for (Map.Entry> e : entries) {
- List tmpData = e.getValue();
- if (tmpData != null && !tmpData.isEmpty()) {
- hasRingData = true;
- break;
- }
- }
- }
- return hasRingData;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
deleted file mode 100644
index 1741294..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.xxl.job.admin.core.thread;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.trigger.XxlJobTrigger;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * job trigger thread pool helper
- *
- * @author xuxueli 2018-07-03 21:08:07
- */
-public class JobTriggerPoolHelper {
- private static Logger logger = LoggerFactory.getLogger(JobTriggerPoolHelper.class);
-
-
- // ---------------------- trigger pool ----------------------
-
- // fast/slow thread pool
- private ThreadPoolExecutor fastTriggerPool = null;
- private ThreadPoolExecutor slowTriggerPool = null;
-
- public void start(){
- fastTriggerPool = new ThreadPoolExecutor(
- 10,
- XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax(),
- 60L,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<>(1000),
- r-> new Thread(r, "xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-" + r.hashCode()));
-
- slowTriggerPool = new ThreadPoolExecutor(
- 10,
- XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax(),
- 60L,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<>(2000),
- r-> new Thread(r, "xxl-job, admin JobTriggerPoolHelper-slowTriggerPool-" + r.hashCode()));
- }
-
-
- public void stop() {
- fastTriggerPool.shutdownNow();
- slowTriggerPool.shutdownNow();
- logger.info(">>>>>>>>> xxl-job trigger thread pool shutdown success.");
- }
-
-
- // job timeout count
- private volatile long minTim = System.currentTimeMillis()/60000; // ms > min
- private ConcurrentMap jobTimeoutCountMap = new ConcurrentHashMap<>();
-
-
- /**
- * add trigger
- */
- public void addTrigger(final int jobId,
- final TriggerTypeEnum triggerType,
- final int failRetryCount,
- final String executorShardingParam,
- final String executorParam,
- final String addressList) {
-
- // choose thread pool
- ThreadPoolExecutor triggerPool = fastTriggerPool;
- AtomicInteger jobTimeoutCount = jobTimeoutCountMap.get(jobId);
- if (jobTimeoutCount!=null && jobTimeoutCount.get() > 10) { // job-timeout 10 times in 1 min
- triggerPool = slowTriggerPool;
- }
-
- // trigger
- triggerPool.execute(()-> {
-
- long start = System.currentTimeMillis();
-
- try {
- // do trigger
- XxlJobTrigger.trigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam, addressList);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- } finally {
-
- // check timeout-count-map
- long minTimNow = System.currentTimeMillis()/60000;
- if (minTim != minTimNow) {
- minTim = minTimNow;
- jobTimeoutCountMap.clear();
- }
-
- // incr timeout-count-map
- long cost = System.currentTimeMillis()-start;
- if (cost > 500) { // ob-timeout threshold 500ms
- AtomicInteger timeoutCount = jobTimeoutCountMap.putIfAbsent(jobId, new AtomicInteger(1));
- if (timeoutCount != null) {
- timeoutCount.incrementAndGet();
- }
- }
-
- }
- });
- }
-
-
-
- // ---------------------- helper ----------------------
-
- private static JobTriggerPoolHelper helper = new JobTriggerPoolHelper();
-
- public static void toStart() {
- helper.start();
- }
- public static void toStop() {
- helper.stop();
- }
-
- /**
- * @param jobId
- * @param triggerType
- * @param failRetryCount
- * >=0: use this param
- * <0: use param from job info config
- * @param executorShardingParam
- * @param executorParam
- * null: use job param
- * not null: cover job param
- */
- public static void trigger(int jobId, TriggerTypeEnum triggerType, int failRetryCount, String executorShardingParam, String executorParam, String addressList) {
- helper.addTrigger(jobId, triggerType, failRetryCount, executorShardingParam, executorParam, addressList);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
deleted file mode 100644
index bfb66d0..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.xxl.job.admin.core.trigger;
-
-import com.xxl.job.admin.core.util.I18nUtil;
-
-/**
- * trigger type enum
- *
- * @author xuxueli 2018-09-16 04:56:41
- */
-public enum TriggerTypeEnum {
-
- MANUAL(I18nUtil.getString("jobconf_trigger_type_manual")),
- CRON(I18nUtil.getString("jobconf_trigger_type_cron")),
- RETRY(I18nUtil.getString("jobconf_trigger_type_retry")),
- PARENT(I18nUtil.getString("jobconf_trigger_type_parent")),
- API(I18nUtil.getString("jobconf_trigger_type_api"));
-
- private TriggerTypeEnum(String title){
- this.title = title;
- }
- private String title;
- public String getTitle() {
- return title;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
deleted file mode 100644
index 04dafa9..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
+++ /dev/null
@@ -1,249 +0,0 @@
-package com.xxl.job.admin.core.trigger;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.util.IpUtil;
-import com.xxl.job.core.util.ThrowableUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Date;
-
-/**
- * xxl-job trigger
- * Created by xuxueli on 17/7/13.
- */
-public class XxlJobTrigger {
- private static Logger logger = LoggerFactory.getLogger(XxlJobTrigger.class);
-
- private XxlJobTrigger() {
- }
-
- /**
- * trigger job
- *
- * @param jobId
- * @param triggerType
- * @param failRetryCount
- * >=0: use this param
- * <0: use param from job info config
- * @param executorShardingParam
- * @param executorParam
- * null: use job param
- * not null: cover job param
- * @param addressList
- * null: use executor addressList
- * not null: cover
- */
- public static void trigger(int jobId,
- TriggerTypeEnum triggerType,
- int failRetryCount,
- String executorShardingParam,
- String executorParam,
- String addressList) {
-
- // load data
- XxlJobInfo jobInfo = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().loadById(jobId);
- if (jobInfo == null) {
- logger.warn(">>>>>>>>>>>> trigger fail, jobId invalid,jobId={}", jobId);
- return;
- }
- if (executorParam != null) {
- jobInfo.setExecutorParam(executorParam);
- }
- int finalFailRetryCount = failRetryCount>=0?failRetryCount:jobInfo.getExecutorFailRetryCount();
- XxlJobGroup group = XxlJobAdminConfig.getAdminConfig().getXxlJobGroupDao().load(jobInfo.getJobGroup());
-
- // cover addressList
- if (addressList!=null && addressList.trim().length()>0) {
- group.setAddressType(1);
- group.setAddressList(addressList.trim());
- }
-
- // sharding param
- int[] shardingParam = null;
- shardingParam = getInts(executorShardingParam, shardingParam);
- if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null)
- && group.getRegistryList()!=null && !group.getRegistryList().isEmpty()
- && shardingParam==null) {
- for (int i = 0; i < group.getRegistryList().size(); i++) {
- processTrigger(group, jobInfo, finalFailRetryCount, triggerType, i, group.getRegistryList().size());
- }
- } else {
- if (shardingParam == null) {
- shardingParam = new int[]{0, 1};
- }
- processTrigger(group, jobInfo, finalFailRetryCount, triggerType, shardingParam[0], shardingParam[1]);
- }
-
- }
-
- private static int[] getInts(String executorShardingParam, int[] shardingParam) {
- if (executorShardingParam!=null){
- String[] shardingArr = executorShardingParam.split("/");
- if (shardingArr.length==2 && isNumeric(shardingArr[0]) && isNumeric(shardingArr[1])) {
- shardingParam = new int[2];
- shardingParam[0] = Integer.valueOf(shardingArr[0]);
- shardingParam[1] = Integer.valueOf(shardingArr[1]);
- }
- }
- return shardingParam;
- }
-
- private static boolean isNumeric(String str){
- try {
- Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- /**
- * @param group job group, registry list may be empty
- * @param jobInfo
- * @param finalFailRetryCount
- * @param triggerType
- * @param index sharding index
- * @param total sharding index
- */
- private static void processTrigger(XxlJobGroup group, XxlJobInfo jobInfo, int finalFailRetryCount, TriggerTypeEnum triggerType, int index, int total){
-
- // param
- ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION); // block strategy
- ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); // route strategy
- String shardingParam = (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==executorRouteStrategyEnum)?String.valueOf(index).concat("/").concat(String.valueOf(total)):null;
-
- // 1、save log-id
- XxlJobLog jobLog = new XxlJobLog();
- jobLog.setJobGroup(jobInfo.getJobGroup());
- jobLog.setJobId(jobInfo.getId());
- jobLog.setTriggerTime(new Date());
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().save(jobLog);
- logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
-
- // 2、init trigger-param
- TriggerParam triggerParam = new TriggerParam();
- triggerParam.setJobId(jobInfo.getId());
- triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
- triggerParam.setExecutorParams(jobInfo.getExecutorParam());
- triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
- triggerParam.setExecutorTimeout(jobInfo.getExecutorTimeout());
- triggerParam.setLogId(jobLog.getId());
- triggerParam.setLogDateTime(jobLog.getTriggerTime().getTime());
- triggerParam.setGlueType(jobInfo.getGlueType());
- triggerParam.setGlueSource(jobInfo.getGlueSource());
- triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
- triggerParam.setBroadcastIndex(index);
- triggerParam.setBroadcastTotal(total);
-
- // 3、init address
- String address = null;
- ReturnT routeAddressResult = null;
- if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
- if (ExecutorRouteStrategyEnum.SHARDING_BROADCAST == executorRouteStrategyEnum) {
- address = getString(group, index);
- } else {
- routeAddressResult = executorRouteStrategyEnum.getRouter().route(triggerParam, group.getRegistryList());
- if (routeAddressResult.getCode() == ReturnT.SUCCESS_CODE) {
- address = routeAddressResult.getContent();
- }
- }
- } else {
- routeAddressResult = new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobconf_trigger_address_empty"));
- }
-
- // 4、trigger remote executor
- ReturnT triggerResult = null;
- triggerResult = getTriggerResult(triggerParam, address);
-
- // 5、collection trigger info
- StringBuilder triggerMsgSb = new StringBuilder();
- triggerMsgSb.append(I18nUtil.getString("jobconf_trigger_type")).append(":").append(triggerType.getTitle());
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append(":").append(IpUtil.getIp());
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobconf_trigger_exe_regtype")).append(":")
- .append( (group.getAddressType() == 0)?I18nUtil.getString("jobgroup_field_addressType_0"):I18nUtil.getString("jobgroup_field_addressType_1") );
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle());
- triggerMsgSbAppend(shardingParam, triggerMsgSb);
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
- triggerMsgSb.append(" ").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount);
-
- triggerMsgSb.append(" >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_run") +"<<<<<<<<<<< ")
- .append((routeAddressResult!=null&&routeAddressResult.getMsg()!=null)?routeAddressResult.getMsg()+" ":"").append(triggerResult.getMsg()!=null?triggerResult.getMsg():"");
-
- // 6、save log trigger-info
- jobLog.setExecutorAddress(address);
- jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
- jobLog.setExecutorParam(jobInfo.getExecutorParam());
- jobLog.setExecutorShardingParam(shardingParam);
- jobLog.setExecutorFailRetryCount(finalFailRetryCount);
- jobLog.setTriggerCode(triggerResult.getCode());
- jobLog.setTriggerMsg(triggerMsgSb.toString());
- XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().updateTriggerInfo(jobLog);
-
- logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
- }
-
- private static ReturnT getTriggerResult(TriggerParam triggerParam, String address) {
- ReturnT triggerResult;
- if (address != null) {
- triggerResult = runExecutor(triggerParam, address);
- } else {
- triggerResult = new ReturnT<>(ReturnT.FAIL_CODE, null);
- }
- return triggerResult;
- }
-
- private static String getString(XxlJobGroup group, int index) {
- String address;
- if (index < group.getRegistryList().size()) {
- address = group.getRegistryList().get(index);
- } else {
- address = group.getRegistryList().get(0);
- }
- return address;
- }
-
- private static void triggerMsgSbAppend(String shardingParam, StringBuilder triggerMsgSb) {
- if (shardingParam != null) {
- triggerMsgSb.append("("+shardingParam+")");
- }
- }
-
- /**
- * run executor
- * @param triggerParam
- * @param address
- * @return
- */
- public static ReturnT runExecutor(TriggerParam triggerParam, String address){
- ReturnT runResult = null;
- try {
- ExecutorBiz executorBiz = XxlJobScheduler.getExecutorBiz(address);
- runResult = executorBiz.run(triggerParam);
- } catch (Exception e) {
- logger.error(">>>>>>>>>>> xxl-job trigger error, please check if the executor[{}] is running.", address, e);
- runResult = new ReturnT<>(ReturnT.FAIL_CODE, ThrowableUtil.toString(e));
- }
-
- StringBuilder runResultSB = new StringBuilder(I18nUtil.getString("jobconf_trigger_run") + ":");
- runResultSB.append(" address:").append(address);
- runResultSB.append(" code:").append(runResult.getCode());
- runResultSB.append(" msg:").append(runResult.getMsg());
-
- runResult.setMsg(runResultSB.toString());
- return runResult;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
deleted file mode 100644
index 595e3f8..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Cookie.Util
- *
- * @author xuxueli 2015-12-12 18:01:06
- */
-public class CookieUtil {
-
- // 默认缓存时间,单位/秒, 2H
- private static final int COOKIE_MAX_AGE = Integer.MAX_VALUE;
- // 保存路径,根路径
- private static final String COOKIE_PATH = "/";
-
- private CookieUtil() {
- }
-
- /**
- * 保存
- *
- * @param response
- * @param key
- * @param value
- * @param ifRemember
- */
- public static void set(HttpServletResponse response, String key, String value, boolean ifRemember) {
- int age = ifRemember?COOKIE_MAX_AGE:-1;
- set(response, key, value, null, COOKIE_PATH, age, true);
- }
-
- /**
- * 保存
- *
- * @param response
- * @param key
- * @param value
- * @param maxAge
- */
- private static void set(HttpServletResponse response, String key, String value, String domain, String path, int maxAge, boolean isHttpOnly) {
- Cookie cookie = new Cookie(key, value);
- if (domain != null) {
- cookie.setDomain(domain);
- }
- cookie.setPath(path);
- cookie.setMaxAge(maxAge);
- cookie.setHttpOnly(isHttpOnly);
- response.addCookie(cookie);
- }
-
- /**
- * 查询value
- *
- * @param request
- * @param key
- * @return
- */
- public static String getValue(HttpServletRequest request, String key) {
- Cookie cookie = get(request, key);
- if (cookie != null) {
- return cookie.getValue();
- }
- return null;
- }
-
- /**
- * 查询Cookie
- *
- * @param request
- * @param key
- */
- private static Cookie get(HttpServletRequest request, String key) {
- Cookie[] arrCookie = request.getCookies();
- if (arrCookie != null && arrCookie.length > 0) {
- for (Cookie cookie : arrCookie) {
- if (cookie.getName().equals(key)) {
- return cookie;
- }
- }
- }
- return null;
- }
-
- /**
- * 删除Cookie
- *
- * @param request
- * @param response
- * @param key
- */
- public static void remove(HttpServletRequest request, HttpServletResponse response, String key) {
- Cookie cookie = get(request, key);
- if (cookie != null) {
- set(response, key, "", null, COOKIE_PATH, 0, true);
- }
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
deleted file mode 100644
index c772be0..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.ext.beans.BeansWrapperBuilder;
-import freemarker.template.Configuration;
-import freemarker.template.TemplateHashModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ftl util
- *
- * @author xuxueli 2018-01-17 20:37:48
- */
-public class FtlUtil {
- private FtlUtil() {
- }
-
- private static Logger logger = LoggerFactory.getLogger(FtlUtil.class);
-
- private static BeansWrapper wrapper = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS).build();
-
- public static TemplateHashModel generateStaticModel(String packageName) {
- try {
- TemplateHashModel staticModels = wrapper.getStaticModels();
- return (TemplateHashModel) staticModels.get(packageName);
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
deleted file mode 100644
index a575d84..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.EncodedResource;
-import org.springframework.core.io.support.PropertiesLoaderUtils;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * i18n util
- *
- * @author xuxueli 2018-01-17 20:39:06
- */
-public class I18nUtil {
- private I18nUtil() {
- }
-
- private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
-
- private static Properties prop = null;
- public static Properties loadI18nProp(){
- if (prop != null) {
- return prop;
- }
- try {
- // build i18n prop
- String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
- String i18nFile = MessageFormat.format("i18n/message_{0}.properties", i18n);
-
- // load prop
- Resource resource = new ClassPathResource(i18nFile);
- EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
- prop = PropertiesLoaderUtils.loadProperties(encodedResource);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return prop;
- }
-
- /**
- * get val of i18n key
- *
- * @param key
- * @return
- */
- public static String getString(String key) {
- Properties properties = loadI18nProp();
- if(properties!=null&&properties.getProperty(key)!=null){
- return properties.getProperty(key);
- }
- return "";
- }
-
- /**
- * get mult val of i18n mult key, as json
- *
- * @param keys
- * @return
- */
- public static String getMultString(String... keys) {
- Map map = new HashMap<>();
-
- Properties prop = loadI18nProp();
- if (keys!=null && keys.length>0) {
- for (String key: keys) {
- if(prop!=null) {
- map.put(key, prop.getProperty(key));
- }
- }
- } else {
- if(prop!=null){
- for (String key : prop.stringPropertyNames()) {
- map.put(key, prop.getProperty(key));
- }
- }
- }
-
- return JacksonUtil.writeValueAsString(map);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
deleted file mode 100644
index 5f17dd4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-/**
- * Jackson util
- *
- * 1、obj need private and set/get;
- * 2、do not support inner class;
- *
- * @author xuxueli 2015-9-25 18:02:56
- */
-public class JacksonUtil {
- private JacksonUtil() {
- }
-
- private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
-
- private static final ObjectMapper objectMapper = new ObjectMapper();
- public static ObjectMapper getInstance() {
- return objectMapper;
- }
-
- /**
- * bean、array、List、Map --> json
- *
- * @param obj
- * @return json string
- * @throws Exception
- */
- public static String writeValueAsString(Object obj) {
- try {
- return getInstance().writeValueAsString(obj);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * string --> bean、Map、List(array)
- *
- * @param jsonStr
- * @param clazz
- * @return obj
- * @throws Exception
- */
- public static T readValue(String jsonStr, Class clazz) {
- try {
- return getInstance().readValue(jsonStr, clazz);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- /**
- * string --> List...
- *
- * @param jsonStr
- * @param parametrized
- * @param parameterClasses
- * @param
- * @return
- */
- public static T readValue(String jsonStr, Class> parametrized, Class>... parameterClasses) {
- try {
- JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses);
- return getInstance().readValue(jsonStr, javaType);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
deleted file mode 100644
index c873bf4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * local cache tool
- *
- * @author xuxueli 2018-01-22 21:37:34
- */
-public class LocalCacheUtil {
- private LocalCacheUtil() {
- }
-
- private static ConcurrentMap cacheRepository = new ConcurrentHashMap<>(); // 类型建议用抽象父类,兼容性更好;
- private static class LocalCacheData{
- private String key;
- private Object val;
- private long timeoutTime;
-
- public LocalCacheData() {
- }
-
- public LocalCacheData(String key, Object val, long timeoutTime) {
- this.key = key;
- this.val = val;
- this.timeoutTime = timeoutTime;
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
- public Object getVal() {
- return val;
- }
-
- public void setVal(Object val) {
- this.val = val;
- }
-
- public long getTimeoutTime() {
- return timeoutTime;
- }
-
- public void setTimeoutTime(long timeoutTime) {
- this.timeoutTime = timeoutTime;
- }
- }
-
-
- /**
- * set cache
- *
- * @param key
- * @param val
- * @param cacheTime
- * @return
- */
- public static boolean set(String key, Object val, long cacheTime){
-
- // clean timeout cache, before set new cache (avoid cache too much)
- cleanTimeoutCache();
-
- // set new cache
- if (key==null || key.trim().length()==0) {
- return false;
- }
- if (val == null) {
- remove(key);
- }
- if (cacheTime <= 0) {
- remove(key);
- }
- long timeoutTime = System.currentTimeMillis() + cacheTime;
- LocalCacheData localCacheData = new LocalCacheData(key, val, timeoutTime);
- cacheRepository.put(localCacheData.getKey(), localCacheData);
- return true;
- }
-
- /**
- * remove cache
- *
- * @param key
- * @return
- */
- public static boolean remove(String key){
- if (key==null || key.trim().length()==0) {
- return false;
- }
- cacheRepository.remove(key);
- return true;
- }
-
- /**
- * get cache
- *
- * @param key
- * @return
- */
- public static Object get(String key){
- if (key==null || key.trim().length()==0) {
- return null;
- }
- LocalCacheData localCacheData = cacheRepository.get(key);
- if (localCacheData!=null && System.currentTimeMillis()> entries = cacheRepository.entrySet();
- for (Map.Entry e :entries) {
- LocalCacheData localCacheData = e.getValue();
- if (localCacheData!=null && System.currentTimeMillis()>=localCacheData.getTimeoutTime()) {
- cacheRepository.remove(e.getKey());
- }
- }
- }
- return true;
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
deleted file mode 100644
index b608d9f..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-@Mapper
-public interface XxlJobGroupDao {
-
- public List findAll();
-
- public List findByAddressType(@Param("addressType") int addressType);
-
- public int save(XxlJobGroup xxlJobGroup);
-
- public int update(XxlJobGroup xxlJobGroup);
-
- public int remove(@Param("id") int id);
-
- public XxlJobGroup load(@Param("id") int id);
-
- public List pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("appname") String appname,
- @Param("title") String title);
-
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("appname") String appname,
- @Param("title") String title);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
deleted file mode 100644
index d640eff..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-
-/**
- * job info
- * @author xuxueli 2016-1-12 18:03:45
- */
-@Mapper
-public interface XxlJobInfoDao {
-
- public List pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("triggerStatus") int triggerStatus,
- @Param("jobDesc") String jobDesc,
- @Param("executorHandler") String executorHandler,
- @Param("author") String author);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("triggerStatus") int triggerStatus,
- @Param("jobDesc") String jobDesc,
- @Param("executorHandler") String executorHandler,
- @Param("author") String author);
-
- public int save(XxlJobInfo info);
-
- public XxlJobInfo loadById(@Param("id") int id);
-
- public int update(XxlJobInfo xxlJobInfo);
-
- public int delete(@Param("id") long id);
-
- public List getJobsByGroup(@Param("jobGroup") int jobGroup);
-
- public int findAllCount();
-
- public List scheduleJobQuery(@Param("maxNextTime") long maxNextTime, @Param("pagesize") int pagesize );
-
- public int scheduleUpdate(XxlJobInfo xxlJobInfo);
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
deleted file mode 100644
index 62fa3b4..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLog;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * job log
- * @author xuxueli 2016-1-12 18:03:06
- */
-@Mapper
-public interface XxlJobLogDao {
-
- // exist jobId not use jobGroup, not exist use jobGroup
- public List pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("triggerTimeStart") Date triggerTimeStart,
- @Param("triggerTimeEnd") Date triggerTimeEnd,
- @Param("logStatus") int logStatus);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("triggerTimeStart") Date triggerTimeStart,
- @Param("triggerTimeEnd") Date triggerTimeEnd,
- @Param("logStatus") int logStatus);
-
- public XxlJobLog load(@Param("id") long id);
-
- public long save(XxlJobLog xxlJobLog);
-
- public int updateTriggerInfo(XxlJobLog xxlJobLog);
-
- public int updateHandleInfo(XxlJobLog xxlJobLog);
-
- public int delete(@Param("jobId") int jobId);
-
- public Map findLogReport(@Param("from") Date from,
- @Param("to") Date to);
-
- public List findClearLogIds(@Param("jobGroup") int jobGroup,
- @Param("jobId") int jobId,
- @Param("clearBeforeTime") Date clearBeforeTime,
- @Param("clearBeforeNum") int clearBeforeNum,
- @Param("pagesize") int pagesize);
- public int clearLog(@Param("logIds") List logIds);
-
- public List findFailJobLogIds(@Param("pagesize") int pagesize);
-
- public int updateAlarmStatus(@Param("logId") long logId,
- @Param("oldAlarmStatus") int oldAlarmStatus,
- @Param("newAlarmStatus") int newAlarmStatus);
-
- public List findLostJobIds(@Param("losedTime") Date losedTime);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
deleted file mode 100644
index 3028aed..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * job log for glue
- * @author xuxueli 2016-5-19 18:04:56
- */
-@Mapper
-public interface XxlJobLogGlueDao {
-
- public int save(XxlJobLogGlue xxlJobLogGlue);
-
- public List findByJobId(@Param("jobId") int jobId);
-
- public int removeOld(@Param("jobId") int jobId, @Param("limit") int limit);
-
- public int deleteByJobId(@Param("jobId") int jobId);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
deleted file mode 100644
index f4b3dc8..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * job log
- * @author xuxueli 2019-11-22
- */
-@Mapper
-public interface XxlJobLogReportDao {
-
- public int save(XxlJobLogReport xxlJobLogReport);
-
- public int update(XxlJobLogReport xxlJobLogReport);
-
- public List queryLogReport(@Param("triggerDayFrom") Date triggerDayFrom,
- @Param("triggerDayTo") Date triggerDayTo);
-
- public XxlJobLogReport queryLogReportTotal();
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
deleted file mode 100644
index 1005c46..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobRegistry;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * Created by xuxueli on 16/9/30.
- */
-@Mapper
-public interface XxlJobRegistryDao {
-
- public List findDead(@Param("timeout") int timeout,
- @Param("nowTime") Date nowTime);
-
- public int removeDead(@Param("ids") List ids);
-
- public List findAll(@Param("timeout") int timeout,
- @Param("nowTime") Date nowTime);
-
- public int registryUpdate(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue,
- @Param("updateTime") Date updateTime);
-
- public int registrySave(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue,
- @Param("updateTime") Date updateTime);
-
- public int registryDelete(@Param("registryGroup") String registryGroup,
- @Param("registryKey") String registryKey,
- @Param("registryValue") String registryValue);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
deleted file mode 100644
index e840494..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.xxl.job.admin.dao;
-
-import com.xxl.job.admin.core.model.XxlJobUser;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import java.util.List;
-
-/**
- * @author xuxueli 2019-05-04 16:44:59
- */
-@Mapper
-public interface XxlJobUserDao {
-
- public List pageList(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("username") String username,
- @Param("role") int role);
- public int pageListCount(@Param("offset") int offset,
- @Param("pagesize") int pagesize,
- @Param("username") String username,
- @Param("role") int role);
-
- public XxlJobUser loadByUserName(@Param("username") String username);
-
- public int save(XxlJobUser xxlJobUser);
-
- public int update(XxlJobUser xxlJobUser);
-
- public int delete(@Param("id") int id);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java
deleted file mode 100644
index b90ca98..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.xxl.job.admin.service;
-
-import com.xxl.job.admin.core.model.XxlJobUser;
-import com.xxl.job.admin.core.util.CookieUtil;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.core.util.JacksonUtil;
-import com.xxl.job.admin.dao.XxlJobUserDao;
-import com.xxl.job.core.biz.model.ReturnT;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.DigestUtils;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.math.BigInteger;
-import java.util.Objects;
-
-/**
- * @author xuxueli 2019-05-04 22:13:264
- */
-@Slf4j
-@Configuration
-public class LoginService {
-
- public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
-
- @Resource
- private XxlJobUserDao xxlJobUserDao;
-
-
- private String makeToken(XxlJobUser xxlJobUser){
- String tokenJson = JacksonUtil.writeValueAsString(xxlJobUser);
- return new BigInteger(tokenJson.getBytes()).toString(16);
- }
- private XxlJobUser parseToken(String tokenHex){
- XxlJobUser xxlJobUser = null;
- if (tokenHex != null) {
- String tokenJson = new String(new BigInteger(tokenHex, 16).toByteArray()); // username_password(md5)
- xxlJobUser = JacksonUtil.readValue(tokenJson, XxlJobUser.class);
- }
- return xxlJobUser;
- }
-
-
- public ReturnT login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean ifRemember){
- if(Objects.isNull(request)){
- log.info("未使用参数");
- }
- // param
- if (username==null || username.trim().length()==0 || password==null || password.trim().length()==0){
- return new ReturnT<>(500, I18nUtil.getString("login_param_empty"));
- }
-
- // valid passowrd
- XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
- if (xxlJobUser == null) {
- return new ReturnT<>(500, I18nUtil.getString("login_param_unvalid"));
- }
- String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
- if (!passwordMd5.equals(xxlJobUser.getPassword())) {
- return new ReturnT<>(500, I18nUtil.getString("login_param_unvalid"));
- }
-
- String loginToken = makeToken(xxlJobUser);
-
- // do login
- CookieUtil.set(response, LOGIN_IDENTITY_KEY, loginToken, ifRemember);
- return ReturnT.SUCCESS;
- }
-
- /**
- * logout
- *
- * @param request
- * @param response
- */
- public ReturnT logout(HttpServletRequest request, HttpServletResponse response){
- CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
- return ReturnT.SUCCESS;
- }
-
- /**
- * logout
- *
- * @param request
- * @return
- */
- public XxlJobUser ifLogin(HttpServletRequest request, HttpServletResponse response){
- String cookieToken = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
- if (cookieToken != null) {
- XxlJobUser cookieUser = null;
- try {
- cookieUser = parseToken(cookieToken);
- } catch (Exception e) {
- logout(request, response);
- }
- if (cookieUser != null) {
- XxlJobUser dbUser = xxlJobUserDao.loadByUserName(cookieUser.getUsername());
- if (dbUser != null && cookieUser.getPassword().equals(dbUser.getPassword())) {
- return dbUser;
- }
- }
- }
- return null;
- }
-
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java
deleted file mode 100644
index 61da3a2..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.xxl.job.admin.service;
-
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.core.biz.model.ReturnT;
-
-import java.util.Date;
-import java.util.Map;
-
-/**
- * core job action for xxl-job
- *
- * @author xuxueli 2016-5-28 15:30:33
- */
-public interface XxlJobService {
-
- /**
- * page list
- *
- * @param start
- * @param length
- * @param jobGroup
- * @param jobDesc
- * @param executorHandler
- * @param author
- * @return
- */
- public Map pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author);
-
- /**
- * add job
- *
- * @param jobInfo
- * @return
- */
- public ReturnT add(XxlJobInfo jobInfo);
-
- /**
- * update job
- *
- * @param jobInfo
- * @return
- */
- public ReturnT update(XxlJobInfo jobInfo);
-
- /**
- * remove job
- * *
- * @param id
- * @return
- */
- public ReturnT remove(int id);
-
- /**
- * start job
- *
- * @param id
- * @return
- */
- public ReturnT start(int id);
-
- /**
- * stop job
- *
- * @param id
- * @return
- */
- public ReturnT stop(int id);
-
- /**
- * dashboard info
- *
- * @return
- */
- public Map dashboardInfo();
-
- /**
- * chart info
- *
- * @param startDate
- * @param endDate
- * @return
- */
- public ReturnT> chartInfo(Date startDate, Date endDate);
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
deleted file mode 100644
index 0887a64..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package com.xxl.job.admin.service.impl;
-
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
-import com.xxl.job.admin.core.trigger.TriggerTypeEnum;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.XxlJobGroupDao;
-import com.xxl.job.admin.dao.XxlJobInfoDao;
-import com.xxl.job.admin.dao.XxlJobLogDao;
-import com.xxl.job.admin.dao.XxlJobRegistryDao;
-import com.xxl.job.core.biz.AdminBiz;
-import com.xxl.job.core.biz.model.HandleCallbackParam;
-import com.xxl.job.core.biz.model.RegistryParam;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.IJobHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import javax.annotation.Resource;
-import java.text.MessageFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author xuxueli 2017-07-27 21:54:20
- */
-@Slf4j
-@Service
-public class AdminBizImpl implements AdminBiz {
- private static final Logger logger = LoggerFactory.getLogger(AdminBizImpl.class);
-
- @Resource
- public XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- private XxlJobRegistryDao xxlJobRegistryDao;
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
-
-
- @Override
- public ReturnT callback(List callbackParamList) {
- for (HandleCallbackParam handleCallbackParam: callbackParamList) {
- ReturnT callbackResult = callback(handleCallbackParam);
- logger.debug(">>>>>>>>> JobApiController.callback {}, handleCallbackParam={}, callbackResult={}",
- (callbackResult.getCode()==IJobHandler.SUCCESS.getCode()?"success":"fail"), handleCallbackParam, callbackResult);
- }
-
- return ReturnT.SUCCESS;
- }
-
- private ReturnT callback(HandleCallbackParam handleCallbackParam) {
- // valid log item
- XxlJobLog log = xxlJobLogDao.load(handleCallbackParam.getLogId());
- if (log == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "log item not found.");
- }
- if (log.getHandleCode() > 0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "log repeate callback."); // avoid repeat callback, trigger child job etc
- }
-
- // trigger success, to trigger child job
- StringBuilder callbackMsg = null;
- if (IJobHandler.SUCCESS.getCode() == handleCallbackParam.getExecuteResult().getCode()) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
- if (xxlJobInfo!=null && xxlJobInfo.getChildJobId()!=null && xxlJobInfo.getChildJobId().trim().length()>0) {
- callbackMsg = new StringBuilder(" >>>>>>>>>>>" + I18nUtil.getString("jobconf_trigger_child_run") + "<<<<<<<<<<< ");
- appendCallbackMsg(callbackMsg, xxlJobInfo);
- }
- }
-
- // handle msg
- StringBuilder handleMsg = new StringBuilder();
- if (log.getHandleMsg()!=null) {
- handleMsg.append(log.getHandleMsg()).append(" ");
- }
- if (handleCallbackParam.getExecuteResult().getMsg() != null) {
- handleMsg.append(handleCallbackParam.getExecuteResult().getMsg());
- }
- if (callbackMsg != null) {
- handleMsg.append(callbackMsg);
- }
-
- if (handleMsg.length() > 15000) {
- handleMsg = new StringBuilder(handleMsg.substring(0, 15000)); // text最大64kb 避免长度过长
- }
-
- // success, save log
- log.setHandleTime(new Date());
- log.setHandleCode(handleCallbackParam.getExecuteResult().getCode());
- log.setHandleMsg(handleMsg.toString());
- xxlJobLogDao.updateHandleInfo(log);
-
- return ReturnT.SUCCESS;
- }
-
- private void appendCallbackMsg(StringBuilder callbackMsg, XxlJobInfo xxlJobInfo) {
- String[] childJobIds = xxlJobInfo.getChildJobId().split(",");
- for (int i = 0; i < childJobIds.length; i++) {
- int childJobId = (childJobIds[i]!=null && childJobIds[i].trim().length()>0 && isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
- if (childJobId > 0) {
-
- JobTriggerPoolHelper.trigger(childJobId, TriggerTypeEnum.PARENT, -1, null, null, null);
- ReturnT triggerChildResult = ReturnT.SUCCESS;
-
- // add msg
- callbackMsg.append(MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg1"),
- (i + 1),
- childJobIds.length,
- childJobIds[i],
- (triggerChildResult.getCode() == ReturnT.SUCCESS_CODE ? I18nUtil.getString("system_success") : I18nUtil.getString("system_fail")),
- triggerChildResult.getMsg()));
- } else {
- callbackMsg.append(MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg2"),
- (i + 1),
- childJobIds.length,
- childJobIds[i]));
- }
- }
- }
-
- private boolean isNumeric(String str){
- try {
- Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- @Override
- public ReturnT registry(RegistryParam registryParam) {
-
- // valid
- if (!StringUtils.hasText(registryParam.getRegistryGroup())
- || !StringUtils.hasText(registryParam.getRegistryKey())
- || !StringUtils.hasText(registryParam.getRegistryValue())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "Illegal Argument.");
- }
-
- int ret = xxlJobRegistryDao.registryUpdate(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
- if (ret < 1) {
- xxlJobRegistryDao.registrySave(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue(), new Date());
-
- // fresh
- freshGroupRegistryInfo(registryParam);
- }
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT registryRemove(RegistryParam registryParam) {
-
- // valid
- if (!StringUtils.hasText(registryParam.getRegistryGroup())
- || !StringUtils.hasText(registryParam.getRegistryKey())
- || !StringUtils.hasText(registryParam.getRegistryValue())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, "Illegal Argument.");
- }
-
- int ret = xxlJobRegistryDao.registryDelete(registryParam.getRegistryGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue());
- if (ret > 0) {
-
- // fresh
- freshGroupRegistryInfo(registryParam);
- }
- return ReturnT.SUCCESS;
- }
-
- private void freshGroupRegistryInfo(RegistryParam registryParam){
- if(Objects.isNull(registryParam)){
- log.info("未使用参数");
- }
- // Under consideration, prevent affecting core tables
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
deleted file mode 100644
index 2608b43..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+++ /dev/null
@@ -1,403 +0,0 @@
-package com.xxl.job.admin.service.impl;
-
-import com.xxl.job.admin.core.model.XxlJobGroup;
-import com.xxl.job.admin.core.model.XxlJobInfo;
-import com.xxl.job.admin.core.cron.CronExpression;
-import com.xxl.job.admin.core.model.XxlJobLogReport;
-import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
-import com.xxl.job.admin.core.thread.JobScheduleHelper;
-import com.xxl.job.admin.core.util.I18nUtil;
-import com.xxl.job.admin.dao.*;
-import com.xxl.job.admin.service.XxlJobService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.glue.GlueTypeEnum;
-import com.xxl.job.core.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.text.MessageFormat;
-import java.text.ParseException;
-import java.util.*;
-
-/**
- * core job action for xxl-job
- * @author xuxueli 2016-5-28 15:30:33
- */
-@Service
-public class XxlJobServiceImpl implements XxlJobService {
- private static Logger logger = LoggerFactory.getLogger(XxlJobServiceImpl.class);
-
- @Resource
- private XxlJobGroupDao xxlJobGroupDao;
- @Resource
- private XxlJobInfoDao xxlJobInfoDao;
- @Resource
- public XxlJobLogDao xxlJobLogDao;
- @Resource
- private XxlJobLogGlueDao xxlJobLogGlueDao;
- @Resource
- private XxlJobLogReportDao xxlJobLogReportDao;
-
- private String jobinfoFieldCronUnvalid ="jobinfo_field_cron_unvalid";
- private String systemPleaseInput ="system_please_input";
- private String jobinfoFieldChildJobId ="jobinfo_field_childJobId";
- private String systemUnvalid ="system_unvalid";
- private String systemNotFound ="system_not_found";
- private String zero ="({0})";
-
- @Override
- public Map pageList(int start, int length, int jobGroup, int triggerStatus, String jobDesc, String executorHandler, String author) {
-
- // page list
- List list = xxlJobInfoDao.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
- int listCount = xxlJobInfoDao.pageListCount(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
-
- // package result
- Map maps = new HashMap<>();
- maps.put("recordsTotal", listCount); // 总记录数
- maps.put("recordsFiltered", listCount); // 过滤后的总记录数
- maps.put("data", list); // 分页列表
- return maps;
- }
-
- @Override
- public ReturnT add(XxlJobInfo jobInfo) {
- // valid
- XxlJobGroup group = xxlJobGroupDao.load(jobInfo.getJobGroup());
- if (group == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("system_please_choose")+I18nUtil.getString("jobinfo_field_jobgroup")) );
- }
- if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(jobinfoFieldCronUnvalid) );
- }
- if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString(systemPleaseInput)+I18nUtil.getString("jobinfo_field_jobdesc")) );
- }
- if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString(systemPleaseInput)+I18nUtil.getString("jobinfo_field_author")) );
- }
- if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString(systemUnvalid)) );
- }
- if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString(systemUnvalid)) );
- }
- if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype")+I18nUtil.getString(systemUnvalid)) );
- }
- if (GlueTypeEnum.BEAN==GlueTypeEnum.match(jobInfo.getGlueType()) && (jobInfo.getExecutorHandler()==null || jobInfo.getExecutorHandler().trim().length()==0) ) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString(systemPleaseInput)+"JobHandler") );
- }
- getGlueTypeEnum(jobInfo);
-
- // ChildJobId valid
- ReturnT childJobIdItem = getChildJobId(jobInfo);
- if (childJobIdItem != null) {
- return childJobIdItem;
- }
-
- // add in db
- jobInfo.setAddTime(new Date());
- jobInfo.setUpdateTime(new Date());
- jobInfo.setGlueUpdatetime(new Date());
- xxlJobInfoDao.save(jobInfo);
- if (jobInfo.getId() < 1) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_add")+I18nUtil.getString("system_fail")) );
- }
-
- return new ReturnT<>(String.valueOf(jobInfo.getId()));
- }
-
- private void getGlueTypeEnum(XxlJobInfo jobInfo) {
- // fix "\r" in shell
- if (GlueTypeEnum.GLUE_SHELL==GlueTypeEnum.match(jobInfo.getGlueType()) && jobInfo.getGlueSource()!=null) {
- jobInfo.setGlueSource(jobInfo.getGlueSource().replace("\r", ""));
- }
- }
-
- private ReturnT getChildJobId(XxlJobInfo jobInfo) {
- if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
- String[] childJobIds = jobInfo.getChildJobId().split(",");
- for (String childJobIdItem: childJobIds) {
- if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
- XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
- if (childJobInfo==null) {
- return new ReturnT<>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString(jobinfoFieldChildJobId)+zero+I18nUtil.getString(systemNotFound)), childJobIdItem));
- }
- } else {
- return new ReturnT<>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString(jobinfoFieldChildJobId)+zero+I18nUtil.getString(systemUnvalid)), childJobIdItem));
- }
- }
-
- // join , avoid "xxx,,"
- StringBuilder temp = new StringBuilder();
- for (String item:childJobIds) {
- temp.append(item).append(",");
- }
- temp = new StringBuilder(temp.substring(0, temp.length() - 1));
-
- jobInfo.setChildJobId(temp.toString());
- }
- return null;
- }
-
- private boolean isNumeric(String str){
- try {
- Integer.valueOf(str);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- @Override
- public ReturnT update(XxlJobInfo jobInfo) {
- ReturnT x = getStringReturnT(jobInfo);
- if (x != null) {
- return x;
- }
-
- // ChildJobId valid
- if (jobInfo.getChildJobId()!=null && jobInfo.getChildJobId().trim().length()>0) {
- String[] childJobIds = jobInfo.getChildJobId().split(",");
- ReturnT childJobIdItem = getStringReturnT(childJobIds);
- if (childJobIdItem != null) return childJobIdItem;
-
- // join , avoid "xxx,,"
- StringBuilder temp = new StringBuilder();
- for (String item:childJobIds) {
- temp.append(item).append(",");
- }
- temp = new StringBuilder(temp.substring(0, temp.length() - 1));
-
- jobInfo.setChildJobId(temp.toString());
- }
-
- // group valid
- XxlJobGroup jobGroup = xxlJobGroupDao.load(jobInfo.getJobGroup());
- if (jobGroup == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_jobgroup")+I18nUtil.getString(systemUnvalid)) );
- }
-
- // stage job info
- XxlJobInfo existsJobInfo = xxlJobInfoDao.loadById(jobInfo.getId());
- if (existsJobInfo == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString(systemNotFound)) );
- }
-
- // next trigger time (5s后生效,避开预读周期)
- long nextTriggerTime = existsJobInfo.getTriggerNextTime();
- if (existsJobInfo.getTriggerStatus() == 1 && !jobInfo.getJobCron().equals(existsJobInfo.getJobCron()) ) {
- try {
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
- if (nextValidTime == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
- }
- nextTriggerTime = nextValidTime.getTime();
- } catch (ParseException e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(jobinfoFieldCronUnvalid)+" | "+ e.getMessage());
- }
- }
-
- existsJobInfo.setJobGroup(jobInfo.getJobGroup());
- existsJobInfo.setJobCron(jobInfo.getJobCron());
- existsJobInfo.setJobDesc(jobInfo.getJobDesc());
- existsJobInfo.setAuthor(jobInfo.getAuthor());
- existsJobInfo.setAlarmEmail(jobInfo.getAlarmEmail());
- existsJobInfo.setExecutorRouteStrategy(jobInfo.getExecutorRouteStrategy());
- existsJobInfo.setExecutorHandler(jobInfo.getExecutorHandler());
- existsJobInfo.setExecutorParam(jobInfo.getExecutorParam());
- existsJobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
- existsJobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
- existsJobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount());
- existsJobInfo.setChildJobId(jobInfo.getChildJobId());
- existsJobInfo.setTriggerNextTime(nextTriggerTime);
-
- existsJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(existsJobInfo);
-
-
- return ReturnT.SUCCESS;
- }
-
- private ReturnT getStringReturnT(String[] childJobIds) {
- for (String childJobIdItem: childJobIds) {
- if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
- XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
- if (childJobInfo==null) {
- return new ReturnT<>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString(jobinfoFieldChildJobId)+zero+I18nUtil.getString(systemNotFound)), childJobIdItem));
- }
- } else {
- return new ReturnT<>(ReturnT.FAIL_CODE,
- MessageFormat.format((I18nUtil.getString(jobinfoFieldChildJobId)+zero+I18nUtil.getString(systemUnvalid)), childJobIdItem));
- }
- }
- return null;
- }
-
- private ReturnT getStringReturnT(XxlJobInfo jobInfo) {
- // valid
- if (!CronExpression.isValidExpression(jobInfo.getJobCron())) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(jobinfoFieldCronUnvalid) );
- }
- if (jobInfo.getJobDesc()==null || jobInfo.getJobDesc().trim().length()==0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString(systemPleaseInput)+I18nUtil.getString("jobinfo_field_jobdesc")) );
- }
- if (jobInfo.getAuthor()==null || jobInfo.getAuthor().trim().length()==0) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString(systemPleaseInput)+I18nUtil.getString("jobinfo_field_author")) );
- }
- if (ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null) == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorRouteStrategy")+I18nUtil.getString(systemUnvalid)) );
- }
- if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString(systemUnvalid)) );
- }
- return null;
- }
-
- @Override
- public ReturnT remove(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
- if (xxlJobInfo == null) {
- return ReturnT.SUCCESS;
- }
-
- xxlJobInfoDao.delete(id);
- xxlJobLogDao.delete(id);
- xxlJobLogGlueDao.deleteByJobId(id);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT start(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
-
- // next trigger time (5s后生效,避开预读周期)
- long nextTriggerTime = 0;
- try {
- Date nextValidTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + JobScheduleHelper.PRE_READ_MS));
- if (nextValidTime == null) {
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_never_fire"));
- }
- nextTriggerTime = nextValidTime.getTime();
- } catch (ParseException e) {
- logger.error(e.getMessage(), e);
- return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString(jobinfoFieldCronUnvalid)+" | "+ e.getMessage());
- }
-
- xxlJobInfo.setTriggerStatus(1);
- xxlJobInfo.setTriggerLastTime(0);
- xxlJobInfo.setTriggerNextTime(nextTriggerTime);
-
- xxlJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(xxlJobInfo);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public ReturnT stop(int id) {
- XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
-
- xxlJobInfo.setTriggerStatus(0);
- xxlJobInfo.setTriggerLastTime(0);
- xxlJobInfo.setTriggerNextTime(0);
-
- xxlJobInfo.setUpdateTime(new Date());
- xxlJobInfoDao.update(xxlJobInfo);
- return ReturnT.SUCCESS;
- }
-
- @Override
- public Map dashboardInfo() {
-
- int jobInfoCount = xxlJobInfoDao.findAllCount();
- int jobLogCount = 0;
- int jobLogSuccessCount = 0;
- XxlJobLogReport xxlJobLogReport = xxlJobLogReportDao.queryLogReportTotal();
- if (xxlJobLogReport != null) {
- jobLogCount = xxlJobLogReport.getRunningCount() + xxlJobLogReport.getSucCount() + xxlJobLogReport.getFailCount();
- jobLogSuccessCount = xxlJobLogReport.getSucCount();
- }
-
- // executor count
- Set executorAddressSet = new HashSet<>();
- List groupList = xxlJobGroupDao.findAll();
-
- if (groupList!=null && !groupList.isEmpty()) {
- for (XxlJobGroup group: groupList) {
- if (group.getRegistryList()!=null && !group.getRegistryList().isEmpty()) {
- executorAddressSet.addAll(group.getRegistryList());
- }
- }
- }
-
- int executorCount = executorAddressSet.size();
-
- Map dashboardMap = new HashMap<>();
- dashboardMap.put("jobInfoCount", jobInfoCount);
- dashboardMap.put("jobLogCount", jobLogCount);
- dashboardMap.put("jobLogSuccessCount", jobLogSuccessCount);
- dashboardMap.put("executorCount", executorCount);
- return dashboardMap;
- }
-
- @Override
- public ReturnT> chartInfo(Date startDate, Date endDate) {
-
- // process
- List triggerDayList = new ArrayList<>();
- List triggerDayCountRunningList = new ArrayList<>();
- List triggerDayCountSucList = new ArrayList<>();
- List triggerDayCountFailList = new ArrayList<>();
- int triggerCountRunningTotal = 0;
- int triggerCountSucTotal = 0;
- int triggerCountFailTotal = 0;
-
- List logReportList = xxlJobLogReportDao.queryLogReport(startDate, endDate);
-
- if (logReportList!=null && !logReportList.isEmpty()) {
- for (XxlJobLogReport item: logReportList) {
- String day = DateUtil.formatDate(item.getTriggerDay());
- int triggerDayCountRunning = item.getRunningCount();
- int triggerDayCountSuc = item.getSucCount();
- int triggerDayCountFail = item.getFailCount();
-
- triggerDayList.add(day);
- triggerDayCountRunningList.add(triggerDayCountRunning);
- triggerDayCountSucList.add(triggerDayCountSuc);
- triggerDayCountFailList.add(triggerDayCountFail);
-
- triggerCountRunningTotal += triggerDayCountRunning;
- triggerCountSucTotal += triggerDayCountSuc;
- triggerCountFailTotal += triggerDayCountFail;
- }
- } else {
- for (int i = -6; i <= 0; i++) {
- triggerDayList.add(DateUtil.formatDate(DateUtil.addDays(new Date(), i)));
- triggerDayCountRunningList.add(0);
- triggerDayCountSucList.add(0);
- triggerDayCountFailList.add(0);
- }
- }
-
- Map result = new HashMap<>();
- result.put("triggerDayList", triggerDayList);
- result.put("triggerDayCountRunningList", triggerDayCountRunningList);
- result.put("triggerDayCountSucList", triggerDayCountSucList);
- result.put("triggerDayCountFailList", triggerDayCountFailList);
-
- result.put("triggerCountRunningTotal", triggerCountRunningTotal);
- result.put("triggerCountSucTotal", triggerCountSucTotal);
- result.put("triggerCountFailTotal", triggerCountFailTotal);
-
- return new ReturnT<>(result);
- }
-
-}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/application.yml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/application.yml
deleted file mode 100644
index 012bf50..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/application.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-server:
- port: 9080
- servlet:
- context-path: /xxl-job-admin
- #数据源配置
-spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
- username: root
- password: root
- driver-class-name: com.mysql.jdbc.Driver
- type: com.zaxxer.hikari.HikariDataSource
- hikari:
- minimum-idle: 10
- maximum-pool-size: 30
- auto-commit: true
- idle-timeout: 30000
- pool-name: HikariCP
- max-lifetime: 900000
- connection-timeout: 10000
- connection-test-query: SELECT 1
- #邮箱配置
- mail:
- host: smtphz.qiye.163.com
- port: 994
- username: zhuwei@aboatedu.com
- password: zwass1314
- properties:
- mail:
- smtp:
- auth: true
- starttls:
- enable: true
- required: true
- socketFactory:
- class: javax.net.ssl.SSLSocketFactory
- #MVC配置
- mvc:
- servlet:
- load-on-startup: 0
- static-path-pattern: /static/**
- resources:
- static-locations: classpath:/static/
- #freemarker配置
- freemarker:
- templateLoaderPath=classpath: /templates/
- suffix: .ftl
- charset: UTF-8
- request-context-attribute: request
- settings:
- number_format: 0.##########
-#通用配置,开放端点
-management:
- server:
- servlet:
- context-path: /actuator
- health:
- mail:
- enabled: false
-#mybatis配置
-mybatis:
- mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
-#XXL-job配置
-xxl:
- job:
- login:
- username: admin
- password: 123456
- accessToken:
- i18n: zh_CN
- #触发池
- triggerpool:
- fast:
- max: 200
- slow:
- max: 100
- logretentiondays: 30
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_en.properties b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_en.properties
deleted file mode 100644
index 4363499..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_en.properties
+++ /dev/null
@@ -1,264 +0,0 @@
-admin_name=Scheduling Center
-admin_name_full=Distributed Task Scheduling Platform XXL-JOB
-admin_version=2.2.0
-admin_i18n=en
-
-## system
-system_tips=System message
-system_ok=Confirm
-system_close=Close
-system_save=Save
-system_cancel=Cancel
-system_search=Search
-system_status=Status
-system_opt=Operate
-system_please_input=please input
-system_please_choose=please choose
-system_success=success
-system_fail=fail
-system_add_suc=add success
-system_add_fail=add fail
-system_update_suc=update success
-system_update_fail=update fail
-system_all=All
-system_api_error=net error
-system_show=Show
-system_empty=Empty
-system_opt_suc=operate success
-system_opt_fail=operate fail
-system_opt_edit=Edit
-system_opt_del=Delete
-system_opt_copy=Copy
-system_unvalid=illegal
-system_not_found=not exist
-system_nav=Navigation
-system_digits=digits
-system_lengh_limit=Length limit
-system_permission_limit=Permission limit
-system_welcome=Welcome
-
-## daterangepicker
-daterangepicker_ranges_recent_hour=recent one hour
-daterangepicker_ranges_today=today
-daterangepicker_ranges_yesterday=yesterday
-daterangepicker_ranges_this_month=this month
-daterangepicker_ranges_last_month=last month
-daterangepicker_ranges_recent_week=recent one week
-daterangepicker_ranges_recent_month=recent one month
-daterangepicker_custom_name=custom
-daterangepicker_custom_starttime=start time
-daterangepicker_custom_endtime=end time
-daterangepicker_custom_daysofweek=Sun,Mon,Tue,Wed,Thu,Fri,Sat
-daterangepicker_custom_monthnames=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
-
-## dataTable
-dataTable_sProcessing=processing...
-dataTable_sLengthMenu= _MENU_ records per page
-dataTable_sZeroRecords=No matching results
-dataTable_sInfo=page _PAGE_ ( Total _PAGES_ pages,_TOTAL_ records )
-dataTable_sInfoEmpty=No Record
-dataTable_sInfoFiltered=(Filtered by _MAX_ results)
-dataTable_sSearch=Search
-dataTable_sEmptyTable=Table data is empty
-dataTable_sLoadingRecords=Loading...
-dataTable_sFirst=FIRST PAGE
-dataTable_sPrevious=Previous Page
-dataTable_sNext=Next Page
-dataTable_sLast=LAST PAGE
-dataTable_sSortAscending=: Rank this column in ascending order
-dataTable_sSortDescending=: Rank this column in descending order
-
-## login
-login_btn=Login
-login_remember_me=Remember Me
-login_username_placeholder=Please enter username
-login_password_placeholder=Please enter password
-login_username_empty=Please enter username
-login_username_lt_4=Username length should not be less than 4
-login_password_empty=Please enter password
-login_password_lt_4=Password length should not be less than 4
-login_success=Login success
-login_fail=Login fail
-login_param_empty=Username or password is empty
-login_param_unvalid=Username or password error
-
-## logout
-logout_btn=Logout
-logout_confirm=Confirm logout?
-logout_success=Logout success
-logout_fail=Logout fail
-
-## change pwd
-change_pwd=Change password
-change_pwd_suc_to_logout=Change password successful, about to log out login
-change_pwd_field_newpwd=new password
-
-## dashboard
-job_dashboard_name=Run report
-job_dashboard_job_num=Job number
-job_dashboard_job_num_tip=The number of tasks running in the scheduling center
-job_dashboard_trigger_num=trigger number
-job_dashboard_trigger_num_tip=The number of trigger record scheduled by the scheduling center
-job_dashboard_jobgroup_num=Executor number
-job_dashboard_jobgroup_num_tip=The number of online executor machines perceived by the scheduling center
-job_dashboard_report=Scheduling report
-job_dashboard_report_loaddata_fail=Scheduling report load data error
-job_dashboard_date_report=Date distribution
-job_dashboard_rate_report=Percentage distribution
-
-## job info
-jobinfo_name=Job Manage
-jobinfo_job=Job
-jobinfo_field_add=Add Job
-jobinfo_field_update=Edit Job
-jobinfo_field_id=Job ID
-jobinfo_field_jobgroup=Executor
-jobinfo_field_jobdesc=Job description
-jobinfo_field_timeout=Job timeout period
-jobinfo_field_gluetype=GLUE Type
-jobinfo_field_executorparam=Param
-jobinfo_field_cron_unvalid=The Cron is illegal
-jobinfo_field_cron_never_fire=The Cron will never fire
-jobinfo_field_author=Author
-jobinfo_field_alarmemail=Alarm email
-jobinfo_field_alarmemail_placeholder=Please enter alarm mail, if there are more than one comma separated
-jobinfo_field_executorRouteStrategy=Route Strategy
-jobinfo_field_childJobId=Child Job ID
-jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
-jobinfo_field_executorBlockStrategy=Block Strategy
-jobinfo_field_executorFailRetryCount=Fail Retry Count
-jobinfo_field_executorFailRetryCount_placeholder=Fail Retry Count. effect if greater than zero
-jobinfo_script_location=Script location
-jobinfo_shard_index=Shard index
-jobinfo_shard_total=Shard total
-jobinfo_opt_stop=Stop
-jobinfo_opt_start=Start
-jobinfo_opt_log=Query Log
-jobinfo_opt_run=Run Once
-jobinfo_opt_run_tips=Please input the address for this trigger. Null will be obtained from the executor
-jobinfo_opt_registryinfo=Registry Info
-jobinfo_opt_next_time=Next trigger time
-jobinfo_glue_remark=Resource Remark
-jobinfo_glue_remark_limit=Resource Remark length is limited to 4~100
-jobinfo_glue_rollback=Version Backtrack
-jobinfo_glue_jobid_unvalid=Job ID is illegal
-jobinfo_glue_gluetype_unvalid=The job is not GLUE Type
-jobinfo_field_executorTimeout_placeholder=Job Timeout period,in seconds. effect if greater than zero
-
-## job log
-joblog_name=Trigger Log
-joblog_status=Status
-joblog_status_all=All
-joblog_status_suc=Success
-joblog_status_fail=Fail
-joblog_status_running=Running
-joblog_field_triggerTime=Trigger Time
-joblog_field_triggerCode=Trigger Result
-joblog_field_triggerMsg=Trigger Msg
-joblog_field_handleTime=Handle Time
-joblog_field_handleCode=Handle Result
-joblog_field_handleMsg=Trigger Msg
-joblog_field_executorAddress=Executor Address
-joblog_clean=Clean
-joblog_clean_log=Clean Log
-joblog_clean_type=Clean Type
-joblog_clean_type_1=Clean up log data a month ago
-joblog_clean_type_2=Clean up log data three month ago
-joblog_clean_type_3=Clean up log data six month ago
-joblog_clean_type_4=Clean up log data a year ago
-joblog_clean_type_5=Clean up log data a thousand record ago
-joblog_clean_type_6=Clean up log data ten thousand record ago
-joblog_clean_type_7=Clean up log data thirty thousand record ago
-joblog_clean_type_8=Clean up log data hundred thousand record ago
-joblog_clean_type_9=Clean up all log data
-joblog_clean_type_unvalid=Clean type is illegal
-joblog_handleCode_200=Success
-joblog_handleCode_500=Fail
-joblog_handleCode_502=Timeout
-joblog_kill_log=Kill Job
-joblog_kill_log_limit=Trigger Fail, can not kill job
-joblog_kill_log_byman=Manual operation, kill job
-joblog_lost_fail=Job result lost, marked as failure
-joblog_rolling_log=Rolling log
-joblog_rolling_log_refresh=Refresh
-joblog_rolling_log_triggerfail=The job trigger fail, can not view the rolling log
-joblog_rolling_log_failoften=The request for the Rolling log is terminated, the number of failed requests exceeds the limit, Reload the log on the refresh page
-joblog_logid_unvalid=Log ID is illegal
-
-## job group
-jobgroup_name=Executor Manage
-jobgroup_list=Executor List
-jobgroup_add=Add Executor
-jobgroup_edit=Edit Executor
-jobgroup_del=Delete Executor
-jobgroup_field_title=Title
-jobgroup_field_addressType=Registry Type
-jobgroup_field_addressType_0=Automatic registration
-jobgroup_field_addressType_1=Manual registration
-jobgroup_field_addressType_limit=Manually registration type, the machine address must not be empty
-jobgroup_field_registryList=machine address
-jobgroup_field_registryList_unvalid=registry machine address is illegal
-jobgroup_field_registryList_placeholder=Please enter the machine address, if there are more than one comma separated
-jobgroup_field_appname_limit=Limit the beginning of a lowercase letter, consists of lowercase letters、number and hyphen.
-jobgroup_field_appname_length=AppName length is limited to 4~64
-jobgroup_field_title_length=Title length is limited to 4~12
-jobgroup_field_order_digits=Please enter a positive integer
-jobgroup_field_orderrange=Order is limited to 1~1000
-jobgroup_del_limit_0=Refuse to delete, the executor is being used
-jobgroup_del_limit_1=Refuses to delete, the system retains at least one executor
-jobgroup_empty=There is no valid executor. Please contact the administrator
-
-## job conf
-jobconf_block_SERIAL_EXECUTION=Serial execution
-jobconf_block_DISCARD_LATER=Discard Later
-jobconf_block_COVER_EARLY=Cover Early
-jobconf_route_first=First
-jobconf_route_last=Last
-jobconf_route_round=Round
-jobconf_route_random=Random
-jobconf_route_consistenthash=Consistent Hash
-jobconf_route_lfu=Least Frequently Used
-jobconf_route_lru=Least Recently Used
-jobconf_route_failover=Failover
-jobconf_route_busyover=Busyover
-jobconf_route_shard=Sharding Broadcast
-jobconf_idleBeat=Idle check
-jobconf_beat=Heartbeats
-jobconf_monitor=Task Scheduling Center monitor alarm
-jobconf_monitor_detail=monitor alarm details
-jobconf_monitor_alarm_title=Alarm Type
-jobconf_monitor_alarm_type=Trigger Fail
-jobconf_monitor_alarm_content=Alarm Content
-jobconf_trigger_admin_adress=Trigger machine address
-jobconf_trigger_exe_regtype=Execotor-Registry Type
-jobconf_trigger_exe_regaddress=Execotor-Registry Address
-jobconf_trigger_address_empty=Trigger Fail:registry address is empty
-jobconf_trigger_run=Trigger Job
-jobconf_trigger_child_run=Trigger child job
-jobconf_callback_child_msg1={0}/{1} [Job ID={2}], Trigger {3}, Trigger msg: {4}
-jobconf_callback_child_msg2={0}/{1} [Job ID={2}], Trigger Fail, Trigger msg: Job ID is illegal
-jobconf_trigger_type=Job trigger type
-jobconf_trigger_type_cron=Cron trigger
-jobconf_trigger_type_manual=Manual trigger
-jobconf_trigger_type_parent=Parent job trigger
-jobconf_trigger_type_api=Api trigger
-jobconf_trigger_type_retry=Fail retry trigger
-
-## user
-user_manage=User Manage
-user_username=Username
-user_password=Password
-user_role=Role
-user_role_admin=Admin User
-user_role_normal=Normal User
-user_permission=Permission
-user_add=Add User
-user_update=Edit User
-user_username_repeat=Username Repeat
-user_username_valid=Restrictions start with a lowercase letter and consist of lowercase letters and Numbers
-user_password_update_placeholder=Please input password, empty means not update
-user_update_loginuser_limit=Operation of current login account is not allowed
-
-## help
-job_help=Tutorial
-job_help_document=Official Document
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties
deleted file mode 100644
index 1b9f003..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties
+++ /dev/null
@@ -1,264 +0,0 @@
-admin_name=任务调度中心
-admin_name_full=分布式任务调度平台XXL-JOB
-admin_version=2.2.0
-admin_i18n=
-
-## system
-system_tips=系统提示
-system_ok=确定
-system_close=关闭
-system_save=保存
-system_cancel=取消
-system_search=搜索
-system_status=状态
-system_opt=操作
-system_please_input=请输入
-system_please_choose=请选择
-system_success=成功
-system_fail=失败
-system_add_suc=新增成功
-system_add_fail=新增失败
-system_update_suc=更新成功
-system_update_fail=更新失败
-system_all=全部
-system_api_error=接口异常
-system_show=查看
-system_empty=无
-system_opt_suc=操作成功
-system_opt_fail=操作失败
-system_opt_edit=编辑
-system_opt_del=删除
-system_opt_copy=复制
-system_unvalid=非法
-system_not_found=不存在
-system_nav=导航
-system_digits=整数
-system_lengh_limit=长度限制
-system_permission_limit=权限拦截
-system_welcome=欢迎
-
-## daterangepicker
-daterangepicker_ranges_recent_hour=最近一小时
-daterangepicker_ranges_today=今日
-daterangepicker_ranges_yesterday=昨日
-daterangepicker_ranges_this_month=本月
-daterangepicker_ranges_last_month=上个月
-daterangepicker_ranges_recent_week=最近一周
-daterangepicker_ranges_recent_month=最近一月
-daterangepicker_custom_name=自定义
-daterangepicker_custom_starttime=起始时间
-daterangepicker_custom_endtime=结束时间
-daterangepicker_custom_daysofweek=日,一,二,三,四,五,六
-daterangepicker_custom_monthnames=一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
-
-## dataTable
-dataTable_sProcessing=处理中...
-dataTable_sLengthMenu=每页 _MENU_ 条记录
-dataTable_sZeroRecords=没有匹配结果
-dataTable_sInfo=第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )
-dataTable_sInfoEmpty=无记录
-dataTable_sInfoFiltered=(由 _MAX_ 项结果过滤)
-dataTable_sSearch=搜索
-dataTable_sEmptyTable=表中数据为空
-dataTable_sLoadingRecords=载入中...
-dataTable_sFirst=首页
-dataTable_sPrevious=上页
-dataTable_sNext=下页
-dataTable_sLast=末页
-dataTable_sSortAscending=: 以升序排列此列
-dataTable_sSortDescending=: 以降序排列此列
-
-## login
-login_btn=登录
-login_remember_me=记住密码
-login_username_placeholder=请输入登录账号
-login_password_placeholder=请输入登录密码
-login_username_empty=请输入登录账号
-login_username_lt_4=登录账号不应低于4位
-login_password_empty=请输入登录密码
-login_password_lt_4=登录密码不应低于4位
-login_success=登录成功
-login_fail=登录失败
-login_param_empty=账号或密码为空
-login_param_unvalid=账号或密码错误
-
-## logout
-logout_btn=注销
-logout_confirm=确认注销登录?
-logout_success=注销成功
-logout_fail=注销失败
-
-## change pwd
-change_pwd=修改密码
-change_pwd_suc_to_logout=修改密码成功,即将注销登陆
-change_pwd_field_newpwd=新密码
-
-## dashboard
-job_dashboard_name=运行报表
-job_dashboard_job_num=任务数量
-job_dashboard_job_num_tip=调度中心运行的任务数量
-job_dashboard_trigger_num=调度次数
-job_dashboard_trigger_num_tip=调度中心触发的调度次数
-job_dashboard_jobgroup_num=执行器数量
-job_dashboard_jobgroup_num_tip=调度中心在线的执行器机器数量
-job_dashboard_report=调度报表
-job_dashboard_report_loaddata_fail=调度报表数据加载异常
-job_dashboard_date_report=日期分布图
-job_dashboard_rate_report=成功比例图
-
-## job info
-jobinfo_name=任务管理
-jobinfo_job=任务
-jobinfo_field_add=新增
-jobinfo_field_update=更新任务
-jobinfo_field_id=任务ID
-jobinfo_field_jobgroup=执行器
-jobinfo_field_jobdesc=任务描述
-jobinfo_field_gluetype=运行模式
-jobinfo_field_executorparam=任务参数
-jobinfo_field_cron_unvalid=Cron格式非法
-jobinfo_field_cron_never_fire=Cron非法,永远不会触发
-jobinfo_field_author=负责人
-jobinfo_field_timeout=任务超时时间
-jobinfo_field_alarmemail=报警邮件
-jobinfo_field_alarmemail_placeholder=请输入报警邮件,多个邮件地址则逗号分隔
-jobinfo_field_executorRouteStrategy=路由策略
-jobinfo_field_childJobId=子任务ID
-jobinfo_field_childJobId_placeholder=请输入子任务的任务ID,如存在多个则逗号分隔
-jobinfo_field_executorBlockStrategy=阻塞处理策略
-jobinfo_field_executorFailRetryCount=失败重试次数
-jobinfo_field_executorFailRetryCount_placeholder=失败重试次数,大于零时生效
-jobinfo_script_location=脚本位置
-jobinfo_shard_index=分片序号
-jobinfo_shard_total=分片总数
-jobinfo_opt_stop=停止
-jobinfo_opt_start=启动
-jobinfo_opt_log=查询日志
-jobinfo_opt_run=执行一次
-jobinfo_opt_run_tips=请输入本次执行的机器地址,为空则从执行器获取
-jobinfo_opt_registryinfo=注册节点
-jobinfo_opt_next_time=下次执行时间
-jobinfo_glue_remark=源码备注
-jobinfo_glue_remark_limit=源码备注长度限制为4~100
-jobinfo_glue_rollback=版本回溯
-jobinfo_glue_jobid_unvalid=任务ID非法
-jobinfo_glue_gluetype_unvalid=该任务非GLUE模式
-jobinfo_field_executorTimeout_placeholder=任务超时时间,单位秒,大于零时生效
-
-## job log
-joblog_name=调度日志
-joblog_status=状态
-joblog_status_all=全部
-joblog_status_suc=成功
-joblog_status_fail=失败
-joblog_status_running=进行中
-joblog_field_triggerTime=调度时间
-joblog_field_triggerCode=调度结果
-joblog_field_triggerMsg=调度备注
-joblog_field_handleTime=执行时间
-joblog_field_handleCode=执行结果
-joblog_field_handleMsg=执行备注
-joblog_field_executorAddress=执行器地址
-joblog_clean=清理
-joblog_clean_log=日志清理
-joblog_clean_type=清理方式
-joblog_clean_type_1=清理一个月之前日志数据
-joblog_clean_type_2=清理三个月之前日志数据
-joblog_clean_type_3=清理六个月之前日志数据
-joblog_clean_type_4=清理一年之前日志数据
-joblog_clean_type_5=清理一千条以前日志数据
-joblog_clean_type_6=清理一万条以前日志数据
-joblog_clean_type_7=清理三万条以前日志数据
-joblog_clean_type_8=清理十万条以前日志数据
-joblog_clean_type_9=清理所有日志数据
-joblog_clean_type_unvalid=清理类型参数异常
-joblog_handleCode_200=成功
-joblog_handleCode_500=失败
-joblog_handleCode_502=失败(超时)
-joblog_kill_log=终止任务
-joblog_kill_log_limit=调度失败,无法终止日志
-joblog_kill_log_byman=人为操作,主动终止
-joblog_lost_fail=任务结果丢失,标记失败
-joblog_rolling_log=执行日志
-joblog_rolling_log_refresh=刷新
-joblog_rolling_log_triggerfail=任务发起调度失败,无法查看执行日志
-joblog_rolling_log_failoften=终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志
-joblog_logid_unvalid=日志ID非法
-
-## job group
-jobgroup_name=执行器管理
-jobgroup_list=执行器列表
-jobgroup_add=新增执行器
-jobgroup_edit=编辑执行器
-jobgroup_del=删除执行器
-jobgroup_field_title=名称
-jobgroup_field_addressType=注册方式
-jobgroup_field_addressType_0=自动注册
-jobgroup_field_addressType_1=手动录入
-jobgroup_field_addressType_limit=手动录入注册方式,机器地址不可为空
-jobgroup_field_registryList=机器地址
-jobgroup_field_registryList_unvalid=机器地址格式非法
-jobgroup_field_registryList_placeholder=请输入执行器地址列表,多地址逗号分隔
-jobgroup_field_appname_limit=限制以小写字母开头,由小写字母、数字和中划线组成
-jobgroup_field_appname_length=AppName长度限制为4~64
-jobgroup_field_title_length=名称长度限制为4~12
-jobgroup_field_order_digits=请输入整数
-jobgroup_field_orderrange=取值范围为1~1000
-jobgroup_del_limit_0=拒绝删除,该执行器使用中
-jobgroup_del_limit_1=拒绝删除, 系统至少保留一个执行器
-jobgroup_empty=不存在有效执行器,请联系管理员
-
-## job conf
-jobconf_block_SERIAL_EXECUTION=单机串行
-jobconf_block_DISCARD_LATER=丢弃后续调度
-jobconf_block_COVER_EARLY=覆盖之前调度
-jobconf_route_first=第一个
-jobconf_route_last=最后一个
-jobconf_route_round=轮询
-jobconf_route_random=随机
-jobconf_route_consistenthash=一致性HASH
-jobconf_route_lfu=最不经常使用
-jobconf_route_lru=最近最久未使用
-jobconf_route_failover=故障转移
-jobconf_route_busyover=忙碌转移
-jobconf_route_shard=分片广播
-jobconf_idleBeat=空闲检测
-jobconf_beat=心跳检测
-jobconf_monitor=任务调度中心监控报警
-jobconf_monitor_detail=监控告警明细
-jobconf_monitor_alarm_title=告警类型
-jobconf_monitor_alarm_type=调度失败
-jobconf_monitor_alarm_content=告警内容
-jobconf_trigger_admin_adress=调度机器
-jobconf_trigger_exe_regtype=执行器-注册方式
-jobconf_trigger_exe_regaddress=执行器-地址列表
-jobconf_trigger_address_empty=调度失败:执行器地址为空
-jobconf_trigger_run=触发调度
-jobconf_trigger_child_run=触发子任务
-jobconf_callback_child_msg1={0}/{1} [任务ID={2}], 触发{3}, 触发备注: {4}
-jobconf_callback_child_msg2={0}/{1} [任务ID={2}], 触发失败, 触发备注: 任务ID格式错误
-jobconf_trigger_type=任务触发类型
-jobconf_trigger_type_cron=Cron触发
-jobconf_trigger_type_manual=手动触发
-jobconf_trigger_type_parent=父任务触发
-jobconf_trigger_type_api=API触发
-jobconf_trigger_type_retry=失败重试触发
-
-## user
-user_manage=用户管理
-user_username=账号
-user_password=密码
-user_role=角色
-user_role_admin=管理员
-user_role_normal=普通用户
-user_permission=权限
-user_add=新增用户
-user_update=更新用户
-user_username_repeat=账号重复
-user_username_valid=限制以小写字母开头,由小写字母、数字组成
-user_password_update_placeholder=请输入新密码,为空则不更新密码
-user_update_loginuser_limit=禁止操作当前登录账号
-
-## help
-job_help=使用教程
-job_help_document=官方文档
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties
deleted file mode 100644
index 4558e4d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties
+++ /dev/null
@@ -1,264 +0,0 @@
-admin_name=任務調度中心
-admin_name_full=分布式任務調度平臺XXL-JOB
-admin_version=2.2.0
-admin_i18n=
-
-## system
-system_tips=系統提示
-system_ok=確定
-system_close=關閉
-system_save=儲存
-system_cancel=取消
-system_search=搜尋
-system_status=狀態
-system_opt=操作
-system_please_input=請輸入
-system_please_choose=请選擇
-system_success=成功
-system_fail=失敗
-system_add_suc=新增成功
-system_add_fail=新增失敗
-system_update_suc=更新成功
-system_update_fail=更新失敗
-system_all=全部
-system_api_error=API錯誤
-system_show=查看
-system_empty=無
-system_opt_suc=操作成功
-system_opt_fail=操作失敗
-system_opt_edit=編輯
-system_opt_del=刪除
-system_opt_copy=復制
-system_unvalid=非法
-system_not_found=不存在
-system_nav=導航
-system_digits=整數
-system_lengh_limit=長度限制
-system_permission_limit=權限控管
-system_welcome=歡迎
-
-## daterangepicker
-daterangepicker_ranges_recent_hour=最近一小時
-daterangepicker_ranges_today=今日
-daterangepicker_ranges_yesterday=昨日
-daterangepicker_ranges_this_month=本月
-daterangepicker_ranges_last_month=上個月
-daterangepicker_ranges_recent_week=最近一周
-daterangepicker_ranges_recent_month=最近一月
-daterangepicker_custom_name=自定義
-daterangepicker_custom_starttime=起始時間
-daterangepicker_custom_endtime=結束時間
-daterangepicker_custom_daysofweek=日,一,二,三,四,五,六
-daterangepicker_custom_monthnames=一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
-
-## dataTable
-dataTable_sProcessing=處理中...
-dataTable_sLengthMenu=每頁 _MENU_ 條記錄
-dataTable_sZeroRecords=沒有相符合記錄
-dataTable_sInfo=第 _PAGE_ 頁 ( 總共 _PAGES_ 頁,_TOTAL_ 條記錄 )
-dataTable_sInfoEmpty=無記錄
-dataTable_sInfoFiltered=(由 _MAX_ 項結果過濾)
-dataTable_sSearch=搜尋
-dataTable_sEmptyTable=表中資料為空
-dataTable_sLoadingRecords=載入中...
-dataTable_sFirst=首頁
-dataTable_sPrevious=上頁
-dataTable_sNext=下頁
-dataTable_sLast=末頁
-dataTable_sSortAscending=: 以升幂排序此列
-dataTable_sSortDescending=: 以降幂排序此列
-
-## login
-login_btn=登入
-login_remember_me=記住密碼
-login_username_placeholder=請輸入登入帳號
-login_password_placeholder=請輸入登入密碼
-login_username_empty=請輸入登入帳號
-login_username_lt_4=登入帳號不應低於4位數
-login_password_empty=請輸入登入密碼
-login_password_lt_4=登入密碼不應低於4位數
-login_success=登入成功
-login_fail=登入失敗
-login_param_empty=帳號或密碼為空值
-login_param_unvalid=帳號或密碼錯誤
-
-## logout
-logout_btn=登出
-logout_confirm=確認登出?
-logout_success=登出成功
-logout_fail=登出失敗
-
-## change pwd
-change_pwd=修改密碼
-change_pwd_suc_to_logout=修改密碼成功,即將登出
-change_pwd_field_newpwd=新密碼
-
-## dashboard
-job_dashboard_name=運行報表
-job_dashboard_job_num=任務數量
-job_dashboard_job_num_tip=調度中心運行的任務數量
-job_dashboard_trigger_num=調度次數
-job_dashboard_trigger_num_tip=調度中心觸發的調度次數
-job_dashboard_jobgroup_num=執行器數量
-job_dashboard_jobgroup_num_tip=調度中心在線的執行器機器數量
-job_dashboard_report=調度報表
-job_dashboard_report_loaddata_fail=調度報表資料加載異常
-job_dashboard_date_report=日期分布圖
-job_dashboard_rate_report=成功比例圖
-
-## job info
-jobinfo_name=任務管理
-jobinfo_job=任務
-jobinfo_field_add=新增
-jobinfo_field_update=更新任務
-jobinfo_field_id=任務ID
-jobinfo_field_jobgroup=執行器
-jobinfo_field_jobdesc=任務描述
-jobinfo_field_gluetype=運行模式
-jobinfo_field_executorparam=任務參數
-jobinfo_field_cron_unvalid=Cron 格式非法
-jobinfo_field_cron_never_fire=Cron 格式非法,永遠不會觸發
-jobinfo_field_author=負責人
-jobinfo_field_timeout=任務超時秒數
-jobinfo_field_alarmemail=告警郵件
-jobinfo_field_alarmemail_placeholder=輸入多個告警郵件地址,請以逗號分隔
-jobinfo_field_executorRouteStrategy=路由策略
-jobinfo_field_childJobId=子任務ID
-jobinfo_field_childJobId_placeholder=輸入子任務ID,如有多個請以逗號分隔
-jobinfo_field_executorBlockStrategy=阻塞處理策略
-jobinfo_field_executorFailRetryCount=失敗重試次數
-jobinfo_field_executorFailRetryCount_placeholder=失敗重試次數,大於零時生效
-jobinfo_script_location=腳本位置
-jobinfo_shard_index=分片序號
-jobinfo_shard_total=分片總數
-jobinfo_opt_stop=停止
-jobinfo_opt_start=啟動
-jobinfo_opt_log=查詢日誌
-jobinfo_opt_run=執行一次
-jobinfo_opt_run_tips=請輸入本次執行的機器地址,為空則從執行器獲取
-jobinfo_opt_registryinfo=注冊節點
-jobinfo_opt_next_time=下次執行時間
-jobinfo_glue_remark=源碼備註
-jobinfo_glue_remark_limit=源碼備註長度限制為4~100
-jobinfo_glue_rollback=版本回復
-jobinfo_glue_jobid_unvalid=任務ID非法
-jobinfo_glue_gluetype_unvalid=該任務非GLUE模式
-jobinfo_field_executorTimeout_placeholder=任務超時時間,單位秒,大於零時生效
-
-## job log
-joblog_name=調度日誌
-joblog_status=狀態
-joblog_status_all=全部
-joblog_status_suc=成功
-joblog_status_fail=失敗
-joblog_status_running=進行中
-joblog_field_triggerTime=調度時間
-joblog_field_triggerCode=調度結果
-joblog_field_triggerMsg=調度備註
-joblog_field_handleTime=執行時間
-joblog_field_handleCode=執行结果
-joblog_field_handleMsg=執行備註
-joblog_field_executorAddress=執行器地址
-joblog_clean=清理
-joblog_clean_log=日誌清理
-joblog_clean_type=清理方式
-joblog_clean_type_1=清理一個月之前日誌資料
-joblog_clean_type_2=清理三個月之前日誌資料
-joblog_clean_type_3=清理六個月之前日誌資料
-joblog_clean_type_4=清理一年之前日誌資料
-joblog_clean_type_5=清理一千條以前日誌資料
-joblog_clean_type_6=清理一萬條以前日誌資料
-joblog_clean_type_7=清理三萬條以前日誌資料
-joblog_clean_type_8=清理十萬條以前日誌資料
-joblog_clean_type_9=清理所有日誌資料
-joblog_clean_type_unvalid=清理類型參数異常
-joblog_handleCode_200=成功
-joblog_handleCode_500=失敗
-joblog_handleCode_502=失敗(超時)
-joblog_kill_log=终止任務
-joblog_kill_log_limit=調度失敗,無法终止日誌
-joblog_kill_log_byman=人為操作,主動終止
-joblog_lost_fail=任務結果丟失,標記失敗
-joblog_rolling_log=執行日誌
-joblog_rolling_log_refresh=更新
-joblog_rolling_log_triggerfail=任務發起調度失敗,無法查看執行日誌
-joblog_rolling_log_failoften=終止請求Rolling日誌,請求失敗次數超上限,可刷新頁面重新加載日誌
-joblog_logid_unvalid=日誌ID非法
-
-## job group
-jobgroup_name=執行器管理
-jobgroup_list=執行器列表
-jobgroup_add=新增執行器
-jobgroup_edit=編輯執行器
-jobgroup_del=刪除執行器
-jobgroup_field_title=名稱
-jobgroup_field_addressType=注冊方式
-jobgroup_field_addressType_0=自動注冊
-jobgroup_field_addressType_1=手動登錄
-jobgroup_field_addressType_limit=手動登錄注冊方式,機器地址不可為空
-jobgroup_field_registryList=機器地址
-jobgroup_field_registryList_unvalid=機器地址格式非法
-jobgroup_field_registryList_placeholder=請輸入執行器地址列表,多個地址請以逗號分隔
-jobgroup_field_appname_limit=限制以小寫字母開頭,由小寫字母、數字和中划線組成
-jobgroup_field_appname_length=AppName長度限制為4~64
-jobgroup_field_title_length=名稱長度限制為4~12
-jobgroup_field_order_digits=請輸入整數
-jobgroup_field_orderrange=取值範圍為1~1000
-jobgroup_del_limit_0=拒絕刪除,該執行器使用中
-jobgroup_del_limit_1=拒絕删除,系统至少保留一個執行器
-jobgroup_empty=不存在有效執行器,請聯絡系統管理員
-
-## job conf
-jobconf_block_SERIAL_EXECUTION=單機串行
-jobconf_block_DISCARD_LATER=丢棄后續調度
-jobconf_block_COVER_EARLY=覆蓋之前調度
-jobconf_route_first=第一個
-jobconf_route_last=最後一個
-jobconf_route_round=輪詢
-jobconf_route_random=隨機
-jobconf_route_consistenthash=一致性HASH
-jobconf_route_lfu=最不經常使用
-jobconf_route_lru=最近最久未使用
-jobconf_route_failover=故障轉移
-jobconf_route_busyover=忙碌轉移
-jobconf_route_shard=分片廣播
-jobconf_idleBeat=空閒檢測
-jobconf_beat=心跳檢測
-jobconf_monitor=任務調度中心監控告警
-jobconf_monitor_detail=監控告警明细
-jobconf_monitor_alarm_title=告警類型
-jobconf_monitor_alarm_type=調度失敗
-jobconf_monitor_alarm_content=告警内容
-jobconf_trigger_admin_adress=調度機器
-jobconf_trigger_exe_regtype=執行器-注冊方式
-jobconf_trigger_exe_regaddress=執行器-地址列表
-jobconf_trigger_address_empty=調度失敗:執行器地址為空
-jobconf_trigger_run=觸發調度
-jobconf_trigger_child_run=觸發子任務
-jobconf_callback_child_msg1={0}/{1} [任務ID={2}], 觸發{3}, 觸發備註: {4}
-jobconf_callback_child_msg2={0}/{1} [任務ID={2}], 觸發失败, 觸發備註: 任務ID格式錯誤
-jobconf_trigger_type=任務觸發類型
-jobconf_trigger_type_cron=Cron觸發
-jobconf_trigger_type_manual=手動觸發
-jobconf_trigger_type_parent=父任務觸發
-jobconf_trigger_type_api=API觸發
-jobconf_trigger_type_retry=失敗重試觸發
-
-## user
-user_manage=用户管理
-user_username=帳號
-user_password=密碼
-user_role=角色
-user_role_admin=管理員
-user_role_normal=普通用戶
-user_permission=權限
-user_add=新增用戶
-user_update=更新用戶
-user_username_repeat=帳號重複
-user_username_valid=限制以小寫字母開頭,由小寫字母、數字組成
-user_password_update_placeholder=請輸入新密碼,為空則不更新密碼
-user_update_loginuser_limit=禁止操作當前登入帳號
-
-## help
-job_help=使用教程
-job_help_document=官方文件
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/logback.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/logback.xml
deleted file mode 100644
index d4b08c2..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/logback.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- logback
-
-
-
-
- %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
- ${log.path}
-
- ${log.path}.%d{yyyy-MM-dd}.zip
-
-
- %date %level [%thread] %logger{36} [%file : %line] %msg%n
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
deleted file mode 100644
index 7635214..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.app_name,
- t.title,
- t.address_type,
- t.address_list
-
-
-
- SELECT
- FROM xxl_job_group AS t
- ORDER BY t.app_name, t.title, t.id ASC
-
-
-
- SELECT
- FROM xxl_job_group AS t
- WHERE t.address_type = #{addressType}
- ORDER BY t.app_name, t.title, t.id ASC
-
-
-
- INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`)
- values ( #{appname}, #{title}, #{addressType}, #{addressList});
-
-
-
- UPDATE xxl_job_group
- SET `app_name` = #{appname},
- `title` = #{title},
- `address_type` = #{addressType},
- `address_list` = #{addressList}
- WHERE id = #{id}
-
-
-
- DELETE FROM xxl_job_group
- WHERE id = #{id}
-
-
-
- SELECT
- FROM xxl_job_group AS t
- WHERE t.id = #{id}
-
-
-
- SELECT
- FROM xxl_job_group AS t
-
-
- AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
-
-
- AND t.title like CONCAT(CONCAT('%', #{title}), '%')
-
-
- ORDER BY t.app_name, t.title, t.id ASC
- LIMIT #{offset}, #{pagesize}
-
-
-
- SELECT count(1)
- FROM xxl_job_group AS t
-
-
- AND t.app_name like CONCAT(CONCAT('%', #{appname}), '%')
-
-
- AND t.title like CONCAT(CONCAT('%', #{title}), '%')
-
-
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
deleted file mode 100644
index cb9048d..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.job_group,
- t.job_cron,
- t.job_desc,
- t.add_time,
- t.update_time,
- t.author,
- t.alarm_email,
- t.executor_route_strategy,
- t.executor_handler,
- t.executor_param,
- t.executor_block_strategy,
- t.executor_timeout,
- t.executor_fail_retry_count,
- t.glue_type,
- t.glue_source,
- t.glue_remark,
- t.glue_updatetime,
- t.child_jobid,
- t.trigger_status,
- t.trigger_last_time,
- t.trigger_next_time
-
-
-
- SELECT
- FROM xxl_job_info AS t
-
-
- AND t.job_group = #{jobGroup}
-
-
- AND t.trigger_status = #{triggerStatus}
-
-
- AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
-
-
- AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
-
-
- AND t.author like CONCAT(CONCAT('%', #{author}), '%')
-
-
- ORDER BY id DESC
- LIMIT #{offset}, #{pagesize}
-
-
-
- SELECT count(1)
- FROM xxl_job_info AS t
-
-
- AND t.job_group = #{jobGroup}
-
-
- AND t.trigger_status = #{triggerStatus}
-
-
- AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
-
-
- AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
-
-
- AND t.author like CONCAT(CONCAT('%', #{author}), '%')
-
-
-
-
-
- INSERT INTO xxl_job_info (
- job_group,
- job_cron,
- job_desc,
- add_time,
- update_time,
- author,
- alarm_email,
- executor_route_strategy,
- executor_handler,
- executor_param,
- executor_block_strategy,
- executor_timeout,
- executor_fail_retry_count,
- glue_type,
- glue_source,
- glue_remark,
- glue_updatetime,
- child_jobid,
- trigger_status,
- trigger_last_time,
- trigger_next_time
- ) VALUES (
- #{jobGroup},
- #{jobCron},
- #{jobDesc},
- #{addTime},
- #{updateTime},
- #{author},
- #{alarmEmail},
- #{executorRouteStrategy},
- #{executorHandler},
- #{executorParam},
- #{executorBlockStrategy},
- #{executorTimeout},
- #{executorFailRetryCount},
- #{glueType},
- #{glueSource},
- #{glueRemark},
- #{glueUpdatetime},
- #{childJobId},
- #{triggerStatus},
- #{triggerLastTime},
- #{triggerNextTime}
- );
-
-
-
-
- SELECT
- FROM xxl_job_info AS t
- WHERE t.id = #{id}
-
-
-
- UPDATE xxl_job_info
- SET
- job_group = #{jobGroup},
- job_cron = #{jobCron},
- job_desc = #{jobDesc},
- update_time = #{updateTime},
- author = #{author},
- alarm_email = #{alarmEmail},
- executor_route_strategy = #{executorRouteStrategy},
- executor_handler = #{executorHandler},
- executor_param = #{executorParam},
- executor_block_strategy = #{executorBlockStrategy},
- executor_timeout = ${executorTimeout},
- executor_fail_retry_count = ${executorFailRetryCount},
- glue_type = #{glueType},
- glue_source = #{glueSource},
- glue_remark = #{glueRemark},
- glue_updatetime = #{glueUpdatetime},
- child_jobid = #{childJobId},
- trigger_status = #{triggerStatus},
- trigger_last_time = #{triggerLastTime},
- trigger_next_time = #{triggerNextTime}
- WHERE id = #{id}
-
-
-
- DELETE
- FROM xxl_job_info
- WHERE id = #{id}
-
-
-
- SELECT
- FROM xxl_job_info AS t
- WHERE t.job_group = #{jobGroup}
-
-
-
- SELECT count(1)
- FROM xxl_job_info
-
-
-
-
- SELECT
- FROM xxl_job_info AS t
- WHERE t.trigger_status = 1
- and t.trigger_next_time #{maxNextTime}
- ORDER BY id ASC
- LIMIT #{pagesize}
-
-
-
- UPDATE xxl_job_info
- SET
- trigger_last_time = #{triggerLastTime},
- trigger_next_time = #{triggerNextTime},
- trigger_status = #{triggerStatus}
- WHERE id = #{id}
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
deleted file mode 100644
index 699277c..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.job_id,
- t.glue_type,
- t.glue_source,
- t.glue_remark,
- t.add_time,
- t.update_time
-
-
-
- INSERT INTO xxl_job_logglue (
- `job_id`,
- `glue_type`,
- `glue_source`,
- `glue_remark`,
- `add_time`,
- `update_time`
- ) VALUES (
- #{jobId},
- #{glueType},
- #{glueSource},
- #{glueRemark},
- #{addTime},
- #{updateTime}
- );
-
-
-
-
- SELECT
- FROM xxl_job_logglue AS t
- WHERE t.job_id = #{jobId}
- ORDER BY id DESC
-
-
-
- DELETE FROM xxl_job_logglue
- WHERE id NOT in(
- SELECT id FROM(
- SELECT id FROM xxl_job_logglue
- WHERE `job_id` = #{jobId}
- ORDER BY update_time desc
- LIMIT 0, #{limit}
- ) t1
- ) AND `job_id` = #{jobId}
-
-
-
- DELETE FROM xxl_job_logglue
- WHERE `job_id` = #{jobId}
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
deleted file mode 100644
index 7944f50..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+++ /dev/null
@@ -1,261 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.job_group,
- t.job_id,
- t.executor_address,
- t.executor_handler,
- t.executor_param,
- t.executor_sharding_param,
- t.executor_fail_retry_count,
- t.trigger_time,
- t.trigger_code,
- t.trigger_msg,
- t.handle_time,
- t.handle_code,
- t.handle_msg,
- t.alarm_status
-
-
-
- SELECT
- FROM xxl_job_log AS t
-
-
- AND t.job_group = #{jobGroup}
-
-
- AND t.job_id = #{jobId}
-
-
- AND t.trigger_time = ]]> #{triggerTimeStart}
-
-
- AND t.trigger_time #{triggerTimeEnd}
-
-
- AND t.handle_code = 200
-
-
- AND (
- t.trigger_code NOT IN (0, 200) OR
- t.handle_code NOT IN (0, 200)
- )
-
-
- AND t.trigger_code = 200
- AND t.handle_code = 0
-
-
- ORDER BY t.trigger_time DESC
- LIMIT #{offset}, #{pagesize}
-
-
-
- SELECT count(1)
- FROM xxl_job_log AS t
-
-
- AND t.job_group = #{jobGroup}
-
-
- AND t.job_id = #{jobId}
-
-
- AND t.trigger_time = ]]> #{triggerTimeStart}
-
-
- AND t.trigger_time #{triggerTimeEnd}
-
-
- AND t.handle_code = 200
-
-
- AND (
- t.trigger_code NOT IN (0, 200) OR
- t.handle_code NOT IN (0, 200)
- )
-
-
- AND t.trigger_code = 200
- AND t.handle_code = 0
-
-
-
-
-
- SELECT
- FROM xxl_job_log AS t
- WHERE t.id = #{id}
-
-
-
-
- INSERT INTO xxl_job_log (
- `job_group`,
- `job_id`,
- `trigger_time`,
- `trigger_code`,
- `handle_code`
- ) VALUES (
- #{jobGroup},
- #{jobId},
- #{triggerTime},
- #{triggerCode},
- #{handleCode}
- );
-
-
-
-
- UPDATE xxl_job_log
- SET
- `trigger_time`= #{triggerTime},
- `trigger_code`= #{triggerCode},
- `trigger_msg`= #{triggerMsg},
- `executor_address`= #{executorAddress},
- `executor_handler`=#{executorHandler},
- `executor_param`= #{executorParam},
- `executor_sharding_param`= #{executorShardingParam},
- `executor_fail_retry_count`= #{executorFailRetryCount}
- WHERE `id`= #{id}
-
-
-
- UPDATE xxl_job_log
- SET
- `handle_time`= #{handleTime},
- `handle_code`= #{handleCode},
- `handle_msg`= #{handleMsg}
- WHERE `id`= #{id}
-
-
-
- delete from xxl_job_log
- WHERE job_id = #{jobId}
-
-
-
-
-
- SELECT
- COUNT(handle_code) triggerDayCount,
- SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
- SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
- FROM xxl_job_log
- WHERE trigger_time BETWEEN #{from} and #{to}
-
-
-
- SELECT id FROM xxl_job_log
-
-
- AND job_group = #{jobGroup}
-
-
- AND job_id = #{jobId}
-
-
- AND trigger_time #{clearBeforeTime}
-
-
- AND id NOT in(
- SELECT id FROM(
- SELECT id FROM xxl_job_log AS t
-
-
- AND t.job_group = #{jobGroup}
-
-
- AND t.job_id = #{jobId}
-
-
- ORDER BY t.trigger_time desc
- LIMIT 0, #{clearBeforeNum}
- ) t1
- )
-
-
- order by id asc
- LIMIT #{pagesize}
-
-
-
- delete from xxl_job_log
- WHERE id in
-
- #{item}
-
-
-
-
- SELECT id FROM `xxl_job_log`
- WHERE !(
- (trigger_code in (0, 200) and handle_code = 0)
- OR
- (handle_code = 200)
- )
- AND `alarm_status` = 0
- ORDER BY id ASC
- LIMIT #{pagesize}
-
-
-
- UPDATE xxl_job_log
- SET
- `alarm_status` = #{newAlarmStatus}
- WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus}
-
-
-
- SELECT t.id
- FROM xxl_job_log AS t
- WHERE t.trigger_code = 200
- and t.handle_code = 0
- and t.trigger_time #{losedTime}
- and t.executor_address not in (
- SELECT t2.registry_value
- FROM xxl_job_registry AS t2
- )
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
deleted file mode 100644
index 579d5f3..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.trigger_day,
- t.running_count,
- t.suc_count,
- t.fail_count
-
-
-
- INSERT INTO xxl_job_log_report (
- `trigger_day`,
- `running_count`,
- `suc_count`,
- `fail_count`
- ) VALUES (
- #{triggerDay},
- #{runningCount},
- #{sucCount},
- #{failCount}
- );
-
-
-
-
- UPDATE xxl_job_log_report
- SET `running_count` = #{runningCount},
- `suc_count` = #{sucCount},
- `fail_count` = #{failCount}
- WHERE `trigger_day` = #{triggerDay}
-
-
-
- SELECT
- FROM xxl_job_log_report AS t
- WHERE t.trigger_day between #{triggerDayFrom} and #{triggerDayTo}
- ORDER BY t.trigger_day ASC
-
-
-
- SELECT
- SUM(running_count) running_count,
- SUM(suc_count) suc_count,
- SUM(fail_count) fail_count
- FROM xxl_job_log_report AS t
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
deleted file mode 100644
index 4cae667..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.registry_group,
- t.registry_key,
- t.registry_value,
- t.update_time
-
-
-
- SELECT t.id
- FROM xxl_job_registry AS t
- WHERE t.update_time DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
-
-
-
- DELETE FROM xxl_job_registry
- WHERE id in
-
- #{item}
-
-
-
-
- SELECT
- FROM xxl_job_registry AS t
- WHERE t.update_time ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
-
-
-
- UPDATE xxl_job_registry
- SET `update_time` = #{updateTime}
- WHERE `registry_group` = #{registryGroup}
- AND `registry_key` = #{registryKey}
- AND `registry_value` = #{registryValue}
-
-
-
- INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`)
- VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime})
-
-
-
- DELETE FROM xxl_job_registry
- WHERE registry_group = #{registryGroup}
- AND registry_key = #{registryKey}
- AND registry_value = #{registryValue}
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
deleted file mode 100644
index 9e09b4a..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- t.id,
- t.username,
- t.password,
- t.role,
- t.permission
-
-
-
- SELECT
- FROM xxl_job_user AS t
-
-
- AND t.username like CONCAT(CONCAT('%', #{username}), '%')
-
-
- AND t.role = #{role}
-
-
- ORDER BY username ASC
- LIMIT #{offset}, #{pagesize}
-
-
-
- SELECT count(1)
- FROM xxl_job_user AS t
-
-
- AND t.username like CONCAT(CONCAT('%', #{username}), '%')
-
-
- AND t.role = #{role}
-
-
-
-
-
- SELECT
- FROM xxl_job_user AS t
- WHERE t.username = #{username}
-
-
-
- INSERT INTO xxl_job_user (
- username,
- password,
- role,
- permission
- ) VALUES (
- #{username},
- #{password},
- #{role},
- #{permission}
- );
-
-
-
- UPDATE xxl_job_user
- SET
-
- password = #{password},
-
- role = #{role},
- permission = #{permission}
- WHERE id = #{id}
-
-
-
- DELETE
- FROM xxl_job_user
- WHERE id = #{id}
-
-
-
\ No newline at end of file
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
deleted file mode 100644
index baba9e9..0000000
--- a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
+++ /dev/null
@@ -1,11 +0,0 @@
-@charset "UTF-8";/*!
- Ionicons, v2.0.0
- Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
- https://twitter.com/benjsperry https://twitter.com/ionicframework
- MIT License: https://github.com/driftyco/ionicons
-
- Android-style icons originally built by Google’s
- Material Design Icons: https://github.com/google/material-design-icons
- used under CC BY http://creativecommons.org/licenses/by/4.0/
- Modified icons to fit ionicon’s grid from original.
-*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=2.0.0");src:url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"),url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"),url("../fonts/ionicons.woff?v=2.0.0") format("woff"),url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-alert:before,.ion-alert-circled:before,.ion-android-add:before,.ion-android-add-circle:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done:before,.ion-android-done-all:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite:before,.ion-android-favorite-outline:before,.ion-android-film:before,.ion-android-folder:before,.ion-android-folder-open:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone:before,.ion-android-microphone-off:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person:before,.ion-android-person-add:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove:before,.ion-android-remove-circle:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share:before,.ion-android-share-alt:before,.ion-android-star:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace:before,.ion-backspace-outline:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox:before,.ion-chatbox-working:before,.ion-chatboxes:before,.ion-chatbubble:before,.ion-chatbubble-working:before,.ion-chatbubbles:before,.ion-checkmark:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close:before,.ion-close-circled:before,.ion-close-round:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code:before,.ion-code-download:before,.ion-code-working:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email:before,.ion-email-unread:before,.ion-erlenmeyer-flask:before,.ion-erlenmeyer-flask-bubbles:before,.ion-eye:before,.ion-eye-disabled:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash:before,.ion-flash-off:before,.ion-folder:before,.ion-fork:before,.ion-fork-repo:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy:before,.ion-happy-outline:before,.ion-headphone:before,.ion-heart:before,.ion-heart-broken:before,.ion-help:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information:before,.ion-information-circled:before,.ion-ionic:before,.ion-ios-alarm:before,.ion-ios-alarm-outline:before,.ion-ios-albums:before,.ion-ios-albums-outline:before,.ion-ios-americanfootball:before,.ion-ios-americanfootball-outline:before,.ion-ios-analytics:before,.ion-ios-analytics-outline:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-at-outline:before,.ion-ios-barcode:before,.ion-ios-barcode-outline:before,.ion-ios-baseball:before,.ion-ios-baseball-outline:before,.ion-ios-basketball:before,.ion-ios-basketball-outline:before,.ion-ios-bell:before,.ion-ios-bell-outline:before,.ion-ios-body:before,.ion-ios-body-outline:before,.ion-ios-bolt:before,.ion-ios-bolt-outline:before,.ion-ios-book:before,.ion-ios-book-outline:before,.ion-ios-bookmarks:before,.ion-ios-bookmarks-outline:before,.ion-ios-box:before,.ion-ios-box-outline:before,.ion-ios-briefcase:before,.ion-ios-briefcase-outline:before,.ion-ios-browsers:before,.ion-ios-browsers-outline:before,.ion-ios-calculator:before,.ion-ios-calculator-outline:before,.ion-ios-calendar:before,.ion-ios-calendar-outline:before,.ion-ios-camera:before,.ion-ios-camera-outline:before,.ion-ios-cart:before,.ion-ios-cart-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatbubble:before,.ion-ios-chatbubble-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock:before,.ion-ios-clock-outline:before,.ion-ios-close:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-download:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-outline:before,.ion-ios-cog:before,.ion-ios-cog-outline:before,.ion-ios-color-filter:before,.ion-ios-color-filter-outline:before,.ion-ios-color-wand:before,.ion-ios-color-wand-outline:before,.ion-ios-compose:before,.ion-ios-compose-outline:before,.ion-ios-contact:before,.ion-ios-contact-outline:before,.ion-ios-copy:before,.ion-ios-copy-outline:before,.ion-ios-crop:before,.ion-ios-crop-strong:before,.ion-ios-download:before,.ion-ios-download-outline:before,.ion-ios-drag:before,.ion-ios-email:before,.ion-ios-email-outline:before,.ion-ios-eye:before,.ion-ios-eye-outline:before,.ion-ios-fastforward:before,.ion-ios-fastforward-outline:before,.ion-ios-filing:before,.ion-ios-filing-outline:before,.ion-ios-film:before,.ion-ios-film-outline:before,.ion-ios-flag:before,.ion-ios-flag-outline:before,.ion-ios-flame:before,.ion-ios-flame-outline:before,.ion-ios-flask:before,.ion-ios-flask-outline:before,.ion-ios-flower:before,.ion-ios-flower-outline:before,.ion-ios-folder:before,.ion-ios-folder-outline:before,.ion-ios-football:before,.ion-ios-football-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-b:before,.ion-ios-game-controller-b-outline:before,.ion-ios-gear:before,.ion-ios-gear-outline:before,.ion-ios-glasses:before,.ion-ios-glasses-outline:before,.ion-ios-grid-view:before,.ion-ios-grid-view-outline:before,.ion-ios-heart:before,.ion-ios-heart-outline:before,.ion-ios-help:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-home:before,.ion-ios-home-outline:before,.ion-ios-infinite:before,.ion-ios-infinite-outline:before,.ion-ios-information:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-ionic-outline:before,.ion-ios-keypad:before,.ion-ios-keypad-outline:before,.ion-ios-lightbulb:before,.ion-ios-lightbulb-outline:before,.ion-ios-list:before,.ion-ios-list-outline:before,.ion-ios-location:before,.ion-ios-location-outline:before,.ion-ios-locked:before,.ion-ios-locked-outline:before,.ion-ios-loop:before,.ion-ios-loop-strong:before,.ion-ios-medical:before,.ion-ios-medical-outline:before,.ion-ios-medkit:before,.ion-ios-medkit-outline:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-minus:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-monitor:before,.ion-ios-monitor-outline:before,.ion-ios-moon:before,.ion-ios-moon-outline:before,.ion-ios-more:before,.ion-ios-more-outline:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-navigate-outline:before,.ion-ios-nutrition:before,.ion-ios-nutrition-outline:before,.ion-ios-paper:before,.ion-ios-paper-outline:before,.ion-ios-paperplane:before,.ion-ios-paperplane-outline:before,.ion-ios-partlysunny:before,.ion-ios-partlysunny-outline:before,.ion-ios-pause:before,.ion-ios-pause-outline:before,.ion-ios-paw:before,.ion-ios-paw-outline:before,.ion-ios-people:before,.ion-ios-people-outline:before,.ion-ios-person:before,.ion-ios-person-outline:before,.ion-ios-personadd:before,.ion-ios-personadd-outline:before,.ion-ios-photos:before,.ion-ios-photos-outline:before,.ion-ios-pie:before,.ion-ios-pie-outline:before,.ion-ios-pint:before,.ion-ios-pint-outline:before,.ion-ios-play:before,.ion-ios-play-outline:before,.ion-ios-plus:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetags:before,.ion-ios-pricetags-outline:before,.ion-ios-printer:before,.ion-ios-printer-outline:before,.ion-ios-pulse:before,.ion-ios-pulse-strong:before,.ion-ios-rainy:before,.ion-ios-rainy-outline:before,.ion-ios-recording:before,.ion-ios-recording-outline:before,.ion-ios-redo:before,.ion-ios-redo-outline:before,.ion-ios-refresh:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-reload:before,.ion-ios-reverse-camera:before,.ion-ios-reverse-camera-outline:before,.ion-ios-rewind:before,.ion-ios-rewind-outline:before,.ion-ios-rose:before,.ion-ios-rose-outline:before,.ion-ios-search:before,.ion-ios-search-strong:before,.ion-ios-settings:before,.ion-ios-settings-strong:before,.ion-ios-shuffle:before,.ion-ios-shuffle-strong:before,.ion-ios-skipbackward:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipforward:before,.ion-ios-skipforward-outline:before,.ion-ios-snowy:before,.ion-ios-speedometer:before,.ion-ios-speedometer-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stopwatch:before,.ion-ios-stopwatch-outline:before,.ion-ios-sunny:before,.ion-ios-sunny-outline:before,.ion-ios-telephone:before,.ion-ios-telephone-outline:before,.ion-ios-tennisball:before,.ion-ios-tennisball-outline:before,.ion-ios-thunderstorm:before,.ion-ios-thunderstorm-outline:before,.ion-ios-time:before,.ion-ios-time-outline:before,.ion-ios-timer:before,.ion-ios-timer-outline:before,.ion-ios-toggle:before,.ion-ios-toggle-outline:before,.ion-ios-trash:before,.ion-ios-trash-outline:before,.ion-ios-undo:before,.ion-ios-undo-outline:before,.ion-ios-unlocked:before,.ion-ios-unlocked-outline:before,.ion-ios-upload:before,.ion-ios-upload-outline:before,.ion-ios-videocam:before,.ion-ios-videocam-outline:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass:before,.ion-ios-wineglass-outline:before,.ion-ios-world:before,.ion-ios-world-outline:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon:before,.ion-navicon-round:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person:before,.ion-person-add:before,.ion-person-stalker:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply:before,.ion-reply-all:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad:before,.ion-sad-outline:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android:before,.ion-social-android-outline:before,.ion-social-angular:before,.ion-social-angular-outline:before,.ion-social-apple:before,.ion-social-apple-outline:before,.ion-social-bitcoin:before,.ion-social-bitcoin-outline:before,.ion-social-buffer:before,.ion-social-buffer-outline:before,.ion-social-chrome:before,.ion-social-chrome-outline:before,.ion-social-codepen:before,.ion-social-codepen-outline:before,.ion-social-css3:before,.ion-social-css3-outline:before,.ion-social-designernews:before,.ion-social-designernews-outline:before,.ion-social-dribbble:before,.ion-social-dribbble-outline:before,.ion-social-dropbox:before,.ion-social-dropbox-outline:before,.ion-social-euro:before,.ion-social-euro-outline:before,.ion-social-facebook:before,.ion-social-facebook-outline:before,.ion-social-foursquare:before,.ion-social-foursquare-outline:before,.ion-social-freebsd-devil:before,.ion-social-github:before,.ion-social-github-outline:before,.ion-social-google:before,.ion-social-google-outline:before,.ion-social-googleplus:before,.ion-social-googleplus-outline:before,.ion-social-hackernews:before,.ion-social-hackernews-outline:before,.ion-social-html5:before,.ion-social-html5-outline:before,.ion-social-instagram:before,.ion-social-instagram-outline:before,.ion-social-javascript:before,.ion-social-javascript-outline:before,.ion-social-linkedin:before,.ion-social-linkedin-outline:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest:before,.ion-social-pinterest-outline:before,.ion-social-python:before,.ion-social-reddit:before,.ion-social-reddit-outline:before,.ion-social-rss:before,.ion-social-rss-outline:before,.ion-social-sass:before,.ion-social-skype:before,.ion-social-skype-outline:before,.ion-social-snapchat:before,.ion-social-snapchat-outline:before,.ion-social-tumblr:before,.ion-social-tumblr-outline:before,.ion-social-tux:before,.ion-social-twitch:before,.ion-social-twitch-outline:before,.ion-social-twitter:before,.ion-social-twitter-outline:before,.ion-social-usd:before,.ion-social-usd-outline:before,.ion-social-vimeo:before,.ion-social-vimeo-outline:before,.ion-social-whatsapp:before,.ion-social-whatsapp-outline:before,.ion-social-windows:before,.ion-social-windows-outline:before,.ion-social-wordpress:before,.ion-social-wordpress-outline:before,.ion-social-yahoo:before,.ion-social-yahoo-outline:before,.ion-social-yen:before,.ion-social-yen-outline:before,.ion-social-youtube:before,.ion-social-youtube-outline:before,.ion-soup-can:before,.ion-soup-can-outline:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle:before,.ion-toggle-filled:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt:before,.ion-tshirt-outline:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\f101"}.ion-alert-circled:before{content:"\f100"}.ion-android-add:before{content:"\f2c7"}.ion-android-add-circle:before{content:"\f359"}.ion-android-alarm-clock:before{content:"\f35a"}.ion-android-alert:before{content:"\f35b"}.ion-android-apps:before{content:"\f35c"}.ion-android-archive:before{content:"\f2c9"}.ion-android-arrow-back:before{content:"\f2ca"}.ion-android-arrow-down:before{content:"\f35d"}.ion-android-arrow-dropdown:before{content:"\f35f"}.ion-android-arrow-dropdown-circle:before{content:"\f35e"}.ion-android-arrow-dropleft:before{content:"\f361"}.ion-android-arrow-dropleft-circle:before{content:"\f360"}.ion-android-arrow-dropright:before{content:"\f363"}.ion-android-arrow-dropright-circle:before{content:"\f362"}.ion-android-arrow-dropup:before{content:"\f365"}.ion-android-arrow-dropup-circle:before{content:"\f364"}.ion-android-arrow-forward:before{content:"\f30f"}.ion-android-arrow-up:before{content:"\f366"}.ion-android-attach:before{content:"\f367"}.ion-android-bar:before{content:"\f368"}.ion-android-bicycle:before{content:"\f369"}.ion-android-boat:before{content:"\f36a"}.ion-android-bookmark:before{content:"\f36b"}.ion-android-bulb:before{content:"\f36c"}.ion-android-bus:before{content:"\f36d"}.ion-android-calendar:before{content:"\f2d1"}.ion-android-call:before{content:"\f2d2"}.ion-android-camera:before{content:"\f2d3"}.ion-android-cancel:before{content:"\f36e"}.ion-android-car:before{content:"\f36f"}.ion-android-cart:before{content:"\f370"}.ion-android-chat:before{content:"\f2d4"}.ion-android-checkbox:before{content:"\f374"}.ion-android-checkbox-blank:before{content:"\f371"}.ion-android-checkbox-outline:before{content:"\f373"}.ion-android-checkbox-outline-blank:before{content:"\f372"}.ion-android-checkmark-circle:before{content:"\f375"}.ion-android-clipboard:before{content:"\f376"}.ion-android-close:before{content:"\f2d7"}.ion-android-cloud:before{content:"\f37a"}.ion-android-cloud-circle:before{content:"\f377"}.ion-android-cloud-done:before{content:"\f378"}.ion-android-cloud-outline:before{content:"\f379"}.ion-android-color-palette:before{content:"\f37b"}.ion-android-compass:before{content:"\f37c"}.ion-android-contact:before{content:"\f2d8"}.ion-android-contacts:before{content:"\f2d9"}.ion-android-contract:before{content:"\f37d"}.ion-android-create:before{content:"\f37e"}.ion-android-delete:before{content:"\f37f"}.ion-android-desktop:before{content:"\f380"}.ion-android-document:before{content:"\f381"}.ion-android-done:before{content:"\f383"}.ion-android-done-all:before{content:"\f382"}.ion-android-download:before{content:"\f2dd"}.ion-android-drafts:before{content:"\f384"}.ion-android-exit:before{content:"\f385"}.ion-android-expand:before{content:"\f386"}.ion-android-favorite:before{content:"\f388"}.ion-android-favorite-outline:before{content:"\f387"}.ion-android-film:before{content:"\f389"}.ion-android-folder:before{content:"\f2e0"}.ion-android-folder-open:before{content:"\f38a"}.ion-android-funnel:before{content:"\f38b"}.ion-android-globe:before{content:"\f38c"}.ion-android-hand:before{content:"\f2e3"}.ion-android-hangout:before{content:"\f38d"}.ion-android-happy:before{content:"\f38e"}.ion-android-home:before{content:"\f38f"}.ion-android-image:before{content:"\f2e4"}.ion-android-laptop:before{content:"\f390"}.ion-android-list:before{content:"\f391"}.ion-android-locate:before{content:"\f2e9"}.ion-android-lock:before{content:"\f392"}.ion-android-mail:before{content:"\f2eb"}.ion-android-map:before{content:"\f393"}.ion-android-menu:before{content:"\f394"}.ion-android-microphone:before{content:"\f2ec"}.ion-android-microphone-off:before{content:"\f395"}.ion-android-more-horizontal:before{content:"\f396"}.ion-android-more-vertical:before{content:"\f397"}.ion-android-navigate:before{content:"\f398"}.ion-android-notifications:before{content:"\f39b"}.ion-android-notifications-none:before{content:"\f399"}.ion-android-notifications-off:before{content:"\f39a"}.ion-android-open:before{content:"\f39c"}.ion-android-options:before{content:"\f39d"}.ion-android-people:before{content:"\f39e"}.ion-android-person:before{content:"\f3a0"}.ion-android-person-add:before{content:"\f39f"}.ion-android-phone-landscape:before{content:"\f3a1"}.ion-android-phone-portrait:before{content:"\f3a2"}.ion-android-pin:before{content:"\f3a3"}.ion-android-plane:before{content:"\f3a4"}.ion-android-playstore:before{content:"\f2f0"}.ion-android-print:before{content:"\f3a5"}.ion-android-radio-button-off:before{content:"\f3a6"}.ion-android-radio-button-on:before{content:"\f3a7"}.ion-android-refresh:before{content:"\f3a8"}.ion-android-remove:before{content:"\f2f4"}.ion-android-remove-circle:before{content:"\f3a9"}.ion-android-restaurant:before{content:"\f3aa"}.ion-android-sad:before{content:"\f3ab"}.ion-android-search:before{content:"\f2f5"}.ion-android-send:before{content:"\f2f6"}.ion-android-settings:before{content:"\f2f7"}.ion-android-share:before{content:"\f2f8"}.ion-android-share-alt:before{content:"\f3ac"}.ion-android-star:before{content:"\f2fc"}.ion-android-star-half:before{content:"\f3ad"}.ion-android-star-outline:before{content:"\f3ae"}.ion-android-stopwatch:before{content:"\f2fd"}.ion-android-subway:before{content:"\f3af"}.ion-android-sunny:before{content:"\f3b0"}.ion-android-sync:before{content:"\f3b1"}.ion-android-textsms:before{content:"\f3b2"}.ion-android-time:before{content:"\f3b3"}.ion-android-train:before{content:"\f3b4"}.ion-android-unlock:before{content:"\f3b5"}.ion-android-upload:before{content:"\f3b6"}.ion-android-volume-down:before{content:"\f3b7"}.ion-android-volume-mute:before{content:"\f3b8"}.ion-android-volume-off:before{content:"\f3b9"}.ion-android-volume-up:before{content:"\f3ba"}.ion-android-walk:before{content:"\f3bb"}.ion-android-warning:before{content:"\f3bc"}.ion-android-watch:before{content:"\f3bd"}.ion-android-wifi:before{content:"\f305"}.ion-aperture:before{content:"\f313"}.ion-archive:before{content:"\f102"}.ion-arrow-down-a:before{content:"\f103"}.ion-arrow-down-b:before{content:"\f104"}.ion-arrow-down-c:before{content:"\f105"}.ion-arrow-expand:before{content:"\f25e"}.ion-arrow-graph-down-left:before{content:"\f25f"}.ion-arrow-graph-down-right:before{content:"\f260"}.ion-arrow-graph-up-left:before{content:"\f261"}.ion-arrow-graph-up-right:before{content:"\f262"}.ion-arrow-left-a:before{content:"\f106"}.ion-arrow-left-b:before{content:"\f107"}.ion-arrow-left-c:before{content:"\f108"}.ion-arrow-move:before{content:"\f263"}.ion-arrow-resize:before{content:"\f264"}.ion-arrow-return-left:before{content:"\f265"}.ion-arrow-return-right:before{content:"\f266"}.ion-arrow-right-a:before{content:"\f109"}.ion-arrow-right-b:before{content:"\f10a"}.ion-arrow-right-c:before{content:"\f10b"}.ion-arrow-shrink:before{content:"\f267"}.ion-arrow-swap:before{content:"\f268"}.ion-arrow-up-a:before{content:"\f10c"}.ion-arrow-up-b:before{content:"\f10d"}.ion-arrow-up-c:before{content:"\f10e"}.ion-asterisk:before{content:"\f314"}.ion-at:before{content:"\f10f"}.ion-backspace:before{content:"\f3bf"}.ion-backspace-outline:before{content:"\f3be"}.ion-bag:before{content:"\f110"}.ion-battery-charging:before{content:"\f111"}.ion-battery-empty:before{content:"\f112"}.ion-battery-full:before{content:"\f113"}.ion-battery-half:before{content:"\f114"}.ion-battery-low:before{content:"\f115"}.ion-beaker:before{content:"\f269"}.ion-beer:before{content:"\f26a"}.ion-bluetooth:before{content:"\f116"}.ion-bonfire:before{content:"\f315"}.ion-bookmark:before{content:"\f26b"}.ion-bowtie:before{content:"\f3c0"}.ion-briefcase:before{content:"\f26c"}.ion-bug:before{content:"\f2be"}.ion-calculator:before{content:"\f26d"}.ion-calendar:before{content:"\f117"}.ion-camera:before{content:"\f118"}.ion-card:before{content:"\f119"}.ion-cash:before{content:"\f316"}.ion-chatbox:before{content:"\f11b"}.ion-chatbox-working:before{content:"\f11a"}.ion-chatboxes:before{content:"\f11c"}.ion-chatbubble:before{content:"\f11e"}.ion-chatbubble-working:before{content:"\f11d"}.ion-chatbubbles:before{content:"\f11f"}.ion-checkmark:before{content:"\f122"}.ion-checkmark-circled:before{content:"\f120"}.ion-checkmark-round:before{content:"\f121"}.ion-chevron-down:before{content:"\f123"}.ion-chevron-left:before{content:"\f124"}.ion-chevron-right:before{content:"\f125"}.ion-chevron-up:before{content:"\f126"}.ion-clipboard:before{content:"\f127"}.ion-clock:before{content:"\f26e"}.ion-close:before{content:"\f12a"}.ion-close-circled:before{content:"\f128"}.ion-close-round:before{content:"\f129"}.ion-closed-captioning:before{content:"\f317"}.ion-cloud:before{content:"\f12b"}.ion-code:before{content:"\f271"}.ion-code-download:before{content:"\f26f"}.ion-code-working:before{content:"\f270"}.ion-coffee:before{content:"\f272"}.ion-compass:before{content:"\f273"}.ion-compose:before{content:"\f12c"}.ion-connection-bars:before{content:"\f274"}.ion-contrast:before{content:"\f275"}.ion-crop:before{content:"\f3c1"}.ion-cube:before{content:"\f318"}.ion-disc:before{content:"\f12d"}.ion-document:before{content:"\f12f"}.ion-document-text:before{content:"\f12e"}.ion-drag:before{content:"\f130"}.ion-earth:before{content:"\f276"}.ion-easel:before{content:"\f3c2"}.ion-edit:before{content:"\f2bf"}.ion-egg:before{content:"\f277"}.ion-eject:before{content:"\f131"}.ion-email:before{content:"\f132"}.ion-email-unread:before{content:"\f3c3"}.ion-erlenmeyer-flask:before{content:"\f3c5"}.ion-erlenmeyer-flask-bubbles:before{content:"\f3c4"}.ion-eye:before{content:"\f133"}.ion-eye-disabled:before{content:"\f306"}.ion-female:before{content:"\f278"}.ion-filing:before{content:"\f134"}.ion-film-marker:before{content:"\f135"}.ion-fireball:before{content:"\f319"}.ion-flag:before{content:"\f279"}.ion-flame:before{content:"\f31a"}.ion-flash:before{content:"\f137"}.ion-flash-off:before{content:"\f136"}.ion-folder:before{content:"\f139"}.ion-fork:before{content:"\f27a"}.ion-fork-repo:before{content:"\f2c0"}.ion-forward:before{content:"\f13a"}.ion-funnel:before{content:"\f31b"}.ion-gear-a:before{content:"\f13d"}.ion-gear-b:before{content:"\f13e"}.ion-grid:before{content:"\f13f"}.ion-hammer:before{content:"\f27b"}.ion-happy:before{content:"\f31c"}.ion-happy-outline:before{content:"\f3c6"}.ion-headphone:before{content:"\f140"}.ion-heart:before{content:"\f141"}.ion-heart-broken:before{content:"\f31d"}.ion-help:before{content:"\f143"}.ion-help-buoy:before{content:"\f27c"}.ion-help-circled:before{content:"\f142"}.ion-home:before{content:"\f144"}.ion-icecream:before{content:"\f27d"}.ion-image:before{content:"\f147"}.ion-images:before{content:"\f148"}.ion-information:before{content:"\f14a"}.ion-information-circled:before{content:"\f149"}.ion-ionic:before{content:"\f14b"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-alarm-outline:before{content:"\f3c7"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-albums-outline:before{content:"\f3c9"}.ion-ios-americanfootball:before{content:"\f3cc"}.ion-ios-americanfootball-outline:before{content:"\f3cb"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-analytics-outline:before{content:"\f3cd"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-left:before{content:"\f3d2"}.ion-ios-arrow-right:before{content:"\f3d3"}.ion-ios-arrow-thin-down:before{content:"\f3d4"}.ion-ios-arrow-thin-left:before{content:"\f3d5"}.ion-ios-arrow-thin-right:before{content:"\f3d6"}.ion-ios-arrow-thin-up:before{content:"\f3d7"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-at-outline:before{content:"\f3d9"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-barcode-outline:before{content:"\f3db"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-baseball-outline:before{content:"\f3dd"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-basketball-outline:before{content:"\f3df"}.ion-ios-bell:before{content:"\f3e2"}.ion-ios-bell-outline:before{content:"\f3e1"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-body-outline:before{content:"\f3e3"}.ion-ios-bolt:before{content:"\f3e6"}.ion-ios-bolt-outline:before{content:"\f3e5"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-book-outline:before{content:"\f3e7"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bookmarks-outline:before{content:"\f3e9"}.ion-ios-box:before{content:"\f3ec"}.ion-ios-box-outline:before{content:"\f3eb"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-briefcase-outline:before{content:"\f3ed"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-browsers-outline:before{content:"\f3ef"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calculator-outline:before{content:"\f3f1"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-calendar-outline:before{content:"\f3f3"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-camera-outline:before{content:"\f3f5"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cart-outline:before{content:"\f3f7"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatboxes-outline:before{content:"\f3f9"}.ion-ios-chatbubble:before{content:"\f3fc"}.ion-ios-chatbubble-outline:before{content:"\f3fb"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-empty:before{content:"\f3fd"}.ion-ios-checkmark-outline:before{content:"\f3fe"}.ion-ios-circle-filled:before{content:"\f400"}.ion-ios-circle-outline:before{content:"\f401"}.ion-ios-clock:before{content:"\f403"}.ion-ios-clock-outline:before{content:"\f402"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-empty:before{content:"\f404"}.ion-ios-close-outline:before{content:"\f405"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-download-outline:before{content:"\f407"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloud-upload-outline:before{content:"\f40a"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-cloudy-night-outline:before{content:"\f40d"}.ion-ios-cloudy-outline:before{content:"\f40f"}.ion-ios-cog:before{content:"\f412"}.ion-ios-cog-outline:before{content:"\f411"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-filter-outline:before{content:"\f413"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-color-wand-outline:before{content:"\f415"}.ion-ios-compose:before{content:"\f418"}.ion-ios-compose-outline:before{content:"\f417"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contact-outline:before{content:"\f419"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-copy-outline:before{content:"\f41b"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-crop-strong:before{content:"\f41d"}.ion-ios-download:before{content:"\f420"}.ion-ios-download-outline:before{content:"\f41f"}.ion-ios-drag:before{content:"\f421"}.ion-ios-email:before{content:"\f423"}.ion-ios-email-outline:before{content:"\f422"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-outline:before{content:"\f424"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-fastforward-outline:before{content:"\f426"}.ion-ios-filing:before{content:"\f429"}.ion-ios-filing-outline:before{content:"\f428"}.ion-ios-film:before{content:"\f42b"}.ion-ios-film-outline:before{content:"\f42a"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flag-outline:before{content:"\f42c"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flame-outline:before{content:"\f42e"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flask-outline:before{content:"\f430"}.ion-ios-flower:before{content:"\f433"}.ion-ios-flower-outline:before{content:"\f432"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-outline:before{content:"\f434"}.ion-ios-football:before{content:"\f437"}.ion-ios-football-outline:before{content:"\f436"}.ion-ios-game-controller-a:before{content:"\f439"}.ion-ios-game-controller-a-outline:before{content:"\f438"}.ion-ios-game-controller-b:before{content:"\f43b"}.ion-ios-game-controller-b-outline:before{content:"\f43a"}.ion-ios-gear:before{content:"\f43d"}.ion-ios-gear-outline:before{content:"\f43c"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-glasses-outline:before{content:"\f43e"}.ion-ios-grid-view:before{content:"\f441"}.ion-ios-grid-view-outline:before{content:"\f440"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-outline:before{content:"\f442"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-empty:before{content:"\f444"}.ion-ios-help-outline:before{content:"\f445"}.ion-ios-home:before{content:"\f448"}.ion-ios-home-outline:before{content:"\f447"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-infinite-outline:before{content:"\f449"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-empty:before{content:"\f44b"}.ion-ios-information-outline:before{content:"\f44c"}.ion-ios-ionic-outline:before{content:"\f44e"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-keypad-outline:before{content:"\f44f"}.ion-ios-lightbulb:before{content:"\f452"}.ion-ios-lightbulb-outline:before{content:"\f451"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-outline:before{content:"\f453"}.ion-ios-location:before{content:"\f456"}.ion-ios-location-outline:before{content:"\f455"}.ion-ios-locked:before{content:"\f458"}.ion-ios-locked-outline:before{content:"\f457"}.ion-ios-loop:before{content:"\f45a"}.ion-ios-loop-strong:before{content:"\f459"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medical-outline:before{content:"\f45b"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-medkit-outline:before{content:"\f45d"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-mic-outline:before{content:"\f460"}.ion-ios-minus:before{content:"\f464"}.ion-ios-minus-empty:before{content:"\f462"}.ion-ios-minus-outline:before{content:"\f463"}.ion-ios-monitor:before{content:"\f466"}.ion-ios-monitor-outline:before{content:"\f465"}.ion-ios-moon:before{content:"\f468"}.ion-ios-moon-outline:before{content:"\f467"}.ion-ios-more:before{content:"\f46a"}.ion-ios-more-outline:before{content:"\f469"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-navigate-outline:before{content:"\f46d"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-nutrition-outline:before{content:"\f46f"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-outline:before{content:"\f471"}.ion-ios-paperplane:before{content:"\f474"}.ion-ios-paperplane-outline:before{content:"\f473"}.ion-ios-partlysunny:before{content:"\f476"}.ion-ios-partlysunny-outline:before{content:"\f475"}.ion-ios-pause:before{content:"\f478"}.ion-ios-pause-outline:before{content:"\f477"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-paw-outline:before{content:"\f479"}.ion-ios-people:before{content:"\f47c"}.ion-ios-people-outline:before{content:"\f47b"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-outline:before{content:"\f47d"}.ion-ios-personadd:before{content:"\f480"}.ion-ios-personadd-outline:before{content:"\f47f"}.ion-ios-photos:before{content:"\f482"}.ion-ios-photos-outline:before{content:"\f481"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pie-outline:before{content:"\f483"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pint-outline:before{content:"\f485"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-outline:before{content:"\f487"}.ion-ios-plus:before{content:"\f48b"}.ion-ios-plus-empty:before{content:"\f489"}.ion-ios-plus-outline:before{content:"\f48a"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetag-outline:before{content:"\f48c"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-pricetags-outline:before{content:"\f48e"}.ion-ios-printer:before{content:"\f491"}.ion-ios-printer-outline:before{content:"\f490"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-pulse-strong:before{content:"\f492"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-rainy-outline:before{content:"\f494"}.ion-ios-recording:before{content:"\f497"}.ion-ios-recording-outline:before{content:"\f496"}.ion-ios-redo:before{content:"\f499"}.ion-ios-redo-outline:before{content:"\f498"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-empty:before{content:"\f49a"}.ion-ios-refresh-outline:before{content:"\f49b"}.ion-ios-reload:before{content:"\f49d"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-reverse-camera-outline:before{content:"\f49e"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-rewind-outline:before{content:"\f4a0"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-rose-outline:before{content:"\f4a2"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-search-strong:before{content:"\f4a4"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-settings-strong:before{content:"\f4a6"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-shuffle-strong:before{content:"\f4a8"}.ion-ios-skipbackward:before{content:"\f4ab"}.ion-ios-skipbackward-outline:before{content:"\f4aa"}.ion-ios-skipforward:before{content:"\f4ad"}.ion-ios-skipforward-outline:before{content:"\f4ac"}.ion-ios-snowy:before{content:"\f4ae"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-speedometer-outline:before{content:"\f4af"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-stopwatch-outline:before{content:"\f4b4"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-sunny-outline:before{content:"\f4b6"}.ion-ios-telephone:before{content:"\f4b9"}.ion-ios-telephone-outline:before{content:"\f4b8"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-tennisball-outline:before{content:"\f4ba"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-thunderstorm-outline:before{content:"\f4bc"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-time-outline:before{content:"\f4be"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-timer-outline:before{content:"\f4c0"}.ion-ios-toggle:before{content:"\f4c3"}.ion-ios-toggle-outline:before{content:"\f4c2"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trash-outline:before{content:"\f4c4"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-undo-outline:before{content:"\f4c6"}.ion-ios-unlocked:before{content:"\f4c9"}.ion-ios-unlocked-outline:before{content:"\f4c8"}.ion-ios-upload:before{content:"\f4cb"}.ion-ios-upload-outline:before{content:"\f4ca"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-videocam-outline:before{content:"\f4cc"}.ion-ios-volume-high:before{content:"\f4ce"}.ion-ios-volume-low:before{content:"\f4cf"}.ion-ios-wineglass:before{content:"\f4d1"}.ion-ios-wineglass-outline:before{content:"\f4d0"}.ion-ios-world:before{content:"\f4d3"}.ion-ios-world-outline:before{content:"\f4d2"}.ion-ipad:before{content:"\f1f9"}.ion-iphone:before{content:"\f1fa"}.ion-ipod:before{content:"\f1fb"}.ion-jet:before{content:"\f295"}.ion-key:before{content:"\f296"}.ion-knife:before{content:"\f297"}.ion-laptop:before{content:"\f1fc"}.ion-leaf:before{content:"\f1fd"}.ion-levels:before{content:"\f298"}.ion-lightbulb:before{content:"\f299"}.ion-link:before{content:"\f1fe"}.ion-load-a:before{content:"\f29a"}.ion-load-b:before{content:"\f29b"}.ion-load-c:before{content:"\f29c"}.ion-load-d:before{content:"\f29d"}.ion-location:before{content:"\f1ff"}.ion-lock-combination:before{content:"\f4d4"}.ion-locked:before{content:"\f200"}.ion-log-in:before{content:"\f29e"}.ion-log-out:before{content:"\f29f"}.ion-loop:before{content:"\f201"}.ion-magnet:before{content:"\f2a0"}.ion-male:before{content:"\f2a1"}.ion-man:before{content:"\f202"}.ion-map:before{content:"\f203"}.ion-medkit:before{content:"\f2a2"}.ion-merge:before{content:"\f33f"}.ion-mic-a:before{content:"\f204"}.ion-mic-b:before{content:"\f205"}.ion-mic-c:before{content:"\f206"}.ion-minus:before{content:"\f209"}.ion-minus-circled:before{content:"\f207"}.ion-minus-round:before{content:"\f208"}.ion-model-s:before{content:"\f2c1"}.ion-monitor:before{content:"\f20a"}.ion-more:before{content:"\f20b"}.ion-mouse:before{content:"\f340"}.ion-music-note:before{content:"\f20c"}.ion-navicon:before{content:"\f20e"}.ion-navicon-round:before{content:"\f20d"}.ion-navigate:before{content:"\f2a3"}.ion-network:before{content:"\f341"}.ion-no-smoking:before{content:"\f2c2"}.ion-nuclear:before{content:"\f2a4"}.ion-outlet:before{content:"\f342"}.ion-paintbrush:before{content:"\f4d5"}.ion-paintbucket:before{content:"\f4d6"}.ion-paper-airplane:before{content:"\f2c3"}.ion-paperclip:before{content:"\f20f"}.ion-pause:before{content:"\f210"}.ion-person:before{content:"\f213"}.ion-person-add:before{content:"\f211"}.ion-person-stalker:before{content:"\f212"}.ion-pie-graph:before{content:"\f2a5"}.ion-pin:before{content:"\f2a6"}.ion-pinpoint:before{content:"\f2a7"}.ion-pizza:before{content:"\f2a8"}.ion-plane:before{content:"\f214"}.ion-planet:before{content:"\f343"}.ion-play:before{content:"\f215"}.ion-playstation:before{content:"\f30a"}.ion-plus:before{content:"\f218"}.ion-plus-circled:before{content:"\f216"}.ion-plus-round:before{content:"\f217"}.ion-podium:before{content:"\f344"}.ion-pound:before{content:"\f219"}.ion-power:before{content:"\f2a9"}.ion-pricetag:before{content:"\f2aa"}.ion-pricetags:before{content:"\f2ab"}.ion-printer:before{content:"\f21a"}.ion-pull-request:before{content:"\f345"}.ion-qr-scanner:before{content:"\f346"}.ion-quote:before{content:"\f347"}.ion-radio-waves:before{content:"\f2ac"}.ion-record:before{content:"\f21b"}.ion-refresh:before{content:"\f21c"}.ion-reply:before{content:"\f21e"}.ion-reply-all:before{content:"\f21d"}.ion-ribbon-a:before{content:"\f348"}.ion-ribbon-b:before{content:"\f349"}.ion-sad:before{content:"\f34a"}.ion-sad-outline:before{content:"\f4d7"}.ion-scissors:before{content:"\f34b"}.ion-search:before{content:"\f21f"}.ion-settings:before{content:"\f2ad"}.ion-share:before{content:"\f220"}.ion-shuffle:before{content:"\f221"}.ion-skip-backward:before{content:"\f222"}.ion-skip-forward:before{content:"\f223"}.ion-social-android:before{content:"\f225"}.ion-social-android-outline:before{content:"\f224"}.ion-social-angular:before{content:"\f4d9"}.ion-social-angular-outline:before{content:"\f4d8"}.ion-social-apple:before{content:"\f227"}.ion-social-apple-outline:before{content:"\f226"}.ion-social-bitcoin:before{content:"\f2af"}.ion-social-bitcoin-outline:before{content:"\f2ae"}.ion-social-buffer:before{content:"\f229"}.ion-social-buffer-outline:before{content:"\f228"}.ion-social-chrome:before{content:"\f4db"}.ion-social-chrome-outline:before{content:"\f4da"}.ion-social-codepen:before{content:"\f4dd"}.ion-social-codepen-outline:before{content:"\f4dc"}.ion-social-css3:before{content:"\f4df"}.ion-social-css3-outline:before{content:"\f4de"}.ion-social-designernews:before{content:"\f22b"}.ion-social-designernews-outline:before{content:"\f22a"}.ion-social-dribbble:before{content:"\f22d"}.ion-social-dribbble-outline:before{content:"\f22c"}.ion-social-dropbox:before{content:"\f22f"}.ion-social-dropbox-outline:before{content:"\f22e"}.ion-social-euro:before{content:"\f4e1"}.ion-social-euro-outline:before{content:"\f4e0"}.ion-social-facebook:before{content:"\f231"}.ion-social-facebook-outline:before{content:"\f230"}.ion-social-foursquare:before{content:"\f34d"}.ion-social-foursquare-outline:before{content:"\f34c"}.ion-social-freebsd-devil:before{content:"\f2c4"}.ion-social-github:before{content:"\f233"}.ion-social-github-outline:before{content:"\f232"}.ion-social-google:before{content:"\f34f"}.ion-social-google-outline:before{content:"\f34e"}.ion-social-googleplus:before{content:"\f235"}.ion-social-googleplus-outline:before{content:"\f234"}.ion-social-hackernews:before{content:"\f237"}.ion-social-hackernews-outline:before{content:"\f236"}.ion-social-html5:before{content:"\f4e3"}.ion-social-html5-outline:before{content:"\f4e2"}.ion-social-instagram:before{content:"\f351"}.ion-social-instagram-outline:before{content:"\f350"}.ion-social-javascript:before{content:"\f4e5"}.ion-social-javascript-outline:before{content:"\f4e4"}.ion-social-linkedin:before{content:"\f239"}.ion-social-linkedin-outline:before{content:"\f238"}.ion-social-markdown:before{content:"\f4e6"}.ion-social-nodejs:before{content:"\f4e7"}.ion-social-octocat:before{content:"\f4e8"}.ion-social-pinterest:before{content:"\f2b1"}.ion-social-pinterest-outline:before{content:"\f2b0"}.ion-social-python:before{content:"\f4e9"}.ion-social-reddit:before{content:"\f23b"}.ion-social-reddit-outline:before{content:"\f23a"}.ion-social-rss:before{content:"\f23d"}.ion-social-rss-outline:before{content:"\f23c"}.ion-social-sass:before{content:"\f4ea"}.ion-social-skype:before{content:"\f23f"}.ion-social-skype-outline:before{content:"\f23e"}.ion-social-snapchat:before{content:"\f4ec"}.ion-social-snapchat-outline:before{content:"\f4eb"}.ion-social-tumblr:before{content:"\f241"}.ion-social-tumblr-outline:before{content:"\f240"}.ion-social-tux:before{content:"\f2c5"}.ion-social-twitch:before{content:"\f4ee"}.ion-social-twitch-outline:before{content:"\f4ed"}.ion-social-twitter:before{content:"\f243"}.ion-social-twitter-outline:before{content:"\f242"}.ion-social-usd:before{content:"\f353"}.ion-social-usd-outline:before{content:"\f352"}.ion-social-vimeo:before{content:"\f245"}.ion-social-vimeo-outline:before{content:"\f244"}.ion-social-whatsapp:before{content:"\f4f0"}.ion-social-whatsapp-outline:before{content:"\f4ef"}.ion-social-windows:before{content:"\f247"}.ion-social-windows-outline:before{content:"\f246"}.ion-social-wordpress:before{content:"\f249"}.ion-social-wordpress-outline:before{content:"\f248"}.ion-social-yahoo:before{content:"\f24b"}.ion-social-yahoo-outline:before{content:"\f24a"}.ion-social-yen:before{content:"\f4f2"}.ion-social-yen-outline:before{content:"\f4f1"}.ion-social-youtube:before{content:"\f24d"}.ion-social-youtube-outline:before{content:"\f24c"}.ion-soup-can:before{content:"\f4f4"}.ion-soup-can-outline:before{content:"\f4f3"}.ion-speakerphone:before{content:"\f2b2"}.ion-speedometer:before{content:"\f2b3"}.ion-spoon:before{content:"\f2b4"}.ion-star:before{content:"\f24e"}.ion-stats-bars:before{content:"\f2b5"}.ion-steam:before{content:"\f30b"}.ion-stop:before{content:"\f24f"}.ion-thermometer:before{content:"\f2b6"}.ion-thumbsdown:before{content:"\f250"}.ion-thumbsup:before{content:"\f251"}.ion-toggle:before{content:"\f355"}.ion-toggle-filled:before{content:"\f354"}.ion-transgender:before{content:"\f4f5"}.ion-trash-a:before{content:"\f252"}.ion-trash-b:before{content:"\f253"}.ion-trophy:before{content:"\f356"}.ion-tshirt:before{content:"\f4f7"}.ion-tshirt-outline:before{content:"\f4f6"}.ion-umbrella:before{content:"\f2b7"}.ion-university:before{content:"\f357"}.ion-unlocked:before{content:"\f254"}.ion-upload:before{content:"\f255"}.ion-usb:before{content:"\f2b8"}.ion-videocamera:before{content:"\f256"}.ion-volume-high:before{content:"\f257"}.ion-volume-low:before{content:"\f258"}.ion-volume-medium:before{content:"\f259"}.ion-volume-mute:before{content:"\f25a"}.ion-wand:before{content:"\f358"}.ion-waterdrop:before{content:"\f25b"}.ion-wifi:before{content:"\f25c"}.ion-wineglass:before{content:"\f2b9"}.ion-woman:before{content:"\f25d"}.ion-wrench:before{content:"\f2ba"}.ion-xbox:before{content:"\f30c"}
diff --git a/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot b/byd-structuredplugins-serve/jero-cloud-module/jero-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
deleted file mode 100644
index 92a3f20a39267ae7f45144f412a995a663730360..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 120724
zcmdqKdz@TFnLm8$+;4sQ^u4F2r>`^JbHDX;cWyJ&2?^vzn1m2QHVK^zA>4-mf#uqe
ztRjLU0wN-gh=_m~kVOQ97Eyt9F|sbA>(3ooKQ7C#E&->q-
z={i-XPMtbcPgOnls@(ch#{K$L#xaiP=pWC?f|Eeb+l*4HC)|6^Zp3)v{yQPjG1AOC
z65HGg?gH+7?ksMH6JLZ!CU+ut2DcM=mvHCdKE-Xo{T}WjuHT6VanIp%
ze_Ri;>Ej-*#tGcS@yD+}@w^+fKXB~T7myo2>Ewao#q+oQ0}5@#eRaoq+a}NB&rjlo
zdB}Tr$KH!moR2N#I4`wZJagMclkdNen%Jv#+^c7v``5evCzC@zgYR+dp2^*3Y}?77
z^OY~-*)I@EyOALr5~omC5clo7&%5}t#X6eFu_rjrxcb}+c5J)#iLO^sKfWhDciy(k
zCWS@pOL&fZE_MF4^Uk=(`-}5A_RVtv>A#u0;G&B^``kbNoMYd58_j>o=^Oet(vdjf
zbnl}7;tY384&GO|74LIy{C=J1SRJ=&W5`fFe)ae3Tz_*6oto&C#y|d_DTkkCd$^dB
zMFnZlIj#br(?5}2$=>E9WUpqsaDPH0{x7bD+dp?+P~q9Bfb_(!Wjne0Tio0K?Y04J
zt00@|ZvIQ*?kUda+&+Lub==pSm}3-I5c~*8b9KbkKTgkK)hI*p2L*b+
znP2AwYAS+&cLnF$^t{#x%{0X+H}D+d3c?gZ9ifKrHq(?}J0`e!N6K)G=XJ!5z}1kR
zLP&8A47h26IqvU6n`%h>C(?-78l>+>Tt`T895==BPW$VP=e5Q&ikqRrQ8{Nwn%{Gt
z)scs1PF}51p7JP6&54`OD5hu4`zq2DD(F9jW_}%c6q@&qn8wx_U&PMyW?Va_?00Za
z;n;i*c@$o2ggWB6p@w@36*mz492nLc`SgrJ)qU=y=~*+Rklxd{uedSVOMN?1rdgI^
z%CCJuz_ZzYQW@MI6>5$9>YRKk$06XEGZ*N-jzID8$U~Z=^i~8Uk7|1j_w`1Yn{MVI
z=B69Zt8>aC-+6DU(Z|XkKXclGcets>GbEkw*XNY2%z-oV9hhH(=g4>F(FVk|M!<6?
zuY1n@G}4rRH|8>xqcnvI!c-%!HPTa!c?OK=l%?l&=bLPHtm%8ma{}I@{Mly}prLa=JRT!T)h!j5L4g~QjNS?Bd>zE{sCbMc@H5_Ol7E@l;+%+s~sIX
z`6$EvJM!sS-3g4P8tE$HDTLabn9|KK_t`Y^n}MF!=aj27?h!k1I`;V#o>Rc{*?!S|
zwULkX?0ZzE)(CeX#yvOT#!h)qJ}0I!^+uRR+`LaAU1{7;A#R3hBmIR&TtiHAfC4?M
zBUBJ5pJ)u_(fu?+igVXv4QUD>U(ND79#NQWOC9NHgxZ|B*!&JXqcGJ7jeA;~PCpS-
zx)FHi`xWQjNptU`9ByadpE@R8!~LAVy^g{Nvw8O*O`*~VQ-~?l8X<+4LhVDs6!IxF
zo^wBH+&A;*#7>`@_jQ!}pipbnMYOv?zngW>#y2*~P}!+QNFk7vop=5P@BBO7dHe8tzn6Zm|ypY`vdjK@ucyJ*>0Y19`fw+?DxEiu`O9wTJL%Ly(_(Ud0(Hf-O|~zDVB)c*_vqG-1>HWWBl>>uiMtNJ(ExqrNrLEt;yZV=TgI|`%*8Y
zUQf?UU!AFBUdgs+SGLF7AMc2Ftn2t)ZZLN^zcOFT-`yGSe4z97F0SkRuDiP)>w2l%
z>R#79)&1L^OwYQWTYFyU`E{?^yQ%l~-s!$v--f<(`>yM|qwnFqSNh)Um;2lMH}+rN
z|MI|327Wi#J9zt0cB@JqwL8L5t3JTf)%YB5?oxA=TXE)AD%Ej?B?
z%Qu%_nzw$wIRC)>-zYn@ys>!c;)@sGy!e?V=8`*)TXfuIOZ%6uU;6m6caMMW_+Osz%8H+?cw=RJ{hTR*k-tfy)
zW2cUtdflndZ5-bC%xQzC-Ei7(H?7-r&!%@b_iuiB^BY^*x74;guw{BHx3#o&{ni_{
zPHlZ+>+@TGvGtA9xzo+l+fN@ned+0!pMJ;bhpNk~TdNOMXSTI(+r909ZQtMa=63(~
z1>1LRpW6P?_P2NR?^v_rt{wFqzuw91Ozm8`bN9~cciy@4>7BnjBY4K9Gp;=2=`((_
zi`(_&uGh~@oH=~vxo6&a=1+EuyA!+5-F@rsr+2@6mVMUoXPtl6oo5|7yZ7u3XYV=t
z*0Uc!`xj@=oYQ{Jl5@^J=azFGIOnxL@|ykE+<(n8wXxa_wWn*-*RH?z-fQ2!Zuq)Q
z*Ij(w%lo)}!F`o|)qU6RyKmnQ_x)x+w|{v5#{G})KlC?C{$}cLe*O{hBejpb{L%17
zOV{^b|NO@`f9&lWN;mAe;l3LVe!TPJmw)`ekH7Ts-`(iHv2^2x8z*nP+b4hwlC5z3+Tk|MCrA{`GzGebKMsNmLiLW0zumI-F@h84{!xQl*o`2%k-_pO8`qtiWJ@cgXv$s6^@Uw5!xK~2ao^Y%@<-XEP3JJi}s7hzxc{a
z=e{)kckliEqL=xX`(Ix3^2j*1yHl4}m%7M~wBv8zT$_VV+vM6aYTQy0PeQhW8F7iT&8~A{N`;~fqa%!?(uQ#7pS%pC>
z%yEHSaimm84~IiRFE67Nf}krbq38mCy%yB2XNn*znx;sCaF?dt)qLM(em2QP0XKk+
z+CEZ3!%@|6xQ&%@4KnR4&GKkxYyP-49Eb&mwYdMPotm~&Yw>G?KlAwgo}UeB{+46f
zTP%kPp==0Eb(-A#UWy~QQF}`TwAB}+ukyK(arPCreX_t)``8vVf9Cbs<~QFjvnpFb
z?ZxPZgISVt#GtNW0KbjaBBh9)0mx+A;0zP>LAqBC8!~F>zP3
z?Jc9BxuOp+9!~P~<(8x1nLQfX&e$DkYlKFH$roBx{4rMfV|X9a
z)<7g1$`-Q@V4ViL&u8aC2R=tr5#Si-X*}8J(a`+squSnt?d)6#l&P1@g(<4aS*`biDYNbz~H(>Jm8BCE+5Lp+I#^`kNUi^
z)_6}W+7j@4OkKC47n+JC8CI;dt3BQl4r-dm(-KQ$vfYVPIAWT%C-F_yFm%7ir^~7$
z>#FRvOt0yY6
z$4_rRl5%il1#PNu0a#$Ta%Pl`06Vo|WZGD;hlPUKyi!ogSzXuJReFbx-+enrTX&9D
z^xx`wNk121`hv9=U~-bw)2u6r-p$sKo~<=f>|vuU9ZHX~0(+b)o7v}7?DeK*zRuRB
z80XaJ)LpHlQuS2IS)Py$8ml_Q7+L6hUcWq!yqxhgh1R2G3Ua=B@BjxPml=s
z(!Q(XeoXL}o$GQ{otaS8d2PA2S|Z?YvuCDQ#c!o(cF(=^t22|T%5GM>>`27!a<4Nt
zGg6SEZCr{?fyPBaJKDKkny*-dEpgncr&gCrt4n`~$G^Ftt7}0Q>kC*f(eszAK&PR1{Zn~$xxDq^$nMc=}@>(1|OpkFN47D
zHEr9Rxs0wp1BMOWF!&i<1NC}!s=}&x_zpc}s%fXpV9~9owObseTb5!xg4<=FsYXnL9^V^#B9QF
z24*{yCsdmoc8kd@0hjFiV%3yThkyOu{n
zeaE*ZnJ5bKJoDA%yW)%qzGX6QdDRX@mY*S*)%lFic2~N?=CU1f(d7B?xWqQ^ST@kZ
zK)L0WG4xyz^)92oe#G76XGu!o%f#PwvByoy=I0
z2|T-?7pyoFT2MW|22~4e$|>Pz;1!~beX<+R@f1bbDkL2kLn}PRt^w`jxCA(Ni{<+n
zzBf_|Ct0Ax_QhoVM|#quE=?qjXv)~}n9i;XrmdM*JkWBj$Yjh+lzGl!iico~HGs<$
z8xVuYPq{-`exzj>r(PG`QtagZ6o
zi&fba>WFY-+!F41ZY2k=hX9e#SsE27gd_P(urLe)>_|a9Jg_pP3!+j$iy2^Qpef`y
z$b=DArjT!h3Cx&KYpylKM};a_(vKRpZQORN;qw_Q47I~Fm}ZzAs`=F9u9z*p^Is8$Dn1>VqLpboCK~KJb
z-hqzHu7P~H1Q5|0aFzg*laLZ<6%3CXCRnk}ut5>a-<**>|!s^wy2q9Tsy_)Ak
zyvna~GX(Ypr|kW!R>^Wm5LT{qO08PWR6fk}t5@L`a}n)v=QGL0n9m)ql;Vgdr!q~UZh=+~qt~0`MN+*K)zES78ukn;}-1OYKJDj>P@+1~Fg=6{xx<%4a
zLq@_^t^_MAO0u|bA6;{zxPL!5P+6oLx`MggKPsAHhe$;bnc}|dbR7k+yAH4F+I8-C
z2La;=M;0ek*AU=Jz;0NZbP0#p`I*7N%*<~)ikVh19X2g%erE8vpAKa+L#2+yfEI33
z5*^Ei03(7E$F5*kV9ZQ#09f}JrgABwM7(Sql9yY(GvkzObGorBJf2iJ=`oj-AE{Wc
zq&)h}%eu#-znHqs(3wYLn@vx$obq_O%3rfEIbNiPY*_cC^qIGH9iJqcKaGA&;k#a}
z0PyS0`O+lqxdskx-aj!hfBwY$liFjk_SlevJHNJT`SM-MSsK~%C)Oi7)_&NT8?PaI
z`7Y`j@i-hyVGaaA7kj}2E_FQF8f-;#F@d|qqznZ?p|SR`mcVt)rX$58IpsO&d?6nS
zvIOtZey>@UHYEdTum5-91c826@cb3R6#qFv_#B_&pAv+p_<=jO)0p%Mi%76M2oy$YLU!N
z7Pc(-r|IJi-?c0v$ZzYmt+SIf3q)nJP#Qn{iqBZr_|62-^dP>da0bWu!0Abiz;iQL
z+!UCdN>!a7-obhY|5#yF=+q#)b%1>)WK4()?W@#Zm3`HINk*cobb{;qo)kYG0M3EyT
zb2#+0RE{JVFwGbrfHF(co_$u6ctQWNsK!)rT47%0Ti;S`P3T=5JQ+k(WZOeB9?7BY
zpj5)TV5OJ!NU|)75Y;#FqR4N6y#Du!WhsBJiF{kHXA6;DcCsaaZ?HhNd2x%Ux6K`+
z3g&XfnaO#yd^lo>*-Ss59|Mwe8P>9+oN#1n!rt=q`FmQu3)&a9wJ%zf$t*r2w6a)S
zS={8eAOZCz5@84qm1|qAL4VNSo6IgA|EJQ*QfcKf%daTmWU@DjMFe>b@V^G|*TDgR
z>tMqP*2dDL;41?QWJiDv=BOJ1D6sKtR8gdvY0Y@iQ0ve@yyq8uVsPdsLD9#{hLG8&MF*CrG3Oi}Ax2;9I7((I=ZJ=O5II()NWKiwJsVNV
z>}FCZ&eRmmBQQ;{*&a*OM0@6e7lVbdU|_ru7(S%QugDrM9-f!_EODi1_gmu9=N7at
zzz-k7I%wdF7*_$UUBvM0NHn=f{IqNU=jkK3j!(FD_$SC&}+dFcnd^~rG
z*ml;~mVE{|LamunW!BkO8k`7&e+C=Jr;44WzS7Xzkc`*~yRO_h20Alt~#+%JRwHC6>>!!Z4y^fFG>pH!e5(w_(prOkq-Fv0YQ)D~_KI^+pZ
z0mwhHGA0&^5oLPgjt*W)_nk5_HFbNgqPCq-?wh#zBko$|9G!CyX_DH55n0J$HR764
za`{q@F3_r#%HeW}uEXVU1dElfjTOQEszWj|@fIy?hgXOFA#E_H%N-qxmWfBTkl)RV
z#xsWW#>9dJ6ANBnih^pqrNfXqI%GXJNQH8laM)JkQRh`;M&oMOz7wSvOf=?d4Y)H8
zjRx0|l`-sjC@r$ZTwckSb9rcTp%TRGAc-~{DMu726KC63>y?dEDQ!hp$INsoWyrlf
zVBbn@zLwQ3zP3`rka}M2O{IEMcLsu~Qc6|&`&9*rU|@Btg>t&m)uret7z}MjsZ=ju
z40Un?XOd1Li*_yKPT)@FPUp@6-hjf35GDpQ6#0;}^db3k%l|oLD$1~eU+t*qeeS5+
z#={TJWqEr4sNbVU-{R>X=Q#5odM4nlDdKlK!ZPI3hLnuu3_$}jOrEAVtyfox3+@Vq
zFuf8WZdmjV8NfRz>FRG`fuIE+3A1Z>Rk2dBXeJqs+XgRcQcMy>5QL!Bn$ENuVUPq-
zM5ZP(SrF`aIGKsYQkJ6f;z&U9*tv~45OaIvmHdwAU@99uyCoALR3)-Ly%qM$1
zlAoa#S@!x;DaGLVD2he1sln)u{Au%og02RGilNw0IMKRt@ue3r$r(`SqqPq2$*#_1
z9)38JNt~K!jVCs+YW9rm-~KHwsZ>0knuGHcP((<*O%5qi0$iXADGUQzq`D?3g$h(J
zQC^2!D#X8#mK+q><*nalK9A|QO^<)bY>DRLf%uT9Wo(sKV?gs_9>h|!0u8D2d5_}~5GT@s4%@y;0E
z$}UP2lQE;kGHop=OZ`DTswkT5^M);d)JUDw7MyvO#kyPgmToxzyKtwq4?@}Dm_f)C
zQf9TmYPC98pPH)Grlwum&4G5;!1Y8(bJOl>O@c%~$?8N}FtX-I5#I=I6raP-^CY{V
z8*FE1Jl+{^KcWL;=^dV#I}QG7RWsz0DC>$}k=1Dwig)gZDD{LRN-a0-@1M;?@Ivq1
zp(+b8A#I5how-77X@Mqg1+W6g8d7~nKcJ|{v?@v;c^a&|CV<<4Evc&BH>>&{!uD(##>|(f^6;88iQn
zZu{9Oy0M_`hdM7P@-A7`q#kHI1lcFas?h55216DC8)23<^FO-DY-Z~Hj2Y^0RSz^4
zhFa1!kC9|*SYwa2?D{^#Duj(~yrwAU$;uG8WmA;Wi-W+Aaad&M%y$F)3>YiI4Kk1b
zrVkLktNeqd76u728Di9~-Lhpr?_3W$iYha_Bpm*3GY?M&9o5v#e;W^(Q($V{`Fe<}
zLD#5}^bRqata%8z#<*8gHSo8lGpx3K$R2b?&S{&gqx4~(7ildwcsasZBy$CMG?PqE
zGMTAHKwUry326m^wMgHS8yOC=%Q~TAyL`j4lB#00HZtoa~TK40sgP(3|C)SJu|+F8t806y}cse31YTPo|WHV!H%n
z06Zc19K7J@3p5OzHgj0JF0M(|cKII^t?}WKa|yFnBngyY3F9T%oC%c7&TQ@1%Rhm4O8$y
zQxr-ecjk$dJ*yk%xM_Tg)?||F;W#ql${3+zzvypr*P!TG*%jKhJ5%9e(sA5Rm(rr{
z?nT{q@cQ+pwa@c0n5F|Urq5l9GgBzgz39_>fyzC5fT&%(kb=BZMH^@~atuZQ0;d9*
zh=PSqv+0?N&K}ZJGqnoOm3O|hlWmxJm&y8}g9nR}WE%$XBRE%fA9QpvU`Vbb!Q?#t
zFfknR20JA8|kFP+xDvem-!>p1g_wys`P>ec&Bncr*Z
zqFpGSw2X!PjClfvs)kd?ePKgT6!NWhG=2V%YU-A^ryJ@WIaur`6+5+ptAbxkAx?3N
zIc~gRZUBV-|Az70AFhslrmM;m_Sr($qJaFm|@TeSyeN__z8^*>qILVp+_I=JDZ|&@C
zji)^D0Q4l6ZQi^r=_FY)nI!3}jU^i2TZ8XKNDp5QjX_iaVgT=p?+{8*LIbP};SkJA
zG0C8{hK8Q3)CvhH#V0z3bQL4Or`hOG#9kfiy_$^=1${^?WOybE13XLLxLvHT@
zlq?8dE)RPlV2u@>rN{vl+nEZ5QlVh0ZA+mL!*m5dV7CT4*ePLpl4uL;fl*sOYvy%W
zs=Z(SvSk<+OPob{dji1ZM1`>q>g;OZ^)w`g<=lGkyk}sWlF?
z&(-W=i3mj{RE`uOQUHX-JUDd)JWr&IY_RbFBc8#rCIf{iJuVG{kq3;i%piF{Eg%zH
z3DG1Ey(lG6i$YVp90v0b_8-MjBm0)3kOg4dHdWcSO@YtPSx9VGl{Zf~bA>2*fudFz
zybh`EtQAZ)q4nma6^g*ij2$?EmzXF?{5y(bsHj9@>?sL$ijqe-U6KuGFa?wS
z#L#uPjMCL$Ww;vst1j~Vk|m-@LDE=@CY|8k%>3%`@ZsU1YoVj{NWytTXUNRM*h53-
zLE1EArts3GLz7;%=kU-*2HMNm$M*9Qn#J>2Cn|5MQVWxqscNLqFnPEf7)*j6feA^F
zu8nz`!hFb+42R|5%ml128gzG7C|QD}>)HYCBMYg!+r7-?`D;6Z_R!2Q!|
z1LXofbr=_7UVv{gTZttlY~*kt#DyRLDZLm;Ep+~+B8d%&Na_yfUn;_;65)795B|Et
zi4#vugu9)ac({pk>dxB6r<;-jY494F_3Ha*iIYArm7=zBQ^2m%r0atg$K`bKZMKa(
zwPv27>$F2FLHwM)G|GdLkOu{;O;su`U7>YNJcpNf0*J0nOL~Ff>yd1xJTk@?%L|EP
zB2GwQe`^>s8!-QGo2mV7bC#(-jrH|0%_o`>Rx@V)fJeIVJ~usGQ+P1YLSL6Cz{5)e
zA}2a_Gro2RIE?hhT&aP@V9j^1Su;MNyREIe?ZP?Nn;lM$*!AYm?N@^~KyL?<=%69c
zL{tXP3Cw&@YB)JGb9|08!{8WZdJ-L>WHPkqAh>AW8|ero5}{G%HGU4movF?IIB$nq
zyIbqIHzJr@jQ8V)CG>!hCeSP6yn2NByyV(jigh9ZHd-4=C`e&DjJ3$NN*$@kowJJoc`QP#Jh(H2vPuti4u3?lNo7c?h!U8~
z9PlA9VK7WAeS=z)!hzk?T`1t^sn>b&MAH{h{SprfAOQ{cZtlfZ5=51k{4zhl3nz+~
zQQ__fV^*+DghUkC)%0yc>J%SBSo+|>@rW0gU
z59=UGu+PbY#(`dhq4n;vL^?}+N*A#M%~
z2D}z;YPPAi1aw=qfQ{uAzljy(;55t*%nxu~>A!d+;nDeL4dGurc0>mb0!JPoFP}0N
zQ8<+3^GaSRgTomqfz^Rz=H-dqacFRe3@DKF--YV7Ah4yTxs>rExB;gyR@1&I`GP*_
zn_6v5y?$k!7g<{M!z^QCilt%6h{GPrJVPz=zVYGE{Q02^_sK0o9-z(!d@6tsL>$;d
z70D4*NxK1~ei2CdO<5w^EK5Jt;@W)zw8$G(lTb&4S8(YI2*MHiLee;qvqG^+XC_mV
zlc`x!gY@KN^V>8wWQ!%7=5U#WKY&CWWb3jOF8zU@OW;~UaFigFHhbeH=8QGbFSMY!
zh>0#uO;x7pGBq`)-6XSeWvp~3z+48WQCjg7vSkD);LBUKoZ;DVPPh_2J3JoVvdctz
zJdAL*dA3&*GJNsaHpzH8&YRDla6#U&Yqs0X14D?9baQsX^ZWPBqt}ctyi?hE0vi8
z2M(}_!9jRZ-3(7E=SOg9_#vTXVuL2K9CQv3U2c==;i2YOP@5M6cKHHat6Xg&%<&F}
z&yVDR$%nvC0hf%*BjET(;RPs^icmTY4M#xAfg=j6x_hOxYPh&+Rk1rQ_b8?D(()@XLK|a
zUfi+yBRAiC{rr=blAjw9+*#WOG-*^p2$g}^=-9DwYHH+^{-iWm$>E&|dL6}`Z*%M_
zz$oB)4>Sz?v|?zYf-z`nq}Wx8(j!Q){pPwCZ{2#`me4k`N6&+utyd5>M7HeTvSmqk
z`_~;Sb+hi2L;C|<3L^j)c(Rm|sI?H{p%)D#3(UxvKqeTL$^~YoRU>ejCnSjrem=T5
zBlwexdup}g7beex^#AjK8j$42?(CeWgy;2U7gekHh_h&&c^QY^0lH(Bv3SK2;0sz9
z9^}a1=$H1FrpFlD~AhgT_BnE2g1?5LfgPVAldE-hgy1v6K!kP
z{vn$m7#J()eqMQd?b^0VQECNNZ|`P?Cl!jdweNrLxM1h33r3jOp`^bs;$<3qm68o|dBK7P%(k3Q3sZ>yLuNp2B*3?{gZpwky}
zH*mLd*hJBhZG(x9B#}{mA&(f2Jqy_o-9ezjy@L(WEYii0-0dR9Q9k8}FQW|35Gdtj
zkBA?TSB7_utP~&!L3xocM8LfcM=*#H1@k;RCXkp*GZ*j;1&3j%rv$U>QQP(ndBLCZ
zO!0+ny$yaEs-g{9K`Rc8t_{a`3+b6d&D7WJu%5*R$gJ)UoxlQ-R@TxI#9|JFTNO6V
zL?h}8@DWJ^5mC3tJd%27(P`chRfT4A1a3WuPg}iuleeH-l42GRS$e^{X|-Ba)oRqz
ztCUgI`D5;@vgqyVv_&}q=lci~!g?-ds)2Zm66RN`P%}tyZqlTtzXy#2&HE8Yi@q6n
zzgYNCAQu~=uCoB!=fJs4po4u7gqc*lkuv6p;;Kb2&rL$IJ@s
zTZ}mn;Fo*wx~`({7CG-Z7F_W6Wa~U0v+p#lC>VvvB<`Bfh^fPza13S6u7`#U4Lvoy
z6@bu5zJ}ZbQb5y?3~QJourNW3g1-kGE
zJIo!&%P^BKE3gKTgIET;k+5pX2htHbPy*uv*-9zr;qL-9nB&6mzn4)I<*RZ~{;C@(
zciqKX{9Sj6`ZLH-Z58>gvaDQzB7ZGP;!Sr2uFzxp6#ME9;*1^3fc{QdA+f=~WhM34@|MS`#pvd+#`+CoWMsIB6?N8YjoL0l*Z3-El$
zDs2%8<2j~mgGRaV%5&p?45<%+PZN@V47b_d5IA1^z}{zP%gpWZF};M1_yc-($p`jn
zt{**V`@11U(Z!FqfAmsshbE?(-38xF)9(w}U-&e9N(@PViO8XBw1A$I9P~5fmrO!7$yJN@6yi++iP}E1`
z>*{I}j{jZdi1g4Q!{4G5fl80!at@FH1ai>2;12gdJ(*ktIneqMn8K8aqG9Z9#E&g#
zStKj-O2X%T;Y6y`(syko(6V@5+vT0P^^zuwi`Iz2yOJ?Uhn-bgmFm55iL$U0+Ei9^
z-j8;)di;`5tV)Ub;dF;TeY|gEr#jkqLYC)kHNdm`_3jQ|N)WJlKGw5B6q8C8r_mkV
zrzCtP`?>ktvLn4}+9%L#pv*`HO-HIQjE2if3BmD1BD@M(PbJ_MgFnL6=(XFmtM_l+
zx_|2{irg7#5qhOaIuMZbo-KiJagpy0xl`ep(Z03P8C$(Tl;NTz3rb6Ce>OcI2cI|<
z9KzdM_pkDM{Gn8KW5APXVS2dJX7es6r1+GkBn5A4p}kw-1FFqOTcT#hXzPn%RnnMw
zFlHBFCM&>Vq^+lYAzUD$Ph|G&$v7Xo
zYV7zWOO78~`2*DZf0l$>mM(1xyL`T5*9+2qxmkAi%VxLblV*buv+v`mvyagZQD)oA$r@N2LCK_jl)_Z#vl&@1oI=79N`=Crwe5A;Rr;%93s$u*t2ONI>sxk!MR%}X-UHQ
zfPgX-jyU%2aef%H9Gns)L?prm;At3&f=alJCl{0r$BE!5`{zfX@`+^HN^O}4%n^}!
z{f1y#Ef%DUpjT&dYXG(aap@_y1pR>)DII{x1)ewT*;t^{wvw^V&UKxgv6RQ|^aeFi
z)%c(!1zEt;5mHP+flE&;6Kie71+K4(U@D=_Qk+eF^z>DiMNHP?Z?oiqMeVV+R8&=?
zskT`Aq5;_m$}M5uQe&dw=krG7($%NW{HtbZvbsXG4aoTmiH9WjA50)j9mfsu
zNKSdKuBP7Jyfj*H&xb6FvvVVQF8QHZ(>Gwu_>m($puuH>`eXjpBg_G+as*Ez7HlhR+kZ2kJnmN)!G
z8t-_y3^$BDE{^ssKScA!(V)l?$0i29CBmw3HYh;K!19>ub_E|c$L|W6g-grjn8)_T
zY~N?%*>XIn^5t^yYR3#x_XGnL8|C?#=Xs&>V9aNFeDHSjg>xM{w{`?YecOZ4_@{iH
znP)x0pocB?_-3Yfwg~0FCp6|d_0Q}09YK5ST7r&vf04qjw6y)XsrA1Zzj5
zO@?R}?qSIVZz$MKwlM5jh3%*@fxyw`WuQ+gdt_2M!$Oc|-)Uu++)Ho``n~0qd~%c3
z!U8QV0p^Rb^Dy7x;|m;OBY<6v1`1!$PEY$hh0TaT51
zxb2moik&O#y1aeXfz_;^mfK}Hn8$L?VzESAn^Qgn`;ySig9;het57)IpT@5<6^*8%
z_F137At;9g+rPBCqjTkUvHpc$O&qBG%c=69{CA(cYSJk?j)KwDYo9r5qB_;p-o4cC
z6$ZrZE7|0)zEC@``qZmF`FAKi7xy)7#WYILf)yJrXvS^>oG&|HbHDNk)qjwxM1POq
z(RQxFeFoH!5CNEBm(aNz*|4zSRO0YU?rt}zRxnAhQX8w)8FruynmmCf7ls?cA+F`E
zNmsBKoj-a;PaP3~D#FBZpAgb?oQA-`k^JCpf;c7eR2<~e+f(tw
zCoB+3#Psm$b3|jTHy*bANO{LzH)4@&J{B-c6_z(#6xH;Gz2svkCSu{RZkV1(Fw^P{
z8YUfBVQBD@(G)#|GbuzYT>PY9i#M#BHmmj|{C>mqdPg_X2ArM*_8J*p-)L_S&nrgC
z=FeIcvBS~cQByd3l^Jb~^^VTG0Rm_lUfZYP`+iLoC2|^tgDGm(bPp(+ZEGq%tQnfA
zD@ZADO@xvN%NcGMhC>mkR&khtrrX$)
zVfwxCbTHyE4Lux=CE!!7#G+nPqmx1~5*P;~5Cf5oedcJ8Iba;Oqk$L=1ze55=mOta
ziVX2yvNd=XVJD5GYPKB=TR3b)!h`@Ow4kY@@k7m;&-NOY4$~QEJM2Yt-e?y45V$gA
zf!TTK=%V2;MSqTU+?j6hz-r7v*KdU!bMOZfAbGIikD&3LbRuKH+btBez`PHJLS93a
z$EsCPFw7+_VW1sFtX5N^?(zBkgQDQIe1X8qv+23w{9r
zAiA5U-UF$*(I^WSXmvXR5_Tw*%1{6(Fs>-wESraCzC~S{=1+X)s)?nxa$GSvteLWIr~AU;9?yxF^YhlVB~p4inTDDJJK3a=
zB|?DWRXGYX3NM96=jS^3_Oxf7Y08=K=%{YA9Eq>JzD6`CW3G|SQihQXFb@<
zce9Q*UId@R%y_XSayk@8UGtJsAREB8Vt7wU9?^j1K#mQjWitd1sz8US^t41|A(RyL
zkdR^V5Nv!_G?Y&l`uj~NPaJudxp4bSp!VnV`Oj%L(Jq&t{WivK)b%}dAUtQ<(?~c7
zoF;w)^}6$#Mu21*tbL^DnF9Mgl|~)pAsYdPCZ`LU3xrF2d2B2>SXKr2BOBPX(#j$k6Fz|0AEs%hXh<S7f-Oy=d1ZfB3(hF>
zC0WE5HoJQmrWv-1M3zedsl)Q}Ar?%);~)FUu@@%b-`Lk435seuu?*TIXC6q{Lw^nV
z7C}$oA`#hv8Nn^*>_R3#BlnL0?}9!D$dAEGp*eEm4&cHvWGn2$aAJ1gwb$%-;KXM?F(>(z+fv{AY5OE57uN&yqZH%(vj-kcYI9FG6~TQ(Csj>hGX7x_lFrpn`w<+2aCUh15X6C0WLU
z7A9QD*3mgMW@T<90u4}Jj+Dw^R=mJa@RlXWIz(_G%!e5Tx*N!0a#n_q?EvKY5*#Ys
z47^1}K?l7Iibh`BT(Px@$v~<1Wbb#Q1|0qZp}1;~`8*aN$qz5tQs7m1ZG-#P_3>P*
z9|lfh_r5E8&8)lw7be0pkUD>SilT#DJ>qEav{a6$k|EX$OnR#+SDjJE#yr#eJ
zLM7FHu9^fK5{xCy(f
zvN%Evf&-Ndw1_~g{SfmB6~p@p-OIy+GzSpmGjbUHhq}?t=yA`&z_cWe?Yl({m@tSv
zNwFxFTFa*dRontOeh{aHu=8ObpAYwJ7S4N^&(C9aSsvdQ9Q7qJ?(ZY0Xj*G-92tO$
zKO>p*w`4QJS-hb>atrhGsG67g6;HAEc@{jSD0@13^WC~VcoHnGi!V&K1$?c{Z+c?@
zQEI`HO}MPQ@F^gCUbB~b0{yVdlk=R5^D3AZ4KK~I5`s)p%){gqff=j}2zl86gC!yf
z)#gHIJXzZBsp-8sg=$sbcmeZjn{d32X0r=;+s1JQ|M;LNKKPHKI5j1{@C1K*Byv0d
zgeZOHGnj-fo_D_oY5M4|9aHnsH8sW&hP)bZ!+P#iR0fMA{MRy2y~?4XU<9UI7&G}W
zbdQ+5j#YD%FBOLzx0PHEPbN)p-88%)%8uJGWHzG2VDq5O5sDF}Y1-1AjQLsw0XxbV
z+dXC&i_V54wF!Gw3y9!~(=RF~djz2;x#D!gIDG}uVt4Z7Q?;Q_v8vdH5h#?31&oXB
z5k-$3WPG6r_gOyJCZvRcOsP~XWd=kMsbY3{W>A><<@a_p#=+@ZEA7ysQ&y;nG(C?r
zkf-KLO&j0-5+
z?VN8!z-$Dd1T>c%D6>T@HIh+ig+cf1Fy8H%;BeF*l!KBTD6Y`U#^hw1(JAWfIKhz@
z&$NOJ9;e^cf-wCW2;k?yRw$`MHg9$>Nr-wZWX60kIcUZ1O*Q9nja})s!&$;K&ItH6
zEpoJi^hiKc-C@kEgciIx4_ZE*IxG=#`e`z8|}htYxB
z$rF+}YAj$l{K{h@+L93HxC>BLV0zk8jz*!WK=W)&6lPvg$v@LB!kbgVF$lt$blw3r
zhbl!|;M3RyAAo*aIcSJ{0NWtgLW9>lDyiPF`9S7*1;YnlMM0HDB>gbX5ye%5G>(Qi
zbgc#-_52_0!T~ykSAVgw^9F|)xPBPfBYSXq+VrAoJG*bNc(F5Qb`MT}VkF^nw%!c8
zn{nK4!RL$4Ng)bNA~-M`&S)ifKSu!x9s-;gU7E+GoIf}*F}Um4BU3Wjp^5eDCyqHb
z#euPn`X{l9htaiAnGR5N4!jWH#RVSGF_^+>2Zq1KCN(&dxM!Cw