├── .gitignore ├── README.md ├── knd-commons ├── knd-authclient-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── oauth2 │ │ │ └── common │ │ │ ├── config │ │ │ ├── DefaultResourceServerConf.java │ │ │ ├── DefaultSecurityHandlerConfig.java │ │ │ ├── SecurityPropertiesConfig.java │ │ │ └── TokenStoreConfig.java │ │ │ ├── constants │ │ │ └── AuthoritiesEnum.java │ │ │ ├── converter │ │ │ └── CustomUserAuthenticationConverter.java │ │ │ ├── properties │ │ │ ├── AuthProperties.java │ │ │ ├── PermitProperties.java │ │ │ ├── RenewProperties.java │ │ │ ├── SecurityProperties.java │ │ │ ├── UrlPermissionProperties.java │ │ │ └── ValidateCodeProperties.java │ │ │ ├── service │ │ │ └── impl │ │ │ │ └── DefaultPermissionServiceImpl.java │ │ │ ├── store │ │ │ ├── AuthDbTokenStore.java │ │ │ ├── AuthJwtTokenStore.java │ │ │ ├── AuthRedisTokenStore.java │ │ │ ├── CustomRedisTokenStore.java │ │ │ └── ResJwtTokenStore.java │ │ │ ├── token │ │ │ ├── MobileAuthenticationToken.java │ │ │ └── OpenIdAuthenticationToken.java │ │ │ └── util │ │ │ ├── AuthUtils.java │ │ │ └── JwtUtils.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── knd-common-core │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── common │ │ │ ├── annotation │ │ │ ├── LoginClient.java │ │ │ └── LoginUser.java │ │ │ ├── config │ │ │ ├── BannerInitializer.java │ │ │ ├── DefaultAsycTaskConfig.java │ │ │ ├── DefaultPasswordConfig.java │ │ │ ├── DefaultWebMvcConfig.java │ │ │ └── LoginArgResolverConfig.java │ │ │ ├── constant │ │ │ ├── CommonConstant.java │ │ │ ├── ConfigConstants.java │ │ │ ├── SecurityConstants.java │ │ │ └── ServiceNameConstants.java │ │ │ ├── context │ │ │ ├── LbIsolationContextHolder.java │ │ │ └── TenantContextHolder.java │ │ │ ├── enums │ │ │ ├── AbstractBaseExceptionEnum.java │ │ │ ├── CoreExceptionEnum.java │ │ │ ├── DeleteFlagEnum.java │ │ │ ├── StatusEnum.java │ │ │ └── YesOrNotEnum.java │ │ │ ├── exception │ │ │ ├── ApiServiceException.java │ │ │ ├── BusinessException.java │ │ │ ├── DefaultExceptionAdvice.java │ │ │ ├── IdempotencyException.java │ │ │ ├── LockException.java │ │ │ ├── RequestEmptyException.java │ │ │ └── ServiceException.java │ │ │ ├── feign │ │ │ ├── UserService.java │ │ │ └── fallback │ │ │ │ └── UserServiceFallbackFactory.java │ │ │ ├── lock │ │ │ ├── AbstractDistributedLock.java │ │ │ └── DistributedLock.java │ │ │ ├── model │ │ │ ├── CodeEnum.java │ │ │ ├── LoginAppUser.java │ │ │ ├── PageResult.java │ │ │ ├── Result.java │ │ │ ├── SuperEntity.java │ │ │ ├── SysMenu.java │ │ │ ├── SysRole.java │ │ │ ├── SysUser.java │ │ │ └── UserType.java │ │ │ ├── properties │ │ │ └── TenantProperties.java │ │ │ ├── resolver │ │ │ ├── ClientArgumentResolver.java │ │ │ └── TokenArgumentResolver.java │ │ │ ├── service │ │ │ ├── ISuperService.java │ │ │ └── impl │ │ │ │ └── SuperServiceImpl.java │ │ │ └── utils │ │ │ ├── AddrUtil.java │ │ │ ├── CustomBanner.java │ │ │ ├── CustomThreadPoolTaskExecutor.java │ │ │ ├── ExcelUtil.java │ │ │ ├── IdGenerator.java │ │ │ ├── ResponseUtil.java │ │ │ ├── RsaUtils.java │ │ │ ├── Sequence.java │ │ │ └── SpringUtil.java │ │ └── resources │ │ ├── META-INF │ │ └── spring.factories │ │ └── kndmp │ │ └── logo.txt ├── knd-common-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── common │ │ │ └── filter │ │ │ ├── TenantFilter.java │ │ │ └── TraceFilter.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── knd-db-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── db │ │ │ ├── config │ │ │ ├── DateMetaObjectHandler.java │ │ │ ├── DefaultMybatisPlusConfig.java │ │ │ └── TenantAutoConfigure.java │ │ │ └── mapper │ │ │ └── SuperMapper.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── knd-log-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── com │ │ │ └── kernel │ │ │ │ └── log │ │ │ │ ├── annotation │ │ │ │ └── AuditLog.java │ │ │ │ ├── aspect │ │ │ │ └── AuditLogAspect.java │ │ │ │ ├── config │ │ │ │ ├── LogAutoConfigure.java │ │ │ │ └── TtlMDCAdapterInitializer.java │ │ │ │ ├── model │ │ │ │ └── Audit.java │ │ │ │ ├── monitor │ │ │ │ └── PointUtil.java │ │ │ │ ├── properties │ │ │ │ ├── AuditLogProperties.java │ │ │ │ ├── LogDbProperties.java │ │ │ │ └── TraceProperties.java │ │ │ │ └── service │ │ │ │ ├── IAuditService.java │ │ │ │ └── impl │ │ │ │ ├── DbAuditServiceImpl.java │ │ │ │ └── LoggerAuditServiceImpl.java │ │ └── org │ │ │ └── slf4j │ │ │ └── TtlMDCAdapter.java │ │ └── resources │ │ ├── META-INF │ │ └── spring.factories │ │ └── logback-spring.xml ├── knd-redis-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── common │ │ │ └── redis │ │ │ ├── RedisAutoConfigure.java │ │ │ ├── constant │ │ │ └── RedisToolsConstant.java │ │ │ ├── lock │ │ │ └── RedisDistributedLock.java │ │ │ ├── properties │ │ │ └── CacheManagerProperties.java │ │ │ ├── template │ │ │ └── RedisRepository.java │ │ │ └── util │ │ │ └── RedisObjectSerializer.java │ │ └── resources │ │ ├── META-INF │ │ └── spring.factories │ │ └── limit.lua ├── knd-ribbon-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── com │ │ │ └── kernel │ │ │ │ └── common │ │ │ │ └── ribbon │ │ │ │ ├── FeignAutoConfigure.java │ │ │ │ ├── LbIsolationAutoConfigure.java │ │ │ │ ├── RestTemplateAutoConfigure.java │ │ │ │ ├── RibbonAutoConfigure.java │ │ │ │ ├── annotation │ │ │ │ ├── EnableBaseFeignInterceptor.java │ │ │ │ └── EnableFeignInterceptor.java │ │ │ │ ├── config │ │ │ │ ├── FeignHttpInterceptorConfig.java │ │ │ │ ├── FeignInterceptorConfig.java │ │ │ │ ├── RestTemplateProperties.java │ │ │ │ └── RuleConfigure.java │ │ │ │ ├── filter │ │ │ │ └── LbIsolationFilter.java │ │ │ │ └── rule │ │ │ │ └── CustomIsolationRule.java │ │ └── org │ │ │ └── springframework │ │ │ └── cloud │ │ │ └── netflix │ │ │ └── ribbon │ │ │ └── DefaultPropertiesFactory.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── knd-sentinel-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── sentinel │ │ │ └── config │ │ │ └── SentinelAutoConfigure.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── knd-swagger2-springboot-starter │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ └── common │ │ │ └── swagger2 │ │ │ ├── Swagger2Configuration.java │ │ │ ├── SwaggerAutoConfiguration.java │ │ │ └── SwaggerProperties.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories └── pom.xml ├── knd-demo └── pom.xml ├── knd-micro ├── micro-auth2 │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── kernel │ │ │ │ ├── UaaServerApp.java │ │ │ │ └── oauth │ │ │ │ ├── config │ │ │ │ ├── AuthorizationServerConfig.java │ │ │ │ ├── ClientDetailsConfig.java │ │ │ │ ├── MybatisPlusConfig.java │ │ │ │ ├── SecurityConfig.java │ │ │ │ ├── SecurityHandlerConfig.java │ │ │ │ ├── ValidateCodeSecurityConfig.java │ │ │ │ └── WebMvcConfig.java │ │ │ │ ├── controller │ │ │ │ ├── ClientController.java │ │ │ │ ├── OAuth2Controller.java │ │ │ │ ├── TokensController.java │ │ │ │ └── ValidateCodeController.java │ │ │ │ ├── dto │ │ │ │ └── ClientDto.java │ │ │ │ ├── exception │ │ │ │ └── ValidateCodeException.java │ │ │ │ ├── filter │ │ │ │ └── ValidateCodeFilter.java │ │ │ │ ├── handler │ │ │ │ └── OauthLogoutHandler.java │ │ │ │ ├── mapper │ │ │ │ └── ClientMapper.java │ │ │ │ ├── mobile │ │ │ │ ├── MobileAuthenticationProvider.java │ │ │ │ └── MobileAuthenticationSecurityConfig.java │ │ │ │ ├── model │ │ │ │ ├── Client.java │ │ │ │ └── TokenVo.java │ │ │ │ ├── openid │ │ │ │ ├── OpenIdAuthenticationProvider.java │ │ │ │ └── OpenIdAuthenticationSecurityConfig.java │ │ │ │ └── service │ │ │ │ ├── IClientService.java │ │ │ │ ├── ITokensService.java │ │ │ │ ├── IValidateCodeService.java │ │ │ │ ├── KndUserDetailsService.java │ │ │ │ └── impl │ │ │ │ ├── ClientServiceImpl.java │ │ │ │ ├── RedisAuthorizationCodeServices.java │ │ │ │ ├── RedisClientDetailsService.java │ │ │ │ ├── RedisTokensServiceImpl.java │ │ │ │ ├── UserDetailServiceImpl.java │ │ │ │ └── ValidateCodeServiceImpl.java │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── bootstrap.yml │ │ │ ├── knd.jks │ │ │ ├── mapper │ │ │ └── ClientMapper.xml │ │ │ ├── pubkey.txt │ │ │ └── static │ │ │ ├── css │ │ │ ├── common.css │ │ │ └── reset.css │ │ │ ├── images │ │ │ ├── cut.jpg │ │ │ ├── logo_bg.jpg │ │ │ └── logowz.png │ │ │ ├── js │ │ │ ├── common.js │ │ │ └── jquery.min.js │ │ │ └── login.html │ │ └── test │ │ └── java │ │ └── com │ │ └── central │ │ └── oauth2 │ │ └── common │ │ └── util │ │ └── JwtUtilsTest.java ├── micro-gateway │ ├── pom.xml │ ├── scloud-gateway │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── kernel │ │ │ │ ├── SCGatewayApp.java │ │ │ │ └── gateway │ │ │ │ ├── auth │ │ │ │ ├── CustomAuthenticationManager.java │ │ │ │ ├── JsonAccessDeniedHandler.java │ │ │ │ ├── JsonAuthenticationEntryPoint.java │ │ │ │ ├── Oauth2AuthSuccessHandler.java │ │ │ │ └── PermissionAuthManager.java │ │ │ │ ├── config │ │ │ │ ├── CorsConfig.java │ │ │ │ ├── DynamicRouteConfig.java │ │ │ │ └── ResourceServerConfiguration.java │ │ │ │ ├── feign │ │ │ │ ├── MenuService.java │ │ │ │ └── fallback │ │ │ │ │ └── MenuServiceFallbackFactory.java │ │ │ │ ├── filter │ │ │ │ ├── LbIsolationFilter.java │ │ │ │ ├── RequestStatisticsFilter.java │ │ │ │ └── TraceFilter.java │ │ │ │ ├── route │ │ │ │ └── NacosRouteDefinitionRepository.java │ │ │ │ ├── swagger │ │ │ │ ├── SwaggerAggProperties.java │ │ │ │ ├── SwaggerHandler.java │ │ │ │ └── SwaggerProvider.java │ │ │ │ └── utils │ │ │ │ └── ReactiveAddrUtil.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── bootstrap.yml │ │ │ └── pubkey.txt │ └── zuul-gateway │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ ├── GatewayApp.java │ │ │ └── gateway │ │ │ ├── config │ │ │ ├── AsycTaskExecutorConfig.java │ │ │ ├── CorsConfigration.java │ │ │ ├── DynamicZuulRouteConfig.java │ │ │ ├── ResourceServerConfiguration.java │ │ │ ├── SwaggerConfig.java │ │ │ └── ZuulRouteEntity.java │ │ │ ├── feign │ │ │ ├── MenuService.java │ │ │ └── fallback │ │ │ │ └── MenuServiceFallbackFactory.java │ │ │ ├── filter │ │ │ └── pre │ │ │ │ ├── RequestStatisticsFilter.java │ │ │ │ ├── TraceFilter.java │ │ │ │ └── UserInfoHeaderFilter.java │ │ │ ├── route │ │ │ ├── AbstractDynRouteLocator.java │ │ │ └── nacos │ │ │ │ └── NacosDynRouteLocator.java │ │ │ └── service │ │ │ └── impl │ │ │ └── PermissionServiceImpl.java │ │ └── resources │ │ ├── META-INF │ │ └── additional-spring-configuration-metadata.json │ │ ├── application.yml │ │ ├── bootstrap.yml │ │ └── pubkey.txt ├── micro-job │ ├── job-admin │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── xxl │ │ │ │ │ └── job │ │ │ │ │ └── admin │ │ │ │ │ ├── JobAdminApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ ├── IndexController.java │ │ │ │ │ ├── JobApiController.java │ │ │ │ │ ├── JobCodeController.java │ │ │ │ │ ├── JobGroupController.java │ │ │ │ │ ├── JobInfoController.java │ │ │ │ │ ├── JobLogController.java │ │ │ │ │ ├── annotation │ │ │ │ │ │ └── PermessionLimit.java │ │ │ │ │ ├── interceptor │ │ │ │ │ │ ├── CookieInterceptor.java │ │ │ │ │ │ ├── PermissionInterceptor.java │ │ │ │ │ │ └── WebMvcConfig.java │ │ │ │ │ └── resolver │ │ │ │ │ │ └── WebExceptionResolver.java │ │ │ │ │ ├── core │ │ │ │ │ ├── conf │ │ │ │ │ │ ├── XxlJobAdminConfig.java │ │ │ │ │ │ └── XxlJobDynamicSchedulerConfig.java │ │ │ │ │ ├── jobbean │ │ │ │ │ │ └── RemoteHttpJobBean.java │ │ │ │ │ ├── model │ │ │ │ │ │ ├── XxlJobGroup.java │ │ │ │ │ │ ├── XxlJobInfo.java │ │ │ │ │ │ ├── XxlJobLog.java │ │ │ │ │ │ ├── XxlJobLogGlue.java │ │ │ │ │ │ └── XxlJobRegistry.java │ │ │ │ │ ├── route │ │ │ │ │ │ ├── ExecutorRouteStrategyEnum.java │ │ │ │ │ │ ├── ExecutorRouter.java │ │ │ │ │ │ └── strategy │ │ │ │ │ │ │ ├── ExecutorRouteBusyover.java │ │ │ │ │ │ │ ├── ExecutorRouteConsistentHash.java │ │ │ │ │ │ │ ├── ExecutorRouteFailover.java │ │ │ │ │ │ │ ├── ExecutorRouteFirst.java │ │ │ │ │ │ │ ├── ExecutorRouteLFU.java │ │ │ │ │ │ │ ├── ExecutorRouteLRU.java │ │ │ │ │ │ │ ├── ExecutorRouteLast.java │ │ │ │ │ │ │ ├── ExecutorRouteRandom.java │ │ │ │ │ │ │ └── ExecutorRouteRound.java │ │ │ │ │ ├── schedule │ │ │ │ │ │ └── XxlJobDynamicScheduler.java │ │ │ │ │ ├── thread │ │ │ │ │ │ ├── JobFailMonitorHelper.java │ │ │ │ │ │ ├── JobRegistryMonitorHelper.java │ │ │ │ │ │ └── JobTriggerPoolHelper.java │ │ │ │ │ ├── trigger │ │ │ │ │ │ ├── TriggerTypeEnum.java │ │ │ │ │ │ └── XxlJobTrigger.java │ │ │ │ │ └── util │ │ │ │ │ │ ├── CookieUtil.java │ │ │ │ │ │ ├── FtlUtil.java │ │ │ │ │ │ ├── I18nUtil.java │ │ │ │ │ │ └── LocalCacheUtil.java │ │ │ │ │ ├── dao │ │ │ │ │ ├── XxlJobGroupDao.java │ │ │ │ │ ├── XxlJobInfoDao.java │ │ │ │ │ ├── XxlJobLogDao.java │ │ │ │ │ ├── XxlJobLogGlueDao.java │ │ │ │ │ └── XxlJobRegistryDao.java │ │ │ │ │ └── service │ │ │ │ │ ├── XxlJobService.java │ │ │ │ │ └── impl │ │ │ │ │ ├── AdminBizImpl.java │ │ │ │ │ └── XxlJobServiceImpl.java │ │ │ └── resources │ │ │ │ ├── application-dev.properties │ │ │ │ ├── application-test.properties │ │ │ │ ├── application.properties │ │ │ │ ├── i18n │ │ │ │ ├── message.properties │ │ │ │ └── message_en.properties │ │ │ │ ├── logback.xml │ │ │ │ ├── mybatis-mapper │ │ │ │ ├── XxlJobGroupMapper.xml │ │ │ │ ├── XxlJobInfoMapper.xml │ │ │ │ ├── XxlJobLogGlueMapper.xml │ │ │ │ ├── XxlJobLogMapper.xml │ │ │ │ └── XxlJobRegistryMapper.xml │ │ │ │ ├── quartz.properties │ │ │ │ ├── static │ │ │ │ ├── adminlte │ │ │ │ │ ├── bower_components │ │ │ │ │ │ ├── Ionicons │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ └── ionicons.min.css │ │ │ │ │ │ │ └── fonts │ │ │ │ │ │ │ │ ├── ionicons.eot │ │ │ │ │ │ │ │ ├── ionicons.svg │ │ │ │ │ │ │ │ ├── ionicons.ttf │ │ │ │ │ │ │ │ └── ionicons.woff │ │ │ │ │ │ ├── PACE │ │ │ │ │ │ │ ├── pace.min.js │ │ │ │ │ │ │ └── themes │ │ │ │ │ │ │ │ └── blue │ │ │ │ │ │ │ │ └── pace-theme-flash.css │ │ │ │ │ │ ├── bootstrap-daterangepicker │ │ │ │ │ │ │ ├── daterangepicker.css │ │ │ │ │ │ │ └── daterangepicker.js │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ │ │ │ └── bootstrap.min.css │ │ │ │ │ │ │ ├── fonts │ │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── datatables.net-bs │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ └── dataTables.bootstrap.min.css │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ └── dataTables.bootstrap.min.js │ │ │ │ │ │ ├── datatables.net │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ └── jquery.dataTables.min.js │ │ │ │ │ │ ├── fastclick │ │ │ │ │ │ │ └── fastclick.js │ │ │ │ │ │ ├── font-awesome │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ ├── font-awesome.css.map │ │ │ │ │ │ │ │ └── font-awesome.min.css │ │ │ │ │ │ │ └── fonts │ │ │ │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ │ │ │ ├── jquery-slimscroll │ │ │ │ │ │ │ └── jquery.slimscroll.min.js │ │ │ │ │ │ ├── jquery │ │ │ │ │ │ │ └── jquery.min.js │ │ │ │ │ │ └── moment │ │ │ │ │ │ │ └── moment.min.js │ │ │ │ │ ├── dist │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ ├── AdminLTE.min.css │ │ │ │ │ │ │ └── skins │ │ │ │ │ │ │ │ └── _all-skins.min.css │ │ │ │ │ │ └── js │ │ │ │ │ │ │ └── adminlte.min.js │ │ │ │ │ └── plugins │ │ │ │ │ │ └── iCheck │ │ │ │ │ │ ├── icheck.min.js │ │ │ │ │ │ └── square │ │ │ │ │ │ ├── blue.css │ │ │ │ │ │ ├── blue.png │ │ │ │ │ │ └── blue@2x.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── js │ │ │ │ │ ├── common.1.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── jobcode.index.1.js │ │ │ │ │ ├── jobgroup.index.1.js │ │ │ │ │ ├── jobinfo.index.1.js │ │ │ │ │ ├── joblog.detail.1.js │ │ │ │ │ ├── joblog.index.1.js │ │ │ │ │ └── login.1.js │ │ │ │ └── plugins │ │ │ │ │ ├── codemirror │ │ │ │ │ ├── addon │ │ │ │ │ │ └── hint │ │ │ │ │ │ │ ├── anyword-hint.js │ │ │ │ │ │ │ ├── show-hint.css │ │ │ │ │ │ │ └── show-hint.js │ │ │ │ │ ├── lib │ │ │ │ │ │ ├── codemirror.css │ │ │ │ │ │ └── codemirror.js │ │ │ │ │ └── mode │ │ │ │ │ │ ├── clike │ │ │ │ │ │ └── clike.js │ │ │ │ │ │ ├── javascript │ │ │ │ │ │ └── javascript.js │ │ │ │ │ │ ├── php │ │ │ │ │ │ └── php.js │ │ │ │ │ │ ├── powershell │ │ │ │ │ │ └── powershell.js │ │ │ │ │ │ ├── python │ │ │ │ │ │ └── python.js │ │ │ │ │ │ └── shell │ │ │ │ │ │ └── shell.js │ │ │ │ │ ├── echarts │ │ │ │ │ └── echarts.common.min.js │ │ │ │ │ ├── jquery │ │ │ │ │ ├── jquery.cookie.js │ │ │ │ │ └── jquery.validate.min.js │ │ │ │ │ └── layer │ │ │ │ │ ├── layer.js │ │ │ │ │ └── theme │ │ │ │ │ └── default │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── layer.css │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ └── loading-2.gif │ │ │ │ └── templates │ │ │ │ ├── common │ │ │ │ ├── common.exception.ftl │ │ │ │ └── common.macro.ftl │ │ │ │ ├── help.ftl │ │ │ │ ├── index.ftl │ │ │ │ ├── jobcode │ │ │ │ └── jobcode.index.ftl │ │ │ │ ├── jobgroup │ │ │ │ └── jobgroup.index.ftl │ │ │ │ ├── jobinfo │ │ │ │ └── jobinfo.index.ftl │ │ │ │ ├── joblog │ │ │ │ ├── joblog.detail.ftl │ │ │ │ └── joblog.index.ftl │ │ │ │ └── login.ftl │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── xxl │ │ │ └── job │ │ │ ├── admin │ │ │ ├── controller │ │ │ │ ├── AbstractSpringMvcTest.java │ │ │ │ └── JobInfoControllerTest.java │ │ │ ├── dao │ │ │ │ ├── XxlJobGroupDaoTest.java │ │ │ │ ├── XxlJobInfoDaoTest.java │ │ │ │ ├── XxlJobLogDaoTest.java │ │ │ │ ├── XxlJobLogGlueDaoTest.java │ │ │ │ └── XxlJobRegistryDaoTest.java │ │ │ └── util │ │ │ │ └── I18nUtilTest.java │ │ │ ├── adminbiz │ │ │ └── AdminBizTest.java │ │ │ └── executor │ │ │ └── ExecutorBizTest.java │ ├── job-core │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── xxl │ │ │ └── job │ │ │ └── core │ │ │ ├── biz │ │ │ ├── AdminBiz.java │ │ │ ├── ExecutorBiz.java │ │ │ ├── impl │ │ │ │ └── ExecutorBizImpl.java │ │ │ └── model │ │ │ │ ├── HandleCallbackParam.java │ │ │ │ ├── LogResult.java │ │ │ │ ├── RegistryParam.java │ │ │ │ ├── ReturnT.java │ │ │ │ └── TriggerParam.java │ │ │ ├── enums │ │ │ ├── ExecutorBlockStrategyEnum.java │ │ │ └── RegistryConfig.java │ │ │ ├── executor │ │ │ ├── XxlJobExecutor.java │ │ │ └── impl │ │ │ │ └── XxlJobSpringExecutor.java │ │ │ ├── glue │ │ │ ├── GlueFactory.java │ │ │ ├── GlueTypeEnum.java │ │ │ └── impl │ │ │ │ └── SpringGlueFactory.java │ │ │ ├── handler │ │ │ ├── IJobHandler.java │ │ │ ├── annotation │ │ │ │ └── JobHandler.java │ │ │ └── impl │ │ │ │ ├── GlueJobHandler.java │ │ │ │ └── ScriptJobHandler.java │ │ │ ├── log │ │ │ ├── XxlJobFileAppender.java │ │ │ └── XxlJobLogger.java │ │ │ ├── thread │ │ │ ├── ExecutorRegistryThread.java │ │ │ ├── JobLogFileCleanThread.java │ │ │ ├── JobThread.java │ │ │ └── TriggerCallbackThread.java │ │ │ └── util │ │ │ ├── DateUtil.java │ │ │ ├── FileUtil.java │ │ │ ├── JacksonUtil.java │ │ │ ├── ScriptUtil.java │ │ │ └── ShardingUtil.java │ ├── job-executor-samples │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── xxl │ │ │ │ │ └── job │ │ │ │ │ └── executor │ │ │ │ │ ├── JobExecutorApplication.java │ │ │ │ │ ├── core │ │ │ │ │ └── config │ │ │ │ │ │ └── XxlJobConfig.java │ │ │ │ │ ├── mvc │ │ │ │ │ └── controller │ │ │ │ │ │ └── IndexController.java │ │ │ │ │ └── service │ │ │ │ │ └── jobhandler │ │ │ │ │ ├── CommandJobHandler.java │ │ │ │ │ ├── DemoJobHandler.java │ │ │ │ │ ├── HttpJobHandler.java │ │ │ │ │ └── ShardingJobHandler.java │ │ │ └── resources │ │ │ │ ├── application-dev.properties │ │ │ │ ├── application-test.properties │ │ │ │ ├── application.properties │ │ │ │ └── logback.xml │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── xxl │ │ │ └── job │ │ │ └── executor │ │ │ └── test │ │ │ └── XxlJobExecutorExampleBootApplicationTests.java │ └── pom.xml ├── micro-monitor │ ├── monitor-admin │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── kernel │ │ │ │ └── gateway │ │ │ │ ├── MonitorApp.java │ │ │ │ └── monitor │ │ │ │ └── config │ │ │ │ └── SecuritySecureConfig.java │ │ │ └── resources │ │ │ └── bootstrap.yml │ ├── monitor-logcenter │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── kernel │ │ │ │ ├── LogApp.java │ │ │ │ └── log │ │ │ │ ├── config │ │ │ │ └── ExceptionAdvice.java │ │ │ │ └── controller │ │ │ │ ├── AggregationController.java │ │ │ │ ├── AuditLogController.java │ │ │ │ ├── SlowQueryLogController.java │ │ │ │ └── SysLogController.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ └── bootstrap.yml │ └── pom.xml ├── micro-nacos-config │ ├── pom.xml │ └── src │ │ └── main │ │ └── resources │ │ ├── application-dev.properties │ │ ├── application-prod.properties │ │ ├── application-test.properties │ │ ├── application.properties │ │ └── bootstrap.properties ├── micro-register │ └── nacos │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── bin │ │ ├── derby.log │ │ ├── shutdown.cmd │ │ ├── shutdown.sh │ │ ├── startup.cmd │ │ └── startup.sh │ │ ├── conf │ │ ├── application.properties │ │ ├── application.properties.example │ │ ├── cluster.conf.example │ │ ├── nacos-logback.xml │ │ ├── nacos-mysql.sql │ │ └── schema.sql │ │ └── data │ │ ├── derby-data │ │ ├── README_DO_NOT_TOUCH_FILES.txt │ │ ├── db.lck │ │ ├── log │ │ │ ├── README_DO_NOT_TOUCH_FILES.txt │ │ │ ├── log.ctrl │ │ │ ├── log1.dat │ │ │ └── logmirror.ctrl │ │ ├── seg0 │ │ │ ├── README_DO_NOT_TOUCH_FILES.txt │ │ │ ├── c10.dat │ │ │ ├── c101.dat │ │ │ ├── c111.dat │ │ │ ├── c121.dat │ │ │ ├── c130.dat │ │ │ ├── c141.dat │ │ │ ├── c150.dat │ │ │ ├── c161.dat │ │ │ ├── c171.dat │ │ │ ├── c180.dat │ │ │ ├── c191.dat │ │ │ ├── c1a1.dat │ │ │ ├── c1b1.dat │ │ │ ├── c1c0.dat │ │ │ ├── c1d1.dat │ │ │ ├── c1e0.dat │ │ │ ├── c1f1.dat │ │ │ ├── c20.dat │ │ │ ├── c200.dat │ │ │ ├── c211.dat │ │ │ ├── c221.dat │ │ │ ├── c230.dat │ │ │ ├── c241.dat │ │ │ ├── c251.dat │ │ │ ├── c260.dat │ │ │ ├── c271.dat │ │ │ ├── c281.dat │ │ │ ├── c290.dat │ │ │ ├── c2a1.dat │ │ │ ├── c2b1.dat │ │ │ ├── c2c1.dat │ │ │ ├── c2d0.dat │ │ │ ├── c2e1.dat │ │ │ ├── c2f0.dat │ │ │ ├── c300.dat │ │ │ ├── c31.dat │ │ │ ├── c311.dat │ │ │ ├── c321.dat │ │ │ ├── c331.dat │ │ │ ├── c340.dat │ │ │ ├── c351.dat │ │ │ ├── c361.dat │ │ │ ├── c371.dat │ │ │ ├── c380.dat │ │ │ ├── c391.dat │ │ │ ├── c3a1.dat │ │ │ ├── c3b1.dat │ │ │ ├── c3c0.dat │ │ │ ├── c3d1.dat │ │ │ ├── c3e1.dat │ │ │ ├── c3f1.dat │ │ │ ├── c400.dat │ │ │ ├── c41.dat │ │ │ ├── c411.dat │ │ │ ├── c421.dat │ │ │ ├── c430.dat │ │ │ ├── c441.dat │ │ │ ├── c451.dat │ │ │ ├── c461.dat │ │ │ ├── c470.dat │ │ │ ├── c481.dat │ │ │ ├── c490.dat │ │ │ ├── c4a1.dat │ │ │ ├── c4b1.dat │ │ │ ├── c4c1.dat │ │ │ ├── c4d1.dat │ │ │ ├── c4e1.dat │ │ │ ├── c4f0.dat │ │ │ ├── c501.dat │ │ │ ├── c51.dat │ │ │ ├── c511.dat │ │ │ ├── c521.dat │ │ │ ├── c531.dat │ │ │ ├── c540.dat │ │ │ ├── c551.dat │ │ │ ├── c561.dat │ │ │ ├── c570.dat │ │ │ ├── c581.dat │ │ │ ├── c591.dat │ │ │ ├── c5a0.dat │ │ │ ├── c5b1.dat │ │ │ ├── c5c1.dat │ │ │ ├── c5d0.dat │ │ │ ├── c5e1.dat │ │ │ ├── c5f1.dat │ │ │ ├── c60.dat │ │ │ ├── c600.dat │ │ │ ├── c611.dat │ │ │ ├── c621.dat │ │ │ ├── c630.dat │ │ │ ├── c641.dat │ │ │ ├── c651.dat │ │ │ ├── c660.dat │ │ │ ├── c671.dat │ │ │ ├── c681.dat │ │ │ ├── c691.dat │ │ │ ├── c6a0.dat │ │ │ ├── c6b1.dat │ │ │ ├── c6c1.dat │ │ │ ├── c6d0.dat │ │ │ ├── c6e1.dat │ │ │ ├── c6f1.dat │ │ │ ├── c700.dat │ │ │ ├── c71.dat │ │ │ ├── c711.dat │ │ │ ├── c721.dat │ │ │ ├── c731.dat │ │ │ ├── c740.dat │ │ │ ├── c751.dat │ │ │ ├── c760.dat │ │ │ ├── c771.dat │ │ │ ├── c780.dat │ │ │ ├── c791.dat │ │ │ ├── c81.dat │ │ │ ├── c90.dat │ │ │ ├── ca1.dat │ │ │ ├── cb1.dat │ │ │ ├── cc0.dat │ │ │ ├── cd1.dat │ │ │ ├── ce1.dat │ │ │ ├── cf0.dat │ │ │ ├── d7a0.dat │ │ │ ├── d7b0.dat │ │ │ ├── d7c0.dat │ │ │ ├── d7d0.dat │ │ │ ├── d7e0.dat │ │ │ ├── d7f0.dat │ │ │ ├── d800.dat │ │ │ ├── d810.dat │ │ │ ├── d820.dat │ │ │ ├── d830.dat │ │ │ ├── d840.dat │ │ │ ├── d850.dat │ │ │ ├── d860.dat │ │ │ ├── d870.dat │ │ │ └── d880.dat │ │ └── service.properties │ │ └── naming │ │ └── meta.properties ├── micro-search │ ├── pom.xml │ ├── search-client │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── kernel │ │ │ └── search │ │ │ ├── annotation │ │ │ └── EnableSearchClient.java │ │ │ ├── client │ │ │ ├── feign │ │ │ │ ├── AggregationService.java │ │ │ │ ├── SearchService.java │ │ │ │ └── fallback │ │ │ │ │ ├── AggregationServiceFallbackFactory.java │ │ │ │ │ └── SearchServiceFallbackFactory.java │ │ │ └── service │ │ │ │ ├── IQueryService.java │ │ │ │ └── impl │ │ │ │ └── QueryServiceImpl.java │ │ │ └── model │ │ │ ├── AggItemVo.java │ │ │ ├── LogicDelDto.java │ │ │ └── SearchDto.java │ └── search-server │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── kernel │ │ │ ├── SearchCenterApp.java │ │ │ ├── admin │ │ │ ├── controller │ │ │ │ └── IndexController.java │ │ │ ├── model │ │ │ │ ├── IndexDto.java │ │ │ │ └── IndexVo.java │ │ │ ├── properties │ │ │ │ └── IndexProperties.java │ │ │ └── service │ │ │ │ ├── IIndexService.java │ │ │ │ └── impl │ │ │ │ └── IndexServiceImpl.java │ │ │ ├── common │ │ │ └── config │ │ │ │ ├── AsycTaskExecutorConfig.java │ │ │ │ ├── ExceptionAdvice.java │ │ │ │ └── WebMvcConfig.java │ │ │ └── search │ │ │ ├── controller │ │ │ ├── AggregationController.java │ │ │ └── SearchController.java │ │ │ ├── service │ │ │ ├── IAggregationService.java │ │ │ ├── ISearchService.java │ │ │ └── impl │ │ │ │ ├── AggregationServiceImpl.java │ │ │ │ └── SearchServiceImpl.java │ │ │ └── util │ │ │ └── SearchBuilder.java │ │ └── resources │ │ ├── application.yml │ │ └── bootstrap.yml ├── micro-transaction │ ├── pom.xml │ └── txlcn-tm-transaction │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── txlcn │ │ │ └── tm │ │ │ └── TransactionManagerApplication.java │ │ └── resources │ │ ├── application.properties │ │ └── bootstrap.properties └── pom.xml └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | logs/ 3 | target/ 4 | .txlcn/ 5 | 6 | *.iml 7 | *.versionsBackup -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/config/SecurityPropertiesConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.config; 2 | 3 | import com.kernel.oauth2.common.properties.SecurityProperties; 4 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 5 | 6 | /** 7 | * @author knd 8 | * @date 2020/3/21 9 | *

10 | */ 11 | @EnableConfigurationProperties(SecurityProperties.class) 12 | public class SecurityPropertiesConfig { 13 | } 14 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/constants/AuthoritiesEnum.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.constants; 2 | 3 | /** 4 | * 权限常量 5 | * 6 | * @author knd 7 | * @date 2020/3/21 8 | */ 9 | public enum AuthoritiesEnum { 10 | /** 11 | * 管理员 12 | */ 13 | ADMIN("ROLE_ADMIN"), 14 | /** 15 | * 普通用户 16 | */ 17 | USER("ROLE_USER"), 18 | /** 19 | * 匿名用户 20 | */ 21 | ANONYMOUS("ROLE_ANONYMOUS"); 22 | 23 | private String role; 24 | 25 | AuthoritiesEnum(String role) { 26 | this.role = role; 27 | } 28 | 29 | public String getRole() { 30 | return role; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/properties/AuthProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 认证配置 8 | * 9 | * @author knd 10 | */ 11 | @Setter 12 | @Getter 13 | public class AuthProperties { 14 | /** 15 | * 配置要认证的url(默认不需要配置) 16 | * 17 | * 优先级大于忽略认证配置`knd.security.ignore.httpUrls` 18 | * 意思是如果同一个url同时配置了`忽略认证`和`需要认证`,则该url还是会被认证 19 | */ 20 | private String[] httpUrls = {}; 21 | 22 | /** 23 | * token自动续签配置(目前只有redis实现) 24 | */ 25 | private RenewProperties renew = new RenewProperties(); 26 | 27 | /** 28 | * url权限配置 29 | */ 30 | private UrlPermissionProperties urlPermission = new UrlPermissionProperties(); 31 | } 32 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/properties/RenewProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * 续签配置 11 | * 12 | * @author knd 13 | * @date 2020/3/21 14 | */ 15 | @Setter 16 | @Getter 17 | public class RenewProperties { 18 | /** 19 | * 是否开启token自动续签(目前只有redis实现) 20 | */ 21 | private Boolean enable = false; 22 | 23 | /** 24 | * 白名单,配置需要自动续签的应用id(与黑名单互斥,只能配置其中一个),不配置默认所有应用都生效 25 | * 配置enable为true时才生效 26 | */ 27 | private List includeClientIds = new ArrayList<>(); 28 | 29 | /** 30 | * 黑名单,配置不需要自动续签的应用id(与白名单互斥,只能配置其中一个) 31 | * 配置enable为true时才生效 32 | */ 33 | private List exclusiveClientIds = new ArrayList<>(); 34 | 35 | /** 36 | * 续签时间比例,当前剩余时间小于小于过期总时长的50%则续签 37 | */ 38 | private Double timeRatio = 0.5; 39 | } 40 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/properties/SecurityProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | 8 | /** 9 | * @author knd 10 | * @date 2020/3/21 11 | */ 12 | @Setter 13 | @Getter 14 | @ConfigurationProperties(prefix = "knd.security") 15 | @RefreshScope 16 | public class SecurityProperties { 17 | private AuthProperties auth = new AuthProperties(); 18 | 19 | private PermitProperties ignore = new PermitProperties(); 20 | 21 | private ValidateCodeProperties code = new ValidateCodeProperties(); 22 | } 23 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/properties/UrlPermissionProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * url权限配置 11 | * 12 | * @author knd 13 | * @date 2020/3/21 14 | */ 15 | @Setter 16 | @Getter 17 | public class UrlPermissionProperties { 18 | /** 19 | * 是否开启url级别权限 20 | */ 21 | private Boolean enable = false; 22 | 23 | /** 24 | * 白名单,配置需要url权限认证的应用id(与黑名单互斥,只能配置其中一个),不配置默认所有应用都生效 25 | * 配置enable为true时才生效 26 | */ 27 | private List includeClientIds = new ArrayList<>(); 28 | 29 | /** 30 | * 黑名单,配置不需要url权限认证的应用id(与白名单互斥,只能配置其中一个) 31 | * 配置enable为true时才生效 32 | */ 33 | private List exclusiveClientIds = new ArrayList<>(); 34 | 35 | /** 36 | * 配置只进行登录认证,不进行url权限认证的api 37 | * 所有已登录的人都能访问的api 38 | */ 39 | private String[] ignoreUrls = {}; 40 | } 41 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/properties/ValidateCodeProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 验证码配置 8 | * 9 | * @author knd 10 | * @date 2020/3/21 11 | */ 12 | @Setter 13 | @Getter 14 | public class ValidateCodeProperties { 15 | /** 16 | * 设置认证通时不需要验证码的clientId 17 | */ 18 | private String[] ignoreClientCode = {}; 19 | } 20 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/store/AuthDbTokenStore.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.store; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.security.oauth2.provider.token.TokenStore; 6 | import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore; 7 | 8 | import javax.sql.DataSource; 9 | 10 | /** 11 | * 认证服务器使用数据库存取令牌 12 | * 13 | * @author knd 14 | * @date 2020/3/21 15 | */ 16 | public class AuthDbTokenStore { 17 | 18 | @Autowired 19 | private DataSource dataSource; 20 | 21 | @Bean 22 | public TokenStore tokenStore(){ 23 | return new JdbcTokenStore(dataSource); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/java/com/kernel/oauth2/common/store/AuthRedisTokenStore.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth2.common.store; 2 | 3 | import com.kernel.oauth2.common.properties.SecurityProperties; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.data.redis.connection.RedisConnectionFactory; 7 | import org.springframework.security.oauth2.provider.token.TokenStore; 8 | 9 | /** 10 | * 认证服务器使用Redis存取令牌 11 | * 注意: 需要配置redis参数 12 | * 13 | * @author knd 14 | * @date 2020/3/21 15 | */ 16 | public class AuthRedisTokenStore { 17 | @Autowired 18 | private RedisConnectionFactory connectionFactory; 19 | 20 | @Autowired 21 | private SecurityProperties securityProperties; 22 | 23 | @Bean 24 | public TokenStore tokenStore() { 25 | return new CustomRedisTokenStore(connectionFactory, securityProperties); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /knd-commons/knd-authclient-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.oauth2.common.config.SecurityPropertiesConfig -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/annotation/LoginClient.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 请求的方法参数上添加该注解,则注入当前登录账号的应用id 7 | * 例:public void test(@LoginClient String clientId) //注入webApp 8 | * 9 | * @author kndopensource 10 | * @date 2018/7/24 16:44 11 | */ 12 | @Target(ElementType.PARAMETER) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | public @interface LoginClient { 16 | } 17 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/annotation/LoginUser.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 请求的方法参数SysUser上添加该注解,则注入当前登录人信息 7 | * 例1:public void test(@LoginUser SysUser user) //只有username 和 roles 8 | * 例2:public void test(@LoginUser(isFull = true) SysUser user) //能获取SysUser对象的所有信息 9 | * 10 | * @author kndopensource 11 | * @date 2018/7/24 16:44 12 | */ 13 | @Target(ElementType.PARAMETER) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Documented 16 | public @interface LoginUser { 17 | /** 18 | * 是否查询SysUser对象所有信息,true则通过rpc接口查询 19 | */ 20 | boolean isFull() default false; 21 | } 22 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/config/DefaultPasswordConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 5 | import org.springframework.security.crypto.password.PasswordEncoder; 6 | 7 | /** 8 | * @author kndopensource 9 | * 密码工具类 10 | */ 11 | public class DefaultPasswordConfig { 12 | /** 13 | * 装配BCryptPasswordEncoder用户密码的匹配 14 | * @return 15 | */ 16 | @Bean 17 | public PasswordEncoder passwordEncoder() { 18 | return new BCryptPasswordEncoder(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/config/LoginArgResolverConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.config; 2 | 3 | import com.kernel.common.feign.UserService; 4 | import com.kernel.common.resolver.ClientArgumentResolver; 5 | import com.kernel.common.resolver.TokenArgumentResolver; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.context.annotation.Lazy; 8 | import org.springframework.web.method.support.HandlerMethodArgumentResolver; 9 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * 公共配置类, 一些公共工具配置 15 | * 16 | * @author kndopensource 17 | * @date 2018/8/25 18 | */ 19 | public class LoginArgResolverConfig implements WebMvcConfigurer { 20 | @Lazy 21 | @Autowired 22 | private UserService userService; 23 | /** 24 | * Token参数解析 25 | * 26 | * @param argumentResolvers 解析类 27 | */ 28 | @Override 29 | public void addArgumentResolvers(List argumentResolvers) { 30 | //注入用户信息 31 | argumentResolvers.add(new TokenArgumentResolver(userService)); 32 | //注入应用信息 33 | argumentResolvers.add(new ClientArgumentResolver()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/constant/ConfigConstants.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.constant; 2 | 3 | /** 4 | * 配置项常量 5 | * 6 | * @author kndopensource 7 | * @date 2019/9/3 8 | */ 9 | public interface ConfigConstants { 10 | /** 11 | * 是否开启自定义隔离规则 12 | */ 13 | String CONFIG_RIBBON_ISOLATION_ENABLED = "kndopensource.ribbon.isolation.enabled"; 14 | } 15 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/constant/ServiceNameConstants.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.constant; 2 | 3 | /** 4 | * 服务名称常量 5 | * 6 | * @author kndopensource 7 | * @date 2018/7/27 13:50 8 | */ 9 | public interface ServiceNameConstants { 10 | 11 | /** 12 | * 用户权限服务 13 | */ 14 | String USER_SERVICE = "user-center"; 15 | /** 16 | * 搜索中心服务 17 | */ 18 | String SEARCH_SERVICE = "search-center"; 19 | } 20 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/context/LbIsolationContextHolder.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.context; 2 | 3 | import com.alibaba.ttl.TransmittableThreadLocal; 4 | 5 | /** 6 | * 负载均衡策略Holder 7 | * 8 | * @author kndopensource 9 | * @date 2019/9/2 10 | */ 11 | public class LbIsolationContextHolder { 12 | private static final ThreadLocal VERSION_CONTEXT = new TransmittableThreadLocal<>(); 13 | 14 | public static void setVersion(String version) { 15 | VERSION_CONTEXT.set(version); 16 | } 17 | 18 | public static String getVersion() { 19 | return VERSION_CONTEXT.get(); 20 | } 21 | 22 | public static void clear() { 23 | VERSION_CONTEXT.remove(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/context/TenantContextHolder.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.context; 2 | 3 | import com.alibaba.ttl.TransmittableThreadLocal; 4 | 5 | /** 6 | * 租户holder 7 | * 8 | * @author kndopensource 9 | * @date 2019/8/5 10 | */ 11 | public class TenantContextHolder { 12 | /** 13 | * 支持父子线程之间的数据传递 14 | */ 15 | private static final ThreadLocal CONTEXT = new TransmittableThreadLocal<>(); 16 | 17 | public static void setTenant(String tenant) { 18 | CONTEXT.set(tenant); 19 | } 20 | 21 | public static String getTenant() { 22 | return CONTEXT.get(); 23 | } 24 | 25 | public static void clear() { 26 | CONTEXT.remove(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/enums/AbstractBaseExceptionEnum.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.enums; 2 | 3 | /** 4 | * roses异常规范 5 | * 6 | * @author fengshuonan 7 | * @date 2017-12-17-下午10:22 8 | */ 9 | public interface AbstractBaseExceptionEnum { 10 | 11 | /** 12 | * 获取异常的状态码 13 | */ 14 | Integer getCode(); 15 | 16 | /** 17 | * 获取异常的提示信息 18 | */ 19 | String getMessage(); 20 | } 21 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/enums/DeleteFlagEnum.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.enums; 2 | 3 | /** 4 | * 是否删除的标识 5 | * 6 | * @author fengshuonan 7 | * @Date 2018/7/24 下午5:31 8 | */ 9 | public enum DeleteFlagEnum { 10 | 11 | /** 12 | * 已删除 13 | */ 14 | Y, 15 | 16 | /** 17 | * 未删除 18 | */ 19 | N 20 | } 21 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/enums/YesOrNotEnum.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 是或者否的枚举 7 | * 8 | * @author stylefeng 9 | * @Date 2018/4/18 23:05 10 | */ 11 | @Getter 12 | public enum YesOrNotEnum { 13 | 14 | Y(true, "是", 1), 15 | 16 | N(false, "否", 0); 17 | 18 | private Boolean flag; 19 | private String desc; 20 | private Integer code; 21 | 22 | YesOrNotEnum(Boolean flag, String desc, Integer code) { 23 | this.flag = flag; 24 | this.desc = desc; 25 | this.code = code; 26 | } 27 | 28 | public static String valueOf(Integer status) { 29 | if (status == null) { 30 | return ""; 31 | } else { 32 | for (YesOrNotEnum s : YesOrNotEnum.values()) { 33 | if (s.getCode().equals(status)) { 34 | return s.getDesc(); 35 | } 36 | } 37 | return ""; 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/exception/BusinessException.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.exception; 2 | 3 | /** 4 | * 业务异常 5 | * 6 | * @author kndopensource 7 | */ 8 | public class BusinessException extends RuntimeException { 9 | private static final long serialVersionUID = 6610083281801529147L; 10 | 11 | public BusinessException(String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/exception/IdempotencyException.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.exception; 2 | 3 | /** 4 | * 幂等性异常 5 | * 6 | * @author kndopensource 7 | */ 8 | public class IdempotencyException extends RuntimeException { 9 | private static final long serialVersionUID = 6610083281801529147L; 10 | 11 | public IdempotencyException(String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/exception/LockException.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.exception; 2 | 3 | /** 4 | * 分布式锁异常 5 | * 6 | * @author kndopensource 7 | */ 8 | public class LockException extends RuntimeException { 9 | private static final long serialVersionUID = 6610083281801529147L; 10 | 11 | public LockException(String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/lock/AbstractDistributedLock.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.lock; 2 | 3 | /** 4 | * 分布式锁抽象类 5 | * 6 | * @author kndopensource 7 | * @date 2018/5/29 14:14 8 | */ 9 | public abstract class AbstractDistributedLock implements DistributedLock{ 10 | 11 | @Override 12 | public boolean lock(String key) { 13 | return lock(key, TIMEOUT_MILLIS, RETRY_TIMES, SLEEP_MILLIS); 14 | } 15 | 16 | @Override 17 | public boolean lock(String key, int retryTimes) { 18 | return lock(key, TIMEOUT_MILLIS, retryTimes, SLEEP_MILLIS); 19 | } 20 | 21 | @Override 22 | public boolean lock(String key, int retryTimes, long sleepMillis) { 23 | return lock(key, TIMEOUT_MILLIS, retryTimes, sleepMillis); 24 | } 25 | 26 | @Override 27 | public boolean lock(String key, long expire) { 28 | return lock(key, expire, RETRY_TIMES, SLEEP_MILLIS); 29 | } 30 | 31 | @Override 32 | public boolean lock(String key, long expire, int retryTimes) { 33 | return lock(key, expire, retryTimes, SLEEP_MILLIS); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/CodeEnum.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | /** 4 | * @Author: kndopensource 5 | */ 6 | public enum CodeEnum { 7 | SUCCESS(0), 8 | ERROR(1); 9 | 10 | private Integer code; 11 | CodeEnum(Integer code){ 12 | this.code = code; 13 | } 14 | 15 | public Integer getCode() { 16 | return code; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/PageResult.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | import lombok.AllArgsConstructor; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | /** 12 | * 分页实体类 13 | * 14 | * @author kndopensource 15 | */ 16 | @Data 17 | @Builder 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class PageResult implements Serializable { 21 | private static final long serialVersionUID = -275582248840137389L; 22 | /** 23 | * 总数 24 | */ 25 | private Long count; 26 | /** 27 | * 是否成功:0 成功、1 失败 28 | */ 29 | private int code; 30 | /** 31 | * 当前页结果集 32 | */ 33 | private List data; 34 | } 35 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/SuperEntity.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.extension.activerecord.Model; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | import java.io.Serializable; 11 | import java.util.Date; 12 | 13 | /** 14 | * 实体父类 15 | * 16 | * @author kndopensource 17 | */ 18 | @Setter 19 | @Getter 20 | public class SuperEntity> extends Model { 21 | /** 22 | * 主键ID 23 | */ 24 | @TableId 25 | private Long id; 26 | @TableField(fill = FieldFill.INSERT) 27 | private Date createTime; 28 | @TableField(fill = FieldFill.INSERT_UPDATE) 29 | private Date updateTime; 30 | 31 | @Override 32 | protected Serializable pkVal() { 33 | return this.id; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/SysMenu.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | import com.baomidou.mybatisplus.annotation.TableField; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | 11 | /** 12 | * @author kndopensource 13 | */ 14 | @Data 15 | @EqualsAndHashCode(callSuper = false) 16 | @TableName("sys_menu") 17 | public class SysMenu extends SuperEntity { 18 | private static final long serialVersionUID = 749360940290141180L; 19 | 20 | private Long parentId; 21 | private String name; 22 | private String css; 23 | private String url; 24 | private String path; 25 | private Integer sort; 26 | private Integer type; 27 | private Boolean hidden; 28 | /** 29 | * 请求的类型 30 | */ 31 | private String pathMethod; 32 | 33 | @TableField(exist = false) 34 | private List subMenus; 35 | @TableField(exist = false) 36 | private Long roleId; 37 | @TableField(exist = false) 38 | private Set menuIds; 39 | } 40 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/SysRole.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * @author kndopensource 9 | * 角色 10 | */ 11 | @Data 12 | @EqualsAndHashCode(callSuper = false) 13 | @TableName("sys_role") 14 | public class SysRole extends SuperEntity { 15 | private static final long serialVersionUID = 4497149010220586111L; 16 | private String code; 17 | private String name; 18 | private Long userId; 19 | } 20 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/SysUser.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | import java.util.List; 4 | 5 | import com.baomidou.mybatisplus.annotation.TableField; 6 | import com.baomidou.mybatisplus.annotation.TableLogic; 7 | import com.baomidou.mybatisplus.annotation.TableName; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | 11 | /** 12 | * @author kndopensource 13 | * 用户实体 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("sys_user") 18 | public class SysUser extends SuperEntity { 19 | private static final long serialVersionUID = -5886012896705137070L; 20 | 21 | private String username; 22 | private String password; 23 | private String nickname; 24 | private String headImgUrl; 25 | private String mobile; 26 | private Integer sex; 27 | private Boolean enabled; 28 | private String type; 29 | private String openId; 30 | @TableLogic 31 | private boolean isDel; 32 | 33 | @TableField(exist = false) 34 | private List roles; 35 | @TableField(exist = false) 36 | private String roleId; 37 | @TableField(exist = false) 38 | private String oldPassword; 39 | @TableField(exist = false) 40 | private String newPassword; 41 | } 42 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/model/UserType.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.model; 2 | 3 | 4 | /** 5 | * @author kndopensource 6 | * 用户类型 7 | */ 8 | public enum UserType { 9 | 10 | /** 11 | * 前端app用户 12 | */ 13 | APP, 14 | /** 15 | * 后端管理用户 16 | */ 17 | BACKEND 18 | } 19 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/properties/TenantProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | /** 12 | * 多租户配置 13 | * @author kndopensource 14 | * @date 2019/8/5 15 | */ 16 | @Setter 17 | @Getter 18 | @ConfigurationProperties(prefix = "kndopensource.tenant") 19 | @RefreshScope 20 | public class TenantProperties { 21 | /** 22 | * 是否开启多租户 23 | */ 24 | private Boolean enable = false; 25 | 26 | /** 27 | * 配置不进行多租户隔离的表名 28 | */ 29 | private List ignoreTables = new ArrayList<>(); 30 | 31 | /** 32 | * 配置不进行多租户隔离的sql 33 | * 需要配置mapper的全路径如:com.kernel.user.mapper.SysUserMapper.findList 34 | */ 35 | private List ignoreSqls = new ArrayList<>(); 36 | } 37 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/utils/IdGenerator.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.utils; 2 | 3 | /** 4 | * 高效分布式ID生成算法(sequence),基于Snowflake算法优化实现64位自增ID算法。 5 | * 其中解决时间回拨问题的优化方案如下: 6 | * 1. 如果发现当前时间少于上次生成id的时间(时间回拨),着计算回拨的时间差 7 | * 2. 如果时间差(offset)小于等于5ms,着等待 offset * 2 的时间再生成 8 | * 3. 如果offset大于5,则直接抛出异常 9 | * 10 | * @author kndopensource 11 | * @date 2019/3/5 12 | */ 13 | public class IdGenerator { 14 | private static Sequence WORKER = new Sequence(); 15 | 16 | public static long getId() { 17 | return WORKER.nextId(); 18 | } 19 | 20 | public static String getIdStr() { 21 | return String.valueOf(WORKER.nextId()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/java/com/kernel/common/utils/SpringUtil.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.utils; 2 | 3 | import org.springframework.context.ApplicationContext; 4 | import org.springframework.context.ApplicationContextAware; 5 | import org.springframework.core.env.Environment; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * spring获取bean工具类 10 | * 11 | * @author 作者 owen E-mail: 624191343@qq.com 12 | */ 13 | @Component 14 | public class SpringUtil implements ApplicationContextAware { 15 | 16 | private static ApplicationContext applicationContext = null; 17 | 18 | public static T getBean(Class cla) { 19 | return applicationContext.getBean(cla); 20 | } 21 | 22 | public static T getBean(String name, Class cal) { 23 | return applicationContext.getBean(name, cal); 24 | } 25 | 26 | public static String getProperty(String key) { 27 | return applicationContext.getBean(Environment.class).getProperty(key); 28 | } 29 | 30 | @Override 31 | public void setApplicationContext(ApplicationContext applicationContext) { 32 | SpringUtil.applicationContext = applicationContext; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.context.ApplicationContextInitializer=\ 2 | com.kernel.common.config.BannerInitializer -------------------------------------------------------------------------------- /knd-commons/knd-common-core/src/main/resources/kndmp/logo.txt: -------------------------------------------------------------------------------- 1 | ________ 2 | | / 3 | `---/ / 4 | / / 5 | / /----. 6 | /________| 7 | __ 8 | | | 9 | | | 10 | | | 11 | | `----. 12 | |_______| 13 | .___________. 14 | | | 15 | `---| |----` 16 | | | 17 | | | 18 | |__| 19 | .___ ___. 20 | | \/ | 21 | | \ / | 22 | | |\/| | 23 | | | | | 24 | |__| |__| 25 | .______ 26 | | _ \ 27 | | |_) | 28 | | ___/ 29 | | | 30 | | _| -------------------------------------------------------------------------------- /knd-commons/knd-common-springboot-starter/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-commons 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | knd-common-springboot-starter 12 | springboot公共通用组件过滤器、拦截器。。。 13 | jar 14 | ${project.artifactId} 15 | 16 | 17 | 18 | com.knd 19 | knd-common-core 20 | 21 | 22 | javax.servlet 23 | javax.servlet-api 24 | true 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /knd-commons/knd-common-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.common.filter.TenantFilter,\ 3 | com.kernel.common.filter.TraceFilter -------------------------------------------------------------------------------- /knd-commons/knd-db-springboot-starter/src/main/java/com/kernel/db/mapper/SuperMapper.java: -------------------------------------------------------------------------------- 1 | package com.kernel.db.mapper; 2 | 3 | 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | * mapper 父类,注意这个类不要让 mp 扫描到!! 8 | * @author kndopensource 9 | */ 10 | public interface SuperMapper extends BaseMapper { 11 | // 这里可以放一些公共的方法 12 | } 13 | -------------------------------------------------------------------------------- /knd-commons/knd-db-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.db.config.TenantAutoConfigure 3 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/annotation/AuditLog.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * @author kndopensource 7 | * @date 2020/20/3 8 | * 9 | */ 10 | @Target({ElementType.METHOD, ElementType.TYPE}) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | public @interface AuditLog { 14 | /** 15 | * 操作信息 16 | */ 17 | String operation(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/config/LogAutoConfigure.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.config; 2 | 3 | import com.kernel.log.properties.AuditLogProperties; 4 | import com.kernel.log.properties.LogDbProperties; 5 | import com.kernel.log.properties.TraceProperties; 6 | import com.zaxxer.hikari.HikariConfig; 7 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 8 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 9 | import org.springframework.context.annotation.Configuration; 10 | 11 | 12 | /** 13 | * 日志自动配置 14 | * @author kndopensource 15 | * @date 2020/20/3 16 | * 17 | */ 18 | @EnableConfigurationProperties({TraceProperties.class, AuditLogProperties.class}) 19 | public class LogAutoConfigure { 20 | /** 21 | * 日志数据库配置 22 | */ 23 | @Configuration 24 | @ConditionalOnClass(HikariConfig.class) 25 | @EnableConfigurationProperties(LogDbProperties.class) 26 | public static class LogDbAutoConfigure {} 27 | } 28 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/config/TtlMDCAdapterInitializer.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.config; 2 | 3 | import org.slf4j.TtlMDCAdapter; 4 | import org.springframework.context.ApplicationContextInitializer; 5 | import org.springframework.context.ConfigurableApplicationContext; 6 | 7 | 8 | /** 9 | * 初始化TtlMDCAdapter实例,并替换MDC中的adapter对象 10 | * @author kndopensource 11 | * @date 2020/20/3 12 | * 13 | */ 14 | public class TtlMDCAdapterInitializer implements ApplicationContextInitializer { 15 | @Override 16 | public void initialize(ConfigurableApplicationContext applicationContext) { 17 | //加载TtlMDCAdapter实例 18 | TtlMDCAdapter.getInstance(); 19 | } 20 | } -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/model/Audit.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.model; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | /** 9 | * 审计日志 10 | * @author kndopensource 11 | * @date 2020/20/3 12 | * 13 | */ 14 | @Setter 15 | @Getter 16 | public class Audit { 17 | /** 18 | * 操作时间 19 | */ 20 | private LocalDateTime timestamp; 21 | /** 22 | * 应用名 23 | */ 24 | private String applicationName; 25 | /** 26 | * 类名 27 | */ 28 | private String className; 29 | /** 30 | * 方法名 31 | */ 32 | private String methodName; 33 | /** 34 | * 用户id 35 | */ 36 | private String userId; 37 | /** 38 | * 用户名 39 | */ 40 | private String userName; 41 | /** 42 | * 租户id 43 | */ 44 | private String clientId; 45 | /** 46 | * 操作信息 47 | */ 48 | private String operation; 49 | } 50 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/monitor/PointUtil.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.monitor; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | /** 6 | * 日志埋点工具类 7 | * 8 | * @author kndopensource 9 | */ 10 | @Slf4j 11 | public class PointUtil { 12 | private static final String MSG_PATTERN = "{}|{}|{}"; 13 | 14 | private PointUtil() { 15 | throw new IllegalStateException("Utility class"); 16 | } 17 | 18 | /** 19 | * 格式为:{时间}|{来源}|{对象id}|{类型}|{对象属性(以&分割)} 20 | * 例子1:2016-07-27 23:37:23|business-center|1|user-login|ip=xxx.xxx.xx&userName=张三&userType=后台管理员 21 | * 例子2:2016-07-27 23:37:23|file-center|c0a895e114526786450161001d1ed9|file-upload|fileName=xxx&filePath=xxx 22 | * 23 | * @param id 对象id 24 | * @param type 类型 25 | * @param message 对象属性 26 | */ 27 | public static void info(String id, String type, String message) { 28 | log.info(MSG_PATTERN, id, type, message); 29 | } 30 | 31 | public static void debug(String id, String type, String message) { 32 | log.debug(MSG_PATTERN, id, type, message); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/properties/AuditLogProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | 8 | /** 9 | * 审计日志配置 10 | * 11 | * @author kndopensource 12 | * @date 2020/20/3 13 | *

14 | * 15 | */ 16 | @Setter 17 | @Getter 18 | @ConfigurationProperties(prefix = "kernel.audit-log") 19 | @RefreshScope 20 | public class AuditLogProperties { 21 | /** 22 | * 是否开启审计日志 23 | */ 24 | private Boolean enabled = false; 25 | /** 26 | * 日志记录类型(logger/redis/db/es) 27 | */ 28 | private String logType; 29 | } 30 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/properties/LogDbProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.properties; 2 | 3 | import com.zaxxer.hikari.HikariConfig; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import org.springframework.boot.context.properties.ConfigurationProperties; 7 | 8 | /** 9 | * 日志数据源配置 10 | * logType=db时生效(非必须),如果不配置则使用当前数据源 11 | * 12 | * @author kndopensource 13 | * @date 2020/20/8 14 | *

15 | */ 16 | @Setter 17 | @Getter 18 | @ConfigurationProperties(prefix = "kernel.audit-log.datasource") 19 | public class LogDbProperties extends HikariConfig { 20 | } 21 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/properties/TraceProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | 8 | /** 9 | * 日志链路追踪配置 10 | * 11 | * @author kndopensource 12 | * @date 2020/20/3 13 | */ 14 | @Setter 15 | @Getter 16 | @ConfigurationProperties(prefix = "kernel.trace") 17 | @RefreshScope 18 | public class TraceProperties { 19 | /** 20 | * 是否开启日志链路追踪 21 | */ 22 | private Boolean enable = false; 23 | } 24 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/java/com/kernel/log/service/IAuditService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.service; 2 | 3 | import com.kernel.log.model.Audit; 4 | 5 | /** 6 | * 审计日志接口 7 | * 8 | * @author kndopensource 9 | * @date 2020/20/3 10 | * 11 | */ 12 | public interface IAuditService { 13 | void save(Audit audit); 14 | } 15 | -------------------------------------------------------------------------------- /knd-commons/knd-log-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.context.ApplicationContextInitializer=\ 2 | com.kernel.log.config.TtlMDCAdapterInitializer 3 | 4 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 5 | com.kernel.log.config.LogAutoConfigure,\ 6 | com.kernel.log.service.impl.LoggerAuditServiceImpl,\ 7 | com.kernel.log.service.impl.DbAuditServiceImpl,\ 8 | com.kernel.log.aspect.AuditLogAspect 9 | -------------------------------------------------------------------------------- /knd-commons/knd-redis-springboot-starter/src/main/java/com/kernel/common/redis/constant/RedisToolsConstant.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.redis.constant; 2 | 3 | /** 4 | * redis 工具常量 5 | * 6 | * @author kndopensource 7 | * @date 2020/3/21 11:59 8 | */ 9 | public class RedisToolsConstant { 10 | private RedisToolsConstant() { 11 | throw new IllegalStateException("Utility class"); 12 | } 13 | /** 14 | * single Redis 15 | */ 16 | public final static int SINGLE = 1 ; 17 | 18 | /** 19 | * Redis cluster 20 | */ 21 | public final static int CLUSTER = 2 ; 22 | } 23 | -------------------------------------------------------------------------------- /knd-commons/knd-redis-springboot-starter/src/main/java/com/kernel/common/redis/properties/CacheManagerProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.redis.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author kndopensource 11 | * @date 2020/3/21 12 | */ 13 | @Setter 14 | @Getter 15 | @ConfigurationProperties(prefix = "kernel.cache-manager") 16 | public class CacheManagerProperties { 17 | private List configs; 18 | 19 | @Setter 20 | @Getter 21 | public static class CacheConfig { 22 | /** 23 | * cache key 24 | */ 25 | private String key; 26 | /** 27 | * 过期时间,sec 28 | */ 29 | private long second = 60; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /knd-commons/knd-redis-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.common.redis.RedisAutoConfigure 3 | -------------------------------------------------------------------------------- /knd-commons/knd-redis-springboot-starter/src/main/resources/limit.lua: -------------------------------------------------------------------------------- 1 | --lua 下标从 1 开始 2 | -- 限流 key 3 | local key = KEYS[1] 4 | -- 限流大小 5 | local limit = tonumber(ARGV[1]) 6 | 7 | -- 获取当前流量大小 8 | local curentLimit = tonumber(redis.call('get', key) or "0") 9 | 10 | if curentLimit + 1 > limit then 11 | -- 达到限流大小 返回 12 | return 0; 13 | else 14 | -- 没有达到阈值 value + 1 15 | redis.call("INCRBY", key, 1) 16 | redis.call("EXPIRE", key, 2) 17 | return curentLimit + 1 18 | end 19 | 20 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/FeignAutoConfigure.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon; 2 | 3 | import feign.Logger; 4 | import org.springframework.context.annotation.Bean; 5 | 6 | /** 7 | * Feign统一配置 8 | * 9 | * @author kndopensource 10 | * @date 2020/3/21 11 | */ 12 | public class FeignAutoConfigure { 13 | 14 | /** 15 | * Feign 日志级别 16 | */ 17 | @Bean 18 | Logger.Level feignLoggerLevel() { 19 | return Logger.Level.FULL; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/LbIsolationAutoConfigure.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon; 2 | 3 | import com.kernel.common.constant.ConfigConstants; 4 | import com.kernel.common.ribbon.config.RuleConfigure; 5 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 6 | import org.springframework.cloud.netflix.ribbon.RibbonClients; 7 | 8 | /** 9 | * Ribbon扩展配置类 10 | * 11 | * @author kndopensource 12 | * @date 2020/3/21 13 | */ 14 | @ConditionalOnProperty(value = ConfigConstants.CONFIG_RIBBON_ISOLATION_ENABLED, havingValue = "true") 15 | @RibbonClients(defaultConfiguration = {RuleConfigure.class}) 16 | public class LbIsolationAutoConfigure { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/RibbonAutoConfigure.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon; 2 | 3 | import com.kernel.common.ribbon.config.RestTemplateProperties; 4 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 5 | import org.springframework.cloud.netflix.ribbon.DefaultPropertiesFactory; 6 | import org.springframework.context.annotation.Bean; 7 | 8 | /** 9 | * Ribbon扩展配置类 10 | * 11 | * @author kndopensource 12 | * @date 2020/3/21 13 | */ 14 | @EnableConfigurationProperties(RestTemplateProperties.class) 15 | public class RibbonAutoConfigure { 16 | @Bean 17 | public DefaultPropertiesFactory defaultPropertiesFactory() { 18 | return new DefaultPropertiesFactory(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/annotation/EnableBaseFeignInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon.annotation; 2 | 3 | import com.kernel.common.ribbon.config.FeignInterceptorConfig; 4 | import org.springframework.context.annotation.Import; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | /** 12 | * 开启feign拦截器传递数据给下游服务,只包含基础数据 13 | * 14 | * @author kndopensource 15 | * @date 2020/3/21 16 | * 17 | */ 18 | @Target(ElementType.TYPE) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Import(FeignInterceptorConfig.class) 21 | public @interface EnableBaseFeignInterceptor { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/annotation/EnableFeignInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon.annotation; 2 | 3 | import com.kernel.common.ribbon.config.FeignHttpInterceptorConfig; 4 | import com.kernel.common.ribbon.config.FeignInterceptorConfig; 5 | import org.springframework.context.annotation.Import; 6 | 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | /** 13 | * 开启feign拦截器传递数据给下游服务,包含基础数据和http的相关数据 14 | * 15 | * @author kndopensource 16 | * @date 2020/3/21 17 | */ 18 | @Target(ElementType.TYPE) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Import({FeignInterceptorConfig.class, FeignHttpInterceptorConfig.class}) 21 | public @interface EnableFeignInterceptor { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/config/RestTemplateProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon.config; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | 7 | /** 8 | * RestTemplate 配置 9 | * 10 | * @author kndopensource 11 | * @date 2020/3/21 12 | */ 13 | @Setter 14 | @Getter 15 | @ConfigurationProperties(prefix = "kernel.rest-template") 16 | public class RestTemplateProperties { 17 | /** 18 | * 最大链接数 19 | */ 20 | private int maxTotal = 200; 21 | /** 22 | * 同路由最大并发数 23 | */ 24 | private int maxPerRoute = 50; 25 | /** 26 | * 读取超时时间 ms 27 | */ 28 | private int readTimeout = 35000; 29 | /** 30 | * 链接超时时间 ms 31 | */ 32 | private int connectTimeout = 10000; 33 | } 34 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/java/com/kernel/common/ribbon/config/RuleConfigure.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.ribbon.config; 2 | 3 | import com.kernel.common.ribbon.rule.CustomIsolationRule; 4 | import com.netflix.loadbalancer.IRule; 5 | import org.springframework.context.annotation.Bean; 6 | 7 | /** 8 | * @author kndopensource 9 | * @date 2020/3/21 10 | */ 11 | public class RuleConfigure { 12 | @Bean 13 | public IRule isolationRule() { 14 | return new CustomIsolationRule(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /knd-commons/knd-ribbon-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.common.ribbon.RibbonAutoConfigure,\ 3 | com.kernel.common.ribbon.FeignAutoConfigure,\ 4 | com.kernel.common.ribbon.RestTemplateAutoConfigure,\ 5 | com.kernel.common.ribbon.filter.LbIsolationFilter,\ 6 | com.kernel.common.ribbon.LbIsolationAutoConfigure 7 | -------------------------------------------------------------------------------- /knd-commons/knd-sentinel-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.sentinel.config.SentinelAutoConfigure 3 | -------------------------------------------------------------------------------- /knd-commons/knd-swagger2-springboot-starter/src/main/java/com/kernel/common/swagger2/Swagger2Configuration.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.swagger2; 2 | 3 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.Import; 6 | import springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration; 7 | 8 | /** 9 | * 10 | * @author knd 11 | * @date 2020/3/21 12 | */ 13 | @Configuration 14 | @ConditionalOnProperty(name = "knd.swagger.enabled", matchIfMissing = true) 15 | @Import({ 16 | Swagger2DocumentationConfiguration.class 17 | }) 18 | public class Swagger2Configuration { 19 | } 20 | -------------------------------------------------------------------------------- /knd-commons/knd-swagger2-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.kernel.common.swagger2.SwaggerAutoConfiguration -------------------------------------------------------------------------------- /knd-commons/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-platform 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | knd-commons 12 | 通用基础组件集 13 | pom 14 | ${project.artifactId} 15 | 16 | knd-common-core 17 | knd-log-springboot-starter 18 | knd-common-springboot-starter 19 | knd-db-springboot-starter 20 | knd-redis-springboot-starter 21 | knd-ribbon-springboot-starter 22 | knd-sentinel-springboot-starter 23 | knd-swagger2-springboot-starter 24 | knd-authclient-springboot-starter 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /knd-demo/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-platform 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | demo案例集 12 | knd-demo 13 | pom 14 | ${project.artifactId} 15 | 16 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/UaaServerApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel; 2 | 3 | import com.kernel.common.ribbon.annotation.EnableFeignInterceptor; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.openfeign.EnableFeignClients; 8 | import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; 9 | 10 | /** 11 | * @author knd 12 | */ 13 | @EnableFeignClients 14 | @EnableFeignInterceptor 15 | @EnableDiscoveryClient 16 | @EnableRedisHttpSession 17 | @SpringBootApplication 18 | public class UaaServerApp { 19 | public static void main(String[] args) { 20 | SpringApplication.run(UaaServerApp.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.config; 2 | 3 | import com.kernel.db.config.DefaultMybatisPlusConfig; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | /** 8 | * @author knd 9 | * @date 2018/12/10 10 | */ 11 | @Configuration 12 | @MapperScan({"com.kernel.oauth.mapper*"}) 13 | public class MybatisPlusConfig extends DefaultMybatisPlusConfig { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/config/ValidateCodeSecurityConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.kernel.oauth.config; 5 | 6 | import org.springframework.security.config.annotation.SecurityConfigurerAdapter; 7 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 8 | import org.springframework.security.web.DefaultSecurityFilterChain; 9 | import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter; 10 | import org.springframework.stereotype.Component; 11 | 12 | import javax.annotation.Resource; 13 | import javax.servlet.Filter; 14 | 15 | /** 16 | * 校验码相关安全配置 17 | * 18 | * @author knd 19 | */ 20 | @Component("validateCodeSecurityConfig") 21 | public class ValidateCodeSecurityConfig extends SecurityConfigurerAdapter { 22 | @Resource 23 | private Filter validateCodeFilter; 24 | 25 | @Override 26 | public void configure(HttpSecurity http) { 27 | http.addFilterBefore(validateCodeFilter, AbstractPreAuthenticatedProcessingFilter.class); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/config/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.config; 2 | 3 | import com.kernel.common.config.DefaultWebMvcConfig; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * @author knd 8 | * @date 2019/8/5 9 | */ 10 | @Configuration 11 | public class WebMvcConfig extends DefaultWebMvcConfig { 12 | } 13 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/controller/TokensController.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.controller; 2 | 3 | import com.kernel.common.annotation.LoginClient; 4 | import com.kernel.common.model.PageResult; 5 | import com.kernel.oauth.model.TokenVo; 6 | import com.kernel.oauth.service.ITokensService; 7 | import io.swagger.annotations.Api; 8 | import io.swagger.annotations.ApiOperation; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import java.util.Map; 13 | 14 | /** 15 | * token管理接口 16 | * 17 | * @author knd 18 | */ 19 | @Api(tags = "Token管理") 20 | @RestController 21 | @RequestMapping("/tokens") 22 | public class TokensController { 23 | @Autowired 24 | private ITokensService tokensService; 25 | 26 | @GetMapping("") 27 | @ApiOperation(value = "token列表") 28 | public PageResult list(@RequestParam Map params, String tenantId) { 29 | return tokensService.listTokens(params, tenantId); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/dto/ClientDto.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.dto; 2 | 3 | import com.kernel.oauth.model.Client; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | import java.util.Set; 9 | 10 | @Setter 11 | @Getter 12 | public class ClientDto extends Client { 13 | private static final long serialVersionUID = 1475637288060027265L; 14 | 15 | private List permissionIds; 16 | 17 | private Set serviceIds; 18 | } 19 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/exception/ValidateCodeException.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.exception; 2 | 3 | import org.springframework.security.core.AuthenticationException; 4 | 5 | /** 6 | * 验证码异常 7 | * @author knd 8 | */ 9 | public class ValidateCodeException extends AuthenticationException { 10 | private static final long serialVersionUID = -7285211528095468156L; 11 | 12 | public ValidateCodeException(String msg) { 13 | super(msg); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/mapper/ClientMapper.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.mapper; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.kernel.db.mapper.SuperMapper; 8 | import org.apache.ibatis.annotations.Param; 9 | 10 | import com.kernel.oauth.model.Client; 11 | 12 | /** 13 | * @author knd 14 | */ 15 | public interface ClientMapper extends SuperMapper { 16 | List findList(Page page, @Param("params") Map params ); 17 | } 18 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/model/TokenVo.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.model; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | /** 10 | * @author knd 11 | */ 12 | @Setter 13 | @Getter 14 | public class TokenVo implements Serializable { 15 | private static final long serialVersionUID = -6656955957477645319L; 16 | /** 17 | * token的值 18 | */ 19 | private String tokenValue; 20 | /** 21 | * 到期时间 22 | */ 23 | private Date expiration; 24 | /** 25 | * 用户名 26 | */ 27 | private String username; 28 | /** 29 | * 所属应用 30 | */ 31 | private String clientId; 32 | /** 33 | * 授权类型 34 | */ 35 | private String grantType; 36 | } 37 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/openid/OpenIdAuthenticationSecurityConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.openid; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.security.config.annotation.SecurityConfigurerAdapter; 5 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 6 | import org.springframework.security.web.DefaultSecurityFilterChain; 7 | import org.springframework.social.security.SocialUserDetailsService; 8 | import org.springframework.stereotype.Component; 9 | 10 | /** 11 | * openId的相关处理配置 12 | * 13 | * @author knd 14 | */ 15 | @Component 16 | public class OpenIdAuthenticationSecurityConfig extends SecurityConfigurerAdapter { 17 | @Autowired 18 | private SocialUserDetailsService userDetailsService; 19 | 20 | @Override 21 | public void configure(HttpSecurity http) { 22 | //openId provider 23 | OpenIdAuthenticationProvider provider = new OpenIdAuthenticationProvider(); 24 | provider.setUserDetailsService(userDetailsService); 25 | http.authenticationProvider(provider); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/service/IClientService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.service; 2 | 3 | import com.kernel.common.model.PageResult; 4 | import com.kernel.common.model.Result; 5 | import com.kernel.common.service.ISuperService; 6 | import com.kernel.oauth.model.Client; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * @author knd 12 | */ 13 | public interface IClientService extends ISuperService { 14 | Result saveClient(Client clientDto); 15 | 16 | /** 17 | * 查询应用列表 18 | * @param params 19 | * @param isPage 是否分页 20 | */ 21 | PageResult listClent(Map params, boolean isPage); 22 | 23 | void delClient(long id); 24 | } 25 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/service/ITokensService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.service; 2 | 3 | import com.kernel.common.model.PageResult; 4 | import com.kernel.oauth.model.TokenVo; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @author knd 10 | */ 11 | public interface ITokensService { 12 | /** 13 | * 查询token列表 14 | * @param params 请求参数 15 | * @param clientId 应用id 16 | */ 17 | PageResult listTokens(Map params, String clientId); 18 | } 19 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/service/IValidateCodeService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.service; 2 | 3 | import com.kernel.common.model.Result; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | 7 | /** 8 | * @author knd 9 | * @date 2018/12/10 10 | */ 11 | public interface IValidateCodeService { 12 | /** 13 | * 保存图形验证码 14 | * @param deviceId 前端唯一标识 15 | * @param imageCode 验证码 16 | */ 17 | void saveImageCode(String deviceId, String imageCode); 18 | 19 | Result sendSmsCode(String mobile); 20 | 21 | /** 22 | * 获取验证码 23 | * @param deviceId 前端唯一标识/手机号 24 | */ 25 | String getCode(String deviceId); 26 | 27 | /** 28 | * 删除验证码 29 | * @param deviceId 前端唯一标识/手机号 30 | */ 31 | void remove(String deviceId); 32 | 33 | /** 34 | * 验证验证码 35 | */ 36 | void validate(HttpServletRequest request); 37 | } 38 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/java/com/kernel/oauth/service/KndUserDetailsService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.oauth.service; 2 | 3 | import org.springframework.security.core.userdetails.UserDetails; 4 | import org.springframework.security.core.userdetails.UserDetailsService; 5 | import org.springframework.security.core.userdetails.UsernameNotFoundException; 6 | 7 | /** 8 | * @author knd 9 | * @date 2018/12/28 10 | */ 11 | public interface KndUserDetailsService extends UserDetailsService { 12 | /** 13 | * 根据电话号码查询用户 14 | * 15 | * @param mobile 16 | * @return 17 | */ 18 | UserDetails loadUserByMobile(String mobile); 19 | } 20 | -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:mysql://${knd.datasource.ip}:3306/oauth-center?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai 4 | username: ${knd.datasource.username} 5 | password: ${knd.datasource.password} 6 | driver-class-name: com.mysql.cj.jdbc.Driver 7 | 8 | mybatis-plus: 9 | mapper-locations: classpath:/mapper/*Mapper.xml 10 | #实体扫描,多个package用逗号或者分号分隔 11 | typeAliasesPackage: com.kernel.oauth.model 12 | global-config: 13 | db-config: 14 | id-type: auto 15 | 16 | knd: 17 | oauth2: 18 | token: 19 | store: 20 | type: redis 21 | swagger: 22 | enabled: true 23 | title: 认证中心 24 | description: 认证中心接口文档 25 | version: 1.0 26 | base-package: com.kernel.oauth.controller 27 | security: 28 | code: 29 | # 忽略验证码的应用编号 30 | ignoreClientCode: app -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8000 3 | servlet: 4 | session: 5 | cookie: 6 | name: OAUTH2SESSION 7 | 8 | spring: 9 | application: 10 | name: uaa-server 11 | 12 | encrypt: 13 | key-store: 14 | location: classpath:knd.jks 15 | secret: knd!@#$ 16 | alias: knd -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/knd.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-auth2/src/main/resources/knd.jks -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/pubkey.txt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjmgfejBXsPYynAIPczHA 3 | eEvTDfAVaNKQudyI7VszdezbHDM1CStCIgwiMmLd7QYf1SrrmQoqxhcSRbhjE3ej 4 | RF5qzhtx3kmepdpMrQptcsLjRkixaxCc4E2k6Us5707gGwbhoaTrRit5F2MnAdLY 5 | C1TS3WwnO/hQfqUcAglbK8yrJ4AwAv0DAoIUSWnWqzuniV1SYbdV57uswxUssoWy 6 | sEfPz+nv1ZLRs6Wz4eQ5Myqx2+CjWc9F8iXa2PV8Rmjms3dVbWcLUpCP18Dfzp8l 7 | n8vF9LfYB7UaLSpfJe6FFF6+vCg4JHfo12djTUgwGjauMF3e9mmjU83KIoQS66lp 8 | AQIDAQAB 9 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/static/images/cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-auth2/src/main/resources/static/images/cut.jpg -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/static/images/logo_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-auth2/src/main/resources/static/images/logo_bg.jpg -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/static/images/logowz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-auth2/src/main/resources/static/images/logowz.png -------------------------------------------------------------------------------- /knd-micro/micro-auth2/src/main/resources/static/js/common.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | 3 | // 4 | $('.form_text_ipt input').focus(function(){ 5 | $(this).parent().css({ 6 | 'box-shadow':'0 0 3px #bbb', 7 | }); 8 | }); 9 | $('.form_text_ipt input').blur(function(){ 10 | $(this).parent().css({ 11 | 'box-shadow':'none', 12 | }); 13 | //$(this).parent().next().hide(); 14 | }); 15 | 16 | // 17 | $('.form_text_ipt input').bind('input propertychange',function(){ 18 | if($(this).val()==""){ 19 | $(this).css({ 20 | 'color':'red', 21 | }); 22 | $(this).parent().css({ 23 | 'border':'solid 1px red', 24 | }); 25 | //$(this).parent().next().find('span').html('helow'); 26 | $(this).parent().next().show(); 27 | }else{ 28 | $(this).css({ 29 | 'color':'#ccc', 30 | }); 31 | $(this).parent().css({ 32 | 'border':'solid 1px #ccc', 33 | }); 34 | $(this).parent().next().hide(); 35 | } 36 | }); 37 | }); -------------------------------------------------------------------------------- /knd-micro/micro-gateway/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-micro 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 网关服务组件集 12 | micro-gateway 13 | pom 14 | ${project.artifactId} 15 | 16 | 17 | scloud-gateway 18 | zuul-gateway 19 | 20 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/java/com/kernel/SCGatewayApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel; 2 | 3 | import com.kernel.common.ribbon.annotation.EnableBaseFeignInterceptor; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.openfeign.EnableFeignClients; 8 | 9 | /** 10 | * 网关服务启动类 11 | * @author kndopnesource 12 | * @date 2020/3/22 13 | */ 14 | @EnableFeignClients 15 | @EnableBaseFeignInterceptor 16 | @EnableDiscoveryClient 17 | @SpringBootApplication 18 | public class SCGatewayApp { 19 | public static void main(String[] args) { 20 | SpringApplication.run(SCGatewayApp.class, args); 21 | } 22 | } -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/java/com/kernel/gateway/auth/JsonAccessDeniedHandler.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.auth; 2 | 3 | import com.kernel.common.utils.ResponseUtil; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.http.HttpStatus; 6 | import org.springframework.security.access.AccessDeniedException; 7 | import org.springframework.security.web.server.authorization.ServerAccessDeniedHandler; 8 | import org.springframework.web.server.ServerWebExchange; 9 | import reactor.core.publisher.Mono; 10 | 11 | /** 12 | * 403拒绝访问异常处理,转换为JSON 13 | * 14 | * @author knd 15 | * @date 2020/3/22 16 | */ 17 | @Slf4j 18 | public class JsonAccessDeniedHandler implements ServerAccessDeniedHandler { 19 | @Override 20 | public Mono handle(ServerWebExchange exchange, AccessDeniedException e) { 21 | return ResponseUtil.responseWriter(exchange, HttpStatus.FORBIDDEN.value(), e.getMessage()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/java/com/kernel/gateway/auth/JsonAuthenticationEntryPoint.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.auth; 2 | 3 | import com.kernel.common.utils.ResponseUtil; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.http.HttpStatus; 6 | import org.springframework.security.core.AuthenticationException; 7 | import org.springframework.security.web.server.ServerAuthenticationEntryPoint; 8 | import org.springframework.web.server.ServerWebExchange; 9 | import reactor.core.publisher.Mono; 10 | 11 | /** 12 | * 401未授权异常处理,转换为JSON 13 | * 14 | * @author knd 15 | * @date 2020/3/22 16 | */ 17 | @Slf4j 18 | public class JsonAuthenticationEntryPoint implements ServerAuthenticationEntryPoint { 19 | @Override 20 | public Mono commence(ServerWebExchange exchange, AuthenticationException e) { 21 | return ResponseUtil.responseWriter(exchange, HttpStatus.UNAUTHORIZED.value(), e.getMessage()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/java/com/kernel/gateway/feign/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.feign; 2 | 3 | import com.kernel.common.constant.ServiceNameConstants; 4 | import com.kernel.common.model.SysMenu; 5 | import com.kernel.gateway.feign.fallback.MenuServiceFallbackFactory; 6 | import org.springframework.cloud.openfeign.FeignClient; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PathVariable; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author kndopensource 14 | */ 15 | @FeignClient(name = ServiceNameConstants.USER_SERVICE, fallbackFactory = MenuServiceFallbackFactory.class, decode404 = true) 16 | public interface MenuService { 17 | /** 18 | * 角色菜单列表 19 | * @param roleCodes 20 | */ 21 | @GetMapping(value = "/menus/{roleCodes}") 22 | List findByRoleCodes(@PathVariable("roleCodes") String roleCodes); 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/java/com/kernel/gateway/feign/fallback/MenuServiceFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.feign.fallback; 2 | 3 | import cn.hutool.core.collection.CollectionUtil; 4 | import com.kernel.gateway.feign.MenuService; 5 | import feign.hystrix.FallbackFactory; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * menuService降级工场 11 | * 12 | * @author knd 13 | * @date 2020/3/22 14 | */ 15 | @Slf4j 16 | @Component 17 | public class MenuServiceFallbackFactory implements FallbackFactory { 18 | @Override 19 | public MenuService create(Throwable throwable) { 20 | return roleIds -> { 21 | log.error("调用findByRoleCodes异常:{}", roleIds, throwable); 22 | return CollectionUtil.newArrayList(); 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9900 3 | 4 | spring: 5 | application: 6 | name: scloud-gateway -------------------------------------------------------------------------------- /knd-micro/micro-gateway/scloud-gateway/src/main/resources/pubkey.txt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjmgfejBXsPYynAIPczHA 3 | eEvTDfAVaNKQudyI7VszdezbHDM1CStCIgwiMmLd7QYf1SrrmQoqxhcSRbhjE3ej 4 | RF5qzhtx3kmepdpMrQptcsLjRkixaxCc4E2k6Us5707gGwbhoaTrRit5F2MnAdLY 5 | C1TS3WwnO/hQfqUcAglbK8yrJ4AwAv0DAoIUSWnWqzuniV1SYbdV57uswxUssoWy 6 | sEfPz+nv1ZLRs6Wz4eQ5Myqx2+CjWc9F8iXa2PV8Rmjms3dVbWcLUpCP18Dfzp8l 7 | n8vF9LfYB7UaLSpfJe6FFF6+vCg4JHfo12djTUgwGjauMF3e9mmjU83KIoQS66lp 8 | AQIDAQAB 9 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/GatewayApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel; 2 | 3 | import com.kernel.common.ribbon.annotation.EnableBaseFeignInterceptor; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy; 8 | import org.springframework.cloud.openfeign.EnableFeignClients; 9 | 10 | /** 11 | * @author kndopensource 12 | */ 13 | @EnableZuulProxy 14 | @EnableFeignClients 15 | @EnableBaseFeignInterceptor 16 | @EnableDiscoveryClient 17 | @SpringBootApplication 18 | public class GatewayApp { 19 | public static void main(String[] args) { 20 | SpringApplication.run(GatewayApp.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/config/AsycTaskExecutorConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.config; 2 | 3 | import com.kernel.common.config.DefaultAsycTaskConfig; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * @author kndopensource 8 | * 线程池配置、启用异步 9 | * @Async quartz 需要使用 10 | */ 11 | @Configuration 12 | public class AsycTaskExecutorConfig extends DefaultAsycTaskConfig { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/config/ResourceServerConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.config; 2 | 3 | import com.kernel.common.config.DefaultPasswordConfig; 4 | import com.kernel.oauth2.common.config.DefaultResourceServerConf; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Import; 7 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; 8 | import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer; 9 | import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; 10 | 11 | /** 12 | * @author kndopensource 13 | */ 14 | @Configuration 15 | @EnableResourceServer 16 | @Import({DefaultPasswordConfig.class}) 17 | public class ResourceServerConfiguration extends DefaultResourceServerConf { 18 | @Override 19 | public HttpSecurity setAuthenticate(ExpressionUrlAuthorizationConfigurer.AuthorizedUrl authorizedUrl) { 20 | return authorizedUrl.access("@permissionService.hasPermission(request, authentication)").and(); 21 | } 22 | } -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/config/SwaggerConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.config; 2 | 3 | import com.didispace.swagger.butler.EnableSwaggerButler; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * swagger 聚合文档配置 8 | * zuul routers 映射具体服务的/v2/api-docs swagger 9 | * 10 | * @author 作者 owen E-mail: 624191343@qq.com 11 | */ 12 | @Configuration 13 | @EnableSwaggerButler 14 | public class SwaggerConfig { 15 | 16 | } -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/feign/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.feign; 2 | 3 | import com.kernel.common.constant.ServiceNameConstants; 4 | import com.kernel.common.model.SysMenu; 5 | import com.kernel.gateway.feign.fallback.MenuServiceFallbackFactory; 6 | import org.springframework.cloud.openfeign.FeignClient; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PathVariable; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author kndopensource 14 | */ 15 | @FeignClient(name = ServiceNameConstants.USER_SERVICE, fallbackFactory = MenuServiceFallbackFactory.class, decode404 = true) 16 | public interface MenuService { 17 | /** 18 | * 角色菜单列表 19 | * @param roleCodes 20 | */ 21 | @GetMapping(value = "/menus/{roleCodes}") 22 | List findByRoleCodes(@PathVariable("roleCodes") String roleCodes); 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/feign/fallback/MenuServiceFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.feign.fallback; 2 | 3 | import cn.hutool.core.collection.CollectionUtil; 4 | import com.kernel.gateway.feign.MenuService; 5 | import feign.hystrix.FallbackFactory; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * menuService降级工场 11 | * 12 | * @author kndopensource 13 | * @date 2019/1/18 14 | */ 15 | @Slf4j 16 | @Component 17 | public class MenuServiceFallbackFactory implements FallbackFactory { 18 | @Override 19 | public MenuService create(Throwable throwable) { 20 | return roleIds -> { 21 | log.error("调用findByRoleCodes异常:{}", roleIds, throwable); 22 | return CollectionUtil.newArrayList(); 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/java/com/kernel/gateway/service/impl/PermissionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway.service.impl; 2 | 3 | import com.kernel.common.model.SysMenu; 4 | import com.kernel.gateway.feign.MenuService; 5 | import com.kernel.oauth2.common.service.impl.DefaultPermissionServiceImpl; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.security.core.Authentication; 8 | import org.springframework.stereotype.Service; 9 | import javax.annotation.Resource; 10 | import javax.servlet.http.HttpServletRequest; 11 | import java.util.List; 12 | 13 | /** 14 | * 请求权限判断service 15 | * 16 | * @author kndopensource 17 | * @date 2018/10/28 18 | */ 19 | @Slf4j 20 | @Service("permissionService") 21 | public class PermissionServiceImpl extends DefaultPermissionServiceImpl { 22 | @Resource 23 | private MenuService menuService; 24 | 25 | @Override 26 | public List findMenuByRoleCodes(String roleCodes) { 27 | return menuService.findByRoleCodes(roleCodes); 28 | } 29 | 30 | public boolean hasPermission(HttpServletRequest request, Authentication authentication) { 31 | return hasPermission(authentication, request.getMethod(), request.getRequestURI()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "properties": [ 3 | { 4 | "name": "knd.gateway.dynamicRoute.enabled", 5 | "description": "是否开启动态路由.", 6 | "type": "java.lang.Boolean", 7 | "defaultValue": false 8 | }, 9 | { 10 | "name": "knd.gateway.dynamicRoute.dataType", 11 | "description": "动态路由的数据类型.", 12 | "type": "java.lang.String", 13 | "defaultValue": "nacos" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9900 3 | undertow: 4 | buffer-size: 1024 5 | direct-buffers: true 6 | 7 | spring: 8 | application: 9 | name: api-gateway -------------------------------------------------------------------------------- /knd-micro/micro-gateway/zuul-gateway/src/main/resources/pubkey.txt: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjmgfejBXsPYynAIPczHA 3 | eEvTDfAVaNKQudyI7VszdezbHDM1CStCIgwiMmLd7QYf1SrrmQoqxhcSRbhjE3ej 4 | RF5qzhtx3kmepdpMrQptcsLjRkixaxCc4E2k6Us5707gGwbhoaTrRit5F2MnAdLY 5 | C1TS3WwnO/hQfqUcAglbK8yrJ4AwAv0DAoIUSWnWqzuniV1SYbdV57uswxUssoWy 6 | sEfPz+nv1ZLRs6Wz4eQ5Myqx2+CjWc9F8iXa2PV8Rmjms3dVbWcLUpCP18Dfzp8l 7 | n8vF9LfYB7UaLSpfJe6FFF6+vCg4JHfo12djTUgwGjauMF3e9mmjU83KIoQS66lp 8 | AQIDAQAB 9 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author xuxueli 2018-10-28 00:38:13 8 | */ 9 | @SpringBootApplication 10 | public class JobAdminApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(JobAdminApplication.class, args); 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.controller; 2 | 3 | import com.xxl.job.admin.controller.annotation.PermessionLimit; 4 | import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; 5 | import com.xxl.job.core.biz.AdminBiz; 6 | import org.springframework.beans.factory.InitializingBean; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | /** 16 | * Created by xuxueli on 17/5/10. 17 | */ 18 | @Controller 19 | public class JobApiController implements InitializingBean { 20 | 21 | 22 | @Override 23 | public void afterPropertiesSet() throws Exception { 24 | 25 | } 26 | 27 | @RequestMapping(AdminBiz.MAPPING) 28 | @PermessionLimit(limit=false) 29 | public void api(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 30 | XxlJobDynamicScheduler.invokeAdminService(request, response); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermessionLimit.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.controller.annotation; 2 | 3 | 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * 权限限制 11 | * @author xuxueli 2015-12-12 18:29:02 12 | */ 13 | @Target(ElementType.METHOD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface PermessionLimit { 16 | 17 | /** 18 | * 登录拦截 (默认拦截) 19 | */ 20 | boolean limit() default true; 21 | 22 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.controller.interceptor; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 6 | 7 | import javax.annotation.Resource; 8 | 9 | /** 10 | * web mvc config 11 | * 12 | * @author xuxueli 2018-04-02 20:48:20 13 | */ 14 | @Configuration 15 | public class WebMvcConfig extends WebMvcConfigurerAdapter { 16 | 17 | @Resource 18 | private PermissionInterceptor permissionInterceptor; 19 | @Resource 20 | private CookieInterceptor cookieInterceptor; 21 | 22 | @Override 23 | public void addInterceptors(InterceptorRegistry registry) { 24 | registry.addInterceptor(permissionInterceptor).addPathPatterns("/**"); 25 | registry.addInterceptor(cookieInterceptor).addPathPatterns("/**"); 26 | super.addInterceptors(registry); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.jobbean; 2 | 3 | import com.xxl.job.admin.core.thread.JobTriggerPoolHelper; 4 | import com.xxl.job.admin.core.trigger.TriggerTypeEnum; 5 | import org.quartz.JobExecutionContext; 6 | import org.quartz.JobExecutionException; 7 | import org.quartz.JobKey; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | import org.springframework.scheduling.quartz.QuartzJobBean; 11 | 12 | /** 13 | * http job bean 14 | * “@DisallowConcurrentExecution” diable concurrent, thread size can not be only one, better given more 15 | * @author xuxueli 2015-12-17 18:20:34 16 | */ 17 | //@DisallowConcurrentExecution 18 | public class RemoteHttpJobBean extends QuartzJobBean { 19 | private static Logger logger = LoggerFactory.getLogger(RemoteHttpJobBean.class); 20 | 21 | @Override 22 | protected void executeInternal(JobExecutionContext context) 23 | throws JobExecutionException { 24 | 25 | // load jobId 26 | JobKey jobKey = context.getTrigger().getJobKey(); 27 | Integer jobId = Integer.valueOf(jobKey.getName()); 28 | 29 | // trigger 30 | JobTriggerPoolHelper.trigger(jobId, TriggerTypeEnum.CRON, -1, null, null); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.route; 2 | 3 | import com.xxl.job.core.biz.model.ReturnT; 4 | import com.xxl.job.core.biz.model.TriggerParam; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by xuxueli on 17/3/10. 12 | */ 13 | public abstract class ExecutorRouter { 14 | protected static Logger logger = LoggerFactory.getLogger(ExecutorRouter.class); 15 | 16 | /** 17 | * route address 18 | * 19 | * @param addressList 20 | * @return ReturnT.content=address 21 | */ 22 | public abstract ReturnT route(TriggerParam triggerParam, List addressList); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.route.strategy; 2 | 3 | import com.xxl.job.admin.core.route.ExecutorRouter; 4 | import com.xxl.job.core.biz.model.ReturnT; 5 | import com.xxl.job.core.biz.model.TriggerParam; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by xuxueli on 17/3/10. 11 | */ 12 | public class ExecutorRouteFirst extends ExecutorRouter { 13 | 14 | @Override 15 | public ReturnT route(TriggerParam triggerParam, List addressList){ 16 | return new ReturnT(addressList.get(0)); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.route.strategy; 2 | 3 | import com.xxl.job.admin.core.route.ExecutorRouter; 4 | import com.xxl.job.core.biz.model.ReturnT; 5 | import com.xxl.job.core.biz.model.TriggerParam; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by xuxueli on 17/3/10. 11 | */ 12 | public class ExecutorRouteLast extends ExecutorRouter { 13 | 14 | @Override 15 | public ReturnT route(TriggerParam triggerParam, List addressList) { 16 | return new ReturnT(addressList.get(addressList.size()-1)); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.route.strategy; 2 | 3 | import com.xxl.job.admin.core.route.ExecutorRouter; 4 | import com.xxl.job.core.biz.model.ReturnT; 5 | import com.xxl.job.core.biz.model.TriggerParam; 6 | 7 | import java.util.List; 8 | import java.util.Random; 9 | 10 | /** 11 | * Created by xuxueli on 17/3/10. 12 | */ 13 | public class ExecutorRouteRandom extends ExecutorRouter { 14 | 15 | private static Random localRandom = new Random(); 16 | 17 | @Override 18 | public ReturnT route(TriggerParam triggerParam, List addressList) { 19 | String address = addressList.get(localRandom.nextInt(addressList.size())); 20 | return new ReturnT(address); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.trigger; 2 | 3 | import com.xxl.job.admin.core.util.I18nUtil; 4 | 5 | /** 6 | * trigger type enum 7 | * 8 | * @author xuxueli 2018-09-16 04:56:41 9 | */ 10 | public enum TriggerTypeEnum { 11 | 12 | MANUAL(I18nUtil.getString("jobconf_trigger_type_manual")), 13 | CRON(I18nUtil.getString("jobconf_trigger_type_cron")), 14 | RETRY(I18nUtil.getString("jobconf_trigger_type_retry")), 15 | PARENT(I18nUtil.getString("jobconf_trigger_type_parent")), 16 | API(I18nUtil.getString("jobconf_trigger_type_api")); 17 | 18 | private TriggerTypeEnum(String title){ 19 | this.title = title; 20 | } 21 | private String title; 22 | public String getTitle() { 23 | return title; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.core.util; 2 | 3 | import freemarker.ext.beans.BeansWrapper; 4 | import freemarker.ext.beans.BeansWrapperBuilder; 5 | import freemarker.template.Configuration; 6 | import freemarker.template.TemplateHashModel; 7 | 8 | /** 9 | * ftl util 10 | * 11 | * @author xuxueli 2018-01-17 20:37:48 12 | */ 13 | public class FtlUtil { 14 | 15 | private static BeansWrapper wrapper = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS).build(); //BeansWrapper.getDefaultInstance(); 16 | 17 | public static TemplateHashModel generateStaticModel(String packageName) { 18 | try { 19 | TemplateHashModel staticModels = wrapper.getStaticModels(); 20 | TemplateHashModel fileStatics = (TemplateHashModel) staticModels.get(packageName); 21 | return fileStatics; 22 | } catch (Exception e) { 23 | e.printStackTrace(); 24 | } 25 | return null; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.dao; 2 | 3 | import com.xxl.job.admin.core.model.XxlJobGroup; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by xuxueli on 16/9/30. 11 | */ 12 | @Mapper 13 | public interface XxlJobGroupDao { 14 | 15 | public List findAll(); 16 | 17 | public List findByAddressType(@Param("addressType") int addressType); 18 | 19 | public int save(XxlJobGroup xxlJobGroup); 20 | 21 | public int update(XxlJobGroup xxlJobGroup); 22 | 23 | public int remove(@Param("id") int id); 24 | 25 | public XxlJobGroup load(@Param("id") int id); 26 | } 27 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.dao; 2 | 3 | import com.xxl.job.admin.core.model.XxlJobLogGlue; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * job log for glue 11 | * @author xuxueli 2016-5-19 18:04:56 12 | */ 13 | @Mapper 14 | public interface XxlJobLogGlueDao { 15 | 16 | public int save(XxlJobLogGlue xxlJobLogGlue); 17 | 18 | public List findByJobId(@Param("jobId") int jobId); 19 | 20 | public int removeOld(@Param("jobId") int jobId, @Param("limit") int limit); 21 | 22 | public int deleteByJobId(@Param("jobId") int jobId); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | ### xxl-job, datasource 2 | knd.datasource.ip=192.168.28.131 3 | knd.datasource.username=root 4 | knd.datasource.password=1q2w3e4r 5 | 6 | spring.datasource.url=jdbc:mysql://${knd.datasource.ip}:3306/xxl-job?Unicode=true&characterEncoding=UTF-8 7 | spring.datasource.username=${knd.datasource.username} 8 | spring.datasource.password=${knd.datasource.password} 9 | 10 | ### xxl-job email 11 | spring.mail.host=smtp.qq.com 12 | spring.mail.port=25 13 | spring.mail.username=xxx@qq.com 14 | spring.mail.password=xxx 15 | 16 | ### xxl-job login 17 | xxl.job.login.username=admin 18 | xxl.job.login.password=123456 19 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/application-test.properties: -------------------------------------------------------------------------------- 1 | ### xxl-job, datasource 2 | knd.datasource.ip=192.168.28.131 3 | knd.datasource.username=root 4 | knd.datasource.password=1q2w3e4r 5 | 6 | spring.datasource.url=jdbc:mysql://${knd.datasource.ip}:3306/xxl-job?Unicode=true&characterEncoding=UTF-8 7 | spring.datasource.username=${knd.datasource.username} 8 | spring.datasource.password=${knd.datasource.password} 9 | 10 | ### xxl-job email 11 | spring.mail.host=smtp.qq.com 12 | spring.mail.port=25 13 | spring.mail.username=xxx@qq.com 14 | spring.mail.password=xxx 15 | 16 | ### xxl-job login 17 | xxl.job.login.username=admin 18 | xxl.job.login.password=123456 19 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 默认开发环境 2 | spring.profiles.active=dev 3 | 4 | ### web 5 | server.port=8081 6 | 7 | ### resources 8 | spring.mvc.static-path-pattern=/static/** 9 | spring.resources.static-locations=classpath:/static/ 10 | 11 | ### freemarker 12 | spring.freemarker.templateLoaderPath=classpath:/templates/ 13 | spring.freemarker.suffix=.ftl 14 | spring.freemarker.charset=UTF-8 15 | spring.freemarker.request-context-attribute=request 16 | spring.freemarker.settings.number_format=0.########## 17 | 18 | ### mybatis 19 | mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml 20 | 21 | ### xxl-job, datasource 22 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver 23 | 24 | spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource 25 | spring.datasource.tomcat.max-wait=10000 26 | spring.datasource.tomcat.max-active=30 27 | spring.datasource.tomcat.test-on-borrow=true 28 | 29 | ### xxl-job email 30 | spring.mail.properties.mail.smtp.auth=true 31 | spring.mail.properties.mail.smtp.starttls.enable=true 32 | spring.mail.properties.mail.smtp.starttls.required=true 33 | 34 | ### xxl-job, access token 35 | xxl.job.accessToken= 36 | 37 | ### xxl-job, i18n (default empty as chinese, "en" as english) 38 | xxl.job.i18n= 39 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | logback 5 | 6 | 7 | 8 | 9 | %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n 10 | 11 | 12 | 13 | 14 | ${log.path} 15 | 16 | ${log.path}.%d{yyyy-MM-dd}.zip 17 | 18 | 19 | %date %level [%thread] %logger{36} [%file : %line] %msg%n 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/quartz.properties: -------------------------------------------------------------------------------- 1 | # Default Properties file for use by StdSchedulerFactory 2 | # to create a Quartz Scheduler Instance, if a different 3 | # properties file is not explicitly specified. 4 | # 5 | 6 | org.quartz.scheduler.instanceName: DefaultQuartzScheduler 7 | org.quartz.scheduler.instanceId: AUTO 8 | org.quartz.scheduler.rmi.export: false 9 | org.quartz.scheduler.rmi.proxy: false 10 | org.quartz.scheduler.wrapJobExecutionInUserTransaction: false 11 | 12 | org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool 13 | org.quartz.threadPool.threadCount: 50 14 | org.quartz.threadPool.threadPriority: 5 15 | org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true 16 | 17 | org.quartz.jobStore.misfireThreshold: 60000 18 | org.quartz.jobStore.maxMisfiresToHandleAtATime: 1 19 | 20 | #org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore 21 | 22 | # for cluster 23 | org.quartz.jobStore.tablePrefix: XXL_JOB_QRTZ_ 24 | org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX 25 | org.quartz.jobStore.isClustered: true 26 | org.quartz.jobStore.clusterCheckinInterval: 5000 27 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | white-space: pre; 29 | color: black; 30 | cursor: pointer; 31 | } 32 | 33 | li.CodeMirror-hint-active { 34 | background: #08f; 35 | color: white; 36 | } 37 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/icon.png -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-job/job-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/main/resources/templates/common/common.exception.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Error 6 | 18 | 19 | 20 | 21 | 22 | 23 |

24 |

System Error

25 |

${exceptionMsg}

26 | Back 27 |

28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/test/java/com/xxl/job/admin/controller/AbstractSpringMvcTest.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.controller; 2 | 3 | import org.junit.Before; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.test.context.ContextConfiguration; 7 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 | import org.springframework.test.context.web.WebAppConfiguration; 9 | import org.springframework.test.web.servlet.MockMvc; 10 | import org.springframework.test.web.servlet.setup.MockMvcBuilders; 11 | import org.springframework.web.context.WebApplicationContext; 12 | 13 | @WebAppConfiguration 14 | @RunWith(SpringJUnit4ClassRunner.class) 15 | @ContextConfiguration(locations = {"classpath*:spring/*.xml"}) 16 | public class AbstractSpringMvcTest { 17 | 18 | @Autowired 19 | private WebApplicationContext applicationContext; 20 | protected MockMvc mockMvc; 21 | 22 | @Before 23 | public void setup() { 24 | this.mockMvc = MockMvcBuilders.webAppContextSetup(this.applicationContext).build(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.dao; 2 | 3 | import com.xxl.job.admin.core.model.XxlJobRegistry; 4 | import com.xxl.job.admin.dao.XxlJobRegistryDao; 5 | import org.junit.Test; 6 | import org.junit.runner.RunWith; 7 | import org.springframework.test.context.ContextConfiguration; 8 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 9 | 10 | import javax.annotation.Resource; 11 | import java.util.List; 12 | 13 | @RunWith(SpringJUnit4ClassRunner.class) 14 | @ContextConfiguration(locations = "classpath*:spring/applicationcontext-*.xml") 15 | public class XxlJobRegistryDaoTest { 16 | 17 | @Resource 18 | private XxlJobRegistryDao xxlJobRegistryDao; 19 | 20 | @Test 21 | public void test(){ 22 | int ret = xxlJobRegistryDao.registryUpdate("g1", "k1", "v1"); 23 | if (ret < 1) { 24 | ret = xxlJobRegistryDao.registrySave("g1", "k1", "v1"); 25 | } 26 | 27 | List list = xxlJobRegistryDao.findAll(1); 28 | 29 | int ret2 = xxlJobRegistryDao.removeDead(1); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-admin/src/test/java/com/xxl/job/admin/util/I18nUtilTest.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.admin.util; 2 | 3 | import com.xxl.job.admin.core.util.I18nUtil; 4 | import org.junit.Test; 5 | import org.junit.runner.RunWith; 6 | import org.springframework.test.context.ContextConfiguration; 7 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 | 9 | /** 10 | * email util test 11 | * 12 | * @author xuxueli 2017-12-22 17:16:23 13 | */ 14 | @RunWith(SpringJUnit4ClassRunner.class) 15 | @ContextConfiguration(locations = "classpath*:spring/applicationcontext-*.xml") 16 | public class I18nUtilTest { 17 | 18 | @Test 19 | public void test(){ 20 | System.out.println(I18nUtil.getString("admin_name")); 21 | System.out.println(I18nUtil.getMultString("admin_name", "admin_name_full")); 22 | System.out.println(I18nUtil.getMultString()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/biz/AdminBiz.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.biz; 2 | 3 | import com.xxl.job.core.biz.model.HandleCallbackParam; 4 | import com.xxl.job.core.biz.model.RegistryParam; 5 | import com.xxl.job.core.biz.model.ReturnT; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author xuxueli 2017-07-27 21:52:49 11 | */ 12 | public interface AdminBiz { 13 | 14 | public static final String MAPPING = "/api"; 15 | 16 | 17 | // ---------------------- callback ---------------------- 18 | 19 | /** 20 | * callback 21 | * 22 | * @param callbackParamList 23 | * @return 24 | */ 25 | public ReturnT callback(List callbackParamList); 26 | 27 | 28 | // ---------------------- registry ---------------------- 29 | 30 | /** 31 | * registry 32 | * 33 | * @param registryParam 34 | * @return 35 | */ 36 | public ReturnT registry(RegistryParam registryParam); 37 | 38 | /** 39 | * registry remove 40 | * 41 | * @param registryParam 42 | * @return 43 | */ 44 | public ReturnT registryRemove(RegistryParam registryParam); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.biz; 2 | 3 | import com.xxl.job.core.biz.model.LogResult; 4 | import com.xxl.job.core.biz.model.ReturnT; 5 | import com.xxl.job.core.biz.model.TriggerParam; 6 | 7 | /** 8 | * Created by xuxueli on 17/3/1. 9 | */ 10 | public interface ExecutorBiz { 11 | 12 | /** 13 | * beat 14 | * @return 15 | */ 16 | public ReturnT beat(); 17 | 18 | /** 19 | * idle beat 20 | * 21 | * @param jobId 22 | * @return 23 | */ 24 | public ReturnT idleBeat(int jobId); 25 | 26 | /** 27 | * kill 28 | * @param jobId 29 | * @return 30 | */ 31 | public ReturnT kill(int jobId); 32 | 33 | /** 34 | * log 35 | * @param logDateTim 36 | * @param logId 37 | * @param fromLineNum 38 | * @return 39 | */ 40 | public ReturnT log(long logDateTim, int logId, int fromLineNum); 41 | 42 | /** 43 | * run 44 | * @param triggerParam 45 | * @return 46 | */ 47 | public ReturnT run(TriggerParam triggerParam); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/enums/ExecutorBlockStrategyEnum.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.enums; 2 | 3 | /** 4 | * Created by xuxueli on 17/5/9. 5 | */ 6 | public enum ExecutorBlockStrategyEnum { 7 | 8 | SERIAL_EXECUTION("Serial execution"), 9 | /*CONCURRENT_EXECUTION("并行"),*/ 10 | DISCARD_LATER("Discard Later"), 11 | COVER_EARLY("Cover Early"); 12 | 13 | private String title; 14 | private ExecutorBlockStrategyEnum (String title) { 15 | this.title = title; 16 | } 17 | 18 | public void setTitle(String title) { 19 | this.title = title; 20 | } 21 | public String getTitle() { 22 | return title; 23 | } 24 | 25 | public static ExecutorBlockStrategyEnum match(String name, ExecutorBlockStrategyEnum defaultItem) { 26 | if (name != null) { 27 | for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) { 28 | if (item.name().equals(name)) { 29 | return item; 30 | } 31 | } 32 | } 33 | return defaultItem; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/enums/RegistryConfig.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.enums; 2 | 3 | /** 4 | * Created by xuxueli on 17/5/10. 5 | */ 6 | public class RegistryConfig { 7 | 8 | public static final int BEAT_TIMEOUT = 30; 9 | public static final int DEAD_TIMEOUT = BEAT_TIMEOUT * 3; 10 | 11 | public enum RegistType{ EXECUTOR, ADMIN } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.handler; 2 | 3 | import com.xxl.job.core.biz.model.ReturnT; 4 | 5 | /** 6 | * job handler 7 | * 8 | * @author xuxueli 2015-12-19 19:06:38 9 | */ 10 | public abstract class IJobHandler { 11 | 12 | 13 | /** success */ 14 | public static final ReturnT SUCCESS = new ReturnT(200, null); 15 | /** fail */ 16 | public static final ReturnT FAIL = new ReturnT(500, null); 17 | /** fail timeout */ 18 | public static final ReturnT FAIL_TIMEOUT = new ReturnT(502, null); 19 | 20 | 21 | /** 22 | * execute handler, invoked when executor receives a scheduling request 23 | * 24 | * @param param 25 | * @return 26 | * @throws Exception 27 | */ 28 | public abstract ReturnT execute(String param) throws Exception; 29 | 30 | 31 | /** 32 | * init handler, invoked when JobThread init 33 | */ 34 | public void init() { 35 | // TODO 36 | } 37 | 38 | 39 | /** 40 | * destroy handler, invoked when JobThread destroy 41 | */ 42 | public void destroy() { 43 | // TODO 44 | } 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/handler/annotation/JobHandler.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.handler.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * annotation for job handler 11 | * @author 2016-5-17 21:06:49 12 | */ 13 | @Target({ElementType.TYPE}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Inherited 16 | public @interface JobHandler { 17 | 18 | String value() default ""; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.handler.impl; 2 | 3 | import com.xxl.job.core.biz.model.ReturnT; 4 | import com.xxl.job.core.handler.IJobHandler; 5 | import com.xxl.job.core.log.XxlJobLogger; 6 | 7 | /** 8 | * glue job handler 9 | * @author xuxueli 2016-5-19 21:05:45 10 | */ 11 | public class GlueJobHandler extends IJobHandler { 12 | 13 | private long glueUpdatetime; 14 | private IJobHandler jobHandler; 15 | public GlueJobHandler(IJobHandler jobHandler, long glueUpdatetime) { 16 | this.jobHandler = jobHandler; 17 | this.glueUpdatetime = glueUpdatetime; 18 | } 19 | public long getGlueUpdatetime() { 20 | return glueUpdatetime; 21 | } 22 | 23 | @Override 24 | public ReturnT execute(String param) throws Exception { 25 | XxlJobLogger.log("----------- glue.version:"+ glueUpdatetime +" -----------"); 26 | return jobHandler.execute(param); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/util/DateUtil.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.util; 2 | 3 | import java.text.ParseException; 4 | import java.text.SimpleDateFormat; 5 | import java.util.Date; 6 | 7 | /** 8 | * date util 9 | * 10 | * @author xuxueli 2018-08-19 01:24:11 11 | */ 12 | public class DateUtil { 13 | private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; 14 | 15 | private static ThreadLocal threadLocal = new ThreadLocal() { 16 | @Override 17 | protected synchronized SimpleDateFormat initialValue() { 18 | //return super.initialValue(); 19 | return new SimpleDateFormat(DATE_FORMAT); 20 | } 21 | }; 22 | 23 | public static String format(Date date) { 24 | return threadLocal.get().format(date); 25 | } 26 | 27 | public static Date parse(String textDate) throws ParseException { 28 | return threadLocal.get().parse(textDate); 29 | } 30 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-core/src/main/java/com/xxl/job/core/util/ShardingUtil.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.core.util; 2 | 3 | /** 4 | * sharding model 5 | * @author xuxueli 2017-07-25 21:26:38 6 | */ 7 | public class ShardingUtil { 8 | 9 | private static InheritableThreadLocal contextHolder = new InheritableThreadLocal(); 10 | 11 | public static class ShardingVO { 12 | 13 | private int index; // sharding index 14 | private int total; // sharding total 15 | 16 | public ShardingVO(int index, int total) { 17 | this.index = index; 18 | this.total = total; 19 | } 20 | 21 | public int getIndex() { 22 | return index; 23 | } 24 | 25 | public void setIndex(int index) { 26 | this.index = index; 27 | } 28 | 29 | public int getTotal() { 30 | return total; 31 | } 32 | 33 | public void setTotal(int total) { 34 | this.total = total; 35 | } 36 | } 37 | 38 | public static void setShardingVo(ShardingVO shardingVo){ 39 | contextHolder.set(shardingVo); 40 | } 41 | 42 | public static ShardingVO getShardingVo(){ 43 | return contextHolder.get(); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/java/com/xxl/job/executor/JobExecutorApplication.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.executor; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author xuxueli 2018-10-28 00:38:13 8 | */ 9 | @SpringBootApplication 10 | public class JobExecutorApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(JobExecutorApplication.class, args); 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | //package com.xxl.job.executor.mvc.controller; 2 | // 3 | //import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 4 | //import org.springframework.stereotype.Controller; 5 | //import org.springframework.web.bind.annotation.RequestMapping; 6 | //import org.springframework.web.bind.annotation.ResponseBody; 7 | // 8 | //@Controller 9 | //@EnableAutoConfiguration 10 | //public class IndexController { 11 | // 12 | // @RequestMapping("/") 13 | // @ResponseBody 14 | // String index() { 15 | // return "xxl job executor running."; 16 | // } 17 | // 18 | //} -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/java/com/xxl/job/executor/service/jobhandler/ShardingJobHandler.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.executor.service.jobhandler; 2 | 3 | import com.xxl.job.core.biz.model.ReturnT; 4 | import com.xxl.job.core.handler.IJobHandler; 5 | import com.xxl.job.core.handler.annotation.JobHandler; 6 | import com.xxl.job.core.log.XxlJobLogger; 7 | import com.xxl.job.core.util.ShardingUtil; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 分片广播任务 12 | * 13 | * @author xuxueli 2017-07-25 20:56:50 14 | */ 15 | @JobHandler(value="shardingJobHandler") 16 | @Service 17 | public class ShardingJobHandler extends IJobHandler { 18 | 19 | @Override 20 | public ReturnT execute(String param) throws Exception { 21 | 22 | // 分片参数 23 | ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo(); 24 | XxlJobLogger.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardingVO.getIndex(), shardingVO.getTotal()); 25 | 26 | // 业务逻辑 27 | for (int i = 0; i < shardingVO.getTotal(); i++) { 28 | if (i == shardingVO.getIndex()) { 29 | XxlJobLogger.log("第 {} 片, 命中分片开始处理", i); 30 | } else { 31 | XxlJobLogger.log("第 {} 片, 忽略", i); 32 | } 33 | } 34 | 35 | return SUCCESS; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" 2 | xxl.job.admin.addresses=http://127.0.0.1:8081 -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/resources/application-test.properties: -------------------------------------------------------------------------------- 1 | ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" 2 | xxl.job.admin.addresses=http://120.78.94.191:8081 -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 默认开发环境 2 | spring.profiles.active=dev 3 | 4 | # web port 5 | server.port=8082 6 | 7 | # log config 8 | logging.config=classpath:logback.xml 9 | 10 | ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" 11 | xxl.job.admin.addresses=http://127.0.0.1:8081 12 | 13 | ### xxl-job executor address 14 | xxl.job.executor.appname=xxl-job-executor-sample 15 | xxl.job.executor.ip= 16 | xxl.job.executor.port=9777 17 | 18 | ### xxl-job, access token 19 | xxl.job.accessToken= 20 | 21 | ### xxl-job log path 22 | xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler 23 | ### xxl-job log retention days 24 | xxl.job.executor.logretentiondays=-1 25 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | logback 5 | 6 | 7 | 8 | 9 | %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n 10 | 11 | 12 | 13 | 14 | ${log.path} 15 | 16 | ${log.path}.%d{yyyy-MM-dd}.zip 17 | 18 | 19 | %date %level [%thread] %logger{36} [%file : %line] %msg%n 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /knd-micro/micro-job/job-executor-samples/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.xxl.job.executor.test; 2 | 3 | import org.junit.Test; 4 | 5 | /*@RunWith(SpringJUnit4ClassRunner.class) 6 | @SpringApplicationConfiguration(classes = Application.class) 7 | @WebAppConfiguration*/ 8 | /*@RunWith(SpringRunner.class) 9 | @SpringBootTest(classes = Application.class ,webEnvironment= SpringBootTest.WebEnvironment.DEFINED_PORT)*/ 10 | public class XxlJobExecutorExampleBootApplicationTests { 11 | 12 | @Test 13 | public void test() { 14 | 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-admin/src/main/java/com/kernel/gateway/MonitorApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel.gateway; 2 | 3 | import de.codecentric.boot.admin.server.config.EnableAdminServer; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * @author kndopensource 10 | */ 11 | @EnableAdminServer 12 | @EnableDiscoveryClient 13 | @SpringBootApplication 14 | public class MonitorApp { 15 | public static void main(String[] args) { 16 | SpringApplication.run(MonitorApp.class, args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-admin/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 6500 3 | 4 | spring: 5 | application: 6 | name: sc-admin 7 | security: 8 | user: 9 | name: 'admin' 10 | password: 'admin' 11 | cloud: 12 | nacos: 13 | discovery: 14 | metadata: 15 | user.name: ${spring.security.user.name} 16 | user.password: ${spring.security.user.password} -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-logcenter/src/main/java/com/kernel/LogApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel; 2 | 3 | import com.kernel.search.annotation.EnableSearchClient; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * @author kndopensource 10 | */ 11 | @EnableDiscoveryClient 12 | @EnableSearchClient 13 | @SpringBootApplication 14 | public class LogApp { 15 | public static void main(String[] args) { 16 | SpringApplication.run(LogApp.class, args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-logcenter/src/main/java/com/kernel/log/config/ExceptionAdvice.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.config; 2 | 3 | import com.kernel.common.exception.DefaultExceptionAdvice; 4 | import org.springframework.web.bind.annotation.ControllerAdvice; 5 | 6 | /** 7 | * 统一异常处理 8 | * 9 | * @author kndopensource 10 | * @date 2018/12/22 11 | */ 12 | @ControllerAdvice 13 | public class ExceptionAdvice extends DefaultExceptionAdvice { 14 | } 15 | -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-logcenter/src/main/java/com/kernel/log/controller/AggregationController.java: -------------------------------------------------------------------------------- 1 | package com.kernel.log.controller; 2 | 3 | import com.kernel.search.client.service.IQueryService; 4 | import io.swagger.annotations.ApiOperation; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * 访问统计 13 | * 14 | * @author kndopensource 15 | * @date 2019/5/8 16 | */ 17 | @RestController 18 | public class AggregationController { 19 | @Autowired 20 | private IQueryService queryService; 21 | 22 | @ApiOperation(value = "访问统计") 23 | @GetMapping(value = "/requestStat") 24 | public Map requestStatAgg() { 25 | return queryService.requestStatAgg("point-log-*","request-statistics"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-logcenter/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | kndopensource: 2 | swagger: 3 | enabled: true 4 | title: 日志中心 5 | description: 日志中心接口文档 6 | version: 1.0 7 | base-package: com.kernel.log.controller -------------------------------------------------------------------------------- /knd-micro/micro-monitor/monitor-logcenter/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 7200 3 | 4 | spring: 5 | application: 6 | name: log-center -------------------------------------------------------------------------------- /knd-micro/micro-monitor/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-micro 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | micro-monitor 13 | pom 14 | 15 | monitor-admin 16 | monitor-logcenter 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /knd-micro/micro-nacos-config/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-micro 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 基于nacos的配置中心模块 12 | micro-nacos-config 13 | jar 14 | 15 | 16 | 17 | com.alibaba.cloud 18 | spring-cloud-starter-alibaba-nacos-config 19 | 20 | 21 | -------------------------------------------------------------------------------- /knd-micro/micro-nacos-config/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | ########################## 统一变量配置 ########################## 2 | ##### 数据库配置 3 | knd.datasource.ip=127.0.0.1 4 | knd.datasource.username=root 5 | knd.datasource.password=root 6 | 7 | 8 | ##### redis配置 9 | spring.redis.host=127.0.0.1 10 | spring.redis.port=6379 11 | spring.redis.timeout=5000 12 | 13 | ##### elasticsearch配置 14 | knd.elasticsearch.cluster-name=my-es 15 | knd.elasticsearch.cluster-nodes=127.0.0.1 16 | 17 | ##### sentinel配置 18 | knd.sentinel.dashboard=127.0.0.1:6999 19 | 20 | ##### fastDFS配置 21 | knd.fdfs.web-url=127.0.0.1 22 | knd.fdfs.trackerList=${knd.fdfs.web-url}:22122 23 | 24 | ##### 日志链路追踪 25 | knd.trace.enable=true 26 | 27 | ##### 负载均衡隔离(version隔离,只适用于开发环境) 28 | knd.ribbon.isolation.enabled=false 29 | 30 | ##### mybatis-plus打印完整sql(只适用于开发环境) 31 | mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl -------------------------------------------------------------------------------- /knd-micro/micro-nacos-config/src/main/resources/application-prod.properties: -------------------------------------------------------------------------------- 1 | ########################## 统一变量配置 ########################## 2 | ##### 数据库配置 3 | knd.datasource.ip=192.168.101.5 4 | knd.datasource.username=root 5 | knd.datasource.password=root 6 | 7 | ##### redis配置 8 | spring.redis.sentinel.master=mymaster 9 | spring.redis.sentinel.nodes=192.168.101.5:26380,192.168.28.131:26381 10 | spring.redis.password=1q2w3e4r 11 | 12 | ##### elasticsearch配置 13 | knd.elasticsearch.cluster-name=my-es 14 | knd.elasticsearch.cluster-nodes=192.168.101.5 15 | 16 | ##### sentinel配置 17 | knd.sentinel.dashboard=192.168.101.5:6999 18 | 19 | ##### fastDFS配置 20 | knd.fdfs.web-url=192.168.101.5 21 | 22 | knd.fdfs.trackerList=${knd.fdfs.web-url}:22122 23 | 24 | ##### 日志链路追踪 25 | knd.trace.enable=true -------------------------------------------------------------------------------- /knd-micro/micro-nacos-config/src/main/resources/application-test.properties: -------------------------------------------------------------------------------- 1 | ########################## 统一变量配置 ########################## 2 | ##### 数据库配置 3 | knd.datasource.ip=192.168.28.131 4 | knd.datasource.username=root 5 | knd.datasource.password=1q2w3e4r 6 | 7 | ##### redis配置 8 | spring.redis.host=192.168.101.5 9 | spring.redis.port=6379 10 | spring.redis.timeout=5000 11 | 12 | ##### elasticsearch配置 13 | knd.elasticsearch.cluster-name=my-es 14 | knd.elasticsearch.cluster-nodes=192.168.101.5 15 | 16 | ##### sentinel配置 17 | knd.sentinel.dashboard=192.168.101.5:6999 18 | 19 | ##### fastDFS配置 20 | knd.fdfs.web-url=192.168.101.5 21 | 22 | knd.fdfs.trackerList=${knd.fdfs.web-url}:22122 23 | 24 | ##### 日志链路追踪 25 | knd.trace.enable=true -------------------------------------------------------------------------------- /knd-micro/micro-nacos-config/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | ########################## bootstrap级别通用配置 ########################## 2 | # 默认开发环境 3 | spring.profiles.active=dev 4 | 5 | ##### nacos(注册中心和配置中心)地址 6 | spring.cloud.nacos.server-addr=127.0.0.1:8848 7 | spring.cloud.nacos.config.file-extension=yml 8 | spring.cloud.nacos.config.shared-dataids=common.yml 9 | spring.cloud.nacos.config.refreshable-dataids=common.yml 10 | 11 | ##### spring-boot-actuator配置 12 | management.endpoints.web.exposure.include=* 13 | management.endpoint.health.show-details=always 14 | 15 | ##### 允许bean覆盖 16 | spring.main.allow-bean-definition-overriding=true -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/bin/derby.log: -------------------------------------------------------------------------------- 1 | ---------------------------------------------------------------- 2 | Sun Mar 29 10:10:19 CST 2020: 3 | Booting Derby version The Apache Software Foundation - Apache Derby - 10.10.1.1 - (1458268): instance a816c00e-0171-240d-d829-000019476e78 4 | on database directory F:\workspace\knd-platform\knd-micro\micro-register\nacos\data\derby-data with class loader org.springframework.boot.loader.LaunchedURLClassLoader@685f4c2e 5 | Loaded from jar:file:/F:/workspace/knd-platform/knd-micro/micro-register/nacos/target/nacos-server.jar!/BOOT-INF/lib/derby-10.10.1.1.jar!/ 6 | java.vendor=Oracle Corporation 7 | java.runtime.version=1.8.0_131-b11 8 | user.dir=F:\workspace\knd-platform\knd-micro\micro-register\nacos\bin 9 | os.name=Windows 7 10 | os.arch=amd64 11 | os.version=6.1 12 | derby.system.home=null 13 | Database Class Loader started - derby.database.classpath='' 14 | -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/bin/shutdown.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Copyright 1999-2018 Alibaba Group Holding Ltd. 3 | rem Licensed under the Apache License, Version 2.0 (the "License"); 4 | rem you may not use this file except in compliance with the License. 5 | rem You may obtain a copy of the License at 6 | rem 7 | rem http://www.apache.org/licenses/LICENSE-2.0 8 | rem 9 | rem Unless required by applicable law or agreed to in writing, software 10 | rem distributed under the License is distributed on an "AS IS" BASIS, 11 | rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | rem See the License for the specific language governing permissions and 13 | rem limitations under the License. 14 | if not exist "%JAVA_HOME%\bin\jps.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1 15 | 16 | setlocal 17 | 18 | set "PATH=%JAVA_HOME%\bin;%PATH%" 19 | 20 | echo killing nacos server 21 | 22 | for /f "tokens=1" %%i in ('jps -m ^| find "nacos.nacos"') do ( taskkill /F /PID %%i ) 23 | 24 | echo Done! 25 | -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/bin/shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Copyright 1999-2018 Alibaba Group Holding Ltd. 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | cd `dirname $0`/../target 16 | target_dir=`pwd` 17 | 18 | pid=`ps ax | grep -i 'nacos.nacos' | grep ${target_dir} | grep java | grep -v grep | awk '{print $1}'` 19 | if [ -z "$pid" ] ; then 20 | echo "No nacosServer running." 21 | exit -1; 22 | fi 23 | 24 | echo "The nacosServer(${pid}) is running..." 25 | 26 | kill ${pid} 27 | 28 | echo "Send shutdown request to nacosServer(${pid}) OK" 29 | -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/conf/application.properties.example: -------------------------------------------------------------------------------- 1 | # spring 2 | 3 | server.contextPath=/nacos 4 | server.servlet.contextPath=/nacos 5 | server.port=8848 6 | 7 | 8 | db.num=2 9 | db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC 10 | db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC 11 | db.user=nacos_devtest 12 | db.password=nacos -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/conf/cluster.conf.example: -------------------------------------------------------------------------------- 1 | #it is ip 2 | #example 3 | 10.10.109.214 4 | 11.16.128.34 5 | 11.16.128.36 -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/README_DO_NOT_TOUCH_FILES.txt: -------------------------------------------------------------------------------- 1 | 2 | # ************************************************************************* 3 | # *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** 4 | # *** FILES IN THIS DIRECTORY AND SUBDIRECTORIES CONSTITUTE A DERBY *** 5 | # *** DATABASE, WHICH INCLUDES THE DATA (USER AND SYSTEM) AND THE *** 6 | # *** FILES NECESSARY FOR DATABASE RECOVERY. *** 7 | # *** EDITING, ADDING, OR DELETING ANY OF THESE FILES MAY CAUSE DATA *** 8 | # *** CORRUPTION AND LEAVE THE DATABASE IN A NON-RECOVERABLE STATE. *** 9 | # ************************************************************************* -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/db.lck: -------------------------------------------------------------------------------- 1 | $a816c00e-0171-240d-d829-000019476e78 -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/log/README_DO_NOT_TOUCH_FILES.txt: -------------------------------------------------------------------------------- 1 | 2 | # ************************************************************************* 3 | # *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** 4 | # *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE RECOVERY *** 5 | # *** SYSTEM. EDITING, ADDING, OR DELETING FILES IN THIS DIRECTORY *** 6 | # *** WILL CAUSE THE DERBY RECOVERY SYSTEM TO FAIL, LEADING TO *** 7 | # *** NON-RECOVERABLE CORRUPT DATABASES. *** 8 | # ************************************************************************* -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/log/log.ctrl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/log/log.ctrl -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/log/log1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/log/log1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/log/logmirror.ctrl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/log/logmirror.ctrl -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/README_DO_NOT_TOUCH_FILES.txt: -------------------------------------------------------------------------------- 1 | 2 | # ************************************************************************* 3 | # *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** 4 | # *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE TO STORE *** 5 | # *** USER AND SYSTEM DATA. EDITING, ADDING, OR DELETING FILES IN THIS *** 6 | # *** DIRECTORY WILL CORRUPT THE ASSOCIATED DERBY DATABASE AND MAKE *** 7 | # *** IT NON-RECOVERABLE. *** 8 | # ************************************************************************* -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c10.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c10.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c101.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c101.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c111.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c111.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c121.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c121.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c130.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c130.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c141.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c141.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c150.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c150.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c161.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c161.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c171.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c171.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c180.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c180.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c191.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c191.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1a1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1a1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1c0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1c0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1d1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1d1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1e0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1e0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c1f1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c1f1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c20.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c20.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c200.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c200.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c211.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c211.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c221.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c221.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c230.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c230.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c241.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c241.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c251.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c251.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c260.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c260.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c271.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c271.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c281.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c281.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c290.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c290.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2a1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2a1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2c1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2c1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2d0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2d0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2e1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2e1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c2f0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c2f0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c300.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c300.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c31.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c31.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c311.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c311.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c321.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c321.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c331.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c331.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c340.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c340.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c351.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c351.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c361.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c361.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c371.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c371.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c380.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c380.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c391.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c391.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3a1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3a1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3c0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3c0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3d1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3d1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3e1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3e1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c3f1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c3f1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c400.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c400.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c41.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c41.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c411.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c411.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c421.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c421.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c430.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c430.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c441.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c441.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c451.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c451.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c461.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c461.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c470.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c470.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c481.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c481.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c490.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c490.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4a1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4a1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4c1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4c1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4d1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4d1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4e1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4e1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c4f0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c4f0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c501.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c501.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c51.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c51.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c511.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c511.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c521.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c521.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c531.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c531.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c540.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c540.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c551.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c551.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c561.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c561.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c570.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c570.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c581.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c581.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c591.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c591.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5a0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5a0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5c1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5c1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5d0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5d0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5e1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5e1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c5f1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c5f1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c60.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c60.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c600.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c600.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c611.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c611.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c621.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c621.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c630.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c630.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c641.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c641.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c651.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c651.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c660.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c660.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c671.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c671.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c681.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c681.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c691.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c691.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6a0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6a0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6b1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6b1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6c1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6c1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6d0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6d0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6e1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6e1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c6f1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c6f1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c700.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c700.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c71.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c71.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c711.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c711.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c721.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c721.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c731.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c731.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c740.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c740.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c751.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c751.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c760.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c760.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c771.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c771.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c780.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c780.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c791.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c791.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c81.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c81.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/c90.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/c90.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/ca1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/ca1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/cb1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/cb1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/cc0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/cc0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/cd1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/cd1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/ce1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/ce1.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/cf0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/cf0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7a0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7a0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7b0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7b0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7c0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7c0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7d0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7d0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7e0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7e0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d7f0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d7f0.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d800.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d800.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d810.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d810.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d820.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d820.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d830.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d830.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d840.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d840.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d850.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d850.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d860.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d860.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d870.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d870.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/seg0/d880.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/derby-data/seg0/d880.dat -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/derby-data/service.properties: -------------------------------------------------------------------------------- 1 | #F:\workspace\knd-platform\knd-micro\micro-register\nacos\data\derby-data 2 | # ******************************************************************** 3 | # *** Please do NOT edit this file. *** 4 | # *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. *** 5 | # ******************************************************************** 6 | #Sat Mar 28 18:07:49 CST 2020 7 | SysschemasIndex2Identifier=225 8 | SyscolumnsIdentifier=144 9 | SysconglomeratesIndex1Identifier=49 10 | SysconglomeratesIdentifier=32 11 | SyscolumnsIndex2Identifier=177 12 | SysschemasIndex1Identifier=209 13 | SysconglomeratesIndex3Identifier=81 14 | SystablesIndex2Identifier=129 15 | SyscolumnsIndex1Identifier=161 16 | derby.serviceProtocol=org.apache.derby.database.Database 17 | SysschemasIdentifier=192 18 | derby.storage.propertiesId=16 19 | SysconglomeratesIndex2Identifier=65 20 | derby.serviceLocale=zh_CN 21 | SystablesIdentifier=96 22 | SystablesIndex1Identifier=113 23 | #--- last line, don't put anything after this line --- 24 | -------------------------------------------------------------------------------- /knd-micro/micro-register/nacos/data/naming/meta.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kndopensource/knd-platform/f8121bb82b813943f4509809d28d2e4c7fbe22ac/knd-micro/micro-register/nacos/data/naming/meta.properties -------------------------------------------------------------------------------- /knd-micro/micro-search/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-micro 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 搜索中心 12 | micro-search 13 | pom 14 | 15 | 16 | search-client 17 | search-server 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | micro-search 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 搜索中心客户端 12 | search-client 13 | jar 14 | 15 | 16 | 17 | com.knd 18 | knd-ribbon-springboot-starter 19 | 20 | 21 | com.knd 22 | knd-sentinel-springboot-starter 23 | 24 | 25 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/annotation/EnableSearchClient.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.annotation; 2 | 3 | import com.kernel.search.client.service.impl.QueryServiceImpl; 4 | import org.springframework.cloud.openfeign.EnableFeignClients; 5 | import org.springframework.context.annotation.Import; 6 | 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | /** 13 | * 控制是否加载搜索中心客户端的Service 14 | * 15 | * @author knd 16 | */ 17 | @Target(ElementType.TYPE) 18 | @Retention(RetentionPolicy.RUNTIME) 19 | @EnableFeignClients 20 | @Import(QueryServiceImpl.class) 21 | public @interface EnableSearchClient { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/client/feign/AggregationService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.client.feign; 2 | 3 | import com.kernel.common.constant.ServiceNameConstants; 4 | import com.kernel.search.client.feign.fallback.SearchServiceFallbackFactory; 5 | import org.springframework.cloud.openfeign.FeignClient; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.PathVariable; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * @author knd 13 | */ 14 | @FeignClient(name = ServiceNameConstants.SEARCH_SERVICE, fallbackFactory = SearchServiceFallbackFactory.class, decode404 = true) 15 | public interface AggregationService { 16 | /** 17 | * 查询文档列表 18 | * @param indexName 索引名 19 | * @param routing es的路由 20 | */ 21 | @GetMapping(value = "/agg/requestStat/{indexName}/{routing}") 22 | Map requestStatAgg(@PathVariable("indexName") String indexName, @PathVariable("routing") String routing); 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/client/feign/SearchService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.client.feign; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.kernel.common.constant.ServiceNameConstants; 5 | import com.kernel.common.model.PageResult; 6 | import com.kernel.search.client.feign.fallback.SearchServiceFallbackFactory; 7 | import com.kernel.search.model.SearchDto; 8 | import org.springframework.cloud.openfeign.FeignClient; 9 | import org.springframework.web.bind.annotation.*; 10 | 11 | /** 12 | * @author knd 13 | */ 14 | @FeignClient(name = ServiceNameConstants.SEARCH_SERVICE, fallbackFactory = SearchServiceFallbackFactory.class, decode404 = true) 15 | public interface SearchService { 16 | /** 17 | * 查询文档列表 18 | * @param indexName 索引名 19 | * @param searchDto 搜索Dto 20 | */ 21 | @PostMapping(value = "/search/{indexName}") 22 | PageResult strQuery(@PathVariable("indexName") String indexName, @RequestBody SearchDto searchDto); 23 | } 24 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/client/feign/fallback/AggregationServiceFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.client.feign.fallback; 2 | 3 | import cn.hutool.core.map.MapUtil; 4 | import com.kernel.search.client.feign.AggregationService; 5 | import feign.hystrix.FallbackFactory; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * searchService降级工场 11 | * 12 | * @author knd 13 | */ 14 | @Slf4j 15 | @Component 16 | public class AggregationServiceFallbackFactory implements FallbackFactory { 17 | @Override 18 | public AggregationService create(Throwable throwable) { 19 | return (indexName, routing) -> { 20 | log.error("通过索引{}搜索异常:{}", indexName, throwable); 21 | return MapUtil.newHashMap(0); 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/client/feign/fallback/SearchServiceFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.client.feign.fallback; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.kernel.common.model.PageResult; 5 | import com.kernel.search.client.feign.SearchService; 6 | import feign.hystrix.FallbackFactory; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.stereotype.Component; 9 | 10 | /** 11 | * searchService降级工场 12 | * 13 | * @author knd 14 | */ 15 | @Slf4j 16 | @Component 17 | public class SearchServiceFallbackFactory implements FallbackFactory { 18 | @Override 19 | public SearchService create(Throwable throwable) { 20 | return (indexName, searchDto) -> { 21 | log.error("通过索引{}搜索异常:{}", indexName, throwable); 22 | return PageResult.builder().build(); 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/client/service/IQueryService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.client.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.kernel.common.model.PageResult; 5 | import com.kernel.search.model.LogicDelDto; 6 | import com.kernel.search.model.SearchDto; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * 搜索客户端接口 12 | * 13 | * @author knd 14 | * @date 2019/4/24 15 | */ 16 | public interface IQueryService { 17 | /** 18 | * 查询文档列表 19 | * @param indexName 索引名 20 | * @param searchDto 搜索Dto 21 | */ 22 | PageResult strQuery(String indexName, SearchDto searchDto); 23 | 24 | /** 25 | * 查询文档列表 26 | * @param indexName 索引名 27 | * @param searchDto 搜索Dto 28 | * @param logicDelDto 逻辑删除Dto 29 | */ 30 | PageResult strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto); 31 | 32 | /** 33 | * 访问统计聚合查询 34 | * @param indexName 索引名 35 | * @param routing es的路由 36 | */ 37 | Map requestStatAgg(String indexName, String routing); 38 | } 39 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/model/AggItemVo.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.model; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 聚合Item 8 | * 9 | * @author knd 10 | */ 11 | @Setter 12 | @Getter 13 | public class AggItemVo { 14 | private String name; 15 | private Long value; 16 | } -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/model/LogicDelDto.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * 逻辑删除条件对象 9 | * 10 | * @author knd 11 | * @date 2019/4/25 12 | */ 13 | @Setter 14 | @Getter 15 | @AllArgsConstructor 16 | public class LogicDelDto { 17 | /** 18 | * 逻辑删除字段名 19 | */ 20 | private String logicDelField; 21 | /** 22 | * 逻辑删除字段未删除的值 23 | */ 24 | private String logicNotDelValue; 25 | } 26 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-client/src/main/java/com/kernel/search/model/SearchDto.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.model; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author knd 12 | * @date 2019/4/24 13 | */ 14 | @Data 15 | @EqualsAndHashCode(callSuper = false) 16 | public class SearchDto implements Serializable { 17 | private static final long serialVersionUID = -2084416068307485742L; 18 | /** 19 | * 搜索关键字 20 | */ 21 | private String queryStr; 22 | /** 23 | * 当前页数 24 | */ 25 | private Integer page; 26 | /** 27 | * 每页显示数 28 | */ 29 | private Integer limit; 30 | /** 31 | * 排序字段 32 | */ 33 | private String sortCol; 34 | /** 35 | * 是否显示高亮 36 | */ 37 | private Boolean isHighlighter; 38 | /** 39 | * es的路由 40 | */ 41 | private String routing; 42 | } 43 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/SearchCenterApp.java: -------------------------------------------------------------------------------- 1 | package com.kernel; 2 | 3 | import com.kernel.admin.properties.IndexProperties; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | import org.springframework.cloud.openfeign.EnableFeignClients; 9 | 10 | /** 11 | * @author knd 12 | * @date 2019/5/1 13 | */ 14 | @EnableDiscoveryClient 15 | @EnableFeignClients 16 | @SpringBootApplication 17 | @EnableConfigurationProperties(IndexProperties.class) 18 | public class SearchCenterApp { 19 | public static void main(String[] args) { 20 | SpringApplication.run(SearchCenterApp.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/admin/model/IndexDto.java: -------------------------------------------------------------------------------- 1 | package com.kernel.admin.model; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author knd 7 | */ 8 | @Data 9 | public class IndexDto { 10 | /** 11 | * 索引名 12 | */ 13 | private String indexName; 14 | /** 15 | * 分片数 number_of_shards 16 | */ 17 | private Integer numberOfShards; 18 | /** 19 | * 副本数 number_of_replicas 20 | */ 21 | private Integer numberOfReplicas; 22 | /** 23 | * 类型 24 | */ 25 | private String type; 26 | /** 27 | * mappings内容 28 | */ 29 | private String mappingsSource; 30 | } -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/admin/model/IndexVo.java: -------------------------------------------------------------------------------- 1 | package com.kernel.admin.model; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author knd 7 | */ 8 | @Data 9 | public class IndexVo { 10 | /** 11 | * 索引名 12 | */ 13 | private String indexName; 14 | /** 15 | * 文档数 16 | */ 17 | private Long docsCount; 18 | /** 19 | * 文档删除数 20 | */ 21 | private Long docsDeleted; 22 | /** 23 | * 索引大小(kb) 24 | */ 25 | private Double storeSizeInBytes; 26 | /** 27 | * 总查询数 28 | */ 29 | private Long queryCount; 30 | /** 31 | * 总查询耗时(s) 32 | */ 33 | private Double queryTimeInMillis; 34 | } -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/admin/properties/IndexProperties.java: -------------------------------------------------------------------------------- 1 | package com.kernel.admin.properties; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.cloud.context.config.annotation.RefreshScope; 7 | 8 | /** 9 | * 索引配置 10 | * 11 | * @author knd 12 | */ 13 | @Setter 14 | @Getter 15 | @ConfigurationProperties(prefix = "knd.indices") 16 | @RefreshScope 17 | public class IndexProperties { 18 | /** 19 | * 配置过滤的索引名:默认只显示这些索引 20 | */ 21 | private String[] show; 22 | } 23 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/admin/service/IIndexService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.admin.service; 2 | 3 | import com.kernel.admin.model.IndexDto; 4 | import com.kernel.admin.model.IndexVo; 5 | import com.kernel.common.model.PageResult; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 索引 11 | * 12 | * @author knd 13 | * @date 2019/4/23 14 | */ 15 | public interface IIndexService { 16 | /** 17 | * 创建索引 18 | */ 19 | void create(IndexDto indexDto); 20 | 21 | /** 22 | * 删除索引 23 | * @param indexName 索引名 24 | */ 25 | void delete(String indexName); 26 | 27 | /** 28 | * 索引列表 29 | * @param queryStr 搜索字符串 30 | * @param indices 默认显示的索引名 31 | */ 32 | PageResult list(String queryStr, String... indices); 33 | 34 | /** 35 | * 显示索引明细 36 | * @param indexName 索引名 37 | */ 38 | Map show(String indexName); 39 | } 40 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/common/config/AsycTaskExecutorConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | 5 | /** 6 | * 线程池配置、启用异步 7 | * @Async quartz 需要使用 8 | * 9 | * @author knd 10 | */ 11 | @Configuration 12 | public class AsycTaskExecutorConfig extends DefaultAsycTaskConfig { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/common/config/ExceptionAdvice.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.config; 2 | 3 | import com.kernel.common.exception.DefaultExceptionAdvice; 4 | import org.springframework.web.bind.annotation.ControllerAdvice; 5 | 6 | /** 7 | * @author knd 8 | */ 9 | @ControllerAdvice 10 | public class ExceptionAdvice extends DefaultExceptionAdvice { 11 | } 12 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/common/config/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.kernel.common.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | 5 | /** 6 | * @author knd 7 | * @date 2019/8/5 8 | */ 9 | @Configuration 10 | public class WebMvcConfig extends DefaultWebMvcConfig { 11 | } 12 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/search/controller/AggregationController.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.controller; 2 | 3 | import com.kernel.search.service.IAggregationService; 4 | import io.swagger.annotations.Api; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.bind.annotation.*; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * 聚合统计 13 | * 14 | * @author knd 15 | * @date 2019/5/7 16 | */ 17 | @Slf4j 18 | @RestController 19 | @Api(tags = "搜索模块api") 20 | @RequestMapping("/agg") 21 | public class AggregationController { 22 | @Autowired 23 | private IAggregationService aggregationService; 24 | 25 | /** 26 | * 访问统计聚合查询 27 | * @param indexName 索引名 28 | * @param routing es的路由 29 | */ 30 | @GetMapping("/requestStat/{indexName}/{routing}") 31 | public Map requestStatAgg(@PathVariable String indexName, @PathVariable String routing) { 32 | return aggregationService.requestStatAgg(indexName, routing); 33 | } 34 | } -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/search/controller/SearchController.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.controller; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.kernel.common.model.*; 5 | 6 | import com.kernel.search.model.SearchDto; 7 | import com.kernel.search.service.ISearchService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.web.bind.annotation.*; 10 | 11 | import io.swagger.annotations.Api; 12 | import lombok.extern.slf4j.Slf4j; 13 | 14 | /** 15 | * 通用搜索 16 | * 17 | * @author knd 18 | */ 19 | @Slf4j 20 | @RestController 21 | @Api(tags = "搜索模块api") 22 | @RequestMapping("/search") 23 | public class SearchController { 24 | @Autowired 25 | private ISearchService searchService; 26 | 27 | /** 28 | * 查询文档列表 29 | * @param indexName 索引名 30 | * @param searchDto 搜索Dto 31 | */ 32 | @PostMapping("/{indexName}") 33 | public PageResult strQuery(@PathVariable String indexName, @RequestBody(required = false) SearchDto searchDto) { 34 | if (searchDto == null) { 35 | searchDto = new SearchDto(); 36 | } 37 | return searchService.strQuery(indexName, searchDto); 38 | } 39 | } -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/search/service/IAggregationService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.service; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author knd 7 | * @date 2019/4/24 8 | */ 9 | public interface IAggregationService { 10 | /** 11 | * 访问统计聚合查询 12 | * @param indexName 索引名 13 | * @param routing es的路由 14 | * @return 15 | */ 16 | Map requestStatAgg(String indexName, String routing); 17 | } 18 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/java/com/kernel/search/service/ISearchService.java: -------------------------------------------------------------------------------- 1 | package com.kernel.search.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.kernel.common.model.PageResult; 5 | import com.kernel.search.model.SearchDto; 6 | 7 | /** 8 | * @author knd 9 | * @date 2019/4/24 10 | */ 11 | public interface ISearchService { 12 | /** 13 | * StringQuery通用搜索 14 | * @param indexName 索引名 15 | * @param searchDto 搜索Dto 16 | * @return 17 | */ 18 | PageResult strQuery(String indexName, SearchDto searchDto); 19 | } 20 | -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | data: 3 | elasticsearch: 4 | cluster-name: ${knd.elasticsearch.cluster-name} 5 | cluster-nodes: ${knd.elasticsearch.cluster-nodes}:9300 6 | elasticsearch: 7 | rest: 8 | uris: ${knd.elasticsearch.cluster-nodes}:9200 9 | 10 | knd: 11 | indices: 12 | show: sys-log-*, mysql-slowlog-*, sys_user, point-log-*, audit-log-* 13 | swagger: 14 | enabled: true 15 | title: 搜索中心 16 | description: 搜索中心接口文档 17 | version: 1.0 18 | base-package: com.kernel.search.controller -------------------------------------------------------------------------------- /knd-micro/micro-search/search-server/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 7100 3 | 4 | spring: 5 | application: 6 | name: search-center -------------------------------------------------------------------------------- /knd-micro/micro-transaction/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-micro 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 分布式事务组件 12 | 13 | txlcn-tm-transaction 14 | 15 | micro-transaction 16 | pom 17 | 18 | -------------------------------------------------------------------------------- /knd-micro/micro-transaction/txlcn-tm-transaction/src/main/java/org/txlcn/tm/TransactionManagerApplication.java: -------------------------------------------------------------------------------- 1 | package org.txlcn.tm; 2 | 3 | import com.codingapi.txlcn.tm.config.EnableTransactionManagerServer; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * @author kndopensource 10 | */ 11 | @SpringBootApplication 12 | @EnableDiscoveryClient 13 | @EnableTransactionManagerServer 14 | public class TransactionManagerApplication { 15 | public static void main(String[] args) { 16 | SpringApplication.run(TransactionManagerApplication.class, args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /knd-micro/micro-transaction/txlcn-tm-transaction/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=TX-Manager 2 | server.port=7970 3 | 4 | knd.nacos.server-addr=192.168.101.5:8848 5 | spring.cloud.nacos.discovery.server-addr=${knd.nacos.server-addr} -------------------------------------------------------------------------------- /knd-micro/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | knd-platform 7 | com.knd 8 | 1.0.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 微服务组件集 12 | 13 | micro-nacos-config 14 | micro-gateway 15 | micro-job 16 | micro-monitor 17 | micro-transaction 18 | micro-search 19 | micro-auth2 20 | 21 | knd-micro 22 | pom 23 | 24 | --------------------------------------------------------------------------------