Showing preview only (1,353K chars total). Download the full file or copy to clipboard to get everything.
Repository: pig-mesh/pig
Branch: master
Commit: 6721dd17df59
Files: 490
Total size: 1.2 MB
Directory structure:
gitextract_fxd_qqx7/
├── .editorconfig
├── .gitee/
│ └── ISSUE_TEMPLATE/
│ ├── config.yml
│ └── issue.yml
├── .github/
│ ├── renovate.json
│ └── workflows/
│ ├── github-release.yml
│ ├── image.yml
│ ├── maven.yml
│ └── mirror.yml
├── .gitignore
├── LICENSE
├── README.md
├── db/
│ ├── Dockerfile
│ ├── pig.sql
│ └── pig_config.sql
├── docker-compose.yml
├── pig-auth/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── pig4cloud/
│ │ └── pig/
│ │ └── auth/
│ │ ├── PigAuthApplication.java
│ │ ├── config/
│ │ │ └── AuthorizationServerConfiguration.java
│ │ ├── endpoint/
│ │ │ ├── ImageCodeEndpoint.java
│ │ │ └── PigTokenEndpoint.java
│ │ └── support/
│ │ ├── CustomeOAuth2AccessTokenGenerator.java
│ │ ├── base/
│ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationConverter.java
│ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationProvider.java
│ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationToken.java
│ │ │ └── package-info.java
│ │ ├── core/
│ │ │ ├── CustomeOAuth2TokenCustomizer.java
│ │ │ ├── FormIdentityLoginConfigurer.java
│ │ │ └── PigDaoAuthenticationProvider.java
│ │ ├── filter/
│ │ │ ├── AuthSecurityConfigProperties.java
│ │ │ ├── PasswordDecoderFilter.java
│ │ │ └── ValidateCodeFilter.java
│ │ ├── handler/
│ │ │ ├── FormAuthenticationFailureHandler.java
│ │ │ ├── PigAuthenticationFailureEventHandler.java
│ │ │ ├── PigAuthenticationSuccessEventHandler.java
│ │ │ ├── PigLogoutSuccessEventHandler.java
│ │ │ └── SsoLogoutSuccessHandler.java
│ │ ├── password/
│ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationConverter.java
│ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationProvider.java
│ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationToken.java
│ │ │ └── package-info.java
│ │ └── sms/
│ │ ├── OAuth2ResourceOwnerSmsAuthenticationConverter.java
│ │ ├── OAuth2ResourceOwnerSmsAuthenticationProvider.java
│ │ ├── OAuth2ResourceOwnerSmsAuthenticationToken.java
│ │ └── package-info.java
│ └── resources/
│ ├── application.yml
│ ├── logback-spring.xml
│ └── templates/
│ └── ftl/
│ ├── confirm.ftl
│ ├── layout/
│ │ └── base.ftl
│ └── login.ftl
├── pig-boot/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── pig4cloud/
│ │ └── pig/
│ │ └── PigBootApplication.java
│ └── resources/
│ ├── application-dev.yml
│ ├── application.yml
│ └── logback-spring.xml
├── pig-common/
│ ├── pig-common-bom/
│ │ └── pom.xml
│ ├── pig-common-core/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── core/
│ │ │ ├── config/
│ │ │ │ ├── JacksonConfiguration.java
│ │ │ │ ├── RedisTemplateConfiguration.java
│ │ │ │ ├── RestTemplateConfiguration.java
│ │ │ │ └── WebMvcConfiguration.java
│ │ │ ├── constant/
│ │ │ │ ├── CacheConstants.java
│ │ │ │ ├── CommonConstants.java
│ │ │ │ ├── SecurityConstants.java
│ │ │ │ ├── ServiceNameConstants.java
│ │ │ │ └── enums/
│ │ │ │ ├── DictTypeEnum.java
│ │ │ │ ├── LoginTypeEnum.java
│ │ │ │ └── MenuTypeEnum.java
│ │ │ ├── exception/
│ │ │ │ ├── CheckedException.java
│ │ │ │ ├── ErrorCodes.java
│ │ │ │ ├── PigDeniedException.java
│ │ │ │ └── ValidateCodeException.java
│ │ │ ├── factory/
│ │ │ │ └── YamlPropertySourceFactory.java
│ │ │ ├── jackson/
│ │ │ │ └── PigJavaTimeModule.java
│ │ │ ├── servlet/
│ │ │ │ └── RepeatBodyRequestWrapper.java
│ │ │ └── util/
│ │ │ ├── ClassUtils.java
│ │ │ ├── MsgUtils.java
│ │ │ ├── R.java
│ │ │ ├── RedisUtils.java
│ │ │ ├── RetOps.java
│ │ │ ├── SpringContextHolder.java
│ │ │ └── WebUtils.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ ├── banner.txt
│ │ ├── i18n/
│ │ │ └── messages_zh_CN.properties
│ │ └── logback-spring.xml
│ ├── pig-common-datasource/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── com/
│ │ └── pig4cloud/
│ │ └── pig/
│ │ └── common/
│ │ └── datasource/
│ │ ├── DynamicDataSourceAutoConfiguration.java
│ │ ├── annotation/
│ │ │ └── EnableDynamicDataSource.java
│ │ ├── config/
│ │ │ ├── ClearTtlDataSourceFilter.java
│ │ │ ├── DataSourceProperties.java
│ │ │ ├── JdbcDynamicDataSourceProvider.java
│ │ │ ├── LastParamDsProcessor.java
│ │ │ └── MasterDataSourceProvider.java
│ │ ├── support/
│ │ │ └── DataSourceConstants.java
│ │ └── util/
│ │ ├── DsConfTypeEnum.java
│ │ └── DsJdbcUrlEnum.java
│ ├── pig-common-excel/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── excel/
│ │ │ ├── ExcelAutoConfiguration.java
│ │ │ └── provider/
│ │ │ ├── RemoteDictApiService.java
│ │ │ └── RemoteDictDataProvider.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── pig-common-feign/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── pig4cloud/
│ │ │ │ └── pig/
│ │ │ │ └── common/
│ │ │ │ └── feign/
│ │ │ │ ├── PigFeignAutoConfiguration.java
│ │ │ │ ├── annotation/
│ │ │ │ │ ├── EnablePigFeignClients.java
│ │ │ │ │ └── NoToken.java
│ │ │ │ ├── core/
│ │ │ │ │ ├── PigFeignInnerRequestInterceptor.java
│ │ │ │ │ └── PigFeignRequestCloseInterceptor.java
│ │ │ │ └── sentinel/
│ │ │ │ ├── SentinelAutoConfiguration.java
│ │ │ │ ├── ext/
│ │ │ │ │ ├── PigSentinelFeign.java
│ │ │ │ │ └── PigSentinelInvocationHandler.java
│ │ │ │ ├── handle/
│ │ │ │ │ ├── GlobalBizExceptionHandler.java
│ │ │ │ │ └── PigUrlBlockHandler.java
│ │ │ │ └── parser/
│ │ │ │ └── PigHeaderRequestOriginParser.java
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── openfeign/
│ │ │ └── PigFeignClientsRegistrar.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── pig-common-log/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── log/
│ │ │ ├── LogAutoConfiguration.java
│ │ │ ├── annotation/
│ │ │ │ └── SysLog.java
│ │ │ ├── aspect/
│ │ │ │ └── SysLogAspect.java
│ │ │ ├── config/
│ │ │ │ └── PigLogProperties.java
│ │ │ ├── event/
│ │ │ │ ├── SysLogEvent.java
│ │ │ │ ├── SysLogEventSource.java
│ │ │ │ └── SysLogListener.java
│ │ │ ├── init/
│ │ │ │ └── ApplicationLoggerInitializer.java
│ │ │ └── util/
│ │ │ ├── LogTypeEnum.java
│ │ │ └── SysLogUtils.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ ├── spring-configuration-metadata.json
│ │ └── spring.factories
│ ├── pig-common-mybatis/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── mybatis/
│ │ │ ├── MybatisAutoConfiguration.java
│ │ │ ├── base/
│ │ │ │ └── BaseEntity.java
│ │ │ ├── config/
│ │ │ │ └── MybatisPlusMetaObjectHandler.java
│ │ │ ├── handler/
│ │ │ │ ├── JsonLongArrayTypeHandler.java
│ │ │ │ └── JsonStringArrayTypeHandler.java
│ │ │ ├── plugins/
│ │ │ │ └── PigPaginationInnerInterceptor.java
│ │ │ └── resolver/
│ │ │ └── SqlFilterArgumentResolver.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── pig-common-oss/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── file/
│ │ │ ├── FileAutoConfiguration.java
│ │ │ ├── core/
│ │ │ │ ├── FileProperties.java
│ │ │ │ └── FileTemplate.java
│ │ │ ├── local/
│ │ │ │ ├── LocalFileAutoConfiguration.java
│ │ │ │ ├── LocalFileProperties.java
│ │ │ │ └── LocalFileTemplate.java
│ │ │ └── oss/
│ │ │ ├── OssAutoConfiguration.java
│ │ │ ├── OssProperties.java
│ │ │ ├── http/
│ │ │ │ └── OssEndpoint.java
│ │ │ └── service/
│ │ │ └── OssTemplate.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── pig-common-seata/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── seata/
│ │ │ └── config/
│ │ │ └── SeataAutoConfiguration.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── seata-config.yml
│ ├── pig-common-security/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── security/
│ │ │ ├── annotation/
│ │ │ │ ├── EnablePigResourceServer.java
│ │ │ │ ├── HasPermission.java
│ │ │ │ └── Inner.java
│ │ │ ├── component/
│ │ │ │ ├── PermissionService.java
│ │ │ │ ├── PermitAllUrlProperties.java
│ │ │ │ ├── PigBearerTokenExtractor.java
│ │ │ │ ├── PigBootCorsProperties.java
│ │ │ │ ├── PigClientCredentialsOAuth2AuthenticatedPrincipal.java
│ │ │ │ ├── PigCustomOAuth2AccessTokenResponseHttpMessageConverter.java
│ │ │ │ ├── PigCustomOpaqueTokenIntrospector.java
│ │ │ │ ├── PigResourceServerAutoConfiguration.java
│ │ │ │ ├── PigResourceServerConfiguration.java
│ │ │ │ ├── PigSecurityInnerAspect.java
│ │ │ │ ├── PigSecurityMessageSourceConfiguration.java
│ │ │ │ └── ResourceAuthExceptionEntryPoint.java
│ │ │ ├── feign/
│ │ │ │ ├── PigFeignClientConfiguration.java
│ │ │ │ └── PigOAuthRequestInterceptor.java
│ │ │ ├── service/
│ │ │ │ ├── PigAppUserDetailsServiceImpl.java
│ │ │ │ ├── PigRedisOAuth2AuthorizationConsentService.java
│ │ │ │ ├── PigRedisOAuth2AuthorizationService.java
│ │ │ │ ├── PigRemoteRegisteredClientRepository.java
│ │ │ │ ├── PigUser.java
│ │ │ │ ├── PigUserDetailsService.java
│ │ │ │ └── PigUserDetailsServiceImpl.java
│ │ │ └── util/
│ │ │ ├── OAuth2EndpointUtils.java
│ │ │ ├── OAuth2ErrorCodesExpand.java
│ │ │ ├── OAuthClientException.java
│ │ │ ├── ScopeException.java
│ │ │ └── SecurityUtils.java
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── i18n/
│ │ └── errors/
│ │ └── messages_zh_CN.properties
│ ├── pig-common-swagger/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── swagger/
│ │ │ ├── annotation/
│ │ │ │ └── EnablePigDoc.java
│ │ │ ├── config/
│ │ │ │ ├── OpenAPIDefinition.java
│ │ │ │ ├── OpenAPIDefinitionImportSelector.java
│ │ │ │ └── OpenAPIMetadataConfiguration.java
│ │ │ └── support/
│ │ │ └── SwaggerProperties.java
│ │ └── resources/
│ │ └── openapi-config.yaml
│ ├── pig-common-websocket/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── websocket/
│ │ │ ├── config/
│ │ │ │ ├── LocalMessageDistributorConfiguration.java
│ │ │ │ ├── MessageDistributorTypeConstants.java
│ │ │ │ ├── RedisMessageDistributorConfiguration.java
│ │ │ │ ├── WebSocketAutoConfiguration.java
│ │ │ │ ├── WebSocketHandlerConfig.java
│ │ │ │ ├── WebSocketMessageSender.java
│ │ │ │ └── WebSocketProperties.java
│ │ │ ├── custom/
│ │ │ │ ├── PigxSessionKeyGenerator.java
│ │ │ │ └── UserAttributeHandshakeInterceptor.java
│ │ │ ├── distribute/
│ │ │ │ ├── LocalMessageDistributor.java
│ │ │ │ ├── MessageDO.java
│ │ │ │ ├── MessageDistributor.java
│ │ │ │ ├── MessageSender.java
│ │ │ │ ├── RedisMessageDistributor.java
│ │ │ │ └── RedisWebsocketMessageListener.java
│ │ │ ├── handler/
│ │ │ │ ├── CustomPlanTextMessageHandler.java
│ │ │ │ ├── CustomWebSocketHandler.java
│ │ │ │ ├── JsonMessageHandler.java
│ │ │ │ ├── PingJsonMessageHandler.java
│ │ │ │ └── PlanTextMessageHandler.java
│ │ │ ├── holder/
│ │ │ │ ├── JsonMessageHandlerHolder.java
│ │ │ │ ├── MapSessionWebSocketHandlerDecorator.java
│ │ │ │ ├── SessionKeyGenerator.java
│ │ │ │ └── WebSocketSessionHolder.java
│ │ │ ├── message/
│ │ │ │ ├── AbstractJsonWebSocketMessage.java
│ │ │ │ ├── JsonWebSocketMessage.java
│ │ │ │ ├── PingJsonWebSocketMessage.java
│ │ │ │ ├── PongJsonWebSocketMessage.java
│ │ │ │ └── WebSocketMessageTypeEnum.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ ├── pig-common-xss/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── common/
│ │ │ └── xss/
│ │ │ ├── PigXssAutoConfiguration.java
│ │ │ ├── config/
│ │ │ │ ├── PigXssProperties.java
│ │ │ │ └── package-info.java
│ │ │ ├── core/
│ │ │ │ ├── DefaultXssCleaner.java
│ │ │ │ ├── FormXssClean.java
│ │ │ │ ├── FromXssException.java
│ │ │ │ ├── JacksonXssClean.java
│ │ │ │ ├── JacksonXssException.java
│ │ │ │ ├── XssCleanDeserializer.java
│ │ │ │ ├── XssCleanDeserializerBase.java
│ │ │ │ ├── XssCleanIgnore.java
│ │ │ │ ├── XssCleanInterceptor.java
│ │ │ │ ├── XssCleaner.java
│ │ │ │ ├── XssException.java
│ │ │ │ ├── XssHolder.java
│ │ │ │ └── XssType.java
│ │ │ ├── package-info.java
│ │ │ └── utils/
│ │ │ ├── XssUtil.java
│ │ │ └── package-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring-configuration-metadata.json
│ └── pom.xml
├── pig-gateway/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── pig4cloud/
│ │ └── pig/
│ │ └── gateway/
│ │ ├── PigGatewayApplication.java
│ │ ├── config/
│ │ │ ├── GatewayConfiguration.java
│ │ │ ├── RateLimiterConfiguration.java
│ │ │ └── SpringDocConfiguration.java
│ │ ├── filter/
│ │ │ └── PigRequestGlobalFilter.java
│ │ └── handler/
│ │ └── GlobalExceptionHandler.java
│ └── resources/
│ ├── application.yml
│ └── logback-spring.xml
├── pig-register/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── alibaba/
│ │ └── nacos/
│ │ └── bootstrap/
│ │ └── PigNacosApplication.java
│ └── resources/
│ ├── application.properties
│ └── logback-spring.xml
├── pig-upms/
│ ├── pig-upms-api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── admin/
│ │ │ └── api/
│ │ │ ├── dto/
│ │ │ │ ├── RegisterUserDTO.java
│ │ │ │ ├── SysLogDTO.java
│ │ │ │ ├── UserDTO.java
│ │ │ │ └── UserInfo.java
│ │ │ ├── entity/
│ │ │ │ ├── SysDept.java
│ │ │ │ ├── SysDeptRelation.java
│ │ │ │ ├── SysDict.java
│ │ │ │ ├── SysDictItem.java
│ │ │ │ ├── SysFile.java
│ │ │ │ ├── SysLog.java
│ │ │ │ ├── SysMenu.java
│ │ │ │ ├── SysOauthClientDetails.java
│ │ │ │ ├── SysPost.java
│ │ │ │ ├── SysPublicParam.java
│ │ │ │ ├── SysRole.java
│ │ │ │ ├── SysRoleMenu.java
│ │ │ │ ├── SysUser.java
│ │ │ │ ├── SysUserPost.java
│ │ │ │ └── SysUserRole.java
│ │ │ ├── feign/
│ │ │ │ ├── RemoteClientDetailsService.java
│ │ │ │ ├── RemoteDictService.java
│ │ │ │ ├── RemoteLogService.java
│ │ │ │ ├── RemoteParamService.java
│ │ │ │ ├── RemoteTokenService.java
│ │ │ │ └── RemoteUserService.java
│ │ │ ├── util/
│ │ │ │ ├── DictResolver.java
│ │ │ │ └── ParamResolver.java
│ │ │ └── vo/
│ │ │ ├── DeptExcelVo.java
│ │ │ ├── PostExcelVO.java
│ │ │ ├── PreLogVO.java
│ │ │ ├── RoleExcelVO.java
│ │ │ ├── RoleVO.java
│ │ │ ├── TokenVo.java
│ │ │ ├── UserExcelVO.java
│ │ │ └── UserVO.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.cloud.openfeign.FeignClient.imports
│ ├── pig-upms-biz/
│ │ ├── Dockerfile
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── admin/
│ │ │ ├── PigAdminApplication.java
│ │ │ ├── controller/
│ │ │ │ ├── SysClientController.java
│ │ │ │ ├── SysDeptController.java
│ │ │ │ ├── SysDictController.java
│ │ │ │ ├── SysFileController.java
│ │ │ │ ├── SysLogController.java
│ │ │ │ ├── SysMenuController.java
│ │ │ │ ├── SysMobileController.java
│ │ │ │ ├── SysPostController.java
│ │ │ │ ├── SysPublicParamController.java
│ │ │ │ ├── SysRegisterController.java
│ │ │ │ ├── SysRoleController.java
│ │ │ │ ├── SysSystemInfoController.java
│ │ │ │ ├── SysTokenController.java
│ │ │ │ └── SysUserController.java
│ │ │ ├── mapper/
│ │ │ │ ├── SysDeptMapper.java
│ │ │ │ ├── SysDictItemMapper.java
│ │ │ │ ├── SysDictMapper.java
│ │ │ │ ├── SysFileMapper.java
│ │ │ │ ├── SysLogMapper.java
│ │ │ │ ├── SysMenuMapper.java
│ │ │ │ ├── SysOauthClientDetailsMapper.java
│ │ │ │ ├── SysPostMapper.java
│ │ │ │ ├── SysPublicParamMapper.java
│ │ │ │ ├── SysRoleMapper.java
│ │ │ │ ├── SysRoleMenuMapper.java
│ │ │ │ ├── SysUserMapper.java
│ │ │ │ ├── SysUserPostMapper.java
│ │ │ │ └── SysUserRoleMapper.java
│ │ │ └── service/
│ │ │ ├── SysDeptService.java
│ │ │ ├── SysDictItemService.java
│ │ │ ├── SysDictService.java
│ │ │ ├── SysFileService.java
│ │ │ ├── SysLogService.java
│ │ │ ├── SysMenuService.java
│ │ │ ├── SysMobileService.java
│ │ │ ├── SysOauthClientDetailsService.java
│ │ │ ├── SysPostService.java
│ │ │ ├── SysPublicParamService.java
│ │ │ ├── SysRoleMenuService.java
│ │ │ ├── SysRoleService.java
│ │ │ ├── SysUserRoleService.java
│ │ │ ├── SysUserService.java
│ │ │ └── impl/
│ │ │ ├── SysDeptServiceImpl.java
│ │ │ ├── SysDictItemServiceImpl.java
│ │ │ ├── SysDictServiceImpl.java
│ │ │ ├── SysFileServiceImpl.java
│ │ │ ├── SysLogServiceImpl.java
│ │ │ ├── SysMenuServiceImpl.java
│ │ │ ├── SysMobileServiceImpl.java
│ │ │ ├── SysOauthClientDetailsServiceImpl.java
│ │ │ ├── SysPostServiceImpl.java
│ │ │ ├── SysPublicParamServiceImpl.java
│ │ │ ├── SysRoleMenuServiceImpl.java
│ │ │ ├── SysRoleServiceImpl.java
│ │ │ ├── SysUserRoleServiceImpl.java
│ │ │ └── SysUserServiceImpl.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── file/
│ │ │ ├── approle.xlsx
│ │ │ ├── dept.xlsx
│ │ │ ├── post.xlsx
│ │ │ ├── role.xlsx
│ │ │ └── user.xlsx
│ │ ├── logback-spring.xml
│ │ └── mapper/
│ │ ├── SysDeptMapper.xml
│ │ ├── SysMenuMapper.xml
│ │ ├── SysPostMapper.xml
│ │ ├── SysRoleMapper.xml
│ │ └── SysUserMapper.xml
│ └── pom.xml
├── pig-visual/
│ ├── pig-codegen/
│ │ ├── Dockerfile
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── codegen/
│ │ │ ├── PigCodeGenApplication.java
│ │ │ ├── config/
│ │ │ │ └── PigCodeGenDefaultProperties.java
│ │ │ ├── controller/
│ │ │ │ ├── GenDsConfController.java
│ │ │ │ ├── GenFieldTypeController.java
│ │ │ │ ├── GenGroupController.java
│ │ │ │ ├── GenTableController.java
│ │ │ │ ├── GenTemplateController.java
│ │ │ │ ├── GenTemplateGroupController.java
│ │ │ │ └── GeneratorController.java
│ │ │ ├── entity/
│ │ │ │ ├── ColumnEntity.java
│ │ │ │ ├── GenConfig.java
│ │ │ │ ├── GenDatasourceConf.java
│ │ │ │ ├── GenFieldType.java
│ │ │ │ ├── GenGroupEntity.java
│ │ │ │ ├── GenTable.java
│ │ │ │ ├── GenTableColumnEntity.java
│ │ │ │ ├── GenTemplateEntity.java
│ │ │ │ ├── GenTemplateGroupEntity.java
│ │ │ │ └── TableEntity.java
│ │ │ ├── mapper/
│ │ │ │ ├── GenDatasourceConfMapper.java
│ │ │ │ ├── GenDynamicMapper.java
│ │ │ │ ├── GenFieldTypeMapper.java
│ │ │ │ ├── GenGroupMapper.java
│ │ │ │ ├── GenTableColumnMapper.java
│ │ │ │ ├── GenTableMapper.java
│ │ │ │ ├── GenTemplateGroupMapper.java
│ │ │ │ └── GenTemplateMapper.java
│ │ │ ├── service/
│ │ │ │ ├── GenDatasourceConfService.java
│ │ │ │ ├── GenFieldTypeService.java
│ │ │ │ ├── GenGroupService.java
│ │ │ │ ├── GenTableColumnService.java
│ │ │ │ ├── GenTableService.java
│ │ │ │ ├── GenTemplateGroupService.java
│ │ │ │ ├── GenTemplateService.java
│ │ │ │ ├── GeneratorService.java
│ │ │ │ └── impl/
│ │ │ │ ├── GenDatasourceConfServiceImpl.java
│ │ │ │ ├── GenFieldTypeServiceImpl.java
│ │ │ │ ├── GenGroupServiceImpl.java
│ │ │ │ ├── GenTableColumnServiceImpl.java
│ │ │ │ ├── GenTableServiceImpl.java
│ │ │ │ ├── GenTemplateGroupServiceImpl.java
│ │ │ │ ├── GenTemplateServiceImpl.java
│ │ │ │ └── GeneratorServiceImpl.java
│ │ │ └── util/
│ │ │ ├── AutoFillEnum.java
│ │ │ ├── BoolFillEnum.java
│ │ │ ├── CommonColumnFiledEnum.java
│ │ │ ├── DictTool.java
│ │ │ ├── GenKit.java
│ │ │ ├── GeneratorStyleEnum.java
│ │ │ ├── NamingCaseTool.java
│ │ │ ├── VelocityKit.java
│ │ │ └── vo/
│ │ │ ├── GenCreateTableVO.java
│ │ │ ├── GenTemplateFileVO.java
│ │ │ ├── GroupVO.java
│ │ │ ├── SqlDto.java
│ │ │ └── TemplateGroupDTO.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback-spring.xml
│ │ └── mapper/
│ │ ├── GenFieldTypeMapper.xml
│ │ ├── GenGroupMapper.xml
│ │ ├── GenTableMapper.xml
│ │ ├── GenTemplateGroupMapper.xml
│ │ └── GenTemplateMapper.xml
│ ├── pig-monitor/
│ │ ├── Dockerfile
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── monitor/
│ │ │ ├── PigMonitorApplication.java
│ │ │ ├── config/
│ │ │ │ ├── CustomCsrfFilter.java
│ │ │ │ └── SecuritySecureConfig.java
│ │ │ └── converter/
│ │ │ └── NacosServiceInstanceConverter.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── logback-spring.xml
│ ├── pig-quartz/
│ │ ├── Dockerfile
│ │ ├── SECURITY.md
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── pig4cloud/
│ │ │ └── pig/
│ │ │ └── daemon/
│ │ │ └── quartz/
│ │ │ ├── PigQuartzApplication.java
│ │ │ ├── config/
│ │ │ │ ├── AutowireCapableBeanJobFactory.java
│ │ │ │ ├── PigInitQuartzJob.java
│ │ │ │ ├── PigQuartzConfig.java
│ │ │ │ ├── PigQuartzCustomizerConfig.java
│ │ │ │ ├── PigQuartzFactory.java
│ │ │ │ └── PigQuartzInvokeFactory.java
│ │ │ ├── constants/
│ │ │ │ ├── JobTypeQuartzEnum.java
│ │ │ │ └── PigQuartzEnum.java
│ │ │ ├── controller/
│ │ │ │ ├── SysJobController.java
│ │ │ │ └── SysJobLogController.java
│ │ │ ├── entity/
│ │ │ │ ├── SysJob.java
│ │ │ │ └── SysJobLog.java
│ │ │ ├── event/
│ │ │ │ ├── SysJobEvent.java
│ │ │ │ ├── SysJobListener.java
│ │ │ │ ├── SysJobLogEvent.java
│ │ │ │ └── SysJobLogListener.java
│ │ │ ├── exception/
│ │ │ │ └── TaskException.java
│ │ │ ├── mapper/
│ │ │ │ ├── SysJobLogMapper.java
│ │ │ │ └── SysJobMapper.java
│ │ │ ├── service/
│ │ │ │ ├── SysJobLogService.java
│ │ │ │ ├── SysJobService.java
│ │ │ │ └── impl/
│ │ │ │ ├── SysJobLogServiceImpl.java
│ │ │ │ └── SysJobServiceImpl.java
│ │ │ ├── task/
│ │ │ │ ├── RestTaskDemo.java
│ │ │ │ └── SpringBeanTaskDemo.java
│ │ │ └── util/
│ │ │ ├── ClassNameValidator.java
│ │ │ ├── ITaskInvok.java
│ │ │ ├── JarTaskInvok.java
│ │ │ ├── JavaClassTaskInvok.java
│ │ │ ├── RestTaskInvok.java
│ │ │ ├── SpringBeanTaskInvok.java
│ │ │ ├── TaskInvokFactory.java
│ │ │ ├── TaskInvokUtil.java
│ │ │ └── TaskUtil.java
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback-spring.xml
│ │ └── quartz-config.yml
│ └── pom.xml
└── pom.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*.{groovy,java,kt,xml}]
indent_style = tab
indent_size = 4
continuation_indent_size = 8
================================================
FILE: .gitee/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false # 不允许用户创建空白 Issue
contact_links:
- name: 遇到问题先去看文档!谢谢! # 外部网站名称
url: https://wiki.pig4cloud.com/ # 跳转的外部网站目标地址
about: 文档可以解决你80%的疑惑 # 跳转外部网站的描述说明
================================================
FILE: .gitee/ISSUE_TEMPLATE/issue.yml
================================================
name: 问题咨询
description: "请尽可能详细的描述问题,提供足够的上下文,一分钟的描述不需要期望别人花半小时帮你排查"
body:
- type: dropdown
id: version
attributes:
label: PIG版本(提问先右上角 Star ♥️)
options:
- "不处理PIGX或其他魔改版本"
- "3.9"
- "3.8"
- "3.7"
validations:
required: true
- type: checkboxes
validations:
required: true
attributes:
label: 架构
options:
- label: 微服务架构
- label: 单体架构
- type: textarea
id: desired-solution
attributes:
label: 问题描述,提供详细截图和报错
description: 详细问题,提供相应截图和日志,一分钟的描述不需要期望别人花半小时帮你排查
validations:
required: true
================================================
FILE: .github/renovate.json
================================================
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"baseBranches": [
"jdk17-dev"
],
"extends": [
"config:recommended"
],
"rangeStrategy": "bump",
"packageRules": [
{
"matchPackagePatterns": [
"^com.amazonaws:aws-java-sdk-s3$",
"^tomcat$",
"^io.springboot:knife4j-openapi3-ui$",
"^com.alibaba:fastjson$",
"^org.anyline:anyline.*$",
"^org.apache.velocity:velocity-engine-core.*$"
],
"enabled": false
}
]
}
================================================
FILE: .github/workflows/github-release.yml
================================================
name: publish github release
on:
workflow_dispatch:
inputs:
releaseversion:
description: 'Release version'
required: true
default: '3.8.0'
jobs:
publish-github-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate changelog
id: changelog
uses: metcalfc/changelog-generator@v4.5.0
with:
myToken: ${{ secrets.GH_TOKEN }}
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
tag_name: ${{ github.event.inputs.releaseversion }}
release_name: ${{ github.event.inputs.releaseversion }}
body: |
### Things that changed in this release
${{ steps.changelog.outputs.changelog }}
draft: false
prerelease: ${{ contains(github.event.inputs.releaseversion, '-') }}
================================================
FILE: .github/workflows/image.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Docker 镜像 构建
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 17 ]
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: 'zulu'
- name: mvn clean install
run: mvn clean install -Pcloud
- name: Login to Docker Registry
run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
- name: Build and push Docker images
run: |
docker compose build
registry="registry.cn-hangzhou.aliyuncs.com/pigx/"
for service in $(docker compose config --services); do
if [ "$service" != "pig-redis" ]; then
docker tag ${service}:latest ${registry}${service}:latest
docker push ${registry}${service}:latest
else
echo "Skipping pig-redis service"
fi
done
================================================
FILE: .github/workflows/maven.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: maven 编译检查
on:
push:
branches: [ master,dev ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 17,21,25 ]
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: 'zulu'
- name: mvn spring-javaformat:validate
id: validate
run: mvn spring-javaformat:validate -Dmaven.compiler.release=${{ matrix.java-version }}
continue-on-error: true
- name: Auto format code if validation fails
if: steps.validate.outcome == 'failure'
run: mvn spring-javaformat:apply -Dmaven.compiler.release=${{ matrix.java-version }}
- name: Create Pull Request for formatting changes
if: steps.validate.outcome == 'failure'
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'Auto-format code with spring-javaformat'
title: 'Auto-format: Fix code formatting issues'
body: |
This PR was automatically created because the spring-javaformat validation failed.
The following changes have been applied:
- Applied spring-javaformat:apply to fix formatting issues
Please review and merge if the changes look correct.
branch: auto-format-${{ github.run_number }}
delete-branch: true
- name: mvn clean install
run: mvn clean install -Pboot -Dmaven.compiler.release=${{ matrix.java-version }}
- name: mvn clean install
run: mvn clean install -Dmaven.compiler.release=${{ matrix.java-version }}
- name: failure
if: failure() && github.repository == 'pig-mesh/pig'
uses: chf007/action-wechat-work@master
env:
WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}}
with:
msgtype: markdown
content: |
# 💤🤷♀️ failure 🙅♂️💣 [pig-mesh/pig](https://github.com/pig-mesh/pig)
> Github Action: https://github.com/pig-mesh/pig failure
> (⋟﹏⋞) from github action message
================================================
FILE: .github/workflows/mirror.yml
================================================
name: 同步代码
on:
push:
branches: [ master,dev ]
pull_request:
branches: [ master,dev ]
jobs:
gitee:
runs-on: ubuntu-latest
container:
image: "centos:8"
steps:
- uses: wearerequired/git-mirror-action@master #同步至 gitee
env:
SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
with:
source-repo: "git@github.com:pig-mesh/pig.git"
destination-repo: "git@gitee.com:log4j/pig.git"
================================================
FILE: .gitignore
================================================
### gradle ###
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
.mvn/wrapper/maven-wrapper.jar
### STS ###
.settings/
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
bin/
### IntelliJ IDEA ###
!.idea/icon.png
.idea
*.iws
*.iml
*.ipr
rebel.xml
### NetBeans ###
nbproject/private/
build/
nbbuild/
nbdist/
.nb-gradle/
### maven ###
target/
*.war
*.ear
*.zip
*.tar
*.tar.gz
*.versionsBackup
### vscode ###
.vscode
### logs ###
/logs/
*.log
### temp ignore ###
*.cache
*.diff
*.patch
*.tmp
*.java~
*.properties~
*.xml~
### system ignore ###
.DS_Store
Thumbs.db
Servers
.metadata
.flattened-pom.xml
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
> **🚀 Spring Boot 4.0 版本来了**
>
> 分支 `boot4` 基于 Spring Boot 4.0 + Spring Cloud 2025.1 进行开发。
<p align="center">
<img src="https://img.shields.io/badge/Pig-3.9-success.svg" alt="Build Status">
<img src="https://img.shields.io/badge/Spring%20Cloud-2025-blue.svg" alt="Coverage Status">
<img src="https://img.shields.io/badge/Spring%20Boot-3.5-blue.svg" alt="Downloads">
<img src="https://img.shields.io/badge/Vue-3.5-blue.svg" alt="Downloads">
<img src="https://img.shields.io/github/license/pig-mesh/pig"/>
<img src="https://gitcode.com/pig-mesh/pig/star/badge.svg"/>
</p>
## 系统说明
- 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC **企业级快速开发平台**, 同时支持微服务架构和单体架构
- 提供 Spring Authorization Server 的生产级实践方案,支持多种安全授权模式
- 提供对常见容器化方案支持 Kubernetes、Rancher2 、KubeSphere、EDAS、SAE 支持
#### 使用文档
PIG 提供了详尽的部署文档 👉 [wiki.pig4cloud.com](https://wiki.pig4cloud.com),涵盖开发环境配置、服务端启动、前端运行等关键步骤。
重要的事情说三遍:
- 🔥 [ 配套文档 wiki.pig4cloud.com](https://wiki.pig4cloud.com)
- 🔥 [ 配套文档 wiki.pig4cloud.com](https://wiki.pig4cloud.com)
- 🔥 [ 配套文档 wiki.pig4cloud.com](https://wiki.pig4cloud.com)
#### 其他产品
- 👉🏻 [PIGX 在线体验](http://home.pig4cloud.com:38081)
- 👉🏻 [自研BPMN工作流引擎](http://home.pig4cloud.com:38082)
- 👉🏻 [大模型 RAG 知识库](http://home.pig4cloud.com:38083)
## 微信群 [禁广告]
<img src='https://minio.pigx.vip/oss/202412/1735262426.png' alt='1735262426'/>
## 快速开始
#### Docker 快速体验
```shell
# 可用内存大于4G
curl -o docker-compose.yaml https://try.pig4cloud.com
# 等待5分钟
docker compose up
```
### 核心依赖
| 依赖 | 版本 |
|-----------------------------|--------|
| Spring Boot | 3.5.11 |
| Spring Cloud | 2025 |
| Spring Cloud Alibaba | 2025 |
| Spring Authorization Server | 1.5.2 |
| Mybatis Plus | 3.5.15 |
| Vue | 3.5 |
| Element Plus | 2.8 |
### 模块说明
```lua
pig-ui -- https://gitee.com/log4j/pig-ui
pig
├── pig-boot -- 单体模式启动器[9999]
├── pig-auth -- 授权服务提供[3000]
└── pig-common -- 系统公共模块
├── pig-common-bom -- 全局依赖管理控制
├── pig-common-core -- 公共工具类核心包
├── pig-common-datasource -- 动态数据源包
├── pig-common-log -- 日志服务
├── pig-common-oss -- 文件上传工具类
├── pig-common-mybatis -- mybatis 扩展封装
├── pig-common-seata -- 分布式事务
├── pig-common-websocket -- websocket 封装
├── pig-common-security -- 安全工具类
├── pig-common-swagger -- 接口文档
├── pig-common-feign -- feign 扩展封装
└── pig-common-xss -- xss 安全封装
├── pig-register -- Nacos Server[8848]
├── pig-gateway -- Spring Cloud Gateway网关[9999]
└── pig-upms -- 通用用户权限管理模块
└── pig-upms-api -- 通用用户权限管理系统公共api模块
└── pig-upms-biz -- 通用用户权限管理系统业务处理模块[4000]
└── pig-visual
└── pig-monitor -- 服务监控 [5001]
├── pig-codegen -- 图形化代码生成 [5002]
└── pig-quartz -- 定时任务管理台 [5007]
```
## 免费公开课
<table>
<tr>
<td><a href="https://www.bilibili.com/video/av45084065" target="_blank"><img src="https://foruda.gitee.com/images/1731647304254897555/88a9c2fa_441246.jpeg"></a></td>
<td><a href="https://www.bilibili.com/video/av77344954" target="_blank"><img src="https://foruda.gitee.com/images/1731647324953921510/39689640_441246.jpeg"></a></td>
</tr>
<tr>
<td><a href="https://www.bilibili.com/video/BV1J5411476V" target="_blank"><img src="https://foruda.gitee.com/images/1731647357502030768/7f31f392_441246.jpeg"></a></td>
<td><a href="https://www.bilibili.com/video/BV14p4y197K5" target="_blank"><img src="https://foruda.gitee.com/images/1731647375444479120/2b8fd494_441246.jpeg"></a></td>
</tr>
</table>
## 开源共建
### 开源协议
pig 开源软件遵循 [Apache 2.0 协议](https://www.apache.org/licenses/LICENSE-2.0.html)。
允许商业使用,但务必保留类作者、Copyright 信息。

### 其他说明
1. 欢迎提交 [PR](https://dwz.cn/2KURd5Vf),注意对应提交对应 `dev` 分支
代码规范 [spring-javaformat](https://github.com/spring-io/spring-javaformat)
<details>
<summary>代码规范说明</summary>
1. 由于 <a href="https://github.com/spring-io/spring-javaformat" target="_blank">spring-javaformat</a>
强制所有代码按照指定格式排版,未按此要求提交的代码将不能通过合并(打包)
2. 如果使用 IntelliJ IDEA
开发,请安装自动格式化软件 <a href="https://repo1.maven.org/maven2/io/spring/javaformat/spring-javaformat-intellij-idea-plugin/" target="_blank">
spring-javaformat-intellij-idea-plugin</a>
3. 其他开发工具,请参考 <a href="https://github.com/spring-io/spring-javaformat" target="_blank">
spring-javaformat</a>
说明,或`提交代码前`在项目根目录运行下列命令(需要开发者电脑支持`mvn`命令)进行代码格式化
```
mvn spring-javaformat:apply
```
</details>
2. 欢迎提交 [issue](https://gitee.com/log4j/pig/issues),请写清楚遇到问题的原因、开发环境、复显步骤。
================================================
FILE: db/Dockerfile
================================================
FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/mysql-server:8.0.32
MAINTAINER lengleng(wangiegie@gmail.com)
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./pig.sql /docker-entrypoint-initdb.d
COPY ./pig_config.sql /docker-entrypoint-initdb.d
EXPOSE 3306
================================================
FILE: db/pig.sql
================================================
DROP DATABASE IF EXISTS `pig`;
CREATE DATABASE `pig` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `pig`;
-- ----------------------------
-- Table structure for sys_dept
-- ----------------------------
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
`dept_id` bigint NOT NULL COMMENT '部门ID',
`name` varchar(50) DEFAULT NULL COMMENT '部门名称',
`sort_order` int NOT NULL DEFAULT '0' COMMENT '排序',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`parent_id` bigint DEFAULT NULL COMMENT '父级部门ID',
PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE=InnoDB COMMENT='部门管理';
-- ----------------------------
-- Records of sys_dept
-- ----------------------------
BEGIN;
INSERT INTO `sys_dept` VALUES (1, '总裁办', 1, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:07:49', '0', 0);
INSERT INTO `sys_dept` VALUES (2, '技术部', 2, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 1);
INSERT INTO `sys_dept` VALUES (3, '市场部', 3, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 1);
INSERT INTO `sys_dept` VALUES (4, '销售部', 4, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 1);
INSERT INTO `sys_dept` VALUES (5, '财务部', 5, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 1);
INSERT INTO `sys_dept` VALUES (6, '人事行政部', 6, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:53:36', '1', 1);
INSERT INTO `sys_dept` VALUES (7, '研发部', 7, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 2);
INSERT INTO `sys_dept` VALUES (8, 'UI设计部', 11, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 7);
INSERT INTO `sys_dept` VALUES (9, '产品部', 12, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 2);
INSERT INTO `sys_dept` VALUES (10, '渠道部', 13, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 3);
INSERT INTO `sys_dept` VALUES (11, '推广部', 14, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 3);
INSERT INTO `sys_dept` VALUES (12, '客服部', 15, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 4);
INSERT INTO `sys_dept` VALUES (13, '财务会计部', 16, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 13:04:47', '0', 5);
INSERT INTO `sys_dept` VALUES (14, '审计风控部', 17, 'admin', 'admin', '2023-04-03 13:04:47', '2023-04-03 14:06:57', '0', 5);
COMMIT;
-- ----------------------------
-- Table structure for sys_dict
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict`;
CREATE TABLE `sys_dict` (
`id` bigint NOT NULL COMMENT '编号',
`dict_type` varchar(100) DEFAULT NULL COMMENT '字典类型',
`description` varchar(100) DEFAULT NULL COMMENT '描述',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',
`system_flag` char(1) DEFAULT '0' COMMENT '系统标志',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
PRIMARY KEY (`id`) USING BTREE,
KEY `sys_dict_del_flag` (`del_flag`) USING BTREE
) ENGINE=InnoDB COMMENT='字典表';
-- ----------------------------
-- Records of sys_dict
-- ----------------------------
BEGIN;
INSERT INTO `sys_dict` VALUES (1, 'log_type', '日志类型', ' ', ' ', '2019-03-19 11:06:44', '2019-03-19 11:06:44', '异常、正常', '1', '0');
INSERT INTO `sys_dict` VALUES (2, 'social_type', '社交登录', ' ', ' ', '2019-03-19 11:09:44', '2019-03-19 11:09:44', '微信、QQ', '1', '0');
INSERT INTO `sys_dict` VALUES (3, 'job_type', '定时任务类型', ' ', ' ', '2019-03-19 11:22:21', '2019-03-19 11:22:21', 'quartz', '1', '0');
INSERT INTO `sys_dict` VALUES (4, 'job_status', '定时任务状态', ' ', ' ', '2019-03-19 11:24:57', '2019-03-19 11:24:57', '发布状态、运行状态', '1', '0');
INSERT INTO `sys_dict` VALUES (5, 'job_execute_status', '定时任务执行状态', ' ', ' ', '2019-03-19 11:26:15', '2019-03-19 11:26:15', '正常、异常', '1', '0');
INSERT INTO `sys_dict` VALUES (6, 'misfire_policy', '定时任务错失执行策略', ' ', ' ', '2019-03-19 11:27:19', '2019-03-19 11:27:19', '周期', '1', '0');
INSERT INTO `sys_dict` VALUES (7, 'gender', '性别', ' ', ' ', '2019-03-27 13:44:06', '2019-03-27 13:44:06', '微信用户性别', '1', '0');
INSERT INTO `sys_dict` VALUES (8, 'subscribe', '订阅状态', ' ', ' ', '2019-03-27 13:48:33', '2019-03-27 13:48:33', '公众号订阅状态', '1', '0');
INSERT INTO `sys_dict` VALUES (9, 'response_type', '回复', ' ', ' ', '2019-03-28 21:29:21', '2019-03-28 21:29:21', '微信消息是否已回复', '1', '0');
INSERT INTO `sys_dict` VALUES (10, 'param_type', '参数配置', ' ', ' ', '2019-04-29 18:20:47', '2019-04-29 18:20:47', '检索、原文、报表、安全、文档、消息、其他', '1', '0');
INSERT INTO `sys_dict` VALUES (11, 'status_type', '租户状态', ' ', ' ', '2019-05-15 16:31:08', '2019-05-15 16:31:08', '租户状态', '1', '0');
INSERT INTO `sys_dict` VALUES (12, 'dict_type', '字典类型', ' ', ' ', '2019-05-16 14:16:20', '2019-05-16 14:20:16', '系统类不能修改', '1', '0');
INSERT INTO `sys_dict` VALUES (13, 'channel_type', '支付类型', ' ', ' ', '2019-05-16 14:16:20', '2019-05-16 14:20:16', '系统类不能修改', '1', '0');
INSERT INTO `sys_dict` VALUES (14, 'grant_types', '授权类型', ' ', ' ', '2019-08-13 07:34:10', '2019-08-13 07:34:10', NULL, '1', '0');
INSERT INTO `sys_dict` VALUES (15, 'style_type', '前端风格', ' ', ' ', '2020-02-07 03:49:28', '2020-02-07 03:50:40', '0-Avue 1-element', '1', '0');
INSERT INTO `sys_dict` VALUES (16, 'captcha_flag_types', '验证码开关', ' ', ' ', '2020-11-18 06:53:25', '2020-11-18 06:53:25', '是否校验验证码', '1', '0');
INSERT INTO `sys_dict` VALUES (17, 'enc_flag_types', '前端密码加密', ' ', ' ', '2020-11-18 06:54:44', '2020-11-18 06:54:44', '前端密码是否加密传输', '1', '0');
INSERT INTO `sys_dict` VALUES (18, 'lock_flag', '用户状态', 'admin', ' ', '2023-02-01 16:55:31', NULL, NULL, '1', '0');
INSERT INTO `sys_dict` VALUES (19, 'ds_config_type', '数据连接类型', 'admin', ' ', '2023-02-06 18:36:59', NULL, NULL, '1', '0');
INSERT INTO `sys_dict` VALUES (20, 'common_status', '通用状态', 'admin', ' ', '2023-02-09 11:02:08', NULL, NULL, '1', '0');
INSERT INTO `sys_dict` VALUES (21, 'app_social_type', 'app社交登录', 'admin', ' ', '2023-02-10 11:11:06', NULL, 'app社交登录', '1', '0');
INSERT INTO `sys_dict` VALUES (22, 'yes_no_type', '是否', 'admin', ' ', '2023-02-20 23:25:04', NULL, NULL, '1', '0');
INSERT INTO `sys_dict` VALUES (23, 'repType', '微信消息类型', 'admin', ' ', '2023-02-24 15:08:25', NULL, NULL, '0', '0');
INSERT INTO `sys_dict` VALUES (24, 'leave_status', '请假状态', 'admin', ' ', '2023-03-02 22:50:15', NULL, NULL, '0', '0');
INSERT INTO `sys_dict` VALUES (25, 'schedule_type', '日程类型', 'admin', ' ', '2023-03-06 14:49:18', NULL, NULL, '0', '0');
INSERT INTO `sys_dict` VALUES (26, 'schedule_status', '日程状态', 'admin', ' ', '2023-03-06 14:52:57', NULL, NULL, '0', '0');
INSERT INTO `sys_dict` VALUES (27, 'ds_type', '代码生成器支持的数据库类型', 'admin', ' ', '2023-03-12 09:57:59', NULL, NULL, '1', '0');
COMMIT;
-- ----------------------------
-- Table structure for sys_dict_item
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_item`;
CREATE TABLE `sys_dict_item` (
`id` bigint NOT NULL COMMENT '编号',
`dict_id` bigint NOT NULL COMMENT '字典ID',
`item_value` varchar(100) DEFAULT NULL COMMENT '字典项值',
`label` varchar(100) DEFAULT NULL COMMENT '字典项名称',
`dict_type` varchar(100) DEFAULT NULL COMMENT '字典类型',
`description` varchar(100) DEFAULT NULL COMMENT '字典项描述',
`sort_order` int NOT NULL DEFAULT '0' COMMENT '排序(升序)',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
PRIMARY KEY (`id`) USING BTREE,
KEY `sys_dict_value` (`item_value`) USING BTREE,
KEY `sys_dict_label` (`label`) USING BTREE,
KEY `sys_dict_item_del_flag` (`del_flag`) USING BTREE
) ENGINE=InnoDB COMMENT='字典项';
-- ----------------------------
-- Records of sys_dict_item
-- ----------------------------
BEGIN;
INSERT INTO `sys_dict_item` VALUES (1, 1, '9', '异常', 'log_type', '日志异常', 1, ' ', ' ', '2019-03-19 11:08:59', '2019-03-25 12:49:13', '', '0');
INSERT INTO `sys_dict_item` VALUES (2, 1, '0', '正常', 'log_type', '日志正常', 0, ' ', ' ', '2019-03-19 11:09:17', '2019-03-25 12:49:18', '', '0');
INSERT INTO `sys_dict_item` VALUES (3, 2, 'WX', '微信', 'social_type', '微信登录', 0, ' ', ' ', '2019-03-19 11:10:02', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (4, 2, 'QQ', 'QQ', 'social_type', 'QQ登录', 1, ' ', ' ', '2019-03-19 11:10:14', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (5, 3, '1', 'java类', 'job_type', 'java类', 1, ' ', ' ', '2019-03-19 11:22:37', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (6, 3, '2', 'spring bean', 'job_type', 'spring bean容器实例', 2, ' ', ' ', '2019-03-19 11:23:05', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (7, 3, '9', '其他', 'job_type', '其他类型', 9, ' ', ' ', '2019-03-19 11:23:31', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (8, 3, '3', 'Rest 调用', 'job_type', 'Rest 调用', 3, ' ', ' ', '2019-03-19 11:23:57', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (9, 3, '4', 'jar', 'job_type', 'jar类型', 4, ' ', ' ', '2019-03-19 11:24:20', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (10, 4, '1', '未发布', 'job_status', '未发布', 1, ' ', ' ', '2019-03-19 11:25:18', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (11, 4, '2', '运行中', 'job_status', '运行中', 2, ' ', ' ', '2019-03-19 11:25:31', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (12, 4, '3', '暂停', 'job_status', '暂停', 3, ' ', ' ', '2019-03-19 11:25:42', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (13, 5, '0', '正常', 'job_execute_status', '正常', 0, ' ', ' ', '2019-03-19 11:26:27', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (14, 5, '1', '异常', 'job_execute_status', '异常', 1, ' ', ' ', '2019-03-19 11:26:41', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (15, 6, '1', '错失周期立即执行', 'misfire_policy', '错失周期立即执行', 1, ' ', ' ', '2019-03-19 11:27:45', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (16, 6, '2', '错失周期执行一次', 'misfire_policy', '错失周期执行一次', 2, ' ', ' ', '2019-03-19 11:27:57', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (17, 6, '3', '下周期执行', 'misfire_policy', '下周期执行', 3, ' ', ' ', '2019-03-19 11:28:08', '2019-03-25 12:49:36', '', '0');
INSERT INTO `sys_dict_item` VALUES (18, 7, '1', '男', 'gender', '微信-男', 0, ' ', ' ', '2019-03-27 13:45:13', '2019-03-27 13:45:13', '微信-男', '0');
INSERT INTO `sys_dict_item` VALUES (19, 7, '2', '女', 'gender', '女-微信', 1, ' ', ' ', '2019-03-27 13:45:34', '2019-03-27 13:45:34', '女-微信', '0');
INSERT INTO `sys_dict_item` VALUES (20, 7, '0', '未知', 'gender', 'x性别未知', 3, ' ', ' ', '2019-03-27 13:45:57', '2019-03-27 13:45:57', 'x性别未知', '0');
INSERT INTO `sys_dict_item` VALUES (21, 8, '0', '未关注', 'subscribe', '公众号-未关注', 0, ' ', ' ', '2019-03-27 13:49:07', '2019-03-27 13:49:07', '公众号-未关注', '0');
INSERT INTO `sys_dict_item` VALUES (22, 8, '1', '已关注', 'subscribe', '公众号-已关注', 1, ' ', ' ', '2019-03-27 13:49:26', '2019-03-27 13:49:26', '公众号-已关注', '0');
INSERT INTO `sys_dict_item` VALUES (23, 9, '0', '未回复', 'response_type', '微信消息-未回复', 0, ' ', ' ', '2019-03-28 21:29:47', '2019-03-28 21:29:47', '微信消息-未回复', '0');
INSERT INTO `sys_dict_item` VALUES (24, 9, '1', '已回复', 'response_type', '微信消息-已回复', 1, ' ', ' ', '2019-03-28 21:30:08', '2019-03-28 21:30:08', '微信消息-已回复', '0');
INSERT INTO `sys_dict_item` VALUES (25, 10, '1', '检索', 'param_type', '检索', 0, ' ', ' ', '2019-04-29 18:22:17', '2019-04-29 18:22:17', '检索', '0');
INSERT INTO `sys_dict_item` VALUES (26, 10, '2', '原文', 'param_type', '原文', 0, ' ', ' ', '2019-04-29 18:22:27', '2019-04-29 18:22:27', '原文', '0');
INSERT INTO `sys_dict_item` VALUES (27, 10, '3', '报表', 'param_type', '报表', 0, ' ', ' ', '2019-04-29 18:22:36', '2019-04-29 18:22:36', '报表', '0');
INSERT INTO `sys_dict_item` VALUES (28, 10, '4', '安全', 'param_type', '安全', 0, ' ', ' ', '2019-04-29 18:22:46', '2019-04-29 18:22:46', '安全', '0');
INSERT INTO `sys_dict_item` VALUES (29, 10, '5', '文档', 'param_type', '文档', 0, ' ', ' ', '2019-04-29 18:22:56', '2019-04-29 18:22:56', '文档', '0');
INSERT INTO `sys_dict_item` VALUES (30, 10, '6', '消息', 'param_type', '消息', 0, ' ', ' ', '2019-04-29 18:23:05', '2019-04-29 18:23:05', '消息', '0');
INSERT INTO `sys_dict_item` VALUES (31, 10, '9', '其他', 'param_type', '其他', 0, ' ', ' ', '2019-04-29 18:23:16', '2019-04-29 18:23:16', '其他', '0');
INSERT INTO `sys_dict_item` VALUES (32, 10, '0', '默认', 'param_type', '默认', 0, ' ', ' ', '2019-04-29 18:23:30', '2019-04-29 18:23:30', '默认', '0');
INSERT INTO `sys_dict_item` VALUES (33, 11, '0', '正常', 'status_type', '状态正常', 0, ' ', ' ', '2019-05-15 16:31:34', '2019-05-16 22:30:46', '状态正常', '0');
INSERT INTO `sys_dict_item` VALUES (34, 11, '9', '冻结', 'status_type', '状态冻结', 1, ' ', ' ', '2019-05-15 16:31:56', '2019-05-16 22:30:50', '状态冻结', '0');
INSERT INTO `sys_dict_item` VALUES (35, 12, '1', '系统类', 'dict_type', '系统类字典', 0, ' ', ' ', '2019-05-16 14:20:40', '2019-05-16 14:20:40', '不能修改删除', '0');
INSERT INTO `sys_dict_item` VALUES (36, 12, '0', '业务类', 'dict_type', '业务类字典', 0, ' ', ' ', '2019-05-16 14:20:59', '2019-05-16 14:20:59', '可以修改', '0');
INSERT INTO `sys_dict_item` VALUES (37, 2, 'GITEE', '码云', 'social_type', '码云', 2, ' ', ' ', '2019-06-28 09:59:12', '2019-06-28 09:59:12', '码云', '0');
INSERT INTO `sys_dict_item` VALUES (38, 2, 'OSC', '开源中国', 'social_type', '开源中国登录', 2, ' ', ' ', '2019-06-28 10:04:32', '2019-06-28 10:04:32', '', '0');
INSERT INTO `sys_dict_item` VALUES (39, 14, 'password', '密码模式', 'grant_types', '支持oauth密码模式', 0, ' ', ' ', '2019-08-13 07:35:28', '2019-08-13 07:35:28', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (40, 14, 'authorization_code', '授权码模式', 'grant_types', 'oauth2 授权码模式', 1, ' ', ' ', '2019-08-13 07:36:07', '2019-08-13 07:36:07', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (41, 14, 'client_credentials', '客户端模式', 'grant_types', 'oauth2 客户端模式', 2, ' ', ' ', '2019-08-13 07:36:30', '2019-08-13 07:36:30', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (42, 14, 'refresh_token', '刷新模式', 'grant_types', 'oauth2 刷新token', 3, ' ', ' ', '2019-08-13 07:36:54', '2019-08-13 07:36:54', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (43, 14, 'implicit', '简化模式', 'grant_types', 'oauth2 简化模式', 4, ' ', ' ', '2019-08-13 07:39:32', '2019-08-13 07:39:32', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (44, 15, '0', 'Avue', 'style_type', 'Avue风格', 0, ' ', ' ', '2020-02-07 03:52:52', '2020-02-07 03:52:52', '', '0');
INSERT INTO `sys_dict_item` VALUES (45, 15, '1', 'element', 'style_type', 'element-ui', 1, ' ', ' ', '2020-02-07 03:53:12', '2020-02-07 03:53:12', '', '0');
INSERT INTO `sys_dict_item` VALUES (46, 16, '0', '关', 'captcha_flag_types', '不校验验证码', 0, ' ', ' ', '2020-11-18 06:53:58', '2020-11-18 06:53:58', '不校验验证码 -0', '0');
INSERT INTO `sys_dict_item` VALUES (47, 16, '1', '开', 'captcha_flag_types', '校验验证码', 1, ' ', ' ', '2020-11-18 06:54:15', '2020-11-18 06:54:15', '不校验验证码-1', '0');
INSERT INTO `sys_dict_item` VALUES (48, 17, '0', '否', 'enc_flag_types', '不加密', 0, ' ', ' ', '2020-11-18 06:55:31', '2020-11-18 06:55:31', '不加密-0', '0');
INSERT INTO `sys_dict_item` VALUES (49, 17, '1', '是', 'enc_flag_types', '加密', 1, ' ', ' ', '2020-11-18 06:55:51', '2020-11-18 06:55:51', '加密-1', '0');
INSERT INTO `sys_dict_item` VALUES (50, 13, 'MERGE_PAY', '聚合支付', 'channel_type', '聚合支付', 1, ' ', ' ', '2019-05-30 19:08:08', '2019-06-18 13:51:53', '聚合支付', '0');
INSERT INTO `sys_dict_item` VALUES (51, 2, 'CAS', 'CAS登录', 'social_type', 'CAS 单点登录系统', 3, ' ', ' ', '2022-02-18 13:56:25', '2022-02-18 13:56:28', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (52, 2, 'DINGTALK', '钉钉', 'social_type', '钉钉', 3, ' ', ' ', '2022-02-18 13:56:25', '2022-02-18 13:56:28', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (53, 2, 'WEIXIN_CP', '企业微信', 'social_type', '企业微信', 3, ' ', ' ', '2022-02-18 13:56:25', '2022-02-18 13:56:28', NULL, '0');
INSERT INTO `sys_dict_item` VALUES (54, 15, '2', 'APP', 'style_type', 'uview风格', 1, ' ', ' ', '2020-02-07 03:53:12', '2020-02-07 03:53:12', '', '0');
INSERT INTO `sys_dict_item` VALUES (55, 13, 'ALIPAY_WAP', '支付宝支付', 'channel_type', '支付宝支付', 1, ' ', ' ', '2019-05-30 19:08:08', '2019-06-18 13:51:53', '聚合支付', '0');
INSERT INTO `sys_dict_item` VALUES (56, 13, 'WEIXIN_MP', '微信支付', 'channel_type', '微信支付', 1, ' ', ' ', '2019-05-30 19:08:08', '2019-06-18 13:51:53', '聚合支付', '0');
INSERT INTO `sys_dict_item` VALUES (57, 14, 'mobile', 'mobile', 'grant_types', '移动端登录', 5, 'admin', ' ', '2023-01-29 17:21:42', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (58, 18, '0', '有效', 'lock_flag', '有效', 0, 'admin', ' ', '2023-02-01 16:56:00', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (59, 18, '9', '禁用', 'lock_flag', '禁用', 1, 'admin', ' ', '2023-02-01 16:56:09', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (60, 15, '4', 'vue3', 'style_type', 'element-plus', 4, 'admin', ' ', '2023-02-06 13:52:43', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (61, 19, '0', '主机', 'ds_config_type', '主机', 0, 'admin', ' ', '2023-02-06 18:37:23', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (62, 19, '1', 'JDBC', 'ds_config_type', 'jdbc', 2, 'admin', ' ', '2023-02-06 18:37:34', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (63, 20, 'false', '否', 'common_status', '否', 1, 'admin', ' ', '2023-02-09 11:02:39', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (64, 20, 'true', '是', 'common_status', '是', 2, 'admin', ' ', '2023-02-09 11:02:52', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (65, 21, 'MINI', '小程序', 'app_social_type', '小程序登录', 0, 'admin', ' ', '2023-02-10 11:11:41', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (66, 22, '0', '否', 'yes_no_type', '0', 0, 'admin', ' ', '2023-02-20 23:35:23', NULL, '0', '0');
INSERT INTO `sys_dict_item` VALUES (67, 22, '1', '是', 'yes_no_type', '1', 0, 'admin', ' ', '2023-02-20 23:35:37', NULL, '1', '0');
INSERT INTO `sys_dict_item` VALUES (69, 23, 'text', '文本', 'repType', '文本', 0, 'admin', ' ', '2023-02-24 15:08:45', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (70, 23, 'image', '图片', 'repType', '图片', 0, 'admin', ' ', '2023-02-24 15:08:56', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (71, 23, 'voice', '语音', 'repType', '语音', 0, 'admin', ' ', '2023-02-24 15:09:08', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (72, 23, 'video', '视频', 'repType', '视频', 0, 'admin', ' ', '2023-02-24 15:09:18', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (73, 23, 'shortvideo', '小视频', 'repType', '小视频', 0, 'admin', ' ', '2023-02-24 15:09:29', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (74, 23, 'location', '地理位置', 'repType', '地理位置', 0, 'admin', ' ', '2023-02-24 15:09:41', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (75, 23, 'link', '链接消息', 'repType', '链接消息', 0, 'admin', ' ', '2023-02-24 15:09:49', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (76, 23, 'event', '事件推送', 'repType', '事件推送', 0, 'admin', ' ', '2023-02-24 15:09:57', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (77, 24, '0', '未提交', 'leave_status', '未提交', 0, 'admin', ' ', '2023-03-02 22:50:45', NULL, '未提交', '0');
INSERT INTO `sys_dict_item` VALUES (78, 24, '1', '审批中', 'leave_status', '审批中', 0, 'admin', ' ', '2023-03-02 22:50:57', NULL, '审批中', '0');
INSERT INTO `sys_dict_item` VALUES (79, 24, '2', '完成', 'leave_status', '完成', 0, 'admin', ' ', '2023-03-02 22:51:06', NULL, '完成', '0');
INSERT INTO `sys_dict_item` VALUES (80, 24, '9', '驳回', 'leave_status', '驳回', 0, 'admin', ' ', '2023-03-02 22:51:20', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (81, 25, 'record', '日程记录', 'schedule_type', '日程记录', 0, 'admin', ' ', '2023-03-06 14:50:01', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (82, 25, 'plan', '计划', 'schedule_type', '计划类型', 0, 'admin', ' ', '2023-03-06 14:50:29', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (83, 26, '0', '计划中', 'schedule_status', '日程状态', 0, 'admin', ' ', '2023-03-06 14:53:18', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (84, 26, '1', '已开始', 'schedule_status', '已开始', 0, 'admin', ' ', '2023-03-06 14:53:33', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (85, 26, '3', '已结束', 'schedule_status', '已结束', 0, 'admin', ' ', '2023-03-06 14:53:41', NULL, NULL, '0');
INSERT INTO `sys_dict_item` VALUES (86, 27, 'mysql', 'mysql', 'ds_type', 'mysql', 0, 'admin', ' ', '2023-03-12 09:58:11', NULL, NULL, '0');
COMMIT;
-- ----------------------------
-- Table structure for sys_file
-- ----------------------------
DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file` (
`id` bigint NOT NULL COMMENT '编号',
`file_name` varchar(100) DEFAULT NULL COMMENT '文件名',
`bucket_name` varchar(200) DEFAULT NULL COMMENT '文件存储桶名称',
`original` varchar(100) DEFAULT NULL COMMENT '原始文件名',
`type` varchar(50) DEFAULT NULL COMMENT '文件类型',
`file_size` bigint DEFAULT NULL COMMENT '文件大小',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '上传时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB COMMENT='文件管理表';
-- ----------------------------
-- Records of sys_file
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for sys_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log` (
`id` bigint NOT NULL COMMENT '编号',
`log_type` char(1) DEFAULT '0' COMMENT '日志类型',
`title` varchar(255) DEFAULT NULL COMMENT '日志标题',
`service_id` varchar(32) DEFAULT NULL COMMENT '服务ID',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remote_addr` varchar(255) DEFAULT NULL COMMENT '远程地址',
`user_agent` varchar(1000) DEFAULT NULL COMMENT '用户代理',
`request_uri` varchar(255) DEFAULT NULL COMMENT '请求URI',
`method` varchar(10) DEFAULT NULL COMMENT '请求方法',
`params` text COMMENT '请求参数',
`time` bigint DEFAULT NULL COMMENT '执行时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`exception` text COMMENT '异常信息',
PRIMARY KEY (`id`) USING BTREE,
KEY `sys_log_request_uri` (`request_uri`) USING BTREE,
KEY `sys_log_type` (`log_type`) USING BTREE,
KEY `sys_log_create_date` (`create_time`) USING BTREE
) ENGINE=InnoDB COMMENT='日志表';
-- ----------------------------
-- Table structure for sys_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
`menu_id` bigint NOT NULL COMMENT '菜单ID',
`name` varchar(32) DEFAULT NULL COMMENT '菜单名称',
`en_name` varchar(128) DEFAULT NULL COMMENT '英文名称',
`permission` varchar(32) DEFAULT NULL COMMENT '权限标识',
`path` varchar(128) DEFAULT NULL COMMENT '路由路径',
`parent_id` bigint DEFAULT NULL COMMENT '父菜单ID',
`icon` varchar(64) DEFAULT NULL COMMENT '菜单图标',
`visible` char(1) DEFAULT '1' COMMENT '是否可见,0隐藏,1显示',
`sort_order` int DEFAULT '1' COMMENT '排序值,越小越靠前',
`keep_alive` char(1) DEFAULT '0' COMMENT '是否缓存,0否,1是',
`embedded` char(1) DEFAULT NULL COMMENT '是否内嵌,0否,1是',
`menu_type` char(1) DEFAULT '0' COMMENT '菜单类型,0目录,1菜单,2按钮',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志,0未删除,1已删除',
PRIMARY KEY (`menu_id`) USING BTREE
) ENGINE=InnoDB COMMENT='菜单权限表';
-- ----------------------------
-- Records of sys_menu
-- ----------------------------
BEGIN;
INSERT INTO `sys_menu` VALUES (1000, '权限管理', 'authorization', NULL, '/admin', -1, 'iconfont icon-icon-', '1', 0, '0', '0', '0', '', '2018-09-28 08:29:53', 'admin', '2023-03-12 22:32:52', '0');
INSERT INTO `sys_menu` VALUES (1100, '用户管理', 'user', NULL, '/admin/user/index', 1000, 'ele-User', '1', 1, '0', '0', '0', '', '2017-11-02 22:24:37', 'admin', '2023-07-05 10:28:22', '0');
INSERT INTO `sys_menu` VALUES (1101, '用户新增', NULL, 'sys_user_add', NULL, 1100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 09:52:09', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1102, '用户修改', NULL, 'sys_user_edit', NULL, 1100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 09:52:48', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1103, '用户删除', NULL, 'sys_user_del', NULL, 1100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 09:54:01', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1104, '导入导出', NULL, 'sys_user_export', NULL, 1100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 09:54:01', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1200, '菜单管理', 'menu', NULL, '/admin/menu/index', 1000, 'iconfont icon-caidan', '1', 2, '0', '0', '0', '', '2017-11-08 09:57:27', 'admin', '2023-07-05 10:28:17', '0');
INSERT INTO `sys_menu` VALUES (1201, '菜单新增', NULL, 'sys_menu_add', NULL, 1200, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:15:53', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1202, '菜单修改', NULL, 'sys_menu_edit', NULL, 1200, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:16:23', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1203, '菜单删除', NULL, 'sys_menu_del', NULL, 1200, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:16:43', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1300, '角色管理', 'role', NULL, '/admin/role/index', 1000, 'iconfont icon-gerenzhongxin', '1', 3, '0', NULL, '0', '', '2017-11-08 10:13:37', 'admin', '2023-07-05 10:28:13', '0');
INSERT INTO `sys_menu` VALUES (1301, '角色新增', NULL, 'sys_role_add', NULL, 1300, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:14:18', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1302, '角色修改', NULL, 'sys_role_edit', NULL, 1300, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:14:41', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1303, '角色删除', NULL, 'sys_role_del', NULL, 1300, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 10:14:59', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1304, '分配权限', NULL, 'sys_role_perm', NULL, 1300, NULL, '1', 1, '0', NULL, '1', ' ', '2018-04-20 07:22:55', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1305, '角色导入导出', NULL, 'sys_role_export', NULL, 1300, NULL, '1', 4, '0', NULL, '1', ' ', '2022-03-26 15:54:34', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (1400, '部门管理', 'dept', NULL, '/admin/dept/index', 1000, 'iconfont icon-zidingyibuju', '1', 4, '0', NULL, '0', '', '2018-01-20 13:17:19', 'admin', '2023-07-05 10:28:07', '0');
INSERT INTO `sys_menu` VALUES (1401, '部门新增', NULL, 'sys_dept_add', NULL, 1400, NULL, '1', 1, '0', NULL, '1', ' ', '2018-01-20 14:56:16', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1402, '部门修改', NULL, 'sys_dept_edit', NULL, 1400, NULL, '1', 1, '0', NULL, '1', ' ', '2018-01-20 14:56:59', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1403, '部门删除', NULL, 'sys_dept_del', NULL, 1400, NULL, '1', 1, '0', NULL, '1', ' ', '2018-01-20 14:57:28', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (1600, '岗位管理', 'post', NULL, '/admin/post/index', 1000, 'iconfont icon--chaifenhang', '1', 5, '1', '0', '0', '', '2022-03-26 13:04:14', 'admin', '2023-07-05 10:28:03', '0');
INSERT INTO `sys_menu` VALUES (1601, '岗位信息查看', NULL, 'sys_post_view', NULL, 1600, NULL, '1', 0, '0', NULL, '1', ' ', '2022-03-26 13:05:34', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (1602, '岗位信息新增', NULL, 'sys_post_add', NULL, 1600, NULL, '1', 1, '0', NULL, '1', ' ', '2022-03-26 13:06:00', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (1603, '岗位信息修改', NULL, 'sys_post_edit', NULL, 1600, NULL, '1', 2, '0', NULL, '1', ' ', '2022-03-26 13:06:31', ' ', '2022-03-26 13:06:38', '0');
INSERT INTO `sys_menu` VALUES (1604, '岗位信息删除', NULL, 'sys_post_del', NULL, 1600, NULL, '1', 3, '0', NULL, '1', ' ', '2022-03-26 13:06:31', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (1605, '岗位导入导出', NULL, 'sys_post_export', NULL, 1600, NULL, '1', 4, '0', NULL, '1', ' ', '2022-03-26 13:06:31', ' ', '2022-03-26 06:32:02', '0');
INSERT INTO `sys_menu` VALUES (2000, '系统管理', 'system', NULL, '/system', -1, 'iconfont icon-quanjushezhi_o', '1', 1, '0', NULL, '0', '', '2017-11-07 20:56:00', 'admin', '2023-07-05 10:27:58', '0');
INSERT INTO `sys_menu` VALUES (2001, '日志管理', 'log', NULL, '/admin/logs', 2000, 'ele-Cloudy', '1', 0, '0', '0', '0', 'admin', '2023-03-02 12:26:42', 'admin', '2023-07-05 10:27:53', '0');
INSERT INTO `sys_menu` VALUES (2100, '操作日志', 'operation', NULL, '/admin/log/index', 2001, 'iconfont icon-jinridaiban', '1', 2, '0', '0', '0', '', '2017-11-20 14:06:22', 'admin', '2023-07-05 10:27:49', '0');
INSERT INTO `sys_menu` VALUES (2101, '日志删除', NULL, 'sys_log_del', NULL, 2100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-20 20:37:37', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2102, '导入导出', NULL, 'sys_log_export', NULL, 2100, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-08 09:54:01', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2200, '字典管理', 'dict', NULL, '/admin/dict/index', 2000, 'iconfont icon-zhongduancanshuchaxun', '1', 6, '0', NULL, '0', '', '2017-11-29 11:30:52', 'admin', '2023-07-05 10:27:37', '0');
INSERT INTO `sys_menu` VALUES (2201, '字典删除', NULL, 'sys_dict_del', NULL, 2200, NULL, '1', 1, '0', NULL, '1', ' ', '2017-11-29 11:30:11', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2202, '字典新增', NULL, 'sys_dict_add', NULL, 2200, NULL, '1', 1, '0', NULL, '1', ' ', '2018-05-11 22:34:55', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2203, '字典修改', NULL, 'sys_dict_edit', NULL, 2200, NULL, '1', 1, '0', NULL, '1', ' ', '2018-05-11 22:36:03', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2210, '参数管理', 'parameter', NULL, '/admin/param/index', 2000, 'iconfont icon-wenducanshu-05', '1', 7, '1', NULL, '0', '', '2019-04-29 22:16:50', 'admin', '2023-02-16 15:24:51', '0');
INSERT INTO `sys_menu` VALUES (2211, '参数新增', NULL, 'sys_syspublicparam_add', NULL, 2210, NULL, '1', 1, '0', NULL, '1', ' ', '2019-04-29 22:17:36', ' ', '2020-03-24 08:57:11', '0');
INSERT INTO `sys_menu` VALUES (2212, '参数删除', NULL, 'sys_syspublicparam_del', NULL, 2210, NULL, '1', 1, '0', NULL, '1', ' ', '2019-04-29 22:17:55', ' ', '2020-03-24 08:57:12', '0');
INSERT INTO `sys_menu` VALUES (2213, '参数编辑', NULL, 'sys_syspublicparam_edit', NULL, 2210, NULL, '1', 1, '0', NULL, '1', ' ', '2019-04-29 22:18:14', ' ', '2020-03-24 08:57:13', '0');
INSERT INTO `sys_menu` VALUES (2300, '代码生成', 'code', NULL, '/gen/table/index', 9000, 'iconfont icon-zhongduancanshu', '1', 1, '0', '0', '0', '', '2018-01-20 13:17:19', 'admin', '2023-02-20 13:54:35', '0');
INSERT INTO `sys_menu` VALUES (2400, '终端管理', 'client', NULL, '/admin/client/index', 2000, 'iconfont icon-gongju', '1', 9, '1', NULL, '0', '', '2018-01-20 13:17:19', 'admin', '2023-02-16 15:25:28', '0');
INSERT INTO `sys_menu` VALUES (2401, '客户端新增', NULL, 'sys_client_add', NULL, 2400, '1', '1', 1, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2402, '客户端修改', NULL, 'sys_client_edit', NULL, 2400, NULL, '1', 1, '0', NULL, '1', ' ', '2018-05-15 21:37:06', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2403, '客户端删除', NULL, 'sys_client_del', NULL, 2400, NULL, '1', 1, '0', NULL, '1', ' ', '2018-05-15 21:39:16', ' ', '2021-05-25 03:12:55', '0');
INSERT INTO `sys_menu` VALUES (2600, '令牌管理', 'token', NULL, '/admin/token/index', 2000, 'ele-Key', '1', 11, '0', NULL, '0', '', '2018-09-04 05:58:41', 'admin', '2023-02-16 15:28:28', '0');
INSERT INTO `sys_menu` VALUES (2601, '令牌删除', NULL, 'sys_token_del', NULL, 2600, NULL, '1', 1, '0', NULL, '1', ' ', '2018-09-04 05:59:50', ' ', '2020-03-24 08:57:24', '0');
INSERT INTO `sys_menu` VALUES (2800, 'Quartz管理', 'quartz', NULL, '/daemon/job-manage/index', 2000, 'ele-AlarmClock', '1', 8, '0', NULL, '0', '', '2018-01-20 13:17:19', 'admin', '2023-02-16 15:25:06', '0');
INSERT INTO `sys_menu` VALUES (2810, '任务新增', NULL, 'job_sys_job_add', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:26', '0');
INSERT INTO `sys_menu` VALUES (2820, '任务修改', NULL, 'job_sys_job_edit', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:27', '0');
INSERT INTO `sys_menu` VALUES (2830, '任务删除', NULL, 'job_sys_job_del', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:28', '0');
INSERT INTO `sys_menu` VALUES (2840, '任务暂停', NULL, 'job_sys_job_shutdown_job', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:28', '0');
INSERT INTO `sys_menu` VALUES (2850, '任务开始', NULL, 'job_sys_job_start_job', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:29', '0');
INSERT INTO `sys_menu` VALUES (2860, '任务刷新', NULL, 'job_sys_job_refresh_job', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2018-05-15 21:35:18', ' ', '2020-03-24 08:57:30', '0');
INSERT INTO `sys_menu` VALUES (2870, '执行任务', NULL, 'job_sys_job_run_job', NULL, 2800, '1', '1', 0, '0', NULL, '1', ' ', '2019-08-08 15:35:18', ' ', '2020-03-24 08:57:31', '0');
INSERT INTO `sys_menu` VALUES (2871, '导出', NULL, 'job_sys_job_export', NULL, 2800, NULL, '1', 0, '0', '0', '1', 'admin', '2023-03-06 15:26:13', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (2906, '文件管理', 'file', NULL, '/admin/file/index', 2000, 'ele-Files', '1', 6, '0', NULL, '0', '', '2019-06-25 12:44:46', 'admin', '2023-02-16 15:24:42', '0');
INSERT INTO `sys_menu` VALUES (2907, '删除文件', NULL, 'sys_file_del', NULL, 2906, NULL, '1', 1, '0', NULL, '1', ' ', '2019-06-25 13:41:41', ' ', '2020-03-24 08:58:42', '0');
INSERT INTO `sys_menu` VALUES (4000, '系统监控', 'monitor', NULL, '/daemon', -1, 'iconfont icon-shuju', '1', 3, '0', '0', '0', 'admin', '2023-02-06 20:20:47', 'admin', '2023-02-23 20:01:07', '0');
INSERT INTO `sys_menu` VALUES (4001, '文档扩展', 'doc', NULL, 'http://pig-gateway:9999/swagger-ui.html', 4000, 'iconfont icon-biaodan', '1', 2, '0', '1', '0', '', '2018-06-26 10:50:32', 'admin', '2023-02-23 20:01:29', '0');
INSERT INTO `sys_menu` VALUES (4002, '缓存监控', 'cache', NULL, '/ext/cache', 4000, 'iconfont icon-shuju', '1', 1, '0', '0', '0', 'admin', '2023-05-29 15:12:59', 'admin', '2023-06-06 11:58:41', '0');
INSERT INTO `sys_menu` VALUES (9000, '开发平台', 'develop', NULL, '/gen', -1, 'iconfont icon-shuxingtu', '1', 9, '0', '0', '0', '', '2019-08-12 09:35:16', 'admin', '2023-07-05 10:25:27', '0');
INSERT INTO `sys_menu` VALUES (9005, '数据源管理', 'datasource', NULL, '/gen/datasource/index', 9000, 'ele-Coin', '1', 0, '0', NULL, '0', '', '2019-08-12 09:42:11', 'admin', '2023-07-05 10:26:56', '0');
INSERT INTO `sys_menu` VALUES (9006, '表单设计', 'Form Design', NULL, '/gen/design/index', 9000, 'iconfont icon-AIshiyanshi', '0', 2, '0', '0', '0', '', '2019-08-16 10:08:56', 'admin', '2023-02-23 14:06:50', '0');
INSERT INTO `sys_menu` VALUES (9007, '生成页面', 'generation', NULL, '/gen/gener/index', 9000, 'iconfont icon-tongzhi4', '0', 0, '0', '0', '0', 'admin', '2023-02-20 09:58:23', 'admin', '2023-07-05 10:27:06', '0');
INSERT INTO `sys_menu` VALUES (9050, '元数据管理', 'metadata', NULL, '/gen/metadata', 9000, 'iconfont icon--chaifenhang', '1', 9, '0', '0', '0', '', '2018-07-27 01:13:21', 'admin', '2023-07-05 10:27:13', '0');
INSERT INTO `sys_menu` VALUES (9051, '模板管理', 'template', NULL, '/gen/template/index', 9050, 'iconfont icon--chaifenhang', '1', 5, '0', '0', '0', 'admin', '2023-02-21 11:22:54', 'admin', '2023-07-05 10:27:18', '0');
INSERT INTO `sys_menu` VALUES (9052, '查询', NULL, 'codegen_template_view', NULL, 9051, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 12:33:03', 'admin', '2023-02-21 13:50:54', '0');
INSERT INTO `sys_menu` VALUES (9053, '增加', NULL, 'codegen_template_add', NULL, 9051, NULL, '1', 0, '0', '0', '1', 'admin', '2023-02-21 13:34:10', 'admin', '2023-02-21 13:39:49', '0');
INSERT INTO `sys_menu` VALUES (9054, '新增', NULL, 'codegen_template_add', NULL, 9051, NULL, '0', 1, '0', '0', '1', 'admin', '2023-02-21 13:51:32', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9055, '导出', NULL, 'codegen_template_export', NULL, 9051, NULL, '0', 2, '0', '0', '1', 'admin', '2023-02-21 13:51:58', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9056, '删除', NULL, 'codegen_template_del', NULL, 9051, NULL, '0', 3, '0', '0', '1', 'admin', '2023-02-21 13:52:16', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9057, '编辑', NULL, 'codegen_template_edit', NULL, 9051, NULL, '0', 4, '0', '0', '1', 'admin', '2023-02-21 13:52:58', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9059, '模板分组', 'group', NULL, '/gen/group/index', 9050, 'iconfont icon-shuxingtu', '1', 6, '0', '0', '0', 'admin', '2023-02-21 15:06:50', 'admin', '2023-07-05 10:27:22', '0');
INSERT INTO `sys_menu` VALUES (9060, '查询', NULL, 'codegen_group_view', NULL, 9059, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 15:08:07', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9061, '新增', NULL, 'codegen_group_add', NULL, 9059, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 15:08:28', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9062, '修改', NULL, 'codegen_group_edit', NULL, 9059, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 15:08:43', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9063, '删除', NULL, 'codegen_group_del', NULL, 9059, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 15:09:02', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9064, '导出', NULL, 'codegen_group_export', NULL, 9059, NULL, '0', 0, '0', '0', '1', 'admin', '2023-02-21 15:09:22', ' ', NULL, '0');
INSERT INTO `sys_menu` VALUES (9065, '字段管理', 'field', NULL, '/gen/field-type/index', 9050, 'iconfont icon-fuwenben', '1', 0, '0', '0', '0', 'admin', '2023-02-23 20:05:09', 'admin', '2023-07-05 10:27:31', '0');
COMMIT;
-- ----------------------------
-- Table structure for sys_oauth_client_details
-- ----------------------------
DROP TABLE IF EXISTS `sys_oauth_client_details`;
CREATE TABLE `sys_oauth_client_details` (
`id` bigint NOT NULL COMMENT 'ID',
`client_id` varchar(32) NOT NULL COMMENT '客户端ID',
`resource_ids` varchar(256) DEFAULT NULL COMMENT '资源ID集合',
`client_secret` varchar(256) DEFAULT NULL COMMENT '客户端秘钥',
`scope` varchar(256) DEFAULT NULL COMMENT '授权范围',
`authorized_grant_types` varchar(256) DEFAULT NULL COMMENT '授权类型',
`web_server_redirect_uri` varchar(256) DEFAULT NULL COMMENT '回调地址',
`authorities` varchar(256) DEFAULT NULL COMMENT '权限集合',
`access_token_validity` int DEFAULT NULL COMMENT '访问令牌有效期(秒)',
`refresh_token_validity` int DEFAULT NULL COMMENT '刷新令牌有效期(秒)',
`additional_information` varchar(4096) DEFAULT NULL COMMENT '附加信息',
`autoapprove` varchar(256) DEFAULT NULL COMMENT '自动授权',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB COMMENT='终端信息表';
-- ----------------------------
-- Records of sys_oauth_client_details
-- ----------------------------
BEGIN;
INSERT INTO `sys_oauth_client_details` VALUES (1, 'app', NULL, 'app', 'server', 'password,refresh_token,authorization_code,client_credentials,mobile', 'http://localhost:4040/sso1/login,http://localhost:4041/sso1/login,http://localhost:8080/renren-admin/sys/oauth2-sso,http://localhost:8090/sys/oauth2-sso', NULL, 43200, 2592001, '{\"enc_flag\":\"1\",\"captcha_flag\":\"1\",\"online_quantity\":\"1\"}', 'true', '0', '', 'admin', NULL, '2023-02-09 13:54:54');
INSERT INTO `sys_oauth_client_details` VALUES (2, 'daemon', NULL, 'daemon', 'server', 'password,refresh_token', NULL, NULL, 43200, 2592001, '{\"enc_flag\":\"1\",\"captcha_flag\":\"1\"}', 'true', '0', ' ', ' ', NULL, NULL);
INSERT INTO `sys_oauth_client_details` VALUES (3, 'gen', NULL, 'gen', 'server', 'password,refresh_token', NULL, NULL, 43200, 2592001, '{\"enc_flag\":\"1\",\"captcha_flag\":\"1\"}', 'true', '0', ' ', ' ', NULL, NULL);
INSERT INTO `sys_oauth_client_details` VALUES (4, 'mp', NULL, 'mp', 'server', 'password,refresh_token', NULL, NULL, 43200, 2592001, '{\"enc_flag\":\"1\",\"captcha_flag\":\"1\"}', 'true', '0', ' ', ' ', NULL, NULL);
INSERT INTO `sys_oauth_client_details` VALUES (5, 'pig', NULL, 'pig', 'server', 'password,refresh_token,authorization_code,client_credentials,mobile', 'http://localhost:4040/sso1/login,http://localhost:4041/sso1/login,http://localhost:8080/renren-admin/sys/oauth2-sso,http://localhost:8090/sys/oauth2-sso', NULL, 43200, 2592001, '{\"enc_flag\":\"1\",\"captcha_flag\":\"1\",\"online_quantity\":\"1\"}', 'false', '0', '', 'admin', NULL, '2023-03-08 11:32:41');
INSERT INTO `sys_oauth_client_details` VALUES (6, 'test', NULL, 'test', 'server', 'password,refresh_token', NULL, NULL, 43200, 2592001, '{ \"enc_flag\":\"1\",\"captcha_flag\":\"0\"}', 'true', '0', ' ', ' ', NULL, NULL);
INSERT INTO `sys_oauth_client_details` VALUES (7, 'social', NULL, 'social', 'server', 'password,refresh_token,mobile', NULL, NULL, 43200, 2592001, '{ \"enc_flag\":\"0\",\"captcha_flag\":\"0\"}', 'true', '0', ' ', ' ', NULL, NULL);
COMMIT;
-- ----------------------------
-- Table structure for sys_post
-- ----------------------------
DROP TABLE IF EXISTS `sys_post`;
CREATE TABLE `sys_post` (
`post_id` bigint NOT NULL COMMENT '岗位ID',
`post_code` varchar(64) NOT NULL COMMENT '岗位编码',
`post_name` varchar(50) NOT NULL COMMENT '岗位名称',
`post_sort` int NOT NULL COMMENT '岗位排序',
`remark` varchar(500) DEFAULT NULL COMMENT '岗位描述',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '是否删除 -1:已删除 0:正常',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`post_id`) USING BTREE
) ENGINE=InnoDB COMMENT='岗位信息表';
-- ----------------------------
-- Records of sys_post
-- ----------------------------
BEGIN;
INSERT INTO `sys_post` VALUES (1, 'CTO', 'CTO', 0, 'CTOOO', '0', '2022-03-26 13:48:17', '', '2023-03-08 16:03:35', 'admin');
COMMIT;
-- ----------------------------
-- Table structure for sys_public_param
-- ----------------------------
DROP TABLE IF EXISTS `sys_public_param`;
CREATE TABLE `sys_public_param` (
`public_id` bigint NOT NULL COMMENT '编号',
`public_name` varchar(128) DEFAULT NULL COMMENT '名称',
`public_key` varchar(128) DEFAULT NULL COMMENT '键',
`public_value` varchar(128) DEFAULT NULL COMMENT '值',
`status` char(1) DEFAULT '0' COMMENT '状态,0禁用,1启用',
`validate_code` varchar(64) DEFAULT NULL COMMENT '校验码',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`public_type` char(1) DEFAULT '0' COMMENT '类型,0未知,1系统,2业务',
`system_flag` char(1) DEFAULT '0' COMMENT '系统标识,0非系统,1系统',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
PRIMARY KEY (`public_id`) USING BTREE
) ENGINE=InnoDB COMMENT='公共参数配置表';
-- ----------------------------
-- Records of sys_public_param
-- ----------------------------
BEGIN;
INSERT INTO `sys_public_param` VALUES (1, '租户默认来源', 'TENANT_DEFAULT_ID', '1', '0', '', ' ', ' ', '2020-05-12 04:03:46', '2020-06-20 08:56:30', '2', '0', '1');
INSERT INTO `sys_public_param` VALUES (2, '租户默认部门名称', 'TENANT_DEFAULT_DEPTNAME', '租户默认部门', '0', '', ' ', ' ', '2020-05-12 03:36:32', NULL, '2', '1', '0');
INSERT INTO `sys_public_param` VALUES (3, '租户默认账户', 'TENANT_DEFAULT_USERNAME', 'admin', '0', '', ' ', ' ', '2020-05-12 04:05:04', NULL, '2', '1', '0');
INSERT INTO `sys_public_param` VALUES (4, '租户默认密码', 'TENANT_DEFAULT_PASSWORD', '123456', '0', '', ' ', ' ', '2020-05-12 04:05:24', NULL, '2', '1', '0');
INSERT INTO `sys_public_param` VALUES (5, '租户默认角色编码', 'TENANT_DEFAULT_ROLECODE', 'ROLE_ADMIN', '0', '', ' ', ' ', '2020-05-12 04:05:57', NULL, '2', '1', '0');
INSERT INTO `sys_public_param` VALUES (6, '租户默认角色名称', 'TENANT_DEFAULT_ROLENAME', '租户默认角色', '0', '', ' ', ' ', '2020-05-12 04:06:19', NULL, '2', '1', '0');
INSERT INTO `sys_public_param` VALUES (7, '表前缀', 'GEN_TABLE_PREFIX', 'tb_', '0', '', ' ', ' ', '2020-05-12 04:23:04', NULL, '9', '1', '0');
INSERT INTO `sys_public_param` VALUES (8, '接口文档不显示的字段', 'GEN_HIDDEN_COLUMNS', 'tenant_id', '0', '', ' ', ' ', '2020-05-12 04:25:19', NULL, '9', '1', '0');
INSERT INTO `sys_public_param` VALUES (9, '注册用户默认角色', 'USER_DEFAULT_ROLE', 'GENERAL_USER', '0', NULL, ' ', ' ', '2022-03-31 16:52:24', NULL, '2', '1', '0');
COMMIT;
-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`role_id` bigint NOT NULL COMMENT '角色ID',
`role_name` varchar(64) DEFAULT NULL COMMENT '角色名称',
`role_code` varchar(64) DEFAULT NULL COMMENT '角色编码',
`role_desc` varchar(255) DEFAULT NULL COMMENT '角色描述',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
PRIMARY KEY (`role_id`) USING BTREE,
KEY `role_idx1_role_code` (`role_code`) USING BTREE
) ENGINE=InnoDB COMMENT='系统角色表';
-- ----------------------------
-- Records of sys_role
-- ----------------------------
BEGIN;
INSERT INTO `sys_role` VALUES (1, '管理员', 'ROLE_ADMIN', '管理员', '', 'admin', '2017-10-29 15:45:51', '2023-07-07 14:55:07', '0');
INSERT INTO `sys_role` VALUES (2, '普通用户', 'GENERAL_USER', '普通用户', '', 'admin', '2022-03-31 17:03:15', '2023-04-03 02:28:51', '0');
COMMIT;
-- ----------------------------
-- Table structure for sys_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
`role_id` bigint NOT NULL COMMENT '角色ID',
`menu_id` bigint NOT NULL COMMENT '菜单ID',
PRIMARY KEY (`role_id`,`menu_id`) USING BTREE
) ENGINE=InnoDB COMMENT='角色菜单表';
-- ----------------------------
-- Records of sys_role_menu
-- ----------------------------
BEGIN;
INSERT INTO `sys_role_menu` VALUES (1, 1000);
INSERT INTO `sys_role_menu` VALUES (1, 1100);
INSERT INTO `sys_role_menu` VALUES (1, 1101);
INSERT INTO `sys_role_menu` VALUES (1, 1102);
INSERT INTO `sys_role_menu` VALUES (1, 1103);
INSERT INTO `sys_role_menu` VALUES (1, 1104);
INSERT INTO `sys_role_menu` VALUES (1, 1200);
INSERT INTO `sys_role_menu` VALUES (1, 1201);
INSERT INTO `sys_role_menu` VALUES (1, 1202);
INSERT INTO `sys_role_menu` VALUES (1, 1203);
INSERT INTO `sys_role_menu` VALUES (1, 1300);
INSERT INTO `sys_role_menu` VALUES (1, 1301);
INSERT INTO `sys_role_menu` VALUES (1, 1302);
INSERT INTO `sys_role_menu` VALUES (1, 1303);
INSERT INTO `sys_role_menu` VALUES (1, 1304);
INSERT INTO `sys_role_menu` VALUES (1, 1305);
INSERT INTO `sys_role_menu` VALUES (1, 1400);
INSERT INTO `sys_role_menu` VALUES (1, 1401);
INSERT INTO `sys_role_menu` VALUES (1, 1402);
INSERT INTO `sys_role_menu` VALUES (1, 1403);
INSERT INTO `sys_role_menu` VALUES (1, 1600);
INSERT INTO `sys_role_menu` VALUES (1, 1601);
INSERT INTO `sys_role_menu` VALUES (1, 1602);
INSERT INTO `sys_role_menu` VALUES (1, 1603);
INSERT INTO `sys_role_menu` VALUES (1, 1604);
INSERT INTO `sys_role_menu` VALUES (1, 1605);
INSERT INTO `sys_role_menu` VALUES (1, 2000);
INSERT INTO `sys_role_menu` VALUES (1, 2001);
INSERT INTO `sys_role_menu` VALUES (1, 2100);
INSERT INTO `sys_role_menu` VALUES (1, 2101);
INSERT INTO `sys_role_menu` VALUES (1, 2102);
INSERT INTO `sys_role_menu` VALUES (1, 2200);
INSERT INTO `sys_role_menu` VALUES (1, 2201);
INSERT INTO `sys_role_menu` VALUES (1, 2202);
INSERT INTO `sys_role_menu` VALUES (1, 2203);
INSERT INTO `sys_role_menu` VALUES (1, 2210);
INSERT INTO `sys_role_menu` VALUES (1, 2211);
INSERT INTO `sys_role_menu` VALUES (1, 2212);
INSERT INTO `sys_role_menu` VALUES (1, 2213);
INSERT INTO `sys_role_menu` VALUES (1, 2300);
INSERT INTO `sys_role_menu` VALUES (1, 2400);
INSERT INTO `sys_role_menu` VALUES (1, 2401);
INSERT INTO `sys_role_menu` VALUES (1, 2402);
INSERT INTO `sys_role_menu` VALUES (1, 2403);
INSERT INTO `sys_role_menu` VALUES (1, 2600);
INSERT INTO `sys_role_menu` VALUES (1, 2601);
INSERT INTO `sys_role_menu` VALUES (1, 2800);
INSERT INTO `sys_role_menu` VALUES (1, 2810);
INSERT INTO `sys_role_menu` VALUES (1, 2820);
INSERT INTO `sys_role_menu` VALUES (1, 2830);
INSERT INTO `sys_role_menu` VALUES (1, 2840);
INSERT INTO `sys_role_menu` VALUES (1, 2850);
INSERT INTO `sys_role_menu` VALUES (1, 2860);
INSERT INTO `sys_role_menu` VALUES (1, 2870);
INSERT INTO `sys_role_menu` VALUES (1, 2871);
INSERT INTO `sys_role_menu` VALUES (1, 2906);
INSERT INTO `sys_role_menu` VALUES (1, 2907);
INSERT INTO `sys_role_menu` VALUES (1, 4000);
INSERT INTO `sys_role_menu` VALUES (1, 4001);
INSERT INTO `sys_role_menu` VALUES (1, 4002);
INSERT INTO `sys_role_menu` VALUES (1, 9000);
INSERT INTO `sys_role_menu` VALUES (1, 9005);
INSERT INTO `sys_role_menu` VALUES (1, 9006);
INSERT INTO `sys_role_menu` VALUES (1, 9007);
INSERT INTO `sys_role_menu` VALUES (1, 9050);
INSERT INTO `sys_role_menu` VALUES (1, 9051);
INSERT INTO `sys_role_menu` VALUES (1, 9052);
INSERT INTO `sys_role_menu` VALUES (1, 9053);
INSERT INTO `sys_role_menu` VALUES (1, 9054);
INSERT INTO `sys_role_menu` VALUES (1, 9055);
INSERT INTO `sys_role_menu` VALUES (1, 9056);
INSERT INTO `sys_role_menu` VALUES (1, 9057);
INSERT INTO `sys_role_menu` VALUES (1, 9059);
INSERT INTO `sys_role_menu` VALUES (1, 9060);
INSERT INTO `sys_role_menu` VALUES (1, 9061);
INSERT INTO `sys_role_menu` VALUES (1, 9062);
INSERT INTO `sys_role_menu` VALUES (1, 9063);
INSERT INTO `sys_role_menu` VALUES (1, 9064);
INSERT INTO `sys_role_menu` VALUES (1, 9065);
INSERT INTO `sys_role_menu` VALUES (2, 4000);
INSERT INTO `sys_role_menu` VALUES (2, 4001);
INSERT INTO `sys_role_menu` VALUES (2, 4002);
COMMIT;
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`user_id` bigint NOT NULL COMMENT '用户ID',
`username` varchar(64) DEFAULT NULL COMMENT '用户名',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
`salt` varchar(255) DEFAULT NULL COMMENT '盐值',
`phone` varchar(20) DEFAULT NULL COMMENT '电话号码',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称',
`name` varchar(64) DEFAULT NULL COMMENT '姓名',
`email` varchar(128) DEFAULT NULL COMMENT '邮箱地址',
`dept_id` bigint DEFAULT NULL COMMENT '所属部门ID',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`lock_flag` char(1) DEFAULT '0' COMMENT '锁定标记,0未锁定,9已锁定',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记,0未删除,1已删除',
`wx_openid` varchar(32) DEFAULT NULL COMMENT '微信登录openId',
`mini_openid` varchar(32) DEFAULT NULL COMMENT '小程序openId',
`qq_openid` varchar(32) DEFAULT NULL COMMENT 'QQ openId',
`gitee_login` varchar(100) DEFAULT NULL COMMENT '码云标识',
`osc_id` varchar(100) DEFAULT NULL COMMENT '开源中国标识',
PRIMARY KEY (`user_id`) USING BTREE,
KEY `user_wx_openid` (`wx_openid`) USING BTREE,
KEY `user_qq_openid` (`qq_openid`) USING BTREE,
KEY `user_idx1_username` (`username`) USING BTREE
) ENGINE=InnoDB COMMENT='用户表';
-- ----------------------------
-- Records of sys_user
-- ----------------------------
BEGIN;
INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$c/Ae0pRjJtMZg3BnvVpO.eIK6WYWVbKTzqgdy3afR7w.vd.xi3Mgy', '', '17034642999', '/admin/sys-file/s3demo/7ff4ca6b7bf446f3a5a13ac016dc21af.png', '管理员', '管理员', 'pig4cloud@qq.com', 4, ' ', 'admin', '2018-04-20 07:15:18', '2023-07-07 14:55:40', '0', '0', NULL, 'oBxPy5E-v82xWGsfzZVzkD3wEX64', NULL, 'log4j', NULL);
COMMIT;
-- ----------------------------
-- Table structure for sys_user_post
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_post`;
CREATE TABLE `sys_user_post` (
`user_id` bigint NOT NULL COMMENT '用户ID',
`post_id` bigint NOT NULL COMMENT '岗位ID',
PRIMARY KEY (`user_id`,`post_id`) USING BTREE
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='用户与岗位关联表';
-- ----------------------------
-- Records of sys_user_post
-- ----------------------------
BEGIN;
INSERT INTO `sys_user_post` VALUES (1, 1);
COMMIT;
-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`user_id` bigint NOT NULL COMMENT '用户ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
PRIMARY KEY (`user_id`,`role_id`) USING BTREE
) ENGINE=InnoDB COMMENT='用户角色表';
-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
BEGIN;
INSERT INTO `sys_user_role` VALUES (1, 1);
INSERT INTO `sys_user_role` VALUES (1676492190299299842, 2);
COMMIT;
-- ----------------------------
-- Table structure for sys_job
-- ----------------------------
DROP TABLE IF EXISTS `sys_job`;
CREATE TABLE `sys_job` (
`job_id` bigint NOT NULL COMMENT '任务id',
`job_name` varchar(64) NOT NULL COMMENT '任务名称',
`job_group` varchar(64) NOT NULL COMMENT '任务组名',
`job_order` char(1) DEFAULT '1' COMMENT '组内执行顺利,值越大执行优先级越高,最大值9,最小值1',
`job_type` char(1) NOT NULL DEFAULT '1' COMMENT '1、java类;2、spring bean名称;3、rest调用;4、jar调用;9其他',
`execute_path` varchar(500) DEFAULT NULL COMMENT 'job_type=3时,rest调用地址,仅支持rest get协议,需要增加String返回值,0成功,1失败;job_type=4时,jar路径;其它值为空',
`class_name` varchar(500) DEFAULT NULL COMMENT 'job_type=1时,类完整路径;job_type=2时,spring bean名称;其它值为空',
`method_name` varchar(500) DEFAULT NULL COMMENT '任务方法',
`method_params_value` varchar(2000) DEFAULT NULL COMMENT '参数值',
`cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron执行表达式',
`misfire_policy` varchar(20) DEFAULT '3' COMMENT '错失执行策略(1错失周期立即执行 2错失周期执行一次 3下周期执行)',
`job_tenant_type` char(1) DEFAULT '1' COMMENT '1、多租户任务;2、非多租户任务',
`job_status` char(1) DEFAULT '0' COMMENT '状态(1、未发布;2、运行中;3、暂停;4、删除;)',
`job_execute_status` char(1) DEFAULT '0' COMMENT '状态(0正常 1异常)',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`start_time` timestamp NULL DEFAULT NULL COMMENT '初次执行时间',
`previous_time` timestamp NULL DEFAULT NULL COMMENT '上次执行时间',
`next_time` timestamp NULL DEFAULT NULL COMMENT '下次执行时间',
`remark` varchar(500) DEFAULT '' COMMENT '备注信息',
PRIMARY KEY (`job_id`) USING BTREE,
UNIQUE KEY `job_name_group_idx` (`job_name`,`job_group`) USING BTREE
) ENGINE=InnoDB COMMENT='定时任务调度表';
-- ----------------------------
DROP TABLE IF EXISTS `sys_job_log`;
CREATE TABLE `sys_job_log` (
`job_log_id` bigint NOT NULL COMMENT '任务日志ID',
`job_id` bigint NOT NULL COMMENT '任务id',
`job_name` varchar(64) DEFAULT NULL COMMENT '任务名称',
`job_group` varchar(64) DEFAULT NULL COMMENT '任务组名',
`job_order` char(1) DEFAULT NULL COMMENT '组内执行顺利,值越大执行优先级越高,最大值9,最小值1',
`job_type` char(1) NOT NULL DEFAULT '1' COMMENT '1、java类;2、spring bean名称;3、rest调用;4、jar调用;9其他',
`execute_path` varchar(500) DEFAULT NULL COMMENT 'job_type=3时,rest调用地址,仅支持post协议;job_type=4时,jar路径;其它值为空',
`class_name` varchar(500) DEFAULT NULL COMMENT 'job_type=1时,类完整路径;job_type=2时,spring bean名称;其它值为空',
`method_name` varchar(500) DEFAULT NULL COMMENT '任务方法',
`method_params_value` varchar(2000) DEFAULT NULL COMMENT '参数值',
`cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron执行表达式',
`job_message` varchar(500) DEFAULT NULL COMMENT '日志信息',
`job_log_status` char(1) DEFAULT '0' COMMENT '执行状态(0正常 1失败)',
`execute_time` varchar(30) DEFAULT NULL COMMENT '执行时间',
`exception_info` varchar(2000) DEFAULT '' COMMENT '异常信息',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`job_log_id`) USING BTREE
) ENGINE=InnoDB COMMENT='定时任务执行日志表';
#
# Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar
#
# PLEASE consider using mysql with innodb tables to avoid locking issues
#
# In your Quartz properties file, you'll need to set
# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#
DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;
CREATE TABLE QRTZ_JOB_DETAILS
(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
CREATE TABLE QRTZ_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
NEXT_FIRE_TIME BIGINT(13) NULL,
PREV_FIRE_TIME BIGINT(13) NULL,
PRIORITY INTEGER NULL,
TRIGGER_STATE VARCHAR(16) NOT NULL,
TRIGGER_TYPE VARCHAR(8) NOT NULL,
START_TIME BIGINT(13) NOT NULL,
END_TIME BIGINT(13) NULL,
CALENDAR_NAME VARCHAR(200) NULL,
MISFIRE_INSTR SMALLINT(2) NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
);
CREATE TABLE QRTZ_SIMPLE_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
REPEAT_COUNT BIGINT(7) NOT NULL,
REPEAT_INTERVAL BIGINT(12) NOT NULL,
TIMES_TRIGGERED BIGINT(10) NOT NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE QRTZ_CRON_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
CRON_EXPRESSION VARCHAR(200) NOT NULL,
TIME_ZONE_ID VARCHAR(80),
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE QRTZ_SIMPROP_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
STR_PROP_1 VARCHAR(512) NULL,
STR_PROP_2 VARCHAR(512) NULL,
STR_PROP_3 VARCHAR(512) NULL,
INT_PROP_1 INT NULL,
INT_PROP_2 INT NULL,
LONG_PROP_1 BIGINT NULL,
LONG_PROP_2 BIGINT NULL,
DEC_PROP_1 NUMERIC(13,4) NULL,
DEC_PROP_2 NUMERIC(13,4) NULL,
BOOL_PROP_1 VARCHAR(1) NULL,
BOOL_PROP_2 VARCHAR(1) NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE QRTZ_BLOB_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
BLOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE QRTZ_CALENDARS
(
SCHED_NAME VARCHAR(120) NOT NULL,
CALENDAR_NAME VARCHAR(200) NOT NULL,
CALENDAR BLOB NOT NULL,
PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
);
CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
);
CREATE TABLE QRTZ_FIRED_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
ENTRY_ID VARCHAR(95) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
INSTANCE_NAME VARCHAR(200) NOT NULL,
FIRED_TIME BIGINT(13) NOT NULL,
SCHED_TIME BIGINT(13) NOT NULL,
PRIORITY INTEGER NOT NULL,
STATE VARCHAR(16) NOT NULL,
JOB_NAME VARCHAR(200) NULL,
JOB_GROUP VARCHAR(200) NULL,
IS_NONCONCURRENT VARCHAR(1) NULL,
REQUESTS_RECOVERY VARCHAR(1) NULL,
PRIMARY KEY (SCHED_NAME,ENTRY_ID)
);
CREATE TABLE QRTZ_SCHEDULER_STATE
(
SCHED_NAME VARCHAR(120) NOT NULL,
INSTANCE_NAME VARCHAR(200) NOT NULL,
LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
CHECKIN_INTERVAL BIGINT(13) NOT NULL,
PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
);
CREATE TABLE QRTZ_LOCKS
(
SCHED_NAME VARCHAR(120) NOT NULL,
LOCK_NAME VARCHAR(40) NOT NULL,
PRIMARY KEY (SCHED_NAME,LOCK_NAME)
);
-- ----------------------------
-- Table structure for gen_datasource_conf
-- ----------------------------
DROP TABLE IF EXISTS `gen_datasource_conf`;
CREATE TABLE `gen_datasource_conf` (
`id` bigint NOT NULL COMMENT '主键',
`name` varchar(64) DEFAULT NULL COMMENT '别名',
`url` varchar(255) DEFAULT NULL COMMENT 'jdbcurl',
`username` varchar(64) DEFAULT NULL COMMENT '用户名',
`password` varchar(64) DEFAULT NULL COMMENT '密码',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记',
`ds_type` varchar(64) DEFAULT NULL COMMENT '数据库类型',
`conf_type` char(1) DEFAULT NULL COMMENT '配置类型',
`ds_name` varchar(64) DEFAULT NULL COMMENT '数据库名称',
`instance` varchar(64) DEFAULT NULL COMMENT '实例',
`port` int DEFAULT NULL COMMENT '端口',
`host` varchar(128) DEFAULT NULL COMMENT '主机',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB COMMENT='数据源表';
-- ----------------------------
-- Records of gen_datasource_conf
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for gen_field_type
-- ----------------------------
DROP TABLE IF EXISTS `gen_field_type`;
CREATE TABLE `gen_field_type` (
`id` bigint NOT NULL COMMENT '主键',
`column_type` varchar(200) DEFAULT NULL COMMENT '字段类型',
`attr_type` varchar(200) DEFAULT NULL COMMENT '属性类型',
`package_name` varchar(200) DEFAULT NULL COMMENT '属性包名',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记',
PRIMARY KEY (`id`),
UNIQUE KEY `column_type` (`column_type`)
) ENGINE=InnoDB AUTO_INCREMENT=1634915190321451010 COMMENT='字段类型管理';
-- ----------------------------
-- Records of gen_field_type
-- ----------------------------
BEGIN;
INSERT INTO `gen_field_type` VALUES (1, 'datetime', 'LocalDateTime', 'java.time.LocalDateTime', '2023-02-06 08:45:10', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (2, 'date', 'LocalDate', 'java.time.LocalDate', '2023-02-06 08:45:10', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (3, 'tinyint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (4, 'smallint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (5, 'mediumint', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (6, 'int', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (7, 'integer', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (8, 'bigint', 'Long', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (9, 'float', 'Float', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (10, 'double', 'Double', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (11, 'decimal', 'BigDecimal', 'java.math.BigDecimal', '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (12, 'bit', 'Boolean', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (13, 'char', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (14, 'varchar', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (15, 'tinytext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (16, 'text', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (17, 'mediumtext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (18, 'longtext', 'String', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (19, 'timestamp', 'LocalDateTime', 'java.time.LocalDateTime', '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (20, 'NUMBER', 'Integer', NULL, '2023-02-06 08:45:11', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (21, 'BINARY_INTEGER', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (22, 'BINARY_FLOAT', 'Float', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (23, 'BINARY_DOUBLE', 'Double', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (24, 'VARCHAR2', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (25, 'NVARCHAR', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (26, 'NVARCHAR2', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (27, 'CLOB', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (28, 'int8', 'Long', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (29, 'int4', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (30, 'int2', 'Integer', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (31, 'numeric', 'BigDecimal', 'java.math.BigDecimal', '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
INSERT INTO `gen_field_type` VALUES (32, 'json', 'String', NULL, '2023-02-06 08:45:12', NULL, NULL, NULL, '0');
COMMIT;
-- ----------------------------
-- Table structure for gen_group
-- ----------------------------
DROP TABLE IF EXISTS `gen_group`;
CREATE TABLE `gen_group` (
`id` bigint NOT NULL,
`group_name` varchar(255) DEFAULT NULL COMMENT '分组名称',
`group_desc` varchar(255) DEFAULT NULL COMMENT '分组描述',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
`create_time` datetime DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '修改人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='模板分组';
-- ----------------------------
-- Table structure for gen_table
-- ----------------------------
DROP TABLE IF EXISTS `gen_table`;
CREATE TABLE `gen_table` (
`id` bigint NOT NULL,
`table_name` varchar(200) DEFAULT NULL COMMENT '表名',
`class_name` varchar(200) DEFAULT NULL COMMENT '类名',
`db_type` varchar(200) DEFAULT NULL COMMENT '数据库类型',
`table_comment` varchar(200) DEFAULT NULL COMMENT '说明',
`author` varchar(200) DEFAULT NULL COMMENT '作者',
`email` varchar(200) DEFAULT NULL COMMENT '邮箱',
`package_name` varchar(200) DEFAULT NULL COMMENT '项目包名',
`version` varchar(200) DEFAULT NULL COMMENT '项目版本号',
`i18n` char(1) DEFAULT '0' COMMENT '是否生成带有i18n 0 不带有 1带有',
`style` bigint DEFAULT NULL COMMENT '代码风格',
`child_table_name` varchar(200) DEFAULT NULL COMMENT '子表名称',
`main_field` varchar(200) DEFAULT NULL COMMENT '主表关联键',
`child_field` varchar(200) DEFAULT NULL COMMENT '子表关联键',
`generator_type` char(1) DEFAULT '0' COMMENT '生成方式 0:zip压缩包 1:自定义目录',
`backend_path` varchar(500) DEFAULT NULL COMMENT '后端生成路径',
`frontend_path` varchar(500) DEFAULT NULL COMMENT '前端生成路径',
`module_name` varchar(200) DEFAULT NULL COMMENT '模块名',
`function_name` varchar(200) DEFAULT NULL COMMENT '功能名',
`form_layout` tinyint DEFAULT NULL COMMENT '表单布局 1:一列 2:两列',
`ds_name` varchar(200) DEFAULT NULL COMMENT '数据源ID',
`baseclass_id` bigint DEFAULT NULL COMMENT '基类ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `table_name` (`table_name`,`ds_name`) USING BTREE
) ENGINE=InnoDB COMMENT='代码生成表';
-- ----------------------------
-- Records of gen_table
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for gen_table_column
-- ----------------------------
DROP TABLE IF EXISTS `gen_table_column`;
CREATE TABLE `gen_table_column` (
`id` bigint NOT NULL,
`ds_name` varchar(200) DEFAULT NULL COMMENT '数据源名称',
`table_name` varchar(200) DEFAULT NULL COMMENT '表名称',
`field_name` varchar(200) DEFAULT NULL COMMENT '字段名称',
`field_type` varchar(200) DEFAULT NULL COMMENT '字段类型',
`field_comment` varchar(200) DEFAULT NULL COMMENT '字段说明',
`attr_name` varchar(200) DEFAULT NULL COMMENT '属性名',
`attr_type` varchar(200) DEFAULT NULL COMMENT '属性类型',
`package_name` varchar(200) DEFAULT NULL COMMENT '属性包名',
`sort` int DEFAULT NULL COMMENT '排序',
`auto_fill` varchar(20) DEFAULT NULL COMMENT '自动填充 DEFAULT、INSERT、UPDATE、INSERT_UPDATE',
`primary_pk` char(1) DEFAULT '0' COMMENT '主键 0:否 1:是',
`base_field` char(1) DEFAULT '0' COMMENT '基类字段 0:否 1:是',
`form_item` char(1) DEFAULT '0' COMMENT '表单项 0:否 1:是',
`form_required` char(1) DEFAULT '0' COMMENT '表单必填 0:否 1:是',
`form_type` varchar(200) DEFAULT NULL COMMENT '表单类型',
`form_validator` varchar(200) DEFAULT NULL COMMENT '表单效验',
`grid_item` char(1) DEFAULT '0' COMMENT '列表项 0:否 1:是',
`grid_sort` char(1) DEFAULT '0' COMMENT '列表排序 0:否 1:是',
`query_item` char(1) DEFAULT '0' COMMENT '查询项 0:否 1:是',
`query_type` varchar(200) DEFAULT NULL COMMENT '查询方式',
`query_form_type` varchar(200) DEFAULT NULL COMMENT '查询表单类型',
`field_dict` varchar(200) DEFAULT NULL COMMENT '字典类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='代码生成表字段';
-- ----------------------------
-- Records of gen_table_column
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for gen_template
-- ----------------------------
DROP TABLE IF EXISTS `gen_template`;
CREATE TABLE `gen_template` (
`id` bigint NOT NULL COMMENT '主键',
`template_name` varchar(255) NOT NULL COMMENT '模板名称',
`generator_path` varchar(255) NOT NULL COMMENT '模板路径',
`template_desc` varchar(255) NOT NULL COMMENT '模板描述',
`template_code` text NOT NULL COMMENT '模板代码',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标记',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '修改人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='模板';
-- ----------------------------
-- Table structure for gen_template_group
-- ----------------------------
DROP TABLE IF EXISTS `gen_template_group`;
CREATE TABLE `gen_template_group` (
`group_id` bigint NOT NULL COMMENT '分组id',
`template_id` bigint NOT NULL COMMENT '模板id',
PRIMARY KEY (`group_id`,`template_id`)
) ENGINE=InnoDB COMMENT='模板分组关联表';
SET FOREIGN_KEY_CHECKS = 1;
================================================
FILE: db/pig_config.sql
================================================
DROP DATABASE IF EXISTS `pig_config`;
CREATE DATABASE `pig_config` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE pig_config;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for config_info
-- ----------------------------
DROP TABLE IF EXISTS `config_info`;
CREATE TABLE `config_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT 'group_id',
`content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COLLATE utf8_bin COMMENT 'source user',
`src_ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT 'configuration description',
`c_use` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'configuration usage',
`effect` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '配置生效的描述',
`type` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '配置的类型',
`c_schema` text COLLATE utf8_bin COMMENT '配置的模式',
`encrypted_data_key` varchar(1024) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
-- ----------------------------
-- Records of his_config_info
-- ----------------------------
BEGIN;
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (1, 'application-dev.yml', 'DEFAULT_GROUP', '# 配置文件加密根密码\njasypt:\n encryptor:\n password: pig\n algorithm: PBEWithMD5AndDES\n iv-generator-classname: org.jasypt.iv.NoIvGenerator\n \n# Spring 相关\nspring:\n cache:\n type: redis\n data:\n redis:\n host: ${REDIS_HOST:127.0.0.1}\n password: ${REDIS_PASSWORD:}\n port: ${REDIS_PORT:6379}\n database: ${REDIS_DATABASE:0}\n cloud:\n sentinel:\n eager: true\n transport:\n dashboard: pig-sentinel:5003\n openfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n compression:\n request:\n enabled: true\n response:\n enabled: true\n\n# 暴露监控端点\nmanagement:\n endpoints:\n web:\n exposure:\n include: \"*\" \n endpoint:\n health:\n show-details: ALWAYS\n\n# mybaits-plus配置\nmybatis-plus:\n mapper-locations: classpath:/mapper/*Mapper.xml\n global-config:\n banner: false\n db-config:\n id-type: auto\n table-underline: true\n logic-delete-value: 1\n logic-not-delete-value: 0\n type-handlers-package: com.pig4cloud.pig.common.mybatis.handler\n configuration:\n map-underscore-to-camel-case: true\n shrink-whitespaces-in-sql: true\n\n# 短信插件配置:https://www.yuque.com/vxixfq/pig/zw8udk\nsms:\n is-print: false # 是否打印日志\n config-type: yaml # 配置类型,yaml', '670b60f71ed234ee2c2d363721a1e2c9', '2025-05-16 12:48:39', '2025-10-29 09:01:23', 'nacos', '10.25.25.1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (2, 'pig-auth-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n freemarker:\n allow-request-override: false\n allow-session-override: false\n cache: true\n charset: UTF-8\n check-template-location: true\n content-type: text/html\n enabled: true\n request-context-attribute: request\n expose-request-attributes: false\n expose-session-attributes: false\n expose-spring-macro-helpers: true\n prefer-file-system-access: true\n suffix: .ftl\n template-loader-path: classpath:/templates/\n\n\nsecurity:\n encode-key: \'thanks,pig4cloud\'\n ignore-clients:\n - test\n - client\n - open\n - app', 'b4a660ece61e8180b4940a0770eddfee', '2025-01-30 16:50:04', '2025-01-30 16:50:04', 'nacos', '127.0.0.1', '', 'public', NULL, NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (3, 'pig-codegen-dev.yml', 'DEFAULT_GROUP', '# 数据源配置\nspring:\n datasource:\n type: com.zaxxer.hikari.HikariDataSource\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USERNAME:root}\n password: ${MYSQL_PASSWORD:root}\n url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:pig}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true\n resources:\n static-locations: classpath:/static/,classpath:/views/\n', 'a1e1ae7127517eae96a2df8b15d94fe3', '2025-10-29 11:39:40', '2025-10-29 11:39:40', 'nacos', '10.25.25.2', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (4, 'pig-gateway-dev.yml', 'DEFAULT_GROUP', 'spring:\n cloud:\n gateway:\n server:\n webflux:\n routes:\n # 认证中心\n - id: pig-auth\n uri: lb://pig-auth\n predicates:\n - Path=/auth/**\n #UPMS 模块\n - id: pig-upms-biz\n uri: lb://pig-upms-biz\n predicates:\n - Path=/admin/**\n filters:\n # 限流配置\n - name: RequestRateLimiter\n args:\n key-resolver: \'#{@remoteAddrKeyResolver}\'\n redis-rate-limiter.replenishRate: 100\n redis-rate-limiter.burstCapacity: 200\n # 代码生成模块\n - id: pig-codegen\n uri: lb://pig-codegen\n predicates:\n - Path=/gen/**\n # 代码生成模块\n - id: pig-quartz\n uri: lb://pig-quartz\n predicates:\n - Path=/job/**\n # 固定路由转发配置 无修改\n - id: openapi\n uri: lb://pig-gateway\n predicates:\n - Path=/v3/api-docs/**\n filters:\n - RewritePath=/v3/api-docs/(?<path>.*), /$\\{path}/$\\{path}/v3/api-docs', '53ace4035d810f07e3767d94e1e68379', '2025-01-30 16:50:04', '2025-05-30 08:36:27', 'nacos_namespace_migrate', '0:0:0:0:0:0:0:1', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (5, 'pig-monitor-dev.yml', 'DEFAULT_GROUP', 'spring:\n autoconfigure:\n exclude: com.pig4cloud.pig.common.core.config.JacksonConfiguration\n # 安全配置\n security:\n user:\n name: ENC(8Hk2ILNJM8UTOuW/Xi75qg==) # pig\n password: ENC(o6cuPFfUevmTbkmBnE67Ow====) # pig\n', '650bdfa15f60f3faa84dfe6e6878b8cf', '2025-01-30 16:50:04', '2025-01-30 16:50:04', 'nacos', '127.0.0.1', '', 'public', NULL, NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (6, 'pig-upms-biz-dev.yml', 'DEFAULT_GROUP', '# 数据源\nspring:\n datasource:\n type: com.zaxxer.hikari.HikariDataSource\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USERNAME:root}\n password: ${MYSQL_PASSWORD:root}\n url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:pig}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true\n\n# 文件上传相关 支持阿里云、华为云、腾讯、minio\nfile:\n bucketName: s3demo \n local:\n enable: true\n base-path: /Users/lengleng/Downloads/img', '80cf3a9b7b490e32b03550c429dea33e', '2025-10-29 11:39:40', '2025-10-29 11:39:40', 'nacos', '10.25.25.2', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) VALUES (7, 'pig-quartz-dev.yml', 'DEFAULT_GROUP', 'spring:\n datasource:\n type: com.zaxxer.hikari.HikariDataSource\n driver-class-name: com.mysql.cj.jdbc.Driver\n username: ${MYSQL_USERNAME:root}\n password: ${MYSQL_PASSWORD:root}\n url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:pig}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true\n', 'e0c9ce980fd14fd28f955852061970ca', '2025-10-29 11:39:40', '2025-10-29 11:39:40', 'nacos', '10.25.25.2', '', 'public', '', NULL, NULL, 'yaml', NULL, '');
COMMIT;
-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
DROP TABLE IF EXISTS `config_info_beta`;
CREATE TABLE `config_info_beta` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`app_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
`content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) COLLATE utf8_bin DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COLLATE utf8_bin COMMENT 'source user',
`src_ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` varchar(1024) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
-- ----------------------------
-- Records of config_info_beta
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_info_gray
-- ----------------------------
DROP TABLE IF EXISTS `config_info_gray`;
CREATE TABLE `config_info_gray` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`src_user` text COMMENT 'src_user',
`src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
`gray_rule` text NOT NULL COMMENT 'gray_rule',
`encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`),
KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`),
KEY `idx_gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_info_gray';
-- ----------------------------
-- Records of config_info_gray
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
DROP TABLE IF EXISTS `config_info_tag`;
CREATE TABLE `config_info_tag` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
`content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COLLATE utf8_bin COMMENT 'source user',
`src_ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
-- ----------------------------
-- Records of config_info_tag
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
DROP TABLE IF EXISTS `config_tags_relation`;
CREATE TABLE `config_tags_relation` (
`id` bigint NOT NULL COMMENT 'id',
`tag_name` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
`nid` bigint NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
-- ----------------------------
-- Records of config_tags_relation
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
DROP TABLE IF EXISTS `group_capacity`;
CREATE TABLE `group_capacity` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
-- ----------------------------
-- Records of group_capacity
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
DROP TABLE IF EXISTS `his_config_info`;
CREATE TABLE `his_config_info` (
`id` bigint unsigned NOT NULL COMMENT 'id',
`nid` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
`data_id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'data_id',
`group_id` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'group_id',
`app_name` varchar(128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
`content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content',
`md5` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COLLATE utf8_bin COMMENT 'source user',
`src_ip` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
`op_type` char(10) COLLATE utf8_bin DEFAULT NULL COMMENT 'operation type',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` varchar(1024) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '密钥',
`publish_type` varchar(50) COLLATE utf8_bin DEFAULT 'formal' COMMENT 'publish type gray or formal',
`gray_name` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT 'gray name',
`ext_info` longtext COLLATE utf8_bin COMMENT 'ext info',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL COMMENT 'role',
`resource` varchar(128) NOT NULL COMMENT 'resource',
`action` varchar(8) NOT NULL COMMENT 'action',
UNIQUE KEY `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of permissions
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL COMMENT 'username',
`role` varchar(50) NOT NULL COMMENT 'role',
UNIQUE KEY `idx_user_role` (`username`,`role`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of roles
-- ----------------------------
BEGIN;
INSERT INTO `roles` (`username`, `role`) VALUES ('nacos', 'ROLE_ADMIN');
COMMIT;
-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
DROP TABLE IF EXISTS `tenant_capacity`;
CREATE TABLE `tenant_capacity` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
-- ----------------------------
-- Records of tenant_capacity
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
DROP TABLE IF EXISTS `tenant_info`;
CREATE TABLE `tenant_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) COLLATE utf8_bin NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
`tenant_name` varchar(128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint NOT NULL COMMENT '创建时间',
`gmt_modified` bigint NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
-- ----------------------------
-- Records of tenant_info
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`username` varchar(50) NOT NULL COMMENT 'username',
`password` varchar(500) NOT NULL COMMENT 'password',
`enabled` tinyint(1) NOT NULL COMMENT 'enabled',
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of users
-- ----------------------------
BEGIN;
INSERT INTO `users` (`username`, `password`, `enabled`) VALUES ('nacos', '$2a$10$W6PKgRTzXUp6R/NY853Kn.nRaIcX3whIMTZ/WWkNqo2MTOeSBjKJq', 1);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
================================================
FILE: docker-compose.yml
================================================
services:
pig-mysql:
build:
context: ./db
environment:
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: pig-mysql
image: pig-mysql
ports:
- 33306:3306
networks:
- spring_cloud_default
pig-redis:
image: registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis
ports:
- 36379:6379
restart: always
container_name: pig-redis
hostname: pig-redis
networks:
- spring_cloud_default
pig-register:
build:
context: ./pig-register
restart: always
ports:
- 8848:8848
- 9848:9848
- 8080:8080
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
container_name: pig-register
hostname: pig-register
image: pig-register
networks:
- spring_cloud_default
pig-gateway:
build:
context: ./pig-gateway
restart: always
ports:
- 9999:9999
container_name: pig-gateway
hostname: pig-gateway
image: pig-gateway
environment:
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
pig-auth:
build:
context: ./pig-auth
restart: always
container_name: pig-auth
hostname: pig-auth
image: pig-auth
environment:
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
pig-upms:
build:
context: ./pig-upms/pig-upms-biz
restart: always
container_name: pig-upms
hostname: pig-upms
image: pig-upms
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
pig-monitor:
build:
context: ./pig-visual/pig-monitor
restart: always
ports:
- 5001:5001
container_name: pig-monitor
hostname: pig-monitor
image: pig-monitor
environment:
NACOS_HOST: pig-register
networks:
- spring_cloud_default
pig-codegen:
build:
context: ./pig-visual/pig-codegen
restart: always
container_name: pig-codegen
hostname: pig-codegen
image: pig-codegen
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
pig-quartz:
build:
context: ./pig-visual/pig-quartz
restart: always
image: pig-quartz
container_name: pig-quartz
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
networks:
spring_cloud_default:
name: spring_cloud_default
driver: bridge
================================================
FILE: pig-auth/Dockerfile
================================================
FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:21-anolis
WORKDIR /pig-auth
ARG JAR_FILE=target/pig-auth.jar
COPY ${JAR_FILE} app.jar
EXPOSE 3000
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
CMD sleep 60; java $JAVA_OPTS -jar app.jar
================================================
FILE: pig-auth/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>pig</artifactId>
<version>${revision}</version>
</parent>
<artifactId>pig-auth</artifactId>
<packaging>jar</packaging>
<description>pig 认证授权中心,基于 spring security oAuth2</description>
<dependencies>
<!--注册中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--断路器依赖-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pig-common-feign</artifactId>
</dependency>
<!--upms api、model 模块-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pig-upms-api</artifactId>
</dependency>
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pig-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--freemarker 授权码模式渲染-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<!-- log -->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pig-common-log</artifactId>
</dependency>
<!-- 调用验证码核心模块 -->
<dependency>
<groupId>com.pig4cloud.plugin</groupId>
<artifactId>captcha-core</artifactId>
</dependency>
<!-- 加解密依赖 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
</dependency>
</dependencies>
<profiles>
<profile>
<id>boot</id>
</profile>
<profile>
<id>cloud</id>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/PigAuthApplication.java
================================================
/*
* Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.pig4cloud.pig.auth;
import com.pig4cloud.pig.common.feign.annotation.EnablePigFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* 认证授权中心应用启动类
*
* @author lengleng
* @date 2025/05/30
*/
@EnablePigFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class PigAuthApplication {
public static void main(String[] args) {
SpringApplication.run(PigAuthApplication.class, args);
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/config/AuthorizationServerConfiguration.java
================================================
/*
* Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.pig4cloud.pig.auth.config;
import com.pig4cloud.pig.auth.support.CustomeOAuth2AccessTokenGenerator;
import com.pig4cloud.pig.auth.support.core.CustomeOAuth2TokenCustomizer;
import com.pig4cloud.pig.auth.support.core.FormIdentityLoginConfigurer;
import com.pig4cloud.pig.auth.support.core.PigDaoAuthenticationProvider;
import com.pig4cloud.pig.auth.support.filter.PasswordDecoderFilter;
import com.pig4cloud.pig.auth.support.filter.ValidateCodeFilter;
import com.pig4cloud.pig.auth.support.handler.PigAuthenticationFailureEventHandler;
import com.pig4cloud.pig.auth.support.handler.PigAuthenticationSuccessEventHandler;
import com.pig4cloud.pig.auth.support.password.OAuth2ResourceOwnerPasswordAuthenticationConverter;
import com.pig4cloud.pig.auth.support.password.OAuth2ResourceOwnerPasswordAuthenticationProvider;
import com.pig4cloud.pig.auth.support.sms.OAuth2ResourceOwnerSmsAuthenticationConverter;
import com.pig4cloud.pig.auth.support.sms.OAuth2ResourceOwnerSmsAuthenticationProvider;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.security.component.PigBootCorsProperties;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
import org.springframework.security.oauth2.server.authorization.token.DelegatingOAuth2TokenGenerator;
import org.springframework.security.oauth2.server.authorization.token.OAuth2RefreshTokenGenerator;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenGenerator;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2AuthorizationCodeAuthenticationConverter;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2AuthorizationCodeRequestAuthenticationConverter;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2ClientCredentialsAuthenticationConverter;
import org.springframework.security.oauth2.server.authorization.web.authentication.OAuth2RefreshTokenAuthenticationConverter;
import org.springframework.security.web.DefaultSecurityFilterChain;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.AuthenticationConverter;
import org.springframework.security.web.authentication.DelegatingAuthenticationConverter;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
/**
* 认证服务器配置类
*
* @author lengleng
* @date 2025/05/30
*/
@Configuration
@RequiredArgsConstructor
public class AuthorizationServerConfiguration {
private final OAuth2AuthorizationService authorizationService;
private final PasswordDecoderFilter passwordDecoderFilter;
private final ValidateCodeFilter validateCodeFilter;
private final PigBootCorsProperties pigBootCorsProperties;
/**
* Authorization Server 配置,仅对 /oauth2/** 的请求有效
* @param http http
* @return {@link SecurityFilterChain }
* @throws Exception 异常
*/
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServer(HttpSecurity http) throws Exception {
// 配置授权服务器的安全策略,只有/oauth2/**的请求才会走如下的配置
http.securityMatcher("/oauth2/**");
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = new OAuth2AuthorizationServerConfigurer();
// 增加验证码过滤器
http.addFilterBefore(validateCodeFilter, UsernamePasswordAuthenticationFilter.class);
// 增加密码解密过滤器
http.addFilterBefore(passwordDecoderFilter, UsernamePasswordAuthenticationFilter.class);
http.with(authorizationServerConfigurer.tokenEndpoint((tokenEndpoint) -> {// 个性化认证授权端点
tokenEndpoint.accessTokenRequestConverter(accessTokenRequestConverter()) // 注入自定义的授权认证Converter
.accessTokenResponseHandler(new PigAuthenticationSuccessEventHandler()) // 登录成功处理器
.errorResponseHandler(new PigAuthenticationFailureEventHandler());// 登录失败处理器
}).clientAuthentication(oAuth2ClientAuthenticationConfigurer -> // 个性化客户端认证
oAuth2ClientAuthenticationConfigurer.errorResponseHandler(new PigAuthenticationFailureEventHandler()))// 处理客户端认证异常
.authorizationEndpoint(authorizationEndpoint -> authorizationEndpoint// 授权码端点个性化confirm页面
.consentPage(SecurityConstants.CUSTOM_CONSENT_PAGE_URI)), Customizer.withDefaults())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests.anyRequest().authenticated());
// 设置 Token 存储的策略
http.with(authorizationServerConfigurer.authorizationService(authorizationService)// redis存储token的实现
.authorizationServerSettings(
AuthorizationServerSettings.builder().issuer(SecurityConstants.PROJECT_LICENSE).build()),
Customizer.withDefaults());
// 设置授权码模式登录页面
http.with(new FormIdentityLoginConfigurer(), Customizer.withDefaults());
// 配置 CORS 跨域资源共享
if (Boolean.TRUE.equals(pigBootCorsProperties.getEnabled())) {
http.cors(cors -> cors.configurationSource(corsConfigurationSource()));
}
DefaultSecurityFilterChain securityFilterChain = http.build();
// 注入自定义授权模式实现
addCustomOAuth2GrantAuthenticationProvider(http);
return securityFilterChain;
}
/**
* 令牌生成规则实现 </br>
* client:username:uuid
* @return OAuth2TokenGenerator
*/
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
// 注入Token 增加关联用户信息
accessTokenGenerator.setAccessTokenCustomizer(new CustomeOAuth2TokenCustomizer());
return new DelegatingOAuth2TokenGenerator(accessTokenGenerator, new OAuth2RefreshTokenGenerator());
}
/**
* request -> xToken 注入请求转换器
* @return DelegatingAuthenticationConverter
*/
@Bean
public AuthenticationConverter accessTokenRequestConverter() {
return new DelegatingAuthenticationConverter(Arrays.asList(
new OAuth2ResourceOwnerPasswordAuthenticationConverter(),
new OAuth2ResourceOwnerSmsAuthenticationConverter(), new OAuth2RefreshTokenAuthenticationConverter(),
new OAuth2ClientCredentialsAuthenticationConverter(),
new OAuth2AuthorizationCodeAuthenticationConverter(),
new OAuth2AuthorizationCodeRequestAuthenticationConverter()));
}
/**
* 注入授权模式实现提供方
* <p>
* 1. 密码模式 </br>
* 2. 短信登录 </br>
*/
private void addCustomOAuth2GrantAuthenticationProvider(HttpSecurity http) {
AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class);
OAuth2AuthorizationService authorizationService = http.getSharedObject(OAuth2AuthorizationService.class);
OAuth2ResourceOwnerPasswordAuthenticationProvider resourceOwnerPasswordAuthenticationProvider = new OAuth2ResourceOwnerPasswordAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
OAuth2ResourceOwnerSmsAuthenticationProvider resourceOwnerSmsAuthenticationProvider = new OAuth2ResourceOwnerSmsAuthenticationProvider(
authenticationManager, authorizationService, oAuth2TokenGenerator());
// 处理 UsernamePasswordAuthenticationToken
http.authenticationProvider(new PigDaoAuthenticationProvider());
// 处理 OAuth2ResourceOwnerPasswordAuthenticationToken
http.authenticationProvider(resourceOwnerPasswordAuthenticationProvider);
// 处理 OAuth2ResourceOwnerSmsAuthenticationToken
http.authenticationProvider(resourceOwnerSmsAuthenticationProvider);
}
/**
* 配置 CORS 跨域资源共享
* @return UrlBasedCorsConfigurationSource CORS配置源
*/
private UrlBasedCorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 从配置文件读取允许的源模式
pigBootCorsProperties.getAllowedOriginPatterns().forEach(corsConfiguration::addAllowedOriginPattern);
// 从配置文件读取允许的请求头
pigBootCorsProperties.getAllowedHeaders().forEach(corsConfiguration::addAllowedHeader);
// 从配置文件读取允许的HTTP方法
pigBootCorsProperties.getAllowedMethods().forEach(corsConfiguration::addAllowedMethod);
// 从配置文件读取是否允许携带凭证
corsConfiguration.setAllowCredentials(pigBootCorsProperties.getAllowCredentials());
// 注册CORS配置到指定路径
source.registerCorsConfiguration(pigBootCorsProperties.getPathPattern(), corsConfiguration);
return source;
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/ImageCodeEndpoint.java
================================================
package com.pig4cloud.pig.auth.endpoint;
import cn.hutool.core.lang.Validator;
import com.pig4cloud.captcha.ArithmeticCaptcha;
import com.pig4cloud.pig.common.core.constant.CacheConstants;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.core.util.RedisUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
/**
* 验证码相关的接口
*
* @author lengleng
* @date 2022/6/27
*/
@RestController
@RequestMapping("/code")
@RequiredArgsConstructor
@Tag(description = "code", name = "验证码控制器管理模块")
public class ImageCodeEndpoint {
private static final Integer DEFAULT_IMAGE_WIDTH = 100;
private static final Integer DEFAULT_IMAGE_HEIGHT = 40;
/**
* 创建图形验证码并输出到响应流
* @param randomStr 随机字符串,用于缓存验证码
* @param response HTTP响应对象,用于输出验证码图片
*/
@SneakyThrows
@GetMapping("/image")
@Operation(summary = "创建图形验证码并输出到响应流", description = "创建图形验证码并输出到响应流")
public void image(String randomStr, HttpServletResponse response) {
ArithmeticCaptcha captcha = new ArithmeticCaptcha(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
if (Validator.isMobile(randomStr)) {
return;
}
String result = captcha.text();
RedisUtils.set(CacheConstants.DEFAULT_CODE_KEY + randomStr, result, SecurityConstants.CODE_TIME,
TimeUnit.SECONDS);
// 转换流信息写出
captcha.out(response.getOutputStream());
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/PigTokenEndpoint.java
================================================
/*
* Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.pig4cloud.pig.auth.endpoint;
import java.security.Principal;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cache.CacheManager;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.security.authentication.event.LogoutSuccessEvent;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.security.oauth2.core.http.converter.OAuth2AccessTokenResponseHttpMessageConverter;
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
import org.springframework.security.oauth2.server.resource.InvalidBearerTokenException;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pig.admin.api.entity.SysOauthClientDetails;
import com.pig4cloud.pig.admin.api.feign.RemoteClientDetailsService;
import com.pig4cloud.pig.admin.api.vo.TokenVo;
import com.pig4cloud.pig.auth.support.handler.PigAuthenticationFailureEventHandler;
import com.pig4cloud.pig.common.core.constant.CacheConstants;
import com.pig4cloud.pig.common.core.constant.CommonConstants;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.core.util.R;
import com.pig4cloud.pig.common.core.util.RedisUtils;
import com.pig4cloud.pig.common.core.util.RetOps;
import com.pig4cloud.pig.common.core.util.SpringContextHolder;
import com.pig4cloud.pig.common.security.annotation.Inner;
import com.pig4cloud.pig.common.security.util.OAuth2EndpointUtils;
import com.pig4cloud.pig.common.security.util.OAuth2ErrorCodesExpand;
import com.pig4cloud.pig.common.security.util.OAuthClientException;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.TemporalAccessorUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
/**
* OAuth2 令牌端点控制器,提供令牌相关操作
*
* @author lengleng
* @date 2025/05/30
*/
@RestController
@RequestMapping
@RequiredArgsConstructor
@Tag(description = "oauth", name = "OAuth2 令牌端点控制器管理模块")
public class PigTokenEndpoint {
private final HttpMessageConverter<OAuth2AccessTokenResponse> accessTokenHttpResponseConverter = new OAuth2AccessTokenResponseHttpMessageConverter();
private final AuthenticationFailureHandler authenticationFailureHandler = new PigAuthenticationFailureEventHandler();
private final OAuth2AuthorizationService authorizationService;
private final RemoteClientDetailsService clientDetailsService;
private final CacheManager cacheManager;
/**
* 授权码模式:认证页面
* @param modelAndView 视图模型对象
* @param error 表单登录失败处理回调的错误信息
* @return 包含登录页面视图和错误信息的ModelAndView对象
*/
@GetMapping("/token/login")
@Operation(summary = "授权码模式:认证页面", description = "授权码模式:认证页面")
public ModelAndView require(ModelAndView modelAndView, @RequestParam(required = false) String error) {
modelAndView.setViewName("ftl/login");
modelAndView.addObject("error", error);
return modelAndView;
}
/**
* 授权码模式:确认页面
* @param principal 用户主体信息
* @param modelAndView 模型和视图对象
* @param clientId 客户端ID
* @param scope 请求的权限范围
* @param state 状态参数
* @return 包含确认页面信息的ModelAndView对象
*/
@GetMapping("/oauth2/confirm_access")
@Operation(summary = "授权码模式:确认页面", description = "授权码模式:确认页面")
public ModelAndView confirm(Principal principal, ModelAndView modelAndView,
@RequestParam(OAuth2ParameterNames.CLIENT_ID) String clientId,
@RequestParam(OAuth2ParameterNames.SCOPE) String scope,
@RequestParam(OAuth2ParameterNames.STATE) String state) {
SysOauthClientDetails clientDetails = RetOps.of(clientDetailsService.getClientDetailsById(clientId))
.getData()
.orElseThrow(() -> new OAuthClientException("clientId 不合法"));
Set<String> authorizedScopes = StringUtils.commaDelimitedListToSet(clientDetails.getScope());
modelAndView.addObject("clientId", clientId);
modelAndView.addObject("state", state);
modelAndView.addObject("scopeList", authorizedScopes);
modelAndView.addObject("principalName", principal.getName());
modelAndView.setViewName("ftl/confirm");
return modelAndView;
}
/**
* 注销并删除令牌
* @param authHeader 认证头信息,包含Bearer token
* @return 返回操作结果,包含布尔值表示是否成功
*/
@DeleteMapping("/token/logout")
@Operation(summary = "注销并删除令牌", description = "注销并删除令牌")
public R<Boolean> logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader) {
if (StrUtil.isBlank(authHeader)) {
return R.ok();
}
String tokenValue = authHeader.replace(OAuth2AccessToken.TokenType.BEARER.getValue(), StrUtil.EMPTY).trim();
return removeToken(tokenValue);
}
/**
* 检查令牌有效性
* @param token 待验证的令牌
* @param response HTTP响应对象
* @param request HTTP请求对象
* @throws InvalidBearerTokenException 令牌无效或缺失时抛出异常
*/
@SneakyThrows
@GetMapping("/token/check_token")
@Operation(summary = "检查令牌有效性", description = "检查令牌有效性")
public void checkToken(String token, HttpServletResponse response, HttpServletRequest request) {
ServletServerHttpResponse httpResponse = new ServletServerHttpResponse(response);
if (StrUtil.isBlank(token)) {
httpResponse.setStatusCode(HttpStatus.UNAUTHORIZED);
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
new InvalidBearerTokenException(OAuth2ErrorCodesExpand.TOKEN_MISSING));
return;
}
OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
// 如果令牌不存在 返回401
if (authorization == null || authorization.getAccessToken() == null) {
this.authenticationFailureHandler.onAuthenticationFailure(request, response,
new InvalidBearerTokenException(OAuth2ErrorCodesExpand.INVALID_BEARER_TOKEN));
return;
}
Map<String, Object> claims = authorization.getAccessToken().getClaims();
OAuth2AccessTokenResponse sendAccessTokenResponse = OAuth2EndpointUtils.sendAccessTokenResponse(authorization,
claims);
this.accessTokenHttpResponseConverter.write(sendAccessTokenResponse, MediaType.APPLICATION_JSON, httpResponse);
}
/**
* 删除令牌
* @param token 令牌
* @return 删除结果
*/
@Inner
@DeleteMapping("/token/remove/{token}")
@Operation(summary = "删除令牌", description = "删除令牌")
public R<Boolean> removeToken(@PathVariable("token") String token) {
OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
if (authorization == null) {
return R.ok();
}
OAuth2Authorization.Token<OAuth2AccessToken> accessToken = authorization.getAccessToken();
if (accessToken == null || StrUtil.isBlank(accessToken.getToken().getTokenValue())) {
return R.ok();
}
// 清空用户信息(立即删除)
cacheManager.getCache(CacheConstants.USER_DETAILS).evictIfPresent(authorization.getPrincipalName());
// 清空access token
authorizationService.remove(authorization);
// 处理自定义退出事件,保存相关日志
SpringContextHolder.publishEvent(new LogoutSuccessEvent(new PreAuthenticatedAuthenticationToken(
authorization.getPrincipalName(), authorization.getRegisteredClientId())));
return R.ok();
}
/**
* 分页查询令牌列表
* @param params 请求参数,包含分页参数current和size
* @return 分页结果,包含令牌信息列表
*/
@Inner
@PostMapping("/token/page")
@Operation(summary = "分页查询令牌列表", description = "分页查询令牌列表")
public R<Page> tokenList(@RequestBody Map<String, Object> params) {
// 根据分页参数获取对应数据
String username = MapUtil.getStr(params, SecurityConstants.USERNAME);
String pattern = String.format("%s::*", CacheConstants.PROJECT_OAUTH_ACCESS);
int current = MapUtil.getInt(params, CommonConstants.CURRENT);
int size = MapUtil.getInt(params, CommonConstants.SIZE);
Page result = new Page(current, size);
// 获取总数
List<String> allKeys = RedisUtils.scan(pattern);
result.setTotal(allKeys.size());
List<String> pageKeys = RedisUtils.findKeysForPage(pattern, current - 1, size);
List<OAuth2Authorization> pagedAuthorizations = RedisUtils.multiGet(pageKeys);
// 转换为TokenVo
List<TokenVo> tokenVoList = pagedAuthorizations.stream()
.filter(Objects::nonNull)
.map(this::convertToTokenVo)
.filter(tokenVo -> {
if (StrUtil.isBlank(username)) {
return true;
}
return StrUtil.startWithAnyIgnoreCase(tokenVo.getUsername(), username);
})
.toList();
if (StrUtil.isNotBlank(username)) {
result.setTotal(tokenVoList.size());
}
result.setRecords(tokenVoList);
return R.ok(result);
}
/**
* 将OAuth2Authorization转换为TokenVo
* @param authorization OAuth2授权对象
* @return TokenVo对象
*/
private TokenVo convertToTokenVo(OAuth2Authorization authorization) {
TokenVo tokenVo = new TokenVo();
tokenVo.setClientId(authorization.getRegisteredClientId());
tokenVo.setId(authorization.getId());
tokenVo.setUsername(authorization.getPrincipalName());
OAuth2Authorization.Token<OAuth2AccessToken> accessToken = authorization.getAccessToken();
tokenVo.setAccessToken(accessToken.getToken().getTokenValue());
String expiresAt = TemporalAccessorUtil.format(accessToken.getToken().getExpiresAt(),
DatePattern.NORM_DATETIME_PATTERN);
tokenVo.setExpiresAt(expiresAt);
String issuedAt = TemporalAccessorUtil.format(accessToken.getToken().getIssuedAt(),
DatePattern.NORM_DATETIME_PATTERN);
tokenVo.setIssuedAt(issuedAt);
return tokenVo;
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/CustomeOAuth2AccessTokenGenerator.java
================================================
package com.pig4cloud.pig.auth.support;
import org.springframework.lang.Nullable;
import org.springframework.security.crypto.keygen.Base64StringKeyGenerator;
import org.springframework.security.crypto.keygen.StringKeyGenerator;
import org.springframework.security.oauth2.core.ClaimAccessor;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
import org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat;
import org.springframework.security.oauth2.server.authorization.token.*;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.io.Serial;
import java.time.Instant;
import java.util.*;
/**
* 自定义OAuth2访问令牌生成器
*
* @author lengleng
* @date 2025/05/30
*/
public class CustomeOAuth2AccessTokenGenerator implements OAuth2TokenGenerator<OAuth2AccessToken> {
private OAuth2TokenCustomizer<OAuth2TokenClaimsContext> accessTokenCustomizer;
private final StringKeyGenerator accessTokenGenerator = new Base64StringKeyGenerator(
Base64.getUrlEncoder().withoutPadding(), 96);
/**
* 生成OAuth2访问令牌
* @param context OAuth2令牌上下文
* @return 生成的访问令牌,如果令牌类型不是ACCESS_TOKEN或格式不是REFERENCE则返回null
* @see OAuth2TokenContext
* @see OAuth2AccessToken
*/
@Nullable
@Override
public OAuth2AccessToken generate(OAuth2TokenContext context) {
if (!OAuth2TokenType.ACCESS_TOKEN.equals(context.getTokenType()) || !OAuth2TokenFormat.REFERENCE
.equals(context.getRegisteredClient().getTokenSettings().getAccessTokenFormat())) {
return null;
}
String issuer = null;
if (context.getAuthorizationServerContext() != null) {
issuer = context.getAuthorizationServerContext().getIssuer();
}
RegisteredClient registeredClient = context.getRegisteredClient();
Instant issuedAt = Instant.now();
Instant expiresAt = issuedAt.plus(registeredClient.getTokenSettings().getAccessTokenTimeToLive());
// @formatter:off
OAuth2TokenClaimsSet.Builder claimsBuilder = OAuth2TokenClaimsSet.builder();
if (StringUtils.hasText(issuer)) {
claimsBuilder.issuer(issuer);
}
claimsBuilder
.subject(context.getPrincipal().getName())
.audience(Collections.singletonList(registeredClient.getClientId()))
.issuedAt(issuedAt)
.expiresAt(expiresAt)
.notBefore(issuedAt)
.id(UUID.randomUUID().toString());
if (!CollectionUtils.isEmpty(context.getAuthorizedScopes())) {
claimsBuilder.claim(OAuth2ParameterNames.SCOPE, context.getAuthorizedScopes());
}
// @formatter:on
if (this.accessTokenCustomizer != null) {
// @formatter:off
OAuth2TokenClaimsContext.Builder accessTokenContextBuilder = OAuth2TokenClaimsContext.with(claimsBuilder)
.registeredClient(context.getRegisteredClient())
.principal(context.getPrincipal())
.authorizationServerContext(context.getAuthorizationServerContext())
.authorizedScopes(context.getAuthorizedScopes())
.tokenType(context.getTokenType())
.authorizationGrantType(context.getAuthorizationGrantType());
if (context.getAuthorization() != null) {
accessTokenContextBuilder.authorization(context.getAuthorization());
}
if (context.getAuthorizationGrant() != null) {
accessTokenContextBuilder.authorizationGrant(context.getAuthorizationGrant());
}
// @formatter:on
OAuth2TokenClaimsContext accessTokenContext = accessTokenContextBuilder.build();
this.accessTokenCustomizer.customize(accessTokenContext);
}
OAuth2TokenClaimsSet accessTokenClaimsSet = claimsBuilder.build();
return new CustomeOAuth2AccessTokenGenerator.OAuth2AccessTokenClaims(OAuth2AccessToken.TokenType.BEARER,
this.accessTokenGenerator.generateKey(), accessTokenClaimsSet.getIssuedAt(),
accessTokenClaimsSet.getExpiresAt(), context.getAuthorizedScopes(), accessTokenClaimsSet.getClaims());
}
/**
* 设置用于定制{@link OAuth2AccessToken}的{@link OAuth2TokenClaimsContext#getClaims()}的{@link OAuth2TokenCustomizer}
* @param accessTokenCustomizer
* 用于定制{@code OAuth2AccessToken}声明的{@link OAuth2TokenCustomizer}
* @throws IllegalArgumentException 当accessTokenCustomizer为null时抛出
*/
public void setAccessTokenCustomizer(OAuth2TokenCustomizer<OAuth2TokenClaimsContext> accessTokenCustomizer) {
Assert.notNull(accessTokenCustomizer, "accessTokenCustomizer cannot be null");
this.accessTokenCustomizer = accessTokenCustomizer;
}
/**
* OAuth2访问令牌声明类,继承自OAuth2AccessToken并实现ClaimAccessor接口
*
* @author lengleng
* @date 2025/05/30
*/
private static final class OAuth2AccessTokenClaims extends OAuth2AccessToken implements ClaimAccessor {
@Serial
private static final long serialVersionUID = 1L;
private final Map<String, Object> claims;
/**
* 构造OAuth2访问令牌声明
* @param tokenType 令牌类型
* @param tokenValue 令牌值
* @param issuedAt 颁发时间
* @param expiresAt 过期时间
* @param scopes 权限范围集合
* @param claims 声明信息映射
*/
private OAuth2AccessTokenClaims(TokenType tokenType, String tokenValue, Instant issuedAt, Instant expiresAt,
Set<String> scopes, Map<String, Object> claims) {
super(tokenType, tokenValue, issuedAt, expiresAt, scopes);
this.claims = claims;
}
/**
* 获取claims集合
* @return claims键值对集合
*/
@Override
public Map<String, Object> getClaims() {
return this.claims;
}
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationConverter.java
================================================
package com.pig4cloud.pig.auth.support.base;
import com.pig4cloud.pig.common.security.util.OAuth2EndpointUtils;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.core.OAuth2ErrorCodes;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.security.web.authentication.AuthenticationConverter;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* OAuth2资源所有者基础认证转换器抽象类
*
* @param <T> 继承自OAuth2ResourceOwnerBaseAuthenticationToken的泛型类型
* @author lengleng
* @date 2025/05/30
*/
public abstract class OAuth2ResourceOwnerBaseAuthenticationConverter<T extends OAuth2ResourceOwnerBaseAuthenticationToken>
implements AuthenticationConverter {
/**
* 是否支持此convert
* @param grantType 授权类型
* @return
*/
public abstract boolean support(String grantType);
/**
* 校验参数
* @param request 请求
*/
public void checkParams(HttpServletRequest request) {
}
/**
* 构建具体类型的token
* @param clientPrincipal 客户端认证信息
* @param requestedScopes 请求的作用域集合
* @param additionalParameters 附加参数映射
* @return 构建完成的token对象
*/
public abstract T buildToken(Authentication clientPrincipal, Set<String> requestedScopes,
Map<String, Object> additionalParameters);
/**
* 将HttpServletRequest转换为Authentication对象
* @param request HTTP请求对象
* @return 认证信息对象
* @throws OAuth2AuthenticationException 当请求参数不合法或客户端未认证时抛出异常
*/
@Override
public Authentication convert(HttpServletRequest request) {
// grant_type (REQUIRED)
String grantType = request.getParameter(OAuth2ParameterNames.GRANT_TYPE);
if (!support(grantType)) {
return null;
}
MultiValueMap<String, String> parameters = OAuth2EndpointUtils.getParameters(request);
// scope (OPTIONAL)
String scope = parameters.getFirst(OAuth2ParameterNames.SCOPE);
if (StringUtils.hasText(scope) && parameters.get(OAuth2ParameterNames.SCOPE).size() != 1) {
OAuth2EndpointUtils.throwError(OAuth2ErrorCodes.INVALID_REQUEST, OAuth2ParameterNames.SCOPE,
OAuth2EndpointUtils.ACCESS_TOKEN_REQUEST_ERROR_URI);
}
Set<String> requestedScopes = null;
if (StringUtils.hasText(scope)) {
requestedScopes = new HashSet<>(Arrays.asList(StringUtils.delimitedListToStringArray(scope, " ")));
}
// 校验个性化参数
checkParams(request);
// 获取当前已经认证的客户端信息
Authentication clientPrincipal = SecurityContextHolder.getContext().getAuthentication();
if (clientPrincipal == null) {
OAuth2EndpointUtils.throwError(OAuth2ErrorCodes.INVALID_REQUEST, OAuth2ErrorCodes.INVALID_CLIENT,
OAuth2EndpointUtils.ACCESS_TOKEN_REQUEST_ERROR_URI);
}
// 扩展信息
Map<String, Object> additionalParameters = parameters.entrySet()
.stream()
.filter(e -> !e.getKey().equals(OAuth2ParameterNames.GRANT_TYPE)
&& !e.getKey().equals(OAuth2ParameterNames.SCOPE))
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().get(0)));
// 创建token
return buildToken(clientPrincipal, requestedScopes, additionalParameters);
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationProvider.java
================================================
package com.pig4cloud.pig.auth.support.base;
import cn.hutool.extra.spring.SpringUtil;
import com.pig4cloud.pig.common.security.util.OAuth2ErrorCodesExpand;
import com.pig4cloud.pig.common.security.util.ScopeException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.security.authentication.*;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.oauth2.core.*;
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AccessTokenAuthenticationToken;
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2ClientAuthenticationToken;
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
import org.springframework.security.oauth2.server.authorization.context.AuthorizationServerContextHolder;
import org.springframework.security.oauth2.server.authorization.token.DefaultOAuth2TokenContext;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenContext;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenGenerator;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import java.util.function.Supplier;
/**
* OAuth2资源所有者基础认证提供者抽象类,用于处理资源所有者密码凭证授权流程
*
* @param <T> OAuth2资源所有者基础认证令牌类型
* @author lengleng
* @date 2025/05/30
*/
public abstract class OAuth2ResourceOwnerBaseAuthenticationProvider<T extends OAuth2ResourceOwnerBaseAuthenticationToken>
implements AuthenticationProvider {
private static final Logger LOGGER = LogManager.getLogger(OAuth2ResourceOwnerBaseAuthenticationProvider.class);
private static final String ERROR_URI = "https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1";
private final OAuth2AuthorizationService authorizationService;
private final OAuth2TokenGenerator<? extends OAuth2Token> tokenGenerator;
private final AuthenticationManager authenticationManager;
private final MessageSourceAccessor messages;
@Deprecated
private Supplier<String> refreshTokenGenerator;
/**
* 构造一个基于资源所有者密码模式的OAuth2认证提供者
* @param authenticationManager 认证管理器
* @param authorizationService 授权服务
* @param tokenGenerator token生成器
* @throws IllegalArgumentException 当authorizationService或tokenGenerator为null时抛出
* @since 0.2.3
*/
public OAuth2ResourceOwnerBaseAuthenticationProvider(AuthenticationManager authenticationManager,
OAuth2AuthorizationService authorizationService,
OAuth2TokenGenerator<? extends OAuth2Token> tokenGenerator) {
Assert.notNull(authorizationService, "authorizationService cannot be null");
Assert.notNull(tokenGenerator, "tokenGenerator cannot be null");
this.authenticationManager = authenticationManager;
this.authorizationService = authorizationService;
this.tokenGenerator = tokenGenerator;
// 国际化配置
this.messages = new MessageSourceAccessor(SpringUtil.getBean("securityMessageSource"), Locale.CHINA);
}
/**
* 设置刷新令牌生成器
* @param refreshTokenGenerator 刷新令牌生成器,不能为null
* @deprecated 该方法已废弃
*/
@Deprecated
public void setRefreshTokenGenerator(Supplier<String> refreshTokenGenerator) {
Assert.notNull(refreshTokenGenerator, "refreshTokenGenerator cannot be null");
this.refreshTokenGenerator = refreshTokenGenerator;
}
/**
* 构建用户名密码认证令牌
* @param reqParameters 请求参数映射
* @return 用户名密码认证令牌
*/
public abstract UsernamePasswordAuthenticationToken buildToken(Map<String, Object> reqParameters);
/**
* 当前provider是否支持此令牌类型
* @param authentication
* @return
*/
@Override
public abstract boolean supports(Class<?> authentication);
/**
* 当前的请求客户端是否支持此模式
* @param registeredClient
*/
public abstract void checkClient(RegisteredClient registeredClient);
/**
* 执行认证操作,遵循与{@link AuthenticationManager#authenticate(Authentication)}相同的契约
* @param authentication 认证请求对象
* @return 包含凭证的完整认证对象,如果当前认证提供者无法处理传入的认证对象可能返回null
* @throws AuthenticationException 认证失败时抛出
* @throws OAuth2AuthenticationException 当scope无效或token生成失败时抛出
*/
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
T resouceOwnerBaseAuthentication = (T) authentication;
OAuth2ClientAuthenticationToken clientPrincipal = getAuthenticatedClientElseThrowInvalidClient(
resouceOwnerBaseAuthentication);
RegisteredClient registeredClient = clientPrincipal.getRegisteredClient();
checkClient(registeredClient);
Set<String> authorizedScopes;
// Default to configured scopes
if (!CollectionUtils.isEmpty(resouceOwnerBaseAuthentication.getScopes())) {
for (String requestedScope : resouceOwnerBaseAuthentication.getScopes()) {
if (!registeredClient.getScopes().contains(requestedScope)) {
throw new OAuth2AuthenticationException(OAuth2ErrorCodes.INVALID_SCOPE);
}
}
authorizedScopes = new LinkedHashSet<>(resouceOwnerBaseAuthentication.getScopes());
}
else {
authorizedScopes = new LinkedHashSet<>();
}
Map<String, Object> reqParameters = resouceOwnerBaseAuthentication.getAdditionalParameters();
try {
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = buildToken(reqParameters);
LOGGER.debug("got usernamePasswordAuthenticationToken=" + usernamePasswordAuthenticationToken);
Authentication usernamePasswordAuthentication = authenticationManager
.authenticate(usernamePasswordAuthenticationToken);
// @formatter:off
DefaultOAuth2TokenContext.Builder tokenContextBuilder = DefaultOAuth2TokenContext.builder()
.registeredClient(registeredClient)
.principal(usernamePasswordAuthentication)
.authorizationServerContext(AuthorizationServerContextHolder.getContext())
.authorizedScopes(authorizedScopes)
.authorizationGrantType(resouceOwnerBaseAuthentication.getAuthorizationGrantType())
.authorizationGrant(resouceOwnerBaseAuthentication);
// @formatter:on
OAuth2Authorization.Builder authorizationBuilder = OAuth2Authorization
.withRegisteredClient(registeredClient)
.principalName(usernamePasswordAuthentication.getName())
.authorizationGrantType(resouceOwnerBaseAuthentication.getAuthorizationGrantType())
// 0.4.0 新增的方法
.authorizedScopes(authorizedScopes);
// ----- Access token -----
OAuth2TokenContext tokenContext = tokenContextBuilder.tokenType(OAuth2TokenType.ACCESS_TOKEN).build();
OAuth2Token generatedAccessToken = this.tokenGenerator.generate(tokenContext);
if (generatedAccessToken == null) {
OAuth2Error error = new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR,
"The token generator failed to generate the access token.", ERROR_URI);
throw new OAuth2AuthenticationException(error);
}
OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,
generatedAccessToken.getTokenValue(), generatedAccessToken.getIssuedAt(),
generatedAccessToken.getExpiresAt(), tokenContext.getAuthorizedScopes());
if (generatedAccessToken instanceof ClaimAccessor) {
authorizationBuilder.id(accessToken.getTokenValue())
.token(accessToken,
(metadata) -> metadata.put(OAuth2Authorization.Token.CLAIMS_METADATA_NAME,
((ClaimAccessor) generatedAccessToken).getClaims()))
// 0.4.0 新增的方法
.authorizedScopes(authorizedScopes)
.attribute(Principal.class.getName(), usernamePasswordAuthentication);
}
else {
authorizationBuilder.id(accessToken.getTokenValue()).accessToken(accessToken);
}
// ----- Refresh token -----
OAuth2RefreshToken refreshToken = null;
if (registeredClient.getAuthorizationGrantTypes().contains(AuthorizationGrantType.REFRESH_TOKEN) &&
// Do not issue refresh token to public client
!clientPrincipal.getClientAuthenticationMethod().equals(ClientAuthenticationMethod.NONE)) {
if (this.refreshTokenGenerator != null) {
Instant issuedAt = Instant.now();
Instant expiresAt = issuedAt.plus(registeredClient.getTokenSettings().getRefreshTokenTimeToLive());
refreshToken = new OAuth2RefreshToken(this.refreshTokenGenerator.get(), issuedAt, expiresAt);
}
else {
tokenContext = tokenContextBuilder.tokenType(OAuth2TokenType.REFRESH_TOKEN).build();
OAuth2Token generatedRefreshToken = this.tokenGenerator.generate(tokenContext);
if (!(generatedRefreshToken instanceof OAuth2RefreshToken)) {
OAuth2Error error = new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR,
"The token generator failed to generate the refresh token.", ERROR_URI);
throw new OAuth2AuthenticationException(error);
}
refreshToken = (OAuth2RefreshToken) generatedRefreshToken;
}
authorizationBuilder.refreshToken(refreshToken);
}
OAuth2Authorization authorization = authorizationBuilder.build();
this.authorizationService.save(authorization);
LOGGER.debug("returning OAuth2AccessTokenAuthenticationToken");
return new OAuth2AccessTokenAuthenticationToken(registeredClient, clientPrincipal, accessToken,
refreshToken, Objects.requireNonNull(authorization.getAccessToken().getClaims()));
}
catch (Exception ex) {
LOGGER.error("problem in authenticate", ex);
throw oAuth2AuthenticationException(authentication, (AuthenticationException) ex);
}
}
/**
* 登录异常转换为oauth2异常
* @param authentication 身份验证
* @param authenticationException 身份验证异常
* @return {@link OAuth2AuthenticationException}
*/
private OAuth2AuthenticationException oAuth2AuthenticationException(Authentication authentication,
AuthenticationException authenticationException) {
if (authenticationException instanceof UsernameNotFoundException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodesExpand.USERNAME_NOT_FOUND,
this.messages.getMessage("JdbcDaoImpl.notFound", new Object[] { authentication.getName() },
"Username {0} not found"),
""));
}
if (authenticationException instanceof BadCredentialsException) {
return new OAuth2AuthenticationException(
new OAuth2Error(OAuth2ErrorCodesExpand.BAD_CREDENTIALS, this.messages.getMessage(
"AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"), ""));
}
if (authenticationException instanceof LockedException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodesExpand.USER_LOCKED, this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.locked", "User account is locked"), ""));
}
if (authenticationException instanceof DisabledException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodesExpand.USER_DISABLE,
this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.disabled", "User is disabled"),
""));
}
if (authenticationException instanceof AccountExpiredException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodesExpand.USER_EXPIRED, this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.expired", "User account has expired"), ""));
}
if (authenticationException instanceof CredentialsExpiredException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodesExpand.CREDENTIALS_EXPIRED,
this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.credentialsExpired",
"User credentials have expired"),
""));
}
if (authenticationException instanceof ScopeException) {
return new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.INVALID_SCOPE,
this.messages.getMessage("AbstractAccessDecisionManager.accessDenied", "invalid_scope"), ""));
}
return new OAuth2AuthenticationException(OAuth2ErrorCodesExpand.UN_KNOW_LOGIN_ERROR);
}
/**
* 获取已认证的客户端主体,否则抛出无效客户端异常
* @param authentication 认证信息
* @return 已认证的客户端主体
* @throws OAuth2AuthenticationException 客户端未认证时抛出异常
*/
private OAuth2ClientAuthenticationToken getAuthenticatedClientElseThrowInvalidClient(
Authentication authentication) {
OAuth2ClientAuthenticationToken clientPrincipal = null;
if (OAuth2ClientAuthenticationToken.class.isAssignableFrom(authentication.getPrincipal().getClass())) {
clientPrincipal = (OAuth2ClientAuthenticationToken) authentication.getPrincipal();
}
if (clientPrincipal != null && clientPrincipal.isAuthenticated()) {
return clientPrincipal;
}
throw new OAuth2AuthenticationException(OAuth2ErrorCodes.INVALID_CLIENT);
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationToken.java
================================================
package com.pig4cloud.pig.auth.support.base;
import lombok.Getter;
import org.springframework.lang.Nullable;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.util.Assert;
import java.io.Serial;
import java.util.*;
/**
* OAuth2资源所有者基础认证令牌抽象类
*
* @author lengleng
* @date 2025/05/30
*/
public abstract class OAuth2ResourceOwnerBaseAuthenticationToken extends AbstractAuthenticationToken {
@Serial
private static final long serialVersionUID = 1L;
@Getter
private final AuthorizationGrantType authorizationGrantType;
@Getter
private final Authentication clientPrincipal;
@Getter
private final Set<String> scopes;
@Getter
private final Map<String, Object> additionalParameters;
public OAuth2ResourceOwnerBaseAuthenticationToken(AuthorizationGrantType authorizationGrantType,
Authentication clientPrincipal, @Nullable Set<String> scopes,
@Nullable Map<String, Object> additionalParameters) {
super(Collections.emptyList());
Assert.notNull(authorizationGrantType, "authorizationGrantType cannot be null");
Assert.notNull(clientPrincipal, "clientPrincipal cannot be null");
this.authorizationGrantType = authorizationGrantType;
this.clientPrincipal = clientPrincipal;
this.scopes = Collections.unmodifiableSet(scopes != null ? new HashSet<>(scopes) : Collections.emptySet());
this.additionalParameters = Collections.unmodifiableMap(
additionalParameters != null ? new HashMap<>(additionalParameters) : Collections.emptyMap());
}
/**
* 扩展模式一般不需要密码
*/
@Override
public Object getCredentials() {
return "";
}
/**
* 获取用户名
*/
@Override
public Object getPrincipal() {
return this.clientPrincipal;
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/package-info.java
================================================
/**
* 自定义认证模式接入的抽象实现
*/
package com.pig4cloud.pig.auth.support.base;
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/CustomeOAuth2TokenCustomizer.java
================================================
package com.pig4cloud.pig.auth.support.core;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.security.service.PigUser;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenClaimsContext;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenClaimsSet;
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenCustomizer;
/**
* OAuth2 Token 自定义增强实现类
*
* @author lengleng
* @date 2025/05/30
*/
public class CustomeOAuth2TokenCustomizer implements OAuth2TokenCustomizer<OAuth2TokenClaimsContext> {
/**
* 自定义OAuth 2.0 Token属性
* @param context 包含OAuth 2.0 Token属性的上下文
*/
@Override
public void customize(OAuth2TokenClaimsContext context) {
OAuth2TokenClaimsSet.Builder claims = context.getClaims();
claims.claim(SecurityConstants.DETAILS_LICENSE, SecurityConstants.PROJECT_LICENSE);
String clientId = context.getAuthorizationGrant().getName();
claims.claim(SecurityConstants.CLIENT_ID, clientId);
// 客户端模式不返回具体用户信息
if (SecurityConstants.CLIENT_CREDENTIALS.equals(context.getAuthorizationGrantType().getValue())) {
return;
}
PigUser pigUser = (PigUser) context.getPrincipal().getPrincipal();
claims.claim(SecurityConstants.DETAILS_USER, pigUser);
claims.claim(SecurityConstants.DETAILS_USER_ID, pigUser.getId());
claims.claim(SecurityConstants.USERNAME, pigUser.getUsername());
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/FormIdentityLoginConfigurer.java
================================================
package com.pig4cloud.pig.auth.support.core;
import com.pig4cloud.pig.auth.support.handler.FormAuthenticationFailureHandler;
import com.pig4cloud.pig.auth.support.handler.SsoLogoutSuccessHandler;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
/**
* 基于授权码模式的统一认证登录配置类,适用于Spring Security和SAS
*
* @author lengleng
* @date 2025/05/30
*/
public final class FormIdentityLoginConfigurer
extends AbstractHttpConfigurer<FormIdentityLoginConfigurer, HttpSecurity> {
@Override
public void init(HttpSecurity http) throws Exception {
http.formLogin(formLogin -> {
formLogin.loginPage("/token/login");
formLogin.loginProcessingUrl("/oauth2/form");
formLogin.failureHandler(new FormAuthenticationFailureHandler());
})
.logout(logout -> logout.logoutUrl("/oauth2/logout")
.logoutSuccessHandler(new SsoLogoutSuccessHandler())
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true)) // SSO登出成功处理
.csrf(AbstractHttpConfigurer::disable);
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/PigDaoAuthenticationProvider.java
================================================
package com.pig4cloud.pig.auth.support.core;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.pig4cloud.pig.common.core.util.WebUtils;
import com.pig4cloud.pig.common.security.service.PigUserDetailsService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.SneakyThrows;
import org.springframework.core.Ordered;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.security.web.authentication.www.BasicAuthenticationConverter;
import org.springframework.util.Assert;
import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
import static com.pig4cloud.pig.common.core.constant.SecurityConstants.PASSWORD;
/**
* 基于DAO的认证提供者实现,用于处理用户名密码认证
*
* @author lengleng
* @date 2025/05/30
*/
public class PigDaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {
/**
* 用户未找到时用于PasswordEncoder#matches(CharSequence, String)的明文密码,避免SEC-2056问题
*/
private static final String USER_NOT_FOUND_PASSWORD = "userNotFoundPassword";
private final static BasicAuthenticationConverter basicConvert = new BasicAuthenticationConverter();
/**
* 密码编码器
*/
private PasswordEncoder passwordEncoder;
/**
* 用户未找到时的加密密码,用于避免SEC-2056问题,某些密码编码器在密码格式无效时会短路处理
*/
private volatile String userNotFoundEncodedPassword;
private UserDetailsService userDetailsService;
private UserDetailsPasswordService userDetailsPasswordService;
public PigDaoAuthenticationProvider() {
setMessageSource(SpringUtil.getBean("securityMessageSource"));
setPasswordEncoder(PasswordEncoderFactories.createDelegatingPasswordEncoder());
}
/**
* 执行额外的身份验证检查
* @param userDetails 用户详细信息
* @param authentication 身份验证令牌
* @throws AuthenticationException 身份验证失败时抛出异常
*/
@Override
protected void additionalAuthenticationChecks(UserDetails userDetails,
UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
// 只有密码模式需要校验密码
String grantType = WebUtils.getRequest().get().getParameter(OAuth2ParameterNames.GRANT_TYPE);
if (!StrUtil.equals(PASSWORD, grantType)) {
return;
}
if (authentication.getCredentials() == null) {
this.logger.debug("Failed to authenticate since no credentials provided");
throw new BadCredentialsException(this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
}
String presentedPassword = authentication.getCredentials().toString();
if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) {
this.logger.debug("Failed to authenticate since password does not match stored value");
throw new BadCredentialsException(this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
}
}
/**
* 根据用户名检索用户详情
* @param username 用户名
* @param authentication 认证令牌
* @return 用户详情信息
* @throws InternalAuthenticationServiceException
* 当无法获取请求、未注册UserDetailsService或加载用户失败时抛出
* @throws UsernameNotFoundException 当用户名不存在时抛出
*/
@SneakyThrows
@Override
protected final UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) {
prepareTimingAttackProtection();
HttpServletRequest request = WebUtils.getRequest()
.orElseThrow(
(Supplier<Throwable>) () -> new InternalAuthenticationServiceException("web request is empty"));
String grantType = WebUtils.getRequest().get().getParameter(OAuth2ParameterNames.GRANT_TYPE);
String clientId = WebUtils.getRequest().get().getParameter(OAuth2ParameterNames.CLIENT_ID);
if (StrUtil.isBlank(clientId)) {
clientId = Optional.ofNullable(basicConvert.convert(request))
.map(UsernamePasswordAuthenticationToken::getName)
.orElse(null);
}
Map<String, PigUserDetailsService> userDetailsServiceMap = SpringUtil
.getBeansOfType(PigUserDetailsService.class);
String finalClientId = clientId;
Optional<PigUserDetailsService> optional = userDetailsServiceMap.values()
.stream()
.filter(service -> service.support(finalClientId, grantType))
.max(Comparator.comparingInt(Ordered::getOrder));
if (optional.isEmpty()) {
throw new InternalAuthenticationServiceException("UserDetailsService error , not register");
}
try {
UserDetails loadedUser = optional.get().loadUserByUsername(username);
if (loadedUser == null) {
throw new InternalAuthenticationServiceException(
"UserDetailsService returned null, which is an interface contract violation");
}
return loadedUser;
}
catch (UsernameNotFoundException ex) {
mitigateAgainstTimingAttack(authentication);
throw ex;
}
catch (InternalAuthenticationServiceException ex) {
throw ex;
}
catch (Exception ex) {
throw new InternalAuthenticationServiceException(ex.getMessage(), ex);
}
}
/**
* 创建认证成功后的Authentication对象
* @param principal 认证主体
* @param authentication 认证信息
* @param user 用户详情
* @return 认证成功后的Authentication对象
*/
@Override
protected Authentication createSuccessAuthentication(Object principal, Authentication authentication,
UserDetails user) {
boolean upgradeEncoding = this.userDetailsPasswordService != null
&& this.passwordEncoder.upgradeEncoding(user.getPassword());
if (upgradeEncoding) {
String presentedPassword = authentication.getCredentials().toString();
String newPassword = this.passwordEncoder.encode(presentedPassword);
user = this.userDetailsPasswordService.updatePassword(user, newPassword);
}
return super.createSuccessAuthentication(principal, authentication, user);
}
/**
* 准备定时攻击保护,如果未找到用户编码密码为空则进行编码
*/
private void prepareTimingAttackProtection() {
if (this.userNotFoundEncodedPassword == null) {
this.userNotFoundEncodedPassword = this.passwordEncoder.encode(USER_NOT_FOUND_PASSWORD);
}
}
/**
* 防止时序攻击的缓解措施
* @param authentication 用户名密码认证令牌
*/
private void mitigateAgainstTimingAttack(UsernamePasswordAuthenticationToken authentication) {
if (authentication.getCredentials() != null) {
String presentedPassword = authentication.getCredentials().toString();
this.passwordEncoder.matches(presentedPassword, this.userNotFoundEncodedPassword);
}
}
/**
* 设置用于编码和验证密码的PasswordEncoder实例
* @param passwordEncoder 密码编码器实例,不能为null
*/
public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
Assert.notNull(passwordEncoder, "passwordEncoder cannot be null");
this.passwordEncoder = passwordEncoder;
this.userNotFoundEncodedPassword = null;
}
protected PasswordEncoder getPasswordEncoder() {
return this.passwordEncoder;
}
/**
* 设置用户详情服务
* @param userDetailsService 用户详情服务
*/
public void setUserDetailsService(UserDetailsService userDetailsService) {
this.userDetailsService = userDetailsService;
}
protected UserDetailsService getUserDetailsService() {
return this.userDetailsService;
}
/**
* 设置用户详情密码服务
* @param userDetailsPasswordService 用户详情密码服务
*/
public void setUserDetailsPasswordService(UserDetailsPasswordService userDetailsPasswordService) {
this.userDetailsPasswordService = userDetailsPasswordService;
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/AuthSecurityConfigProperties.java
================================================
package com.pig4cloud.pig.auth.support.filter;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 安全认证配置属性类
*
* <p>
* 用于配置网关安全相关属性
* </p>
*
* @author lengleng
* @date 2025/05/30
* @since 2020/10/4
*/
@Data
@Component
@RefreshScope
@ConfigurationProperties("security")
public class AuthSecurityConfigProperties {
/**
* 是否是微服务架构
*/
private boolean isMicro;
/**
* 网关解密登录前端密码 秘钥
*/
private String encodeKey;
/**
* 网关不需要校验验证码的客户端
*/
private List<String> ignoreClients;
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/PasswordDecoderFilter.java
================================================
/*
* Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.pig4cloud.pig.auth.support.filter;
import java.io.IOException;
import java.util.Map;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.core.servlet.RepeatBodyRequestWrapper;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
/**
* 密码解密过滤器:用于处理登录请求中的密码解密
*
* @author lengleng
* @date 2025/05/30
*/
@Component
@RequiredArgsConstructor
public class PasswordDecoderFilter extends OncePerRequestFilter {
private final AuthSecurityConfigProperties authSecurityConfigProperties;
private static final String PASSWORD = "password";
private static final String KEY_ALGORITHM = "AES";
static {
// 关闭hutool 强制关闭Bouncy Castle库的依赖
SecureUtil.disableBouncyCastle();
}
/**
* 过滤器内部处理逻辑,用于处理登录请求中的密码解密
* @param request HTTP请求对象
* @param response HTTP响应对象
* @param chain 过滤器链
* @throws ServletException 如果发生servlet相关异常
* @throws IOException 如果发生I/O异常
*/
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
// 不是登录请求,直接向下执行
if (!StrUtil.containsAnyIgnoreCase(request.getRequestURI(), SecurityConstants.OAUTH_TOKEN_URL)) {
chain.doFilter(request, response);
return;
}
// 将请求流转换为可多次读取的请求流
RepeatBodyRequestWrapper requestWrapper = new RepeatBodyRequestWrapper(request);
Map<String, String[]> parameterMap = requestWrapper.getParameterMap();
// 构建前端对应解密AES 因子
AES aes = new AES(Mode.CFB, Padding.NoPadding,
new SecretKeySpec(authSecurityConfigProperties.getEncodeKey().getBytes(), KEY_ALGORITHM),
new IvParameterSpec(authSecurityConfigProperties.getEncodeKey().getBytes()));
parameterMap.forEach((k, v) -> {
String[] values = parameterMap.get(k);
if (!PASSWORD.equals(k) || ArrayUtil.isEmpty(values)) {
return;
}
// 解密密码
String decryptPassword = aes.decryptStr(values[0]);
parameterMap.put(k, new String[] { decryptPassword });
});
chain.doFilter(requestWrapper, response);
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/ValidateCodeFilter.java
================================================
package com.pig4cloud.pig.auth.support.filter;
import java.io.IOException;
import java.util.Optional;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import com.pig4cloud.pig.common.core.constant.CacheConstants;
import com.pig4cloud.pig.common.core.constant.SecurityConstants;
import com.pig4cloud.pig.common.core.exception.ValidateCodeException;
import com.pig4cloud.pig.common.core.util.RedisUtils;
import com.pig4cloud.pig.common.core.util.WebUtils;
/**
* 登录前处理器
*
* @author lengleng
* @date 2024/4/3
*/
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
/**
* 验证码过滤器:用于处理登录请求中的验证码校验
*
* @author lengleng
* @date 2025/05/30
*/
@Component
@RequiredArgsConstructor
public class ValidateCodeFilter extends OncePerRequestFilter {
private final AuthSecurityConfigProperties authSecurityConfigProperties;
/**
* 过滤器内部处理逻辑,用于验证码校验
* @param request HTTP请求
* @param response HTTP响应
* @param filterChain 过滤器链
* @throws ServletException Servlet异常
* @throws IOException IO异常
*/
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String requestUrl = request.getServletPath();
// 不是登录URL 请求直接跳过
if (!SecurityConstants.OAUTH_TOKEN_URL.equals(requestUrl)) {
filterChain.doFilter(request, response);
return;
}
// 如果登录URL 但是刷新token的请求,直接向下执行
String grantType = request.getParameter(OAuth2ParameterNames.GRANT_TYPE);
if (StrUtil.equals(SecurityConstants.REFRESH_TOKEN, grantType)) {
filterChain.doFilter(request, response);
return;
}
// 如果是密码模式 && 客户端不需要校验验证码
boolean isIgnoreClient = authSecurityConfigProperties.getIgnoreClients().contains(WebUtils.getClientId());
if (StrUtil.equalsAnyIgnoreCase(grantType, SecurityConstants.PASSWORD, SecurityConstants.CLIENT_CREDENTIALS,
SecurityConstants.AUTHORIZATION_CODE) && isIgnoreClient) {
filterChain.doFilter(request, response);
return;
}
// 校验验证码 1. 客户端开启验证码 2. 短信模式
try {
checkCode();
filterChain.doFilter(request, response);
}
catch (ValidateCodeException validateCodeException) {
throw new OAuth2AuthenticationException(validateCodeException.getMessage());
}
}
/**
* 校验验证码
*/
private void checkCode() throws ValidateCodeException {
Optional<HttpServletRequest> request = WebUtils.getRequest();
String code = request.get().getParameter("code");
if (StrUtil.isBlank(code)) {
throw new ValidateCodeException("验证码不能为空");
}
String randomStr = request.get().getParameter("randomStr");
// https://gitee.com/log4j/pig/issues/IWA0D
String mobile = request.get().getParameter("mobile");
if (StrUtil.isNotBlank(mobile)) {
randomStr = mobile;
}
String key = CacheConstants.DEFAULT_CODE_KEY + randomStr;
if (!RedisUtils.hasKey(key)) {
throw new ValidateCodeException("验证码不合法");
}
String saveCode = RedisUtils.get(key);
if (StrUtil.isBlank(saveCode)) {
RedisUtils.delete(key);
throw new ValidateCodeException("验证码不合法");
}
if (!StrUtil.equals(saveCode, code)) {
RedisUtils.delete(key);
throw new ValidateCodeException("验证码不合法");
}
}
}
================================================
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/FormAuthenticationFailureHandler.java
================================================
/*
* Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.pig4cloud.pig.auth.support.handler;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;
import com.pig4cloud.pig.common.core.util.WebUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import java.io.IOException;
/**
* 表单登录失败处理逻辑
*
* @author lengleng
* @date 2025/05/30
*/
@Slf4j
public class FormAuthenticationFailureHandler implements AuthenticationFailureHandler {
/**
* 当认证失败时调用
* @param request 认证尝试发生的请求
* @param response 响应对象
* @param exception 拒绝认证时抛出的异常
*/
@Override
@SneakyThrows
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) {
log.debug("表单登录失败:{}", exception.getLocalizedMessage());
// 获取当前请求的context-path
String contextPath = request.getContextPath();
// 构建重定向URL,加入context-path
String url = HttpUtil.encodeParams(
gitextract_fxd_qqx7/ ├── .editorconfig ├── .gitee/ │ └── ISSUE_TEMPLATE/ │ ├── config.yml │ └── issue.yml ├── .github/ │ ├── renovate.json │ └── workflows/ │ ├── github-release.yml │ ├── image.yml │ ├── maven.yml │ └── mirror.yml ├── .gitignore ├── LICENSE ├── README.md ├── db/ │ ├── Dockerfile │ ├── pig.sql │ └── pig_config.sql ├── docker-compose.yml ├── pig-auth/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── pig4cloud/ │ │ └── pig/ │ │ └── auth/ │ │ ├── PigAuthApplication.java │ │ ├── config/ │ │ │ └── AuthorizationServerConfiguration.java │ │ ├── endpoint/ │ │ │ ├── ImageCodeEndpoint.java │ │ │ └── PigTokenEndpoint.java │ │ └── support/ │ │ ├── CustomeOAuth2AccessTokenGenerator.java │ │ ├── base/ │ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationConverter.java │ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationProvider.java │ │ │ ├── OAuth2ResourceOwnerBaseAuthenticationToken.java │ │ │ └── package-info.java │ │ ├── core/ │ │ │ ├── CustomeOAuth2TokenCustomizer.java │ │ │ ├── FormIdentityLoginConfigurer.java │ │ │ └── PigDaoAuthenticationProvider.java │ │ ├── filter/ │ │ │ ├── AuthSecurityConfigProperties.java │ │ │ ├── PasswordDecoderFilter.java │ │ │ └── ValidateCodeFilter.java │ │ ├── handler/ │ │ │ ├── FormAuthenticationFailureHandler.java │ │ │ ├── PigAuthenticationFailureEventHandler.java │ │ │ ├── PigAuthenticationSuccessEventHandler.java │ │ │ ├── PigLogoutSuccessEventHandler.java │ │ │ └── SsoLogoutSuccessHandler.java │ │ ├── password/ │ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationConverter.java │ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationProvider.java │ │ │ ├── OAuth2ResourceOwnerPasswordAuthenticationToken.java │ │ │ └── package-info.java │ │ └── sms/ │ │ ├── OAuth2ResourceOwnerSmsAuthenticationConverter.java │ │ ├── OAuth2ResourceOwnerSmsAuthenticationProvider.java │ │ ├── OAuth2ResourceOwnerSmsAuthenticationToken.java │ │ └── package-info.java │ └── resources/ │ ├── application.yml │ ├── logback-spring.xml │ └── templates/ │ └── ftl/ │ ├── confirm.ftl │ ├── layout/ │ │ └── base.ftl │ └── login.ftl ├── pig-boot/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── pig4cloud/ │ │ └── pig/ │ │ └── PigBootApplication.java │ └── resources/ │ ├── application-dev.yml │ ├── application.yml │ └── logback-spring.xml ├── pig-common/ │ ├── pig-common-bom/ │ │ └── pom.xml │ ├── pig-common-core/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── core/ │ │ │ ├── config/ │ │ │ │ ├── JacksonConfiguration.java │ │ │ │ ├── RedisTemplateConfiguration.java │ │ │ │ ├── RestTemplateConfiguration.java │ │ │ │ └── WebMvcConfiguration.java │ │ │ ├── constant/ │ │ │ │ ├── CacheConstants.java │ │ │ │ ├── CommonConstants.java │ │ │ │ ├── SecurityConstants.java │ │ │ │ ├── ServiceNameConstants.java │ │ │ │ └── enums/ │ │ │ │ ├── DictTypeEnum.java │ │ │ │ ├── LoginTypeEnum.java │ │ │ │ └── MenuTypeEnum.java │ │ │ ├── exception/ │ │ │ │ ├── CheckedException.java │ │ │ │ ├── ErrorCodes.java │ │ │ │ ├── PigDeniedException.java │ │ │ │ └── ValidateCodeException.java │ │ │ ├── factory/ │ │ │ │ └── YamlPropertySourceFactory.java │ │ │ ├── jackson/ │ │ │ │ └── PigJavaTimeModule.java │ │ │ ├── servlet/ │ │ │ │ └── RepeatBodyRequestWrapper.java │ │ │ └── util/ │ │ │ ├── ClassUtils.java │ │ │ ├── MsgUtils.java │ │ │ ├── R.java │ │ │ ├── RedisUtils.java │ │ │ ├── RetOps.java │ │ │ ├── SpringContextHolder.java │ │ │ └── WebUtils.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── banner.txt │ │ ├── i18n/ │ │ │ └── messages_zh_CN.properties │ │ └── logback-spring.xml │ ├── pig-common-datasource/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── pig4cloud/ │ │ └── pig/ │ │ └── common/ │ │ └── datasource/ │ │ ├── DynamicDataSourceAutoConfiguration.java │ │ ├── annotation/ │ │ │ └── EnableDynamicDataSource.java │ │ ├── config/ │ │ │ ├── ClearTtlDataSourceFilter.java │ │ │ ├── DataSourceProperties.java │ │ │ ├── JdbcDynamicDataSourceProvider.java │ │ │ ├── LastParamDsProcessor.java │ │ │ └── MasterDataSourceProvider.java │ │ ├── support/ │ │ │ └── DataSourceConstants.java │ │ └── util/ │ │ ├── DsConfTypeEnum.java │ │ └── DsJdbcUrlEnum.java │ ├── pig-common-excel/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── excel/ │ │ │ ├── ExcelAutoConfiguration.java │ │ │ └── provider/ │ │ │ ├── RemoteDictApiService.java │ │ │ └── RemoteDictDataProvider.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── pig-common-feign/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ ├── com/ │ │ │ │ └── pig4cloud/ │ │ │ │ └── pig/ │ │ │ │ └── common/ │ │ │ │ └── feign/ │ │ │ │ ├── PigFeignAutoConfiguration.java │ │ │ │ ├── annotation/ │ │ │ │ │ ├── EnablePigFeignClients.java │ │ │ │ │ └── NoToken.java │ │ │ │ ├── core/ │ │ │ │ │ ├── PigFeignInnerRequestInterceptor.java │ │ │ │ │ └── PigFeignRequestCloseInterceptor.java │ │ │ │ └── sentinel/ │ │ │ │ ├── SentinelAutoConfiguration.java │ │ │ │ ├── ext/ │ │ │ │ │ ├── PigSentinelFeign.java │ │ │ │ │ └── PigSentinelInvocationHandler.java │ │ │ │ ├── handle/ │ │ │ │ │ ├── GlobalBizExceptionHandler.java │ │ │ │ │ └── PigUrlBlockHandler.java │ │ │ │ └── parser/ │ │ │ │ └── PigHeaderRequestOriginParser.java │ │ │ └── org/ │ │ │ └── springframework/ │ │ │ └── cloud/ │ │ │ └── openfeign/ │ │ │ └── PigFeignClientsRegistrar.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── pig-common-log/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── log/ │ │ │ ├── LogAutoConfiguration.java │ │ │ ├── annotation/ │ │ │ │ └── SysLog.java │ │ │ ├── aspect/ │ │ │ │ └── SysLogAspect.java │ │ │ ├── config/ │ │ │ │ └── PigLogProperties.java │ │ │ ├── event/ │ │ │ │ ├── SysLogEvent.java │ │ │ │ ├── SysLogEventSource.java │ │ │ │ └── SysLogListener.java │ │ │ ├── init/ │ │ │ │ └── ApplicationLoggerInitializer.java │ │ │ └── util/ │ │ │ ├── LogTypeEnum.java │ │ │ └── SysLogUtils.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── spring-configuration-metadata.json │ │ └── spring.factories │ ├── pig-common-mybatis/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── mybatis/ │ │ │ ├── MybatisAutoConfiguration.java │ │ │ ├── base/ │ │ │ │ └── BaseEntity.java │ │ │ ├── config/ │ │ │ │ └── MybatisPlusMetaObjectHandler.java │ │ │ ├── handler/ │ │ │ │ ├── JsonLongArrayTypeHandler.java │ │ │ │ └── JsonStringArrayTypeHandler.java │ │ │ ├── plugins/ │ │ │ │ └── PigPaginationInnerInterceptor.java │ │ │ └── resolver/ │ │ │ └── SqlFilterArgumentResolver.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── pig-common-oss/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── file/ │ │ │ ├── FileAutoConfiguration.java │ │ │ ├── core/ │ │ │ │ ├── FileProperties.java │ │ │ │ └── FileTemplate.java │ │ │ ├── local/ │ │ │ │ ├── LocalFileAutoConfiguration.java │ │ │ │ ├── LocalFileProperties.java │ │ │ │ └── LocalFileTemplate.java │ │ │ └── oss/ │ │ │ ├── OssAutoConfiguration.java │ │ │ ├── OssProperties.java │ │ │ ├── http/ │ │ │ │ └── OssEndpoint.java │ │ │ └── service/ │ │ │ └── OssTemplate.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── pig-common-seata/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── seata/ │ │ │ └── config/ │ │ │ └── SeataAutoConfiguration.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── seata-config.yml │ ├── pig-common-security/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── security/ │ │ │ ├── annotation/ │ │ │ │ ├── EnablePigResourceServer.java │ │ │ │ ├── HasPermission.java │ │ │ │ └── Inner.java │ │ │ ├── component/ │ │ │ │ ├── PermissionService.java │ │ │ │ ├── PermitAllUrlProperties.java │ │ │ │ ├── PigBearerTokenExtractor.java │ │ │ │ ├── PigBootCorsProperties.java │ │ │ │ ├── PigClientCredentialsOAuth2AuthenticatedPrincipal.java │ │ │ │ ├── PigCustomOAuth2AccessTokenResponseHttpMessageConverter.java │ │ │ │ ├── PigCustomOpaqueTokenIntrospector.java │ │ │ │ ├── PigResourceServerAutoConfiguration.java │ │ │ │ ├── PigResourceServerConfiguration.java │ │ │ │ ├── PigSecurityInnerAspect.java │ │ │ │ ├── PigSecurityMessageSourceConfiguration.java │ │ │ │ └── ResourceAuthExceptionEntryPoint.java │ │ │ ├── feign/ │ │ │ │ ├── PigFeignClientConfiguration.java │ │ │ │ └── PigOAuthRequestInterceptor.java │ │ │ ├── service/ │ │ │ │ ├── PigAppUserDetailsServiceImpl.java │ │ │ │ ├── PigRedisOAuth2AuthorizationConsentService.java │ │ │ │ ├── PigRedisOAuth2AuthorizationService.java │ │ │ │ ├── PigRemoteRegisteredClientRepository.java │ │ │ │ ├── PigUser.java │ │ │ │ ├── PigUserDetailsService.java │ │ │ │ └── PigUserDetailsServiceImpl.java │ │ │ └── util/ │ │ │ ├── OAuth2EndpointUtils.java │ │ │ ├── OAuth2ErrorCodesExpand.java │ │ │ ├── OAuthClientException.java │ │ │ ├── ScopeException.java │ │ │ └── SecurityUtils.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── i18n/ │ │ └── errors/ │ │ └── messages_zh_CN.properties │ ├── pig-common-swagger/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── swagger/ │ │ │ ├── annotation/ │ │ │ │ └── EnablePigDoc.java │ │ │ ├── config/ │ │ │ │ ├── OpenAPIDefinition.java │ │ │ │ ├── OpenAPIDefinitionImportSelector.java │ │ │ │ └── OpenAPIMetadataConfiguration.java │ │ │ └── support/ │ │ │ └── SwaggerProperties.java │ │ └── resources/ │ │ └── openapi-config.yaml │ ├── pig-common-websocket/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── websocket/ │ │ │ ├── config/ │ │ │ │ ├── LocalMessageDistributorConfiguration.java │ │ │ │ ├── MessageDistributorTypeConstants.java │ │ │ │ ├── RedisMessageDistributorConfiguration.java │ │ │ │ ├── WebSocketAutoConfiguration.java │ │ │ │ ├── WebSocketHandlerConfig.java │ │ │ │ ├── WebSocketMessageSender.java │ │ │ │ └── WebSocketProperties.java │ │ │ ├── custom/ │ │ │ │ ├── PigxSessionKeyGenerator.java │ │ │ │ └── UserAttributeHandshakeInterceptor.java │ │ │ ├── distribute/ │ │ │ │ ├── LocalMessageDistributor.java │ │ │ │ ├── MessageDO.java │ │ │ │ ├── MessageDistributor.java │ │ │ │ ├── MessageSender.java │ │ │ │ ├── RedisMessageDistributor.java │ │ │ │ └── RedisWebsocketMessageListener.java │ │ │ ├── handler/ │ │ │ │ ├── CustomPlanTextMessageHandler.java │ │ │ │ ├── CustomWebSocketHandler.java │ │ │ │ ├── JsonMessageHandler.java │ │ │ │ ├── PingJsonMessageHandler.java │ │ │ │ └── PlanTextMessageHandler.java │ │ │ ├── holder/ │ │ │ │ ├── JsonMessageHandlerHolder.java │ │ │ │ ├── MapSessionWebSocketHandlerDecorator.java │ │ │ │ ├── SessionKeyGenerator.java │ │ │ │ └── WebSocketSessionHolder.java │ │ │ ├── message/ │ │ │ │ ├── AbstractJsonWebSocketMessage.java │ │ │ │ ├── JsonWebSocketMessage.java │ │ │ │ ├── PingJsonWebSocketMessage.java │ │ │ │ ├── PongJsonWebSocketMessage.java │ │ │ │ └── WebSocketMessageTypeEnum.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── pig-common-xss/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── common/ │ │ │ └── xss/ │ │ │ ├── PigXssAutoConfiguration.java │ │ │ ├── config/ │ │ │ │ ├── PigXssProperties.java │ │ │ │ └── package-info.java │ │ │ ├── core/ │ │ │ │ ├── DefaultXssCleaner.java │ │ │ │ ├── FormXssClean.java │ │ │ │ ├── FromXssException.java │ │ │ │ ├── JacksonXssClean.java │ │ │ │ ├── JacksonXssException.java │ │ │ │ ├── XssCleanDeserializer.java │ │ │ │ ├── XssCleanDeserializerBase.java │ │ │ │ ├── XssCleanIgnore.java │ │ │ │ ├── XssCleanInterceptor.java │ │ │ │ ├── XssCleaner.java │ │ │ │ ├── XssException.java │ │ │ │ ├── XssHolder.java │ │ │ │ └── XssType.java │ │ │ ├── package-info.java │ │ │ └── utils/ │ │ │ ├── XssUtil.java │ │ │ └── package-info.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── spring-configuration-metadata.json │ └── pom.xml ├── pig-gateway/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── pig4cloud/ │ │ └── pig/ │ │ └── gateway/ │ │ ├── PigGatewayApplication.java │ │ ├── config/ │ │ │ ├── GatewayConfiguration.java │ │ │ ├── RateLimiterConfiguration.java │ │ │ └── SpringDocConfiguration.java │ │ ├── filter/ │ │ │ └── PigRequestGlobalFilter.java │ │ └── handler/ │ │ └── GlobalExceptionHandler.java │ └── resources/ │ ├── application.yml │ └── logback-spring.xml ├── pig-register/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── nacos/ │ │ └── bootstrap/ │ │ └── PigNacosApplication.java │ └── resources/ │ ├── application.properties │ └── logback-spring.xml ├── pig-upms/ │ ├── pig-upms-api/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── admin/ │ │ │ └── api/ │ │ │ ├── dto/ │ │ │ │ ├── RegisterUserDTO.java │ │ │ │ ├── SysLogDTO.java │ │ │ │ ├── UserDTO.java │ │ │ │ └── UserInfo.java │ │ │ ├── entity/ │ │ │ │ ├── SysDept.java │ │ │ │ ├── SysDeptRelation.java │ │ │ │ ├── SysDict.java │ │ │ │ ├── SysDictItem.java │ │ │ │ ├── SysFile.java │ │ │ │ ├── SysLog.java │ │ │ │ ├── SysMenu.java │ │ │ │ ├── SysOauthClientDetails.java │ │ │ │ ├── SysPost.java │ │ │ │ ├── SysPublicParam.java │ │ │ │ ├── SysRole.java │ │ │ │ ├── SysRoleMenu.java │ │ │ │ ├── SysUser.java │ │ │ │ ├── SysUserPost.java │ │ │ │ └── SysUserRole.java │ │ │ ├── feign/ │ │ │ │ ├── RemoteClientDetailsService.java │ │ │ │ ├── RemoteDictService.java │ │ │ │ ├── RemoteLogService.java │ │ │ │ ├── RemoteParamService.java │ │ │ │ ├── RemoteTokenService.java │ │ │ │ └── RemoteUserService.java │ │ │ ├── util/ │ │ │ │ ├── DictResolver.java │ │ │ │ └── ParamResolver.java │ │ │ └── vo/ │ │ │ ├── DeptExcelVo.java │ │ │ ├── PostExcelVO.java │ │ │ ├── PreLogVO.java │ │ │ ├── RoleExcelVO.java │ │ │ ├── RoleVO.java │ │ │ ├── TokenVo.java │ │ │ ├── UserExcelVO.java │ │ │ └── UserVO.java │ │ └── resources/ │ │ └── META-INF/ │ │ └── spring/ │ │ └── org.springframework.cloud.openfeign.FeignClient.imports │ ├── pig-upms-biz/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── admin/ │ │ │ ├── PigAdminApplication.java │ │ │ ├── controller/ │ │ │ │ ├── SysClientController.java │ │ │ │ ├── SysDeptController.java │ │ │ │ ├── SysDictController.java │ │ │ │ ├── SysFileController.java │ │ │ │ ├── SysLogController.java │ │ │ │ ├── SysMenuController.java │ │ │ │ ├── SysMobileController.java │ │ │ │ ├── SysPostController.java │ │ │ │ ├── SysPublicParamController.java │ │ │ │ ├── SysRegisterController.java │ │ │ │ ├── SysRoleController.java │ │ │ │ ├── SysSystemInfoController.java │ │ │ │ ├── SysTokenController.java │ │ │ │ └── SysUserController.java │ │ │ ├── mapper/ │ │ │ │ ├── SysDeptMapper.java │ │ │ │ ├── SysDictItemMapper.java │ │ │ │ ├── SysDictMapper.java │ │ │ │ ├── SysFileMapper.java │ │ │ │ ├── SysLogMapper.java │ │ │ │ ├── SysMenuMapper.java │ │ │ │ ├── SysOauthClientDetailsMapper.java │ │ │ │ ├── SysPostMapper.java │ │ │ │ ├── SysPublicParamMapper.java │ │ │ │ ├── SysRoleMapper.java │ │ │ │ ├── SysRoleMenuMapper.java │ │ │ │ ├── SysUserMapper.java │ │ │ │ ├── SysUserPostMapper.java │ │ │ │ └── SysUserRoleMapper.java │ │ │ └── service/ │ │ │ ├── SysDeptService.java │ │ │ ├── SysDictItemService.java │ │ │ ├── SysDictService.java │ │ │ ├── SysFileService.java │ │ │ ├── SysLogService.java │ │ │ ├── SysMenuService.java │ │ │ ├── SysMobileService.java │ │ │ ├── SysOauthClientDetailsService.java │ │ │ ├── SysPostService.java │ │ │ ├── SysPublicParamService.java │ │ │ ├── SysRoleMenuService.java │ │ │ ├── SysRoleService.java │ │ │ ├── SysUserRoleService.java │ │ │ ├── SysUserService.java │ │ │ └── impl/ │ │ │ ├── SysDeptServiceImpl.java │ │ │ ├── SysDictItemServiceImpl.java │ │ │ ├── SysDictServiceImpl.java │ │ │ ├── SysFileServiceImpl.java │ │ │ ├── SysLogServiceImpl.java │ │ │ ├── SysMenuServiceImpl.java │ │ │ ├── SysMobileServiceImpl.java │ │ │ ├── SysOauthClientDetailsServiceImpl.java │ │ │ ├── SysPostServiceImpl.java │ │ │ ├── SysPublicParamServiceImpl.java │ │ │ ├── SysRoleMenuServiceImpl.java │ │ │ ├── SysRoleServiceImpl.java │ │ │ ├── SysUserRoleServiceImpl.java │ │ │ └── SysUserServiceImpl.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── file/ │ │ │ ├── approle.xlsx │ │ │ ├── dept.xlsx │ │ │ ├── post.xlsx │ │ │ ├── role.xlsx │ │ │ └── user.xlsx │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ ├── SysDeptMapper.xml │ │ ├── SysMenuMapper.xml │ │ ├── SysPostMapper.xml │ │ ├── SysRoleMapper.xml │ │ └── SysUserMapper.xml │ └── pom.xml ├── pig-visual/ │ ├── pig-codegen/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── codegen/ │ │ │ ├── PigCodeGenApplication.java │ │ │ ├── config/ │ │ │ │ └── PigCodeGenDefaultProperties.java │ │ │ ├── controller/ │ │ │ │ ├── GenDsConfController.java │ │ │ │ ├── GenFieldTypeController.java │ │ │ │ ├── GenGroupController.java │ │ │ │ ├── GenTableController.java │ │ │ │ ├── GenTemplateController.java │ │ │ │ ├── GenTemplateGroupController.java │ │ │ │ └── GeneratorController.java │ │ │ ├── entity/ │ │ │ │ ├── ColumnEntity.java │ │ │ │ ├── GenConfig.java │ │ │ │ ├── GenDatasourceConf.java │ │ │ │ ├── GenFieldType.java │ │ │ │ ├── GenGroupEntity.java │ │ │ │ ├── GenTable.java │ │ │ │ ├── GenTableColumnEntity.java │ │ │ │ ├── GenTemplateEntity.java │ │ │ │ ├── GenTemplateGroupEntity.java │ │ │ │ └── TableEntity.java │ │ │ ├── mapper/ │ │ │ │ ├── GenDatasourceConfMapper.java │ │ │ │ ├── GenDynamicMapper.java │ │ │ │ ├── GenFieldTypeMapper.java │ │ │ │ ├── GenGroupMapper.java │ │ │ │ ├── GenTableColumnMapper.java │ │ │ │ ├── GenTableMapper.java │ │ │ │ ├── GenTemplateGroupMapper.java │ │ │ │ └── GenTemplateMapper.java │ │ │ ├── service/ │ │ │ │ ├── GenDatasourceConfService.java │ │ │ │ ├── GenFieldTypeService.java │ │ │ │ ├── GenGroupService.java │ │ │ │ ├── GenTableColumnService.java │ │ │ │ ├── GenTableService.java │ │ │ │ ├── GenTemplateGroupService.java │ │ │ │ ├── GenTemplateService.java │ │ │ │ ├── GeneratorService.java │ │ │ │ └── impl/ │ │ │ │ ├── GenDatasourceConfServiceImpl.java │ │ │ │ ├── GenFieldTypeServiceImpl.java │ │ │ │ ├── GenGroupServiceImpl.java │ │ │ │ ├── GenTableColumnServiceImpl.java │ │ │ │ ├── GenTableServiceImpl.java │ │ │ │ ├── GenTemplateGroupServiceImpl.java │ │ │ │ ├── GenTemplateServiceImpl.java │ │ │ │ └── GeneratorServiceImpl.java │ │ │ └── util/ │ │ │ ├── AutoFillEnum.java │ │ │ ├── BoolFillEnum.java │ │ │ ├── CommonColumnFiledEnum.java │ │ │ ├── DictTool.java │ │ │ ├── GenKit.java │ │ │ ├── GeneratorStyleEnum.java │ │ │ ├── NamingCaseTool.java │ │ │ ├── VelocityKit.java │ │ │ └── vo/ │ │ │ ├── GenCreateTableVO.java │ │ │ ├── GenTemplateFileVO.java │ │ │ ├── GroupVO.java │ │ │ ├── SqlDto.java │ │ │ └── TemplateGroupDTO.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ ├── GenFieldTypeMapper.xml │ │ ├── GenGroupMapper.xml │ │ ├── GenTableMapper.xml │ │ ├── GenTemplateGroupMapper.xml │ │ └── GenTemplateMapper.xml │ ├── pig-monitor/ │ │ ├── Dockerfile │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── monitor/ │ │ │ ├── PigMonitorApplication.java │ │ │ ├── config/ │ │ │ │ ├── CustomCsrfFilter.java │ │ │ │ └── SecuritySecureConfig.java │ │ │ └── converter/ │ │ │ └── NacosServiceInstanceConverter.java │ │ └── resources/ │ │ ├── application.yml │ │ └── logback-spring.xml │ ├── pig-quartz/ │ │ ├── Dockerfile │ │ ├── SECURITY.md │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── pig4cloud/ │ │ │ └── pig/ │ │ │ └── daemon/ │ │ │ └── quartz/ │ │ │ ├── PigQuartzApplication.java │ │ │ ├── config/ │ │ │ │ ├── AutowireCapableBeanJobFactory.java │ │ │ │ ├── PigInitQuartzJob.java │ │ │ │ ├── PigQuartzConfig.java │ │ │ │ ├── PigQuartzCustomizerConfig.java │ │ │ │ ├── PigQuartzFactory.java │ │ │ │ └── PigQuartzInvokeFactory.java │ │ │ ├── constants/ │ │ │ │ ├── JobTypeQuartzEnum.java │ │ │ │ └── PigQuartzEnum.java │ │ │ ├── controller/ │ │ │ │ ├── SysJobController.java │ │ │ │ └── SysJobLogController.java │ │ │ ├── entity/ │ │ │ │ ├── SysJob.java │ │ │ │ └── SysJobLog.java │ │ │ ├── event/ │ │ │ │ ├── SysJobEvent.java │ │ │ │ ├── SysJobListener.java │ │ │ │ ├── SysJobLogEvent.java │ │ │ │ └── SysJobLogListener.java │ │ │ ├── exception/ │ │ │ │ └── TaskException.java │ │ │ ├── mapper/ │ │ │ │ ├── SysJobLogMapper.java │ │ │ │ └── SysJobMapper.java │ │ │ ├── service/ │ │ │ │ ├── SysJobLogService.java │ │ │ │ ├── SysJobService.java │ │ │ │ └── impl/ │ │ │ │ ├── SysJobLogServiceImpl.java │ │ │ │ └── SysJobServiceImpl.java │ │ │ ├── task/ │ │ │ │ ├── RestTaskDemo.java │ │ │ │ └── SpringBeanTaskDemo.java │ │ │ └── util/ │ │ │ ├── ClassNameValidator.java │ │ │ ├── ITaskInvok.java │ │ │ ├── JarTaskInvok.java │ │ │ ├── JavaClassTaskInvok.java │ │ │ ├── RestTaskInvok.java │ │ │ ├── SpringBeanTaskInvok.java │ │ │ ├── TaskInvokFactory.java │ │ │ ├── TaskInvokUtil.java │ │ │ └── TaskUtil.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── quartz-config.yml │ └── pom.xml └── pom.xml
SYMBOL INDEX (1337 symbols across 370 files)
FILE: db/pig.sql
type `sys_dept` (line 15) | CREATE TABLE `sys_dept` (
type `sys_dict` (line 52) | CREATE TABLE `sys_dict` (
type `sys_dict_item` (line 104) | CREATE TABLE `sys_dict_item` (
type `sys_file` (line 219) | CREATE TABLE `sys_file` (
type `sys_log` (line 244) | CREATE TABLE `sys_log` (
type `sys_menu` (line 272) | CREATE TABLE `sys_menu` (
type `sys_oauth_client_details` (line 382) | CREATE TABLE `sys_oauth_client_details` (
type `sys_post` (line 420) | CREATE TABLE `sys_post` (
type `sys_public_param` (line 445) | CREATE TABLE `sys_public_param` (
type `sys_role` (line 481) | CREATE TABLE `sys_role` (
type `sys_role_menu` (line 507) | CREATE TABLE `sys_role_menu` (
type `sys_user` (line 605) | CREATE TABLE `sys_user` (
type `sys_user_post` (line 644) | CREATE TABLE `sys_user_post` (
type `sys_user_role` (line 661) | CREATE TABLE `sys_user_role` (
type `sys_job` (line 679) | CREATE TABLE `sys_job` (
type `sys_job_log` (line 708) | CREATE TABLE `sys_job_log` (
FILE: db/pig_config.sql
type `config_info` (line 14) | CREATE TABLE `config_info` (
type `config_info_beta` (line 53) | CREATE TABLE `config_info_beta` (
type `config_info_gray` (line 81) | CREATE TABLE `config_info_gray` (
type `config_info_tag` (line 112) | CREATE TABLE `config_info_tag` (
type `config_tags_relation` (line 139) | CREATE TABLE `config_tags_relation` (
type `group_capacity` (line 162) | CREATE TABLE `group_capacity` (
type `his_config_info` (line 187) | CREATE TABLE `his_config_info` (
type `permissions` (line 216) | CREATE TABLE `permissions` (
type `roles` (line 233) | CREATE TABLE `roles` (
type `tenant_capacity` (line 250) | CREATE TABLE `tenant_capacity` (
type `tenant_info` (line 275) | CREATE TABLE `tenant_info` (
type `users` (line 299) | CREATE TABLE `users` (
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/PigAuthApplication.java
class PigAuthApplication (line 30) | @EnablePigFeignClients
method main (line 35) | public static void main(String[] args) {
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/config/AuthorizationServerConfiguration.java
class AuthorizationServerConfiguration (line 67) | @Configuration
method authorizationServer (line 85) | @Bean
method oAuth2TokenGenerator (line 134) | @Bean
method accessTokenRequestConverter (line 146) | @Bean
method addCustomOAuth2GrantAuthenticationProvider (line 162) | private void addCustomOAuth2GrantAuthenticationProvider(HttpSecurity h...
method corsConfigurationSource (line 184) | private UrlBasedCorsConfigurationSource corsConfigurationSource() {
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/ImageCodeEndpoint.java
class ImageCodeEndpoint (line 25) | @RestController
method image (line 40) | @SneakyThrows
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/PigTokenEndpoint.java
class PigTokenEndpoint (line 88) | @RestController
method require (line 110) | @GetMapping("/token/login")
method confirm (line 127) | @GetMapping("/oauth2/confirm_access")
method logout (line 151) | @DeleteMapping("/token/logout")
method checkToken (line 169) | @SneakyThrows
method removeToken (line 201) | @Inner
method tokenList (line 229) | @Inner
method convertToTokenVo (line 272) | private TokenVo convertToTokenVo(OAuth2Authorization authorization) {
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/CustomeOAuth2AccessTokenGenerator.java
class CustomeOAuth2AccessTokenGenerator (line 27) | public class CustomeOAuth2AccessTokenGenerator implements OAuth2TokenGen...
method generate (line 41) | @Nullable
method setAccessTokenCustomizer (line 108) | public void setAccessTokenCustomizer(OAuth2TokenCustomizer<OAuth2Token...
class OAuth2AccessTokenClaims (line 119) | private static final class OAuth2AccessTokenClaims extends OAuth2Acces...
method OAuth2AccessTokenClaims (line 135) | private OAuth2AccessTokenClaims(TokenType tokenType, String tokenVal...
method getClaims (line 145) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationConverter.java
class OAuth2ResourceOwnerBaseAuthenticationConverter (line 26) | public abstract class OAuth2ResourceOwnerBaseAuthenticationConverter<T e...
method support (line 34) | public abstract boolean support(String grantType);
method checkParams (line 40) | public void checkParams(HttpServletRequest request) {
method buildToken (line 51) | public abstract T buildToken(Authentication clientPrincipal, Set<Strin...
method convert (line 60) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationProvider.java
class OAuth2ResourceOwnerBaseAuthenticationProvider (line 39) | public abstract class OAuth2ResourceOwnerBaseAuthenticationProvider<T ex...
method OAuth2ResourceOwnerBaseAuthenticationProvider (line 65) | public OAuth2ResourceOwnerBaseAuthenticationProvider(AuthenticationMan...
method setRefreshTokenGenerator (line 83) | @Deprecated
method buildToken (line 94) | public abstract UsernamePasswordAuthenticationToken buildToken(Map<Str...
method supports (line 101) | @Override
method checkClient (line 108) | public abstract void checkClient(RegisteredClient registeredClient);
method authenticate (line 117) | @Override
method oAuth2AuthenticationException (line 240) | private OAuth2AuthenticationException oAuth2AuthenticationException(Au...
method getAuthenticatedClientElseThrowInvalidClient (line 285) | private OAuth2ClientAuthenticationToken getAuthenticatedClientElseThro...
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationToken.java
class OAuth2ResourceOwnerBaseAuthenticationToken (line 19) | public abstract class OAuth2ResourceOwnerBaseAuthenticationToken extends...
method OAuth2ResourceOwnerBaseAuthenticationToken (line 36) | public OAuth2ResourceOwnerBaseAuthenticationToken(AuthorizationGrantTy...
method getCredentials (line 52) | @Override
method getPrincipal (line 60) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/CustomeOAuth2TokenCustomizer.java
class CustomeOAuth2TokenCustomizer (line 15) | public class CustomeOAuth2TokenCustomizer implements OAuth2TokenCustomiz...
method customize (line 21) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/FormIdentityLoginConfigurer.java
class FormIdentityLoginConfigurer (line 14) | public final class FormIdentityLoginConfigurer
method init (line 17) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/PigDaoAuthenticationProvider.java
class PigDaoAuthenticationProvider (line 39) | public class PigDaoAuthenticationProvider extends AbstractUserDetailsAut...
method PigDaoAuthenticationProvider (line 62) | public PigDaoAuthenticationProvider() {
method additionalAuthenticationChecks (line 73) | @Override
method retrieveUser (line 105) | @SneakyThrows
method createSuccessAuthentication (line 162) | @Override
method prepareTimingAttackProtection (line 178) | private void prepareTimingAttackProtection() {
method mitigateAgainstTimingAttack (line 188) | private void mitigateAgainstTimingAttack(UsernamePasswordAuthenticatio...
method setPasswordEncoder (line 199) | public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
method getPasswordEncoder (line 205) | protected PasswordEncoder getPasswordEncoder() {
method setUserDetailsService (line 213) | public void setUserDetailsService(UserDetailsService userDetailsServic...
method getUserDetailsService (line 217) | protected UserDetailsService getUserDetailsService() {
method setUserDetailsPasswordService (line 225) | public void setUserDetailsPasswordService(UserDetailsPasswordService u...
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/AuthSecurityConfigProperties.java
class AuthSecurityConfigProperties (line 21) | @Data
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/PasswordDecoderFilter.java
class PasswordDecoderFilter (line 49) | @Component
method doFilterInternal (line 72) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/ValidateCodeFilter.java
class ValidateCodeFilter (line 37) | @Component
method doFilterInternal (line 51) | @Override
method checkCode (line 91) | private void checkCode() throws ValidateCodeException {
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/FormAuthenticationFailureHandler.java
class FormAuthenticationFailureHandler (line 37) | @Slf4j
method onAuthenticationFailure (line 46) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigAuthenticationFailureEventHandler.java
class PigAuthenticationFailureEventHandler (line 48) | @Slf4j
method onAuthenticationFailure (line 59) | @Override
method sendErrorResponse (line 90) | private void sendErrorResponse(HttpServletRequest request, HttpServlet...
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigAuthenticationSuccessEventHandler.java
class PigAuthenticationSuccessEventHandler (line 54) | @Slf4j
method onAuthenticationSuccess (line 65) | @SneakyThrows
method sendAccessTokenResponse (line 99) | private void sendAccessTokenResponse(HttpServletRequest request, HttpS...
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigLogoutSuccessEventHandler.java
class PigLogoutSuccessEventHandler (line 40) | @Slf4j
method onApplicationEvent (line 48) | @Override
method handle (line 62) | public void handle(Authentication authentication) {
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/SsoLogoutSuccessHandler.java
class SsoLogoutSuccessHandler (line 18) | public class SsoLogoutSuccessHandler implements LogoutSuccessHandler {
method onLogoutSuccess (line 29) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationConverter.java
class OAuth2ResourceOwnerPasswordAuthenticationConverter (line 25) | public class OAuth2ResourceOwnerPasswordAuthenticationConverter
method support (line 32) | @Override
method buildToken (line 44) | @Override
method checkParams (line 55) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationProvider.java
class OAuth2ResourceOwnerPasswordAuthenticationProvider (line 29) | public class OAuth2ResourceOwnerPasswordAuthenticationProvider
method OAuth2ResourceOwnerPasswordAuthenticationProvider (line 41) | public OAuth2ResourceOwnerPasswordAuthenticationProvider(Authenticatio...
method buildToken (line 52) | @Override
method supports (line 64) | @Override
method checkClient (line 76) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationToken.java
class OAuth2ResourceOwnerPasswordAuthenticationToken (line 18) | public class OAuth2ResourceOwnerPasswordAuthenticationToken extends OAut...
method OAuth2ResourceOwnerPasswordAuthenticationToken (line 30) | public OAuth2ResourceOwnerPasswordAuthenticationToken(AuthorizationGra...
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationConverter.java
class OAuth2ResourceOwnerSmsAuthenticationConverter (line 22) | public class OAuth2ResourceOwnerSmsAuthenticationConverter
method support (line 30) | @Override
method buildToken (line 35) | @Override
method checkParams (line 46) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationProvider.java
class OAuth2ResourceOwnerSmsAuthenticationProvider (line 25) | public class OAuth2ResourceOwnerSmsAuthenticationProvider
method OAuth2ResourceOwnerSmsAuthenticationProvider (line 38) | public OAuth2ResourceOwnerSmsAuthenticationProvider(AuthenticationMana...
method supports (line 44) | @Override
method checkClient (line 51) | @Override
method buildToken (line 60) | @Override
FILE: pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationToken.java
class OAuth2ResourceOwnerSmsAuthenticationToken (line 16) | public class OAuth2ResourceOwnerSmsAuthenticationToken extends OAuth2Res...
method OAuth2ResourceOwnerSmsAuthenticationToken (line 21) | public OAuth2ResourceOwnerSmsAuthenticationToken(AuthorizationGrantTyp...
FILE: pig-boot/src/main/java/com/pig4cloud/pig/PigBootApplication.java
class PigBootApplication (line 30) | @SpringBootApplication
method main (line 35) | public static void main(String[] args) {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/JacksonConfiguration.java
class JacksonConfiguration (line 43) | @AutoConfiguration
method customizer (line 53) | @Bean
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/RedisTemplateConfiguration.java
class RedisTemplateConfiguration (line 35) | @EnableCaching
method redisTemplate (line 45) | @Bean
method hashOperations (line 62) | @Bean
method valueOperations (line 72) | @Bean
method listOperations (line 82) | @Bean
method setOperations (line 92) | @Bean
method zSetOperations (line 102) | @Bean
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/RestTemplateConfiguration.java
class RestTemplateConfiguration (line 32) | @AutoConfiguration
method restTemplate (line 39) | @Bean
method restClientBuilder (line 50) | @Bean
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/WebMvcConfiguration.java
class WebMvcConfiguration (line 39) | @AutoConfiguration
method addFormatters (line 47) | @Override
method messageSource (line 60) | @Bean
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/CacheConstants.java
type CacheConstants (line 25) | public interface CacheConstants {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/CommonConstants.java
type CommonConstants (line 23) | public interface CommonConstants {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/SecurityConstants.java
type SecurityConstants (line 23) | public interface SecurityConstants {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/ServiceNameConstants.java
type ServiceNameConstants (line 23) | public interface ServiceNameConstants {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/DictTypeEnum.java
type DictTypeEnum (line 28) | @Getter
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/LoginTypeEnum.java
type LoginTypeEnum (line 26) | @Getter
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/MenuTypeEnum.java
type MenuTypeEnum (line 28) | @Getter
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/CheckedException.java
class CheckedException (line 27) | @NoArgsConstructor
method CheckedException (line 32) | public CheckedException(String message) {
method CheckedException (line 36) | public CheckedException(Throwable cause) {
method CheckedException (line 40) | public CheckedException(String message, Throwable cause) {
method CheckedException (line 44) | public CheckedException(String message, Throwable cause, boolean enabl...
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/ErrorCodes.java
type ErrorCodes (line 9) | public interface ErrorCodes {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/PigDeniedException.java
class PigDeniedException (line 27) | @NoArgsConstructor
method PigDeniedException (line 32) | public PigDeniedException(String message) {
method PigDeniedException (line 36) | public PigDeniedException(Throwable cause) {
method PigDeniedException (line 40) | public PigDeniedException(String message, Throwable cause) {
method PigDeniedException (line 44) | public PigDeniedException(String message, Throwable cause, boolean ena...
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/ValidateCodeException.java
class ValidateCodeException (line 25) | public class ValidateCodeException extends RuntimeException {
method ValidateCodeException (line 29) | public ValidateCodeException() {
method ValidateCodeException (line 32) | public ValidateCodeException(String msg) {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/factory/YamlPropertySourceFactory.java
class YamlPropertySourceFactory (line 20) | public class YamlPropertySourceFactory implements PropertySourceFactory {
method createPropertySource (line 29) | @Override
method loadYamlIntoProperties (line 42) | private Properties loadYamlIntoProperties(EncodedResource resource) th...
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/jackson/PigJavaTimeModule.java
class PigJavaTimeModule (line 37) | public class PigJavaTimeModule extends SimpleModule {
method PigJavaTimeModule (line 45) | public PigJavaTimeModule() {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/servlet/RepeatBodyRequestWrapper.java
class RepeatBodyRequestWrapper (line 40) | @Slf4j
method RepeatBodyRequestWrapper (line 47) | public RepeatBodyRequestWrapper(HttpServletRequest request) {
method getReader (line 58) | @Override
method getInputStream (line 68) | @Override
method getByteBody (line 99) | private static byte[] getByteBody(HttpServletRequest request) {
method getParameterMap (line 114) | @Override
method setParameterMap (line 123) | public void setParameterMap(Map<String, String[]> parameterMap) {
method getParameter (line 133) | @Override
method getParameterValues (line 144) | @Override
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/ClassUtils.java
class ClassUtils (line 37) | @UtilityClass
method getMethodParameter (line 48) | public MethodParameter getMethodParameter(Constructor<?> constructor, ...
method getMethodParameter (line 60) | public MethodParameter getMethodParameter(Method method, int parameter...
method getAnnotation (line 73) | public <A extends Annotation> A getAnnotation(Method method, Class<A> ...
method getAnnotation (line 98) | public <A extends Annotation> A getAnnotation(HandlerMethod handlerMet...
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/MsgUtils.java
class MsgUtils (line 14) | @UtilityClass
method getMessage (line 22) | public String getMessage(String code) {
method getMessage (line 33) | public String getMessage(String code, Object... objects) {
method getSecurityMessage (line 44) | public String getSecurityMessage(String code, Object... objects) {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/R.java
class R (line 32) | @ToString
method ok (line 53) | public static <T> R<T> ok() {
method ok (line 57) | public static <T> R<T> ok(T data) {
method ok (line 61) | public static <T> R<T> ok(T data, String msg) {
method failed (line 65) | public static <T> R<T> failed() {
method failed (line 69) | public static <T> R<T> failed(String msg) {
method failed (line 73) | public static <T> R<T> failed(T data) {
method failed (line 77) | public static <T> R<T> failed(T data, String msg) {
method restResult (line 81) | public static <T> R<T> restResult(T data, int code, String msg) {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/RedisUtils.java
class RedisUtils (line 20) | @UtilityClass
method expire (line 30) | public boolean expire(String key, long time) {
method getExpire (line 43) | public long getExpire(String key) {
method scan (line 55) | public List<String> scan(String pattern) {
method keys (line 77) | public Set<String> keys(String pattern) {
method findKeysForPage (line 91) | public List<String> findKeysForPage(String patternKey, int page, int s...
method hasKey (line 123) | public boolean hasKey(String key) {
method delete (line 132) | public void delete(String... keys) {
method getLock (line 146) | public boolean getLock(String lockKey, String value, int expireTime) {
method releaseLock (line 159) | public boolean releaseLock(String lockKey, String value) {
method get (line 176) | public <T> T get(String key) {
method multiGet (line 186) | public <T> List<T> multiGet(List<String> keys) {
method set (line 197) | public boolean set(String key, Object value) {
method set (line 213) | public boolean set(String key, Object value, long time) {
method set (line 234) | public <T> boolean set(String key, T value, long time, TimeUnit timeUn...
method execute (line 253) | public <T> T execute(RedisCallback<T> callback) {
method hget (line 266) | public <HK, HV> HV hget(String key, HK hashKey) {
method hmget (line 276) | public <HK, HV> Map<HK, HV> hmget(String key) {
method hmset (line 287) | public boolean hmset(String key, Map<String, Object> map) {
method hmset (line 303) | public boolean hmset(String key, Map<String, Object> map, long time) {
method hset (line 322) | public boolean hset(String key, String item, Object value) {
method hset (line 338) | public boolean hset(String key, String item, Object value, long time) {
method hdel (line 354) | public void hdel(String key, Object... item) {
method hHasKey (line 365) | public boolean hHasKey(String key, String item) {
method hincr (line 377) | public double hincr(String key, String item, double by) {
method hdecr (line 389) | public double hdecr(String key, String item, double by) {
method sGet (line 401) | public <T> Set<T> sGet(String key) {
method sHasKey (line 412) | public boolean sHasKey(String key, Object value) {
method sSet (line 423) | public long sSet(String key, Object... values) {
method sSetAndTime (line 435) | public long sSetAndTime(String key, long time, Object... values) {
method sGetSetSize (line 449) | public long sGetSetSize(String key) {
method setRemove (line 460) | public long setRemove(String key, Object... values) {
method sDifference (line 471) | public <T> Set<T> sDifference(String key, String otherKey) {
method lGet (line 485) | public <T> List<T> lGet(String key, long start, long end) {
method lGetListSize (line 495) | public long lGetListSize(String key) {
method lGetIndex (line 506) | public Object lGetIndex(String key, long index) {
method lSet (line 517) | public boolean lSet(String key, Object value) {
method lSet (line 530) | public boolean lSet(String key, Object value, long time) {
method lSet (line 545) | public boolean lSet(String key, List<Object> value) {
method lSet (line 558) | public boolean lSet(String key, List<Object> value, long time) {
method lUpdateIndex (line 574) | public boolean lUpdateIndex(String key, long index, Object value) {
method lRemove (line 587) | public long lRemove(String key, long count, Object value) {
method zSetAndTime (line 599) | public long zSetAndTime(String key, long time, Set<ZSetOperations.Type...
method zRangeByScore (line 616) | public Set<Object> zRangeByScore(String key, double min, double max) {
method zRange (line 630) | public Set<Object> zRange(String key, long start, long end) {
method zReverseRange (line 644) | public Set<Object> zReverseRange(String key, long start, long end) {
method zGetSetSize (line 656) | public long zGetSetSize(String key) {
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/RetOps.java
class RetOps (line 55) | public class RetOps<T> {
method RetOps (line 74) | RetOps(R<T> original) {
method of (line 78) | public static <T> RetOps<T> of(R<T> original) {
method peek (line 89) | public R<T> peek() {
method getCode (line 97) | public int getCode() {
method getData (line 105) | public Optional<T> getData() {
method getDataIf (line 114) | public Optional<T> getDataIf(Predicate<? super R<?>> predicate) {
method getMsg (line 122) | public Optional<String> getMsg() {
method codeEquals (line 131) | public boolean codeEquals(int value) {
method codeNotEquals (line 140) | public boolean codeNotEquals(int value) {
method isSuccess (line 149) | public boolean isSuccess() {
method notSuccess (line 157) | public boolean notSuccess() {
method assertCode (line 172) | public <Ex extends Exception> RetOps<T> assertCode(int expect, Functio...
method assertSuccess (line 187) | public <Ex extends Exception> RetOps<T> assertSuccess(Function<? super...
method assertDataNotNull (line 198) | public <Ex extends Exception> RetOps<T> assertDataNotNull(Function<? s...
method assertDataNotEmpty (line 212) | public <Ex extends Exception> RetOps<T> assertDataNotEmpty(Function<? ...
method map (line 225) | public <U> RetOps<U> map(Function<? super T, ? extends U> mapper) {
method mapIf (line 241) | public <U> RetOps<U> mapIf(Predicate<? super R<T>> predicate, Function...
method useData (line 253) | public void useData(Consumer<? super T> consumer) {
method useDataOnCode (line 262) | public void useDataOnCode(Consumer<? super T> consumer, int... codes) {
method useDataIfSuccess (line 270) | public void useDataIfSuccess(Consumer<? super T> consumer) {
method useDataIf (line 283) | public void useDataIf(Predicate<? super R<T>> predicate, Consumer<? su...
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/SpringContextHolder.java
class SpringContextHolder (line 34) | @Slf4j
method getApplicationContext (line 46) | public static ApplicationContext getApplicationContext() {
method getEnvironment (line 54) | public static Environment getEnvironment() {
method setApplicationContext (line 61) | @Override
method getBean (line 69) | public static <T> T getBean(String name) {
method getBean (line 76) | public static <T> T getBean(Class<T> requiredType) {
method clearHolder (line 83) | public static void clearHolder() {
method publishEvent (line 94) | public static void publishEvent(ApplicationEvent event) {
method isMicro (line 105) | public static boolean isMicro() {
method destroy (line 112) | @Override
method setEnvironment (line 118) | @Override
FILE: pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java
class WebUtils (line 42) | @UtilityClass
method isBody (line 52) | public boolean isBody(HandlerMethod handlerMethod) {
method getCookieVal (line 62) | public String getCookieVal(String name) {
method getCookieVal (line 75) | public String getCookieVal(HttpServletRequest request, String name) {
method removeCookie (line 85) | public void removeCookie(HttpServletResponse response, String key) {
method setCookie (line 96) | public void setCookie(HttpServletResponse response, String name, Strin...
method getRequest (line 108) | public Optional<HttpServletRequest> getRequest() {
method getResponse (line 117) | public HttpServletResponse getResponse() {
method getClientId (line 125) | @SneakyThrows
method getClientId (line 131) | @SneakyThrows
method splitClient (line 140) | @NotNull
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/DynamicDataSourceAutoConfiguration.java
class DynamicDataSourceAutoConfiguration (line 48) | @Configuration
method dynamicDataSourceProvider (line 61) | @Bean
method masterDataSourceProvider (line 73) | @Bean
method defaultDataSourceCreator (line 84) | @Bean
method dsProcessor (line 97) | @Bean
method clearTtlDsFilter (line 114) | @Bean
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/ClearTtlDataSourceFilter.java
class ClearTtlDataSourceFilter (line 19) | public class ClearTtlDataSourceFilter extends GenericFilterBean implemen...
method doFilter (line 21) | @Override
method getOrder (line 29) | @Override
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/DataSourceProperties.java
class DataSourceProperties (line 28) | @Data
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/JdbcDynamicDataSourceProvider.java
class JdbcDynamicDataSourceProvider (line 41) | @Slf4j
method JdbcDynamicDataSourceProvider (line 48) | public JdbcDynamicDataSourceProvider(DefaultDataSourceCreator defaultD...
method executeStmt (line 62) | @Override
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/LastParamDsProcessor.java
class LastParamDsProcessor (line 30) | public class LastParamDsProcessor extends DsProcessor {
method matches (line 39) | @Override
method doDetermineDatasource (line 55) | @Override
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/MasterDataSourceProvider.java
class MasterDataSourceProvider (line 36) | public class MasterDataSourceProvider extends AbstractDataSourceProvider {
method MasterDataSourceProvider (line 42) | public MasterDataSourceProvider(DefaultDataSourceCreator defaultDataSo...
method loadDataSources (line 53) | @Override
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/support/DataSourceConstants.java
type DataSourceConstants (line 9) | public interface DataSourceConstants {
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/util/DsConfTypeEnum.java
type DsConfTypeEnum (line 12) | @Getter
FILE: pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/util/DsJdbcUrlEnum.java
type DsJdbcUrlEnum (line 14) | @Getter
method get (line 65) | public static DsJdbcUrlEnum get(String dsType) {
FILE: pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/ExcelAutoConfiguration.java
class ExcelAutoConfiguration (line 24) | @AutoConfiguration
method remoteDictApiService (line 32) | @Bean
method dictDataProvider (line 48) | @Bean
method getBaseUrl (line 58) | private String getBaseUrl() {
FILE: pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/provider/RemoteDictApiService.java
type RemoteDictApiService (line 16) | public interface RemoteDictApiService {
method getDictByType (line 23) | @GetExchange("/dict/remote/type/{type}")
FILE: pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/provider/RemoteDictDataProvider.java
class RemoteDictDataProvider (line 19) | @RequiredArgsConstructor
method getDict (line 29) | @Override
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/PigFeignAutoConfiguration.java
class PigFeignAutoConfiguration (line 39) | @Configuration(proxyBeanMethods = false)
method feignSentinelBuilder (line 51) | @Bean
method pigFeignRequestCloseInterceptor (line 63) | @Bean
method pigFeignInnerRequestInterceptor (line 72) | @Bean
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/core/PigFeignInnerRequestInterceptor.java
class PigFeignInnerRequestInterceptor (line 17) | public class PigFeignInnerRequestInterceptor implements RequestIntercept...
method apply (line 23) | @Override
method getOrder (line 32) | @Override
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/core/PigFeignRequestCloseInterceptor.java
class PigFeignRequestCloseInterceptor (line 14) | public class PigFeignRequestCloseInterceptor implements RequestIntercept...
method apply (line 20) | @Override
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/SentinelAutoConfiguration.java
class SentinelAutoConfiguration (line 41) | @Configuration(proxyBeanMethods = false)
method feignSentinelBuilder (line 52) | @Bean
method blockExceptionHandler (line 66) | @Bean
method requestOriginParser (line 76) | @Bean
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/ext/PigSentinelFeign.java
class PigSentinelFeign (line 43) | public final class PigSentinelFeign {
method PigSentinelFeign (line 45) | private PigSentinelFeign() {
method builder (line 49) | public static PigSentinelFeign.Builder builder() {
class Builder (line 53) | public static final class Builder extends Feign.Builder implements App...
method invocationHandlerFactory (line 61) | @Override
method contract (line 66) | @Override
method internalBuild (line 72) | @Override
method setApplicationContext (line 131) | @Override
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/ext/PigSentinelInvocationHandler.java
class PigSentinelInvocationHandler (line 50) | @Slf4j
method PigSentinelInvocationHandler (line 67) | PigSentinelInvocationHandler(Target<?> target, Map<Method, InvocationH...
method PigSentinelInvocationHandler (line 75) | PigSentinelInvocationHandler(Target<?> target, Map<Method, InvocationH...
method invoke (line 80) | @Override
method equals (line 163) | @Override
method hashCode (line 172) | @Override
method toString (line 177) | @Override
method toFallbackMethod (line 182) | static Map<Method, Method> toFallbackMethod(Map<Method, InvocationHand...
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java
class GlobalBizExceptionHandler (line 47) | @Slf4j
method handleGlobalException (line 58) | @ExceptionHandler(Exception.class)
method handleIllegalArgumentException (line 78) | @ExceptionHandler(IllegalArgumentException.class)
method handleAccessDeniedException (line 90) | @ExceptionHandler(AccessDeniedException.class)
method handleBodyValidException (line 104) | @ExceptionHandler({ MethodArgumentNotValidException.class })
method bindExceptionHandler (line 117) | @ExceptionHandler({ BindException.class })
method notFoundExceptionHandler (line 133) | @ExceptionHandler({ NoResourceFoundException.class })
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/PigUrlBlockHandler.java
class PigUrlBlockHandler (line 38) | @Slf4j
method handle (line 44) | @Override
FILE: pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/parser/PigHeaderRequestOriginParser.java
class PigHeaderRequestOriginParser (line 28) | public class PigHeaderRequestOriginParser implements RequestOriginParser {
method parseOrigin (line 40) | @Override
FILE: pig-common/pig-common-feign/src/main/java/org/springframework/cloud/openfeign/PigFeignClientsRegistrar.java
class PigFeignClientsRegistrar (line 51) | public class PigFeignClientsRegistrar implements ImportBeanDefinitionReg...
method registerBeanDefinitions (line 66) | @Override
method setBeanClassLoader (line 75) | @Override
method registerFeignClients (line 84) | private void registerFeignClients(BeanDefinitionRegistry registry) {
method validate (line 173) | private void validate(Map<String, Object> attributes) {
method getName (line 185) | private String getName(Map<String, Object> attributes) {
method getContextId (line 202) | private String getContextId(Map<String, Object> attributes) {
method resolve (line 217) | private String resolve(String value) {
method getUrl (line 229) | private String getUrl(Map<String, Object> attributes) {
method getPath (line 256) | private String getPath(Map<String, Object> attributes) {
method getQualifier (line 266) | @Nullable
method getClientName (line 284) | @Nullable
method registerClientConfiguration (line 314) | private void registerClientConfiguration(BeanDefinitionRegistry regist...
method setEnvironment (line 328) | @Override
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/LogAutoConfiguration.java
class LogAutoConfiguration (line 35) | @EnableAsync
method sysLogListener (line 47) | @Bean
method sysLogAspect (line 56) | @Bean
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/aspect/SysLogAspect.java
class SysLogAspect (line 40) | @Aspect
method around (line 52) | @Around("@annotation(sysLog)")
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/config/PigLogProperties.java
class PigLogProperties (line 32) | @Getter
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogEvent.java
class SysLogEvent (line 29) | public class SysLogEvent extends ApplicationEvent {
method SysLogEvent (line 38) | public SysLogEvent(SysLog source) {
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogEventSource.java
class SysLogEventSource (line 16) | @Data
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogListener.java
class SysLogListener (line 47) | @RequiredArgsConstructor
method saveSysLog (line 61) | @SneakyThrows
method afterPropertiesSet (line 79) | @Override
class PropertyFilterMixIn (line 96) | @JsonFilter("filter properties by name")
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/init/ApplicationLoggerInitializer.java
class ApplicationLoggerInitializer (line 30) | public class ApplicationLoggerInitializer implements EnvironmentPostProc...
method postProcessEnvironment (line 37) | @Override
method getOrder (line 56) | @Override
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/util/LogTypeEnum.java
type LogTypeEnum (line 28) | @Getter
FILE: pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/util/SysLogUtils.java
class SysLogUtils (line 52) | @UtilityClass
method getSysLog (line 59) | public SysLogEventSource getSysLog() {
method getUsername (line 83) | private String getUsername() {
method getValue (line 99) | public <T> T getValue(EvaluationContext context, String key, Class<T> ...
method getContext (line 111) | public EvaluationContext getContext(Object[] arguments, Method signatu...
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/MybatisAutoConfiguration.java
class MybatisAutoConfiguration (line 38) | @Configuration(proxyBeanMethods = false)
method addArgumentResolvers (line 45) | @Override
method mybatisPlusInterceptor (line 54) | @Bean
method mybatisPlusMetaObjectHandler (line 65) | @Bean
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/base/BaseEntity.java
class BaseEntity (line 20) | @Getter
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java
class MybatisPlusMetaObjectHandler (line 23) | @Slf4j
method insertFill (line 30) | @Override
method updateFill (line 48) | @Override
method fillValIfNullByName (line 62) | private static void fillValIfNullByName(String fieldName, Object field...
method getUserName (line 89) | private String getUserName() {
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/handler/JsonLongArrayTypeHandler.java
class JsonLongArrayTypeHandler (line 27) | @MappedTypes(value = { Long[].class })
method setNonNullParameter (line 39) | @Override
method getNullableResult (line 52) | @Override
method getNullableResult (line 66) | @Override
method getNullableResult (line 80) | @Override
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/handler/JsonStringArrayTypeHandler.java
class JsonStringArrayTypeHandler (line 25) | @MappedTypes(value = { String[].class })
method setNonNullParameter (line 37) | @Override
method getNullableResult (line 50) | @Override
method getNullableResult (line 64) | @Override
method getNullableResult (line 78) | @Override
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/plugins/PigPaginationInnerInterceptor.java
class PigPaginationInnerInterceptor (line 28) | @Data
method PigPaginationInnerInterceptor (line 47) | public PigPaginationInnerInterceptor(DbType dbType) {
method PigPaginationInnerInterceptor (line 51) | public PigPaginationInnerInterceptor(IDialect dialect) {
method beforeQuery (line 64) | @Override
FILE: pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/resolver/SqlFilterArgumentResolver.java
class SqlFilterArgumentResolver (line 44) | public class SqlFilterArgumentResolver implements HandlerMethodArgumentR...
method supportsParameter (line 51) | @Override
method resolveArgument (line 65) | @Override
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/FileAutoConfiguration.java
class FileAutoConfiguration (line 33) | @Import({ LocalFileAutoConfiguration.class, OssAutoConfiguration.class })
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/core/FileProperties.java
class FileProperties (line 33) | @Data
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/core/FileTemplate.java
type FileTemplate (line 14) | public interface FileTemplate extends InitializingBean {
method createBucket (line 20) | void createBucket(String bucketName);
method getAllBuckets (line 28) | List<? extends Object> getAllBuckets();
method removeBucket (line 34) | void removeBucket(String bucketName);
method putObject (line 44) | void putObject(String bucketName, String objectName, InputStream strea...
method putObject (line 54) | void putObject(String bucketName, String objectName, InputStream strea...
method getObject (line 62) | Object getObject(String bucketName, String objectName);
method removeObject (line 64) | void removeObject(String bucketName, String objectName) throws Exception;
method afterPropertiesSet (line 69) | @Override
method getAllObjectsByPrefix (line 82) | List<? extends Object> getAllObjectsByPrefix(String bucketName, String...
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileAutoConfiguration.java
class LocalFileAutoConfiguration (line 33) | @AllArgsConstructor
method localFileTemplate (line 38) | @Bean
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileProperties.java
class LocalFileProperties (line 29) | @Data
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileTemplate.java
class LocalFileTemplate (line 20) | @RequiredArgsConstructor
method createBucket (line 43) | @Override
method getAllBuckets (line 54) | @Override
method removeBucket (line 66) | @Override
method putObject (line 78) | @Override
method getObject (line 97) | @Override
method removeObject (line 110) | @Override
method putObject (line 123) | @Override
method getAllObjectsByPrefix (line 137) | @Override
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/OssAutoConfiguration.java
class OssAutoConfiguration (line 37) | @AllArgsConstructor
method ossTemplate (line 48) | @Bean
method ossEndpoint (line 63) | @Bean
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/OssProperties.java
class OssProperties (line 33) | @Data
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/http/OssEndpoint.java
class OssEndpoint (line 43) | @RestController
method createBucket (line 57) | @SneakyThrows
method getBuckets (line 71) | @SneakyThrows
method getBucket (line 83) | @SneakyThrows
method deleteBucket (line 94) | @SneakyThrows
method createObject (line 108) | @SneakyThrows
method createObject (line 132) | @SneakyThrows
method filterObject (line 155) | @SneakyThrows
method getObject (line 170) | @SneakyThrows
method deleteObject (line 189) | @SneakyThrows
FILE: pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/service/OssTemplate.java
class OssTemplate (line 56) | @RequiredArgsConstructor
method createBucket (line 79) | @SneakyThrows
method doesBucketExist (line 93) | private boolean doesBucketExist(String bucketName) {
method getAllBuckets (line 110) | @SneakyThrows
method getBucket (line 123) | @SneakyThrows
method removeBucket (line 140) | @SneakyThrows
method getAllObjectsByPrefix (line 155) | @SneakyThrows
method getObjectURL (line 181) | @SneakyThrows
method getObject (line 202) | @SneakyThrows
method putObject (line 215) | public void putObject(String bucketName, String objectName, InputStrea...
method putObject (line 227) | public void putObject(String bucketName, String objectName, InputStrea...
method putObject (line 250) | public PutObjectResponse putObject(String bucketName, String objectNam...
method getObjectInfo (line 271) | public HeadObjectResponse getObjectInfo(String bucketName, String obje...
method removeObject (line 289) | public void removeObject(String bucketName, String objectName) throws ...
method afterPropertiesSet (line 302) | @Override
FILE: pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java
class SeataAutoConfiguration (line 14) | @PropertySource(value = "classpath:seata-config.yml", factory = YamlProp...
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PermissionService.java
class PermissionService (line 35) | public class PermissionService {
method hasPermission (line 42) | public boolean hasPermission(String... permissions) {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PermitAllUrlProperties.java
class PermitAllUrlProperties (line 49) | @ConfigurationProperties(prefix = "security.oauth2.ignore")
method afterPropertiesSet (line 63) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigBearerTokenExtractor.java
class PigBearerTokenExtractor (line 37) | public class PigBearerTokenExtractor implements BearerTokenResolver {
method PigBearerTokenExtractor (line 52) | public PigBearerTokenExtractor(PermitAllUrlProperties urlProperties) {
method resolve (line 56) | @Override
method resolveFromAuthorizationHeader (line 83) | private String resolveFromAuthorizationHeader(HttpServletRequest reque...
method resolveFromRequestParameters (line 96) | private static String resolveFromRequestParameters(HttpServletRequest ...
method isParameterTokenSupportedForRequest (line 108) | private boolean isParameterTokenSupportedForRequest(final HttpServletR...
method isParameterTokenEnabledForRequest (line 114) | private boolean isParameterTokenEnabledForRequest(final HttpServletReq...
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigBootCorsProperties.java
class PigBootCorsProperties (line 15) | @Data
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigClientCredentialsOAuth2AuthenticatedPrincipal.java
class PigClientCredentialsOAuth2AuthenticatedPrincipal (line 16) | @RequiredArgsConstructor
method getAttributes (line 29) | @Override
method getAuthorities (line 38) | @Override
method getName (line 47) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigCustomOAuth2AccessTokenResponseHttpMessageConverter.java
class PigCustomOAuth2AccessTokenResponseHttpMessageConverter (line 24) | public class PigCustomOAuth2AccessTokenResponseHttpMessageConverter
method writeInternal (line 44) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigCustomOpaqueTokenIntrospector.java
class PigCustomOpaqueTokenIntrospector (line 35) | @Slf4j
method introspect (line 51) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigResourceServerAutoConfiguration.java
class PigResourceServerAutoConfiguration (line 36) | @RequiredArgsConstructor
method permissionService (line 44) | @Bean("pms")
method pigBearerTokenExtractor (line 54) | @Bean
method resourceAuthExceptionEntryPoint (line 65) | @Bean
method opaqueTokenIntrospector (line 76) | @Bean
method prePostTemplateDefaults (line 85) | @Bean
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigResourceServerConfiguration.java
class PigResourceServerConfiguration (line 39) | @EnableWebSecurity
method resourceServer (line 75) | @Bean
method corsConfigurationSource (line 111) | private UrlBasedCorsConfigurationSource corsConfigurationSource() {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigSecurityInnerAspect.java
class PigSecurityInnerAspect (line 39) | @Slf4j
method around (line 52) | @SneakyThrows
method getOrder (line 67) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigSecurityMessageSourceConfiguration.java
class PigSecurityMessageSourceConfiguration (line 34) | @ConditionalOnWebApplication(type = SERVLET)
method securityMessageSource (line 41) | @Bean
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/ResourceAuthExceptionEntryPoint.java
class ResourceAuthExceptionEntryPoint (line 42) | @RequiredArgsConstructor
method commence (line 56) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/feign/PigFeignClientConfiguration.java
class PigFeignClientConfiguration (line 29) | public class PigFeignClientConfiguration {
method oauthRequestInterceptor (line 36) | @Bean
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/feign/PigOAuthRequestInterceptor.java
class PigOAuthRequestInterceptor (line 27) | @RequiredArgsConstructor
method apply (line 43) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigAppUserDetailsServiceImpl.java
class PigAppUserDetailsServiceImpl (line 39) | @RequiredArgsConstructor
method loadUserByUsername (line 52) | @Override
method loadUserByUser (line 76) | @Override
method support (line 86) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRedisOAuth2AuthorizationConsentService.java
class PigRedisOAuth2AuthorizationConsentService (line 17) | @RequiredArgsConstructor
method save (line 27) | @Override
method remove (line 39) | @Override
method findById (line 51) | @Override
method buildKey (line 64) | private static String buildKey(String registeredClientId, String princ...
method buildKey (line 73) | private static String buildKey(OAuth2AuthorizationConsent authorizatio...
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRedisOAuth2AuthorizationService.java
class PigRedisOAuth2AuthorizationService (line 27) | @RequiredArgsConstructor
method save (line 39) | @Override
method remove (line 78) | @Override
method findById (line 113) | @Override
method findByToken (line 126) | @Override
method buildKey (line 140) | private String buildKey(String type, String id) {
method isState (line 149) | private static boolean isState(OAuth2Authorization authorization) {
method isCode (line 158) | private static boolean isCode(OAuth2Authorization authorization) {
method isRefreshToken (line 169) | private static boolean isRefreshToken(OAuth2Authorization authorizatio...
method isAccessToken (line 178) | private static boolean isAccessToken(OAuth2Authorization authorization) {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java
class PigRemoteRegisteredClientRepository (line 33) | @RequiredArgsConstructor
method save (line 59) | @Override
method findById (line 68) | @Override
method findByClientId (line 79) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUser.java
class PigUser (line 38) | public class PigUser extends User implements OAuth2AuthenticatedPrincipal {
method PigUser (line 68) | public PigUser(Long id, Long deptId, String username, String password,...
method getAttributes (line 81) | @Override
method getName (line 90) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUserDetailsService.java
type PigUserDetailsService (line 26) | public interface PigUserDetailsService extends UserDetailsService, Order...
method support (line 33) | default boolean support(String clientId, String grantType) {
method getOrder (line 41) | default int getOrder() {
method getUserDetails (line 51) | default UserDetails getUserDetails(R<UserInfo> result) {
method loadUserByUser (line 74) | default UserDetails loadUserByUser(PigUser pigUser) {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUserDetailsServiceImpl.java
class PigUserDetailsServiceImpl (line 40) | @Primary
method loadUserByUsername (line 54) | @Override
method getOrder (line 72) | @Override
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuth2EndpointUtils.java
class OAuth2EndpointUtils (line 28) | @UtilityClass
method getParameters (line 38) | public MultiValueMap<String, String> getParameters(HttpServletRequest ...
method matchesPkceTokenRequest (line 54) | public boolean matchesPkceTokenRequest(HttpServletRequest request) {
method throwError (line 68) | public void throwError(String errorCode, String parameterName, String ...
method sendAccessTokenResponse (line 79) | public OAuth2AccessTokenResponse sendAccessTokenResponse(OAuth2Authori...
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuth2ErrorCodesExpand.java
type OAuth2ErrorCodesExpand (line 9) | public interface OAuth2ErrorCodesExpand {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuthClientException.java
class OAuthClientException (line 14) | public class OAuthClientException extends OAuth2AuthenticationException {
method OAuthClientException (line 23) | public OAuthClientException(String msg) {
method OAuthClientException (line 32) | public OAuthClientException(String msg, Throwable cause) {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/ScopeException.java
class ScopeException (line 14) | public class ScopeException extends OAuth2AuthenticationException {
method ScopeException (line 23) | public ScopeException(String msg) {
method ScopeException (line 32) | public ScopeException(String msg, Throwable cause) {
FILE: pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/SecurityUtils.java
class SecurityUtils (line 37) | @UtilityClass
method getAuthentication (line 44) | public Authentication getAuthentication() {
method getUser (line 53) | public PigUser getUser(Authentication authentication) {
method getUser (line 65) | public PigUser getUser() {
method getRoles (line 77) | public List<Long> getRoles() {
FILE: pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIDefinition.java
class OpenAPIDefinition (line 49) | @RequiredArgsConstructor
method securityScheme (line 66) | private SecurityScheme securityScheme(SwaggerProperties swaggerPropert...
method afterPropertiesSet (line 82) | @Override
method setApplicationContext (line 101) | @Override
FILE: pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIDefinitionImportSelector.java
class OpenAPIDefinitionImportSelector (line 18) | public class OpenAPIDefinitionImportSelector implements ImportBeanDefini...
method registerBeanDefinitions (line 25) | @Override
FILE: pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIMetadataConfiguration.java
class OpenAPIMetadataConfiguration (line 16) | public class OpenAPIMetadataConfiguration implements InitializingBean, A...
method afterPropertiesSet (line 30) | @Override
method setApplicationContext (line 48) | @Override
FILE: pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/support/SwaggerProperties.java
class SwaggerProperties (line 32) | @Data
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/LocalMessageDistributorConfiguration.java
class LocalMessageDistributorConfiguration (line 15) | @ConditionalOnProperty(prefix = WebSocketProperties.PREFIX, name = "mess...
method messageDistributor (line 24) | @Bean
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/MessageDistributorTypeConstants.java
class MessageDistributorTypeConstants (line 11) | public final class MessageDistributorTypeConstants {
method MessageDistributorTypeConstants (line 13) | private MessageDistributorTypeConstants() {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/RedisMessageDistributorConfiguration.java
class RedisMessageDistributorConfiguration (line 29) | @ConditionalOnClass(StringRedisTemplate.class)
method messageDistributor (line 40) | @Bean
method redisWebsocketMessageListener (line 51) | @Bean
method redisMessageListenerContainer (line 63) | @Bean
class RedisMessageListenerRegisterConfiguration (line 78) | @Configuration(proxyBeanMethods = false)
method addMessageListener (line 90) | @PostConstruct
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/WebSocketAutoConfiguration.java
class WebSocketAutoConfiguration (line 25) | @Import(WebSocketHandlerConfig.class)
method webSocketConfigurer (line 40) | @Bean
method initJsonMessageHandlerHolder (line 56) | @PostConstruct
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/WebSocketHandlerConfig.java
class WebSocketHandlerConfig (line 31) | @RequiredArgsConstructor
method sessionKeyGenerator (line 41) | @Bean
method handshakeInterceptor (line 51) | @Bean
method planTextMessageHandler (line 60) | @Bean
method webSocketHandler1 (line 71) | @Bean
method webSocketHandler2 (line 88) | @Bean
method pingJsonMessageHandler (line 105) | @Bean
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/WebSocketMessageSender.java
class WebSocketMessageSender (line 22) | @Slf4j
method broadcast (line 29) | public static void broadcast(String message) {
method send (line 42) | public static boolean send(Object sessionKey, String message) {
method send (line 58) | public static void send(WebSocketSession session, JsonWebSocketMessage...
method send (line 68) | public static boolean send(WebSocketSession session, String message) {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/WebSocketProperties.java
class WebSocketProperties (line 14) | @Data
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/custom/PigxSessionKeyGenerator.java
class PigxSessionKeyGenerator (line 18) | @Configuration
method sessionKey (line 30) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/custom/UserAttributeHandshakeInterceptor.java
class UserAttributeHandshakeInterceptor (line 22) | public class UserAttributeHandshakeInterceptor implements HandshakeInter...
method beforeHandshake (line 36) | @Override
method afterHandshake (line 55) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/LocalMessageDistributor.java
class LocalMessageDistributor (line 12) | public class LocalMessageDistributor implements MessageDistributor, Mess...
method distribute (line 18) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/MessageDO.java
class MessageDO (line 20) | @Data
method broadcastMessage (line 54) | public static MessageDO broadcastMessage(String text) {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/MessageDistributor.java
type MessageDistributor (line 12) | public interface MessageDistributor {
method distribute (line 21) | void distribute(MessageDO messageDO);
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/MessageSender.java
type MessageSender (line 17) | public interface MessageSender {
method doSend (line 26) | default void doSend(MessageDO messageDO) {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/RedisMessageDistributor.java
class RedisMessageDistributor (line 19) | @RequiredArgsConstructor
method distribute (line 32) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/distribute/RedisWebsocketMessageListener.java
class RedisWebsocketMessageListener (line 20) | @Slf4j
method onMessage (line 39) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/handler/CustomPlanTextMessageHandler.java
class CustomPlanTextMessageHandler (line 15) | @Slf4j
method handle (line 26) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/handler/CustomWebSocketHandler.java
class CustomWebSocketHandler (line 25) | @Slf4j
method CustomWebSocketHandler (line 40) | public CustomWebSocketHandler() {
method CustomWebSocketHandler (line 47) | public CustomWebSocketHandler(PlanTextMessageHandler planTextMessageHa...
method handleTextMessage (line 61) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/handler/JsonMessageHandler.java
type JsonMessageHandler (line 15) | public interface JsonMessageHandler<T extends JsonWebSocketMessage> {
method handle (line 22) | void handle(WebSocketSession session, T message);
method type (line 31) | String type();
method getMessageClass (line 40) | Class<T> getMessageClass();
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/handler/PingJsonMessageHandler.java
class PingJsonMessageHandler (line 19) | public class PingJsonMessageHandler implements JsonMessageHandler<PingJs...
method handle (line 29) | @Override
method type (line 39) | @Override
method getMessageClass (line 48) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/handler/PlanTextMessageHandler.java
type PlanTextMessageHandler (line 15) | public interface PlanTextMessageHandler {
method handle (line 22) | void handle(WebSocketSession session, String message);
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/holder/JsonMessageHandlerHolder.java
class JsonMessageHandlerHolder (line 17) | public final class JsonMessageHandlerHolder {
method JsonMessageHandlerHolder (line 19) | private JsonMessageHandlerHolder() {
method getHandler (line 29) | public static JsonMessageHandler getHandler(String type) {
method addHandler (line 40) | public static void addHandler(JsonMessageHandler jsonMessageHandler) {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/holder/MapSessionWebSocketHandlerDecorator.java
class MapSessionWebSocketHandlerDecorator (line 19) | public class MapSessionWebSocketHandlerDecorator extends WebSocketHandle...
method MapSessionWebSocketHandlerDecorator (line 31) | public MapSessionWebSocketHandlerDecorator(WebSocketHandler delegate, ...
method afterConnectionEstablished (line 48) | @Override
method afterConnectionClosed (line 64) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/holder/SessionKeyGenerator.java
type SessionKeyGenerator (line 14) | public interface SessionKeyGenerator {
method sessionKey (line 21) | Object sessionKey(WebSocketSession webSocketSession);
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/holder/WebSocketSessionHolder.java
class WebSocketSessionHolder (line 19) | public final class WebSocketSessionHolder {
method WebSocketSessionHolder (line 21) | private WebSocketSessionHolder() {
method addSession (line 31) | public static void addSession(Object sessionKey, WebSocketSession sess...
method removeSession (line 39) | public static void removeSession(Object sessionKey) {
method getSession (line 48) | public static WebSocketSession getSession(Object sessionKey) {
method getSessions (line 56) | public static Collection<WebSocketSession> getSessions() {
method getSessionKeys (line 64) | public static Set<String> getSessionKeys() {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/message/AbstractJsonWebSocketMessage.java
class AbstractJsonWebSocketMessage (line 12) | public abstract class AbstractJsonWebSocketMessage implements JsonWebSoc...
method AbstractJsonWebSocketMessage (line 25) | protected AbstractJsonWebSocketMessage(String type) {
method getType (line 33) | @Override
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/message/JsonWebSocketMessage.java
type JsonWebSocketMessage (line 12) | public interface JsonWebSocketMessage {
method getType (line 21) | String getType();
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/message/PingJsonWebSocketMessage.java
class PingJsonWebSocketMessage (line 12) | public class PingJsonWebSocketMessage extends AbstractJsonWebSocketMessa...
method PingJsonWebSocketMessage (line 17) | public PingJsonWebSocketMessage() {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/message/PongJsonWebSocketMessage.java
class PongJsonWebSocketMessage (line 12) | public class PongJsonWebSocketMessage extends AbstractJsonWebSocketMessa...
method PongJsonWebSocketMessage (line 17) | public PongJsonWebSocketMessage() {
FILE: pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/message/WebSocketMessageTypeEnum.java
type WebSocketMessageTypeEnum (line 15) | @Getter
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/PigXssAutoConfiguration.java
class PigXssAutoConfiguration (line 41) | @AutoConfiguration
method xssCleaner (line 56) | @Bean
method formXssClean (line 68) | @Bean
method xssJacksonCustomizer (line 79) | @Bean
method addInterceptors (line 89) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/config/PigXssProperties.java
class PigXssProperties (line 33) | @Getter
type Mode (line 76) | public enum Mode {
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/DefaultXssCleaner.java
class DefaultXssCleaner (line 34) | public class DefaultXssCleaner implements XssCleaner {
method DefaultXssCleaner (line 38) | public DefaultXssCleaner(PigXssProperties properties) {
method getOutputSettings (line 47) | private static Document.OutputSettings getOutputSettings(PigXssPropert...
method clean (line 62) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/FormXssClean.java
class FormXssClean (line 39) | @ControllerAdvice
method initBinder (line 52) | @InitBinder
class StringPropertiesEditor (line 64) | @Slf4j
method getAsText (line 76) | @Override
method setAsText (line 87) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/FromXssException.java
class FromXssException (line 31) | @Getter
method FromXssException (line 44) | public FromXssException(String input, String message) {
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/JacksonXssClean.java
class JacksonXssClean (line 34) | @Slf4j
method clean (line 49) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/JacksonXssException.java
class JacksonXssException (line 30) | @Getter
method JacksonXssException (line 43) | public JacksonXssException(String input, String message) {
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssCleanDeserializer.java
class XssCleanDeserializer (line 32) | @Slf4j
method clean (line 42) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssCleanDeserializerBase.java
class XssCleanDeserializerBase (line 33) | public abstract class XssCleanDeserializerBase extends JsonDeserializer<...
method deserialize (line 43) | @Override
method clean (line 67) | public abstract String clean(String name, String text) throws IOExcept...
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssCleanInterceptor.java
class XssCleanInterceptor (line 33) | @RequiredArgsConstructor
method preHandle (line 49) | @Override
method afterCompletion (line 80) | @Override
method afterConcurrentHandlingStarted (line 93) | @Override
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssCleaner.java
type XssCleaner (line 27) | public interface XssCleaner {
method clean (line 34) | default String clean(String html) {
method clean (line 44) | String clean(String html, XssType type);
method isValid (line 51) | default boolean isValid(String html) {
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssException.java
type XssException (line 24) | public interface XssException {
method getInput (line 30) | String getInput();
method getMessage (line 36) | String getMessage();
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssHolder.java
class XssHolder (line 24) | public class XssHolder {
method isEnabled (line 34) | public static boolean isEnabled() {
method setEnable (line 41) | static void setEnable() {
method setXssCleanIgnore (line 49) | public static void setXssCleanIgnore(XssCleanIgnore xssCleanIgnore) {
method getXssCleanIgnore (line 57) | public static XssCleanIgnore getXssCleanIgnore() {
method remove (line 64) | public static void remove() {
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/core/XssType.java
type XssType (line 22) | public enum XssType {
method getXssException (line 28) | @Override
method getXssException (line 38) | @Override
method getXssException (line 50) | public abstract RuntimeException getXssException(String input, String ...
FILE: pig-common/pig-common-xss/src/main/java/com/pig4cloud/pig/common/xss/utils/XssUtil.java
class XssUtil (line 36) | public class XssUtil {
method trim (line 45) | public static String trim(String text, boolean trim) {
method clean (line 54) | public static String clean(String html) {
class HtmlSafeList (line 66) | public static class HtmlSafeList extends org.jsoup.safety.Safelist {
method HtmlSafeList (line 70) | public HtmlSafeList() {
method isSafeAttribute (line 106) | @Override
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/PigGatewayApplication.java
class PigGatewayApplication (line 29) | @EnableDiscoveryClient
method main (line 33) | public static void main(String[] args) {
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/config/GatewayConfiguration.java
class GatewayConfiguration (line 15) | @Configuration(proxyBeanMethods = false)
method pigRequestGlobalFilter (line 22) | @Bean
method globalExceptionHandler (line 32) | @Bean
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/config/RateLimiterConfiguration.java
class RateLimiterConfiguration (line 32) | @Configuration(proxyBeanMethods = false)
method remoteAddrKeyResolver (line 42) | @Bean
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/config/SpringDocConfiguration.java
class SpringDocConfiguration (line 25) | @RequiredArgsConstructor
method afterPropertiesSet (line 37) | @Override
class SwaggerDocRegister (line 50) | @RequiredArgsConstructor
method onEvent (line 61) | @Override
method subscribeType (line 82) | @Override
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/filter/PigRequestGlobalFilter.java
class PigRequestGlobalFilter (line 44) | public class PigRequestGlobalFilter implements GlobalFilter, Ordered {
method filter (line 52) | @Override
method getOrder (line 76) | @Override
FILE: pig-gateway/src/main/java/com/pig4cloud/pig/gateway/handler/GlobalExceptionHandler.java
class GlobalExceptionHandler (line 39) | @Slf4j
method handle (line 54) | @Override
FILE: pig-register/src/main/java/com/alibaba/nacos/bootstrap/PigNacosApplication.java
class PigNacosApplication (line 40) | public class PigNacosApplication {
method main (line 47) | public static void main(String[] args) {
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/dto/RegisterUserDTO.java
class RegisterUserDTO (line 11) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/dto/SysLogDTO.java
class SysLogDTO (line 15) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/dto/UserDTO.java
class UserDTO (line 35) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/dto/UserInfo.java
class UserInfo (line 39) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysDept.java
class SysDept (line 41) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysDeptRelation.java
class SysDeptRelation (line 35) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysDict.java
class SysDict (line 33) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysDictItem.java
class SysDictItem (line 34) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysFile.java
class SysFile (line 36) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysLog.java
class SysLog (line 40) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysMenu.java
class SysMenu (line 41) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysOauthClientDetails.java
class SysOauthClientDetails (line 39) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysPost.java
class SysPost (line 36) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysPublicParam.java
class SysPublicParam (line 34) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysRole.java
class SysRole (line 39) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysRoleMenu.java
class SysRoleMenu (line 35) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysUser.java
class SysUser (line 38) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysUserPost.java
class SysUserPost (line 31) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/entity/SysUserRole.java
class SysUserRole (line 35) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteClientDetailsService.java
type RemoteClientDetailsService (line 36) | @FeignClient(contextId = "remoteClientDetailsService", value = ServiceNa...
method getClientDetailsById (line 44) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteDictService.java
type RemoteDictService (line 19) | @FeignClient(contextId = "remoteDictService", value = ServiceNameConstan...
method getDictByType (line 27) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteLogService.java
type RemoteLogService (line 36) | @FeignClient(contextId = "remoteLogService", value = ServiceNameConstant...
method saveLog (line 44) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteParamService.java
type RemoteParamService (line 20) | @FeignClient(contextId = "remoteParamService", value = ServiceNameConsta...
method getByKey (line 28) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteTokenService.java
type RemoteTokenService (line 35) | @FeignClient(contextId = "remoteTokenService", value = ServiceNameConsta...
method getTokenPage (line 43) | @NoToken
method removeTokenById (line 52) | @NoToken
method queryToken (line 61) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/feign/RemoteUserService.java
type RemoteUserService (line 37) | @FeignClient(contextId = "remoteUserService", value = ServiceNameConstan...
method info (line 45) | @NoToken
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/util/DictResolver.java
class DictResolver (line 21) | @UtilityClass
method getDictItemsByType (line 29) | public List<SysDictItem> getDictItemsByType(String type) {
method getDictItemLabel (line 43) | public String getDictItemLabel(String type, String itemValue) {
method getDictItemValue (line 57) | public String getDictItemValue(String type, String itemLabel) {
method getDictItemByItemValue (line 71) | public SysDictItem getDictItemByItemValue(String type, String itemValu...
method getDictItemByItemLabel (line 89) | public SysDictItem getDictItemByItemLabel(String type, String itemLabe...
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/util/ParamResolver.java
class ParamResolver (line 15) | @UtilityClass
method getLong (line 24) | public Long getLong(String key, Long... defaultVal) {
method getStr (line 34) | public String getStr(String key, String... defaultVal) {
method checkAndGet (line 47) | private <T> T checkAndGet(String key, Class<T> clazz, T... defaultVal) {
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/DeptExcelVo.java
class DeptExcelVo (line 15) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/PostExcelVO.java
class PostExcelVO (line 20) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/PreLogVO.java
class PreLogVO (line 27) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/RoleExcelVO.java
class RoleExcelVO (line 19) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/RoleVO.java
class RoleVO (line 27) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/TokenVo.java
class TokenVo (line 11) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/UserExcelVO.java
class UserExcelVO (line 20) | @Data
FILE: pig-upms/pig-upms-api/src/main/java/com/pig4cloud/pig/admin/api/vo/UserVO.java
class UserVO (line 37) | @Data
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/PigAdminApplication.java
class PigAdminApplication (line 35) | @EnablePigDoc(value = "admin")
method main (line 42) | public static void main(String[] args) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysClientController.java
class SysClientController (line 52) | @RestController
method getByClientId (line 66) | @GetMapping("/{clientId}")
method getClientPage (line 80) | @GetMapping("/page")
method saveClient (line 96) | @SysLog("添加终端")
method removeById (line 109) | @SysLog("删除终端")
method updateClient (line 123) | @SysLog("编辑终端")
method getClientDetailsById (line 136) | @Inner
method syncClient (line 148) | @SysLog("同步终端")
method exportClients (line 160) | @ResponseExcel
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysDeptController.java
class SysDeptController (line 48) | @RestController
method getById (line 62) | @GetMapping("/{id}")
method listDepts (line 72) | @GetMapping("/list")
method getDeptTree (line 83) | @GetMapping(value = "/tree")
method saveDept (line 94) | @SysLog("添加部门")
method removeById (line 107) | @SysLog("删除部门")
method updateDept (line 120) | @SysLog("编辑部门")
method getDescendantList (line 134) | @GetMapping(value = "/getDescendantList/{deptId}")
method exportDepts (line 144) | @ResponseExcel
method importDept (line 157) | @PostMapping("import")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysDictController.java
class SysDictController (line 56) | @RestController
method getById (line 72) | @GetMapping("/details/{id}")
method getDetails (line 83) | @GetMapping("/details")
method getDictPage (line 95) | @GetMapping("/page")
method saveDict (line 109) | @SysLog("添加字典")
method removeById (line 123) | @SysLog("删除字典")
method updateDict (line 137) | @PutMapping
method listDicts (line 150) | @GetMapping("/list")
method getDictItemPage (line 165) | @GetMapping("/item/page")
method getDictItemById (line 176) | @GetMapping("/item/details/{id}")
method getDictItemDetails (line 187) | @GetMapping("/item/details")
method saveDictItem (line 198) | @SysLog("新增字典项")
method updateDictItem (line 211) | @SysLog("修改字典项")
method removeDictItemById (line 223) | @SysLog("通过id删除字典项")
method syncDict (line 234) | @SysLog("同步字典缓存")
method exportDictItems (line 246) | @ResponseExcel
method getDictByType (line 258) | @GetMapping("/type/{type}")
method getRemoteDictByType (line 270) | @Inner
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysFileController.java
class SysFileController (line 51) | @RestController
method getFilePage (line 66) | @GetMapping("/page")
method removeById (line 79) | @SysLog("删除文件管理")
method upload (line 95) | @PostMapping(value = "/upload")
method file (line 107) | @Inner(false)
method localFile (line 120) | @SneakyThrows
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysLogController.java
class SysLogController (line 48) | @RestController
method getLogPage (line 63) | @GetMapping("/page")
method removeByIds (line 74) | @DeleteMapping
method saveLog (line 86) | @Inner
method exportLogs (line 98) | @ResponseExcel
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysMenuController.java
class SysMenuController (line 54) | @RestController
method getUserMenu (line 69) | @GetMapping
method getMenuTree (line 85) | @GetMapping(value = "/tree")
method getRoleTree (line 96) | @GetMapping("/tree/{roleId}")
method getById (line 107) | @GetMapping("/{id}")
method saveMenu (line 118) | @SysLog("新增菜单")
method removeById (line 132) | @SysLog("根据菜单ID删除菜单")
method updateMenu (line 145) | @SysLog("更新菜单")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysMobileController.java
class SysMobileController (line 39) | @RestController
method sendSmsCode (line 53) | @Inner(value = false)
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysPostController.java
class SysPostController (line 49) | @RestController
method listPosts (line 62) | @GetMapping("/list")
method getPostPage (line 74) | @GetMapping("/page")
method getById (line 87) | @HasPermission("sys_post_view")
method getDetails (line 99) | @GetMapping("/details")
method savePost (line 111) | @PostMapping
method updatePost (line 124) | @PutMapping
method removeById (line 137) | @DeleteMapping
method exportPosts (line 149) | @ResponseExcel
method importRole (line 163) | @PostMapping("/import")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysPublicParamController.java
class SysPublicParamController (line 47) | @RestController
method publicKey (line 61) | @Inner(value = false)
method getParamPage (line 74) | @GetMapping("/page")
method getById (line 93) | @Operation(description = "通过id查询公共参数", summary = "通过id查询公共参数")
method getDetail (line 104) | @GetMapping("/details")
method saveParam (line 115) | @PostMapping
method updateParam (line 128) | @PutMapping
method removeById (line 141) | @DeleteMapping
method exportParams (line 153) | @ResponseExcel
method syncParam (line 165) | @SysLog("同步参数")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysRegisterController.java
class SysRegisterController (line 24) | @RestController
method registerUser (line 38) | @Inner(value = false)
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysRoleController.java
class SysRoleController (line 55) | @RestController
method getById (line 69) | @GetMapping("/details/{id}")
method getDetails (line 80) | @GetMapping("/details")
method saveRole (line 91) | @SysLog("添加角色")
method updateRole (line 105) | @SysLog("修改角色信息")
method removeById (line 119) | @SysLog("删除角色")
method listRoles (line 132) | @GetMapping("/list")
method getRolePage (line 144) | @GetMapping("/page")
method saveRoleMenus (line 156) | @SysLog("更新角色菜单")
method getRoleList (line 169) | @PostMapping("/getRoleList")
method exportRoles (line 179) | @ResponseExcel
method importRole (line 193) | @PostMapping("/import")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysSystemInfoController.java
class SysSystemInfoController (line 26) | @RestController
method cache (line 37) | @GetMapping("/cache")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysTokenController.java
class SysTokenController (line 39) | @RestController
method getTokenPage (line 53) | @PostMapping("/page")
method removeById (line 65) | @SysLog("删除用户token")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/controller/SysUserController.java
class SysUserController (line 55) | @RestController
method info (line 69) | @Inner
method info (line 80) | @GetMapping(value = { "/info" })
method user (line 99) | @GetMapping("/details/{id}")
method getDetails (line 110) | @Inner(value = false)
method userDel (line 123) | @SysLog("删除用户信息")
method saveUser (line 136) | @SysLog("添加用户")
method updateUser (line 149) | @SysLog("更新用户信息")
method getUserPage (line 163) | @GetMapping("/page")
method updateUserInfo (line 174) | @SysLog("修改个人信息")
method exportUsers (line 186) | @ResponseExcel
method importUser (line 200) | @PostMapping("/import")
method lockUser (line 212) | @PutMapping("/lock/{username}")
method password (line 223) | @PutMapping("/password")
method check (line 236) | @PostMapping("/check")
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysDeptMapper.java
type SysDeptMapper (line 32) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysDictItemMapper.java
type SysDictItemMapper (line 29) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysDictMapper.java
type SysDictMapper (line 32) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysFileMapper.java
type SysFileMapper (line 30) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysLogMapper.java
type SysLogMapper (line 31) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysMenuMapper.java
type SysMenuMapper (line 36) | @Mapper
method listMenusByRoleId (line 44) | List<SysMenu> listMenusByRoleId(Long roleId);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysOauthClientDetailsMapper.java
type SysOauthClientDetailsMapper (line 32) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysPostMapper.java
type SysPostMapper (line 32) | @Mapper
method listPostsByUserId (line 40) | List<SysPost> listPostsByUserId(Long userId);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysPublicParamMapper.java
type SysPublicParamMapper (line 29) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysRoleMapper.java
type SysRoleMapper (line 36) | @Mapper
method listRolesByUserId (line 44) | List<SysRole> listRolesByUserId(Long userId);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysRoleMenuMapper.java
type SysRoleMenuMapper (line 32) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysUserMapper.java
type SysUserMapper (line 41) | @Mapper
method getUser (line 49) | UserVO getUser(@Param("query") UserDTO userDTO);
method getUsersPage (line 57) | IPage<UserVO> getUsersPage(Page page, @Param("query") UserDTO userDTO);
method listUsers (line 64) | List<UserVO> listUsers(@Param("query") UserDTO userDTO);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysUserPostMapper.java
type SysUserPostMapper (line 31) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/mapper/SysUserRoleMapper.java
type SysUserRoleMapper (line 34) | @Mapper
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysDeptService.java
type SysDeptService (line 37) | public interface SysDeptService extends IService<SysDept> {
method getDeptTree (line 44) | List<Tree<Long>> getDeptTree(String deptName);
method removeDeptById (line 51) | Boolean removeDeptById(Long id);
method exportDepts (line 57) | List<DeptExcelVo> exportDepts();
method importDept (line 65) | R importDept(List<DeptExcelVo> excelVOList, BindingResult bindingResult);
method listDescendants (line 72) | List<SysDept> listDescendants(Long deptId);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysDictItemService.java
type SysDictItemService (line 29) | public interface SysDictItemService extends IService<SysDictItem> {
method removeDictItem (line 36) | R removeDictItem(Long id);
method updateDictItem (line 43) | R updateDictItem(SysDictItem item);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysDictService.java
type SysDictService (line 29) | public interface SysDictService extends IService<SysDict> {
method removeDictByIds (line 36) | R removeDictByIds(Long[] ids);
method updateDict (line 43) | R updateDict(SysDict sysDict);
method syncDictCache (line 49) | R syncDictCache();
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysFileService.java
type SysFileService (line 35) | public interface SysFileService extends IService<SysFile> {
method uploadFile (line 42) | R uploadFile(MultipartFile file);
method getFile (line 50) | void getFile(String bucket, String fileName, HttpServletResponse respo...
method removeFile (line 57) | Boolean removeFile(Long id);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysLogService.java
type SysLogService (line 37) | public interface SysLogService extends IService<SysLog> {
method getLogPage (line 45) | Page getLogPage(Page page, SysLogDTO sysLog);
method saveLog (line 52) | Boolean saveLog(SysLog sysLog);
method listLogs (line 59) | List<SysLog> listLogs(SysLogDTO sysLog);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysMenuService.java
type SysMenuService (line 39) | public interface SysMenuService extends IService<SysMenu> {
method findMenuByRoleId (line 46) | List<SysMenu> findMenuByRoleId(Long roleId);
method removeMenuById (line 53) | R removeMenuById(Long id);
method updateMenuById (line 60) | Boolean updateMenuById(SysMenu sysMenu);
method getMenuTree (line 69) | List<Tree<Long>> getMenuTree(Long parentId, String menuName, String ty...
method filterMenu (line 78) | List<Tree<Long>> filterMenu(Set<SysMenu> all, String type, Long parent...
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysMobileService.java
type SysMobileService (line 28) | public interface SysMobileService {
method sendSmsCode (line 35) | R<Boolean> sendSmsCode(String mobile);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysOauthClientDetailsService.java
type SysOauthClientDetailsService (line 33) | public interface SysOauthClientDetailsService extends IService<SysOauthC...
method updateClientById (line 40) | Boolean updateClientById(SysOauthClientDetails clientDetails);
method saveClient (line 47) | Boolean saveClient(SysOauthClientDetails clientDetails);
method getClientPage (line 55) | Page getClientPage(Page page, SysOauthClientDetails query);
method syncClientCache (line 61) | R syncClientCache();
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysPostService.java
type SysPostService (line 34) | public interface SysPostService extends IService<SysPost> {
method listPosts (line 40) | List<PostExcelVO> listPosts();
method importPost (line 48) | R importPost(List<PostExcelVO> excelVOList, BindingResult bindingResult);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysPublicParamService.java
type SysPublicParamService (line 30) | public interface SysPublicParamService extends IService<SysPublicParam> {
method getParamValue (line 37) | String getParamValue(String publicKey);
method updateParam (line 44) | R updateParam(SysPublicParam sysPublicParam);
method removeParamByIds (line 51) | R removeParamByIds(Long[] publicIds);
method syncParamCache (line 57) | R syncParamCache();
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysRoleMenuService.java
type SysRoleMenuService (line 31) | public interface SysRoleMenuService extends IService<SysRoleMenu> {
method saveRoleMenus (line 39) | Boolean saveRoleMenus(Long roleId, String menuIds);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysRoleService.java
type SysRoleService (line 40) | public interface SysRoleService extends IService<SysRole> {
method listRolesByUserId (line 47) | List<SysRole> listRolesByUserId(Long userId);
method listRolesByRoleIds (line 55) | List<SysRole> listRolesByRoleIds(List<Long> roleIdList, String key);
method removeRoleByIds (line 62) | Boolean removeRoleByIds(Long[] ids);
method updateRoleMenus (line 69) | Boolean updateRoleMenus(RoleVO roleVo);
method importRole (line 77) | R importRole(List<RoleExcelVO> excelVOList, BindingResult bindingResult);
method listRoles (line 83) | List<RoleExcelVO> listRoles();
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysUserRoleService.java
type SysUserRoleService (line 33) | public interface SysUserRoleService extends IService<SysUserRole> {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/SysUserService.java
type SysUserService (line 44) | public interface SysUserService extends IService<SysUser> {
method getUserInfo (line 51) | R<UserInfo> getUserInfo(UserDTO query);
method getUsersWithRolePage (line 59) | IPage getUsersWithRolePage(Page page, UserDTO userDTO);
method removeUserByIds (line 66) | Boolean removeUserByIds(Long[] ids);
method updateUserInfo (line 73) | R<Boolean> updateUserInfo(UserDTO userDto);
method updateUser (line 80) | Boolean updateUser(UserDTO userDto);
method getUserById (line 87) | UserVO getUserById(Long id);
method saveUser (line 94) | Boolean saveUser(UserDTO userDto);
method listUsers (line 101) | List<UserExcelVO> listUsers(UserDTO userDTO);
method importUsers (line 109) | R importUsers(List<UserExcelVO> excelVOList, BindingResult bindingResu...
method registerUser (line 116) | R<Boolean> registerUser(RegisterUserDTO userDto);
method lockUser (line 123) | R<Boolean> lockUser(String username);
method changePassword (line 130) | R changePassword(UserDTO userDto);
method checkPassword (line 137) | R checkPassword(String password);
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysDeptServiceImpl.java
class SysDeptServiceImpl (line 59) | @Service
method removeDeptById (line 71) | @Override
method getDeptTree (line 87) | @Override
method exportDepts (line 128) | @Override
method importDept (line 152) | @Override
method listDescendants (line 194) | @Override
method recursiveDept (line 214) | private void recursiveDept(List<SysDept> allDeptList, Long parentId, L...
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysDictItemServiceImpl.java
class SysDictItemServiceImpl (line 40) | @Service
method removeDictItem (line 52) | @Override
method updateDictItem (line 71) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysDictServiceImpl.java
class SysDictServiceImpl (line 47) | @Service
method removeDictByIds (line 58) | @Override
method updateDict (line 81) | @Override
method syncDictCache (line 97) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysFileServiceImpl.java
class SysFileServiceImpl (line 51) | @Slf4j
method uploadFile (line 66) | @Override
method getFile (line 92) | @Override
method removeFile (line 110) | @Override
method fileLog (line 127) | private void fileLog(MultipartFile file, String fileName) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysLogServiceImpl.java
class SysLogServiceImpl (line 44) | @Service
method getLogPage (line 53) | @Override
method saveLog (line 63) | @Override
method listLogs (line 75) | @Override
method buildQuery (line 85) | private LambdaQueryWrapper buildQuery(SysLogDTO sysLog) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysMenuServiceImpl.java
class SysMenuServiceImpl (line 64) | @Service
method findMenuByRoleId (line 76) | @Override
method removeMenuById (line 88) | @Override
method updateMenuById (line 108) | @Override
method getMenuTree (line 121) | @Override
method filterMenu (line 154) | @Override
method getNodeFunction (line 166) | @NotNull
method menuTypePredicate (line 204) | private Predicate<SysMenu> menuTypePredicate(String type) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysMobileServiceImpl.java
class SysMobileServiceImpl (line 51) | @Slf4j
method sendSmsCode (line 63) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysOauthClientDetailsServiceImpl.java
class SysOauthClientDetailsServiceImpl (line 41) | @Service
method updateClientById (line 51) | @Override
method saveClient (line 64) | @Override
method insertOrUpdate (line 76) | private SysOauthClientDetails insertOrUpdate(SysOauthClientDetails cli...
method getClientPage (line 88) | @Override
method syncClientCache (line 97) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysPostServiceImpl.java
class SysPostServiceImpl (line 46) | @Service
method importPost (line 55) | @Override
method listPosts (line 95) | @Override
method insertExcelPost (line 110) | private void insertExcelPost(PostExcelVO excel) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysPublicParamServiceImpl.java
class SysPublicParamServiceImpl (line 46) | @Service
method getParamValue (line 57) | @Override
method updateParam (line 75) | @Override
method removeParamByIds (line 92) | @Override
method syncParamCache (line 107) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysRoleMenuServiceImpl.java
class SysRoleMenuServiceImpl (line 46) | @Service
method saveRoleMenus (line 57) | @Override
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysRoleServiceImpl.java
class SysRoleServiceImpl (line 56) | @Service
method listRolesByUserId (line 67) | @Override
method listRolesByRoleIds (line 78) | @Override
method removeRoleByIds (line 89) | @Override
method updateRoleMenus (line 102) | @Override
method importRole (line 113) | @Override
method listRoles (line 153) | @Override
method insertExcelRole (line 168) | private void insertExcelRole(RoleExcelVO excel) {
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysUserRoleServiceImpl.java
class SysUserRoleServiceImpl (line 36) | @Service
FILE: pig-upms/pig-upms-biz/src/main/java/com/pig4cloud/pig/admin/service/impl/SysUserServiceImpl.java
class SysUserServiceImpl (line 68) | @Slf4j
method saveUser (line 95) | @Override
method getUserInfo (line 137) | @Override
method getUsersWithRolePage (line 165) | @Override
method getUserById (line 175) | @Override
method removeUserByIds (line 188) | @Override
method updateUserInfo (line 206) | @Override
method updateUser (line 224) | @Override
method listUsers (line 269) | @Override
method importUsers (line 295) | @Override
method insertExcelUser (line 366) | private void insertExcelUser(UserExcelVO excel, Optional<SysDept> dept...
method registerUser (line 393) | @Override
method lockUser (line 413) | @Override
method changePassword (line 431) | @Override
method checkPassword (line 464) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/PigCodeGenApplication.java
class PigCodeGenApplication (line 34) | @EnableDynamicDataSource
method main (line 42) | public static void main(String[] args) {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/config/PigCodeGenDefaultProperties.java
class PigCodeGenDefaultProperties (line 16) | @Data
method afterPropertiesSet (line 78) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenDsConfController.java
class GenDsConfController (line 49) | @RestController
method getDsConfPage (line 65) | @GetMapping("/page")
method listDsConfs (line 78) | @Inner(value = false)
method getDsConfById (line 90) | @GetMapping("/{id}")
method saveDsConf (line 101) | @PostMapping
method updateDsConf (line 113) | @PutMapping
method removeDsConfByIds (line 125) | @DeleteMapping
method generatorDoc (line 137) | @SneakyThrows
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenFieldTypeController.java
class GenFieldTypeController (line 44) | @RestController
method getFieldTypePage (line 59) | @GetMapping("/page")
method listFieldTypes (line 73) | @GetMapping("/list")
method getFieldTypeById (line 84) | @GetMapping("/details/{id}")
method getFieldTypeDetails (line 95) | @GetMapping("/details")
method saveFieldType (line 106) | @PostMapping
method updateFieldType (line 118) | @PutMapping
method removeFieldTypeByIds (line 130) | @DeleteMapping
method exportFieldTypes (line 142) | @ResponseExcel
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenGroupController.java
class GenGroupController (line 47) | @RestController
method getGroupPage (line 62) | @GetMapping("/page")
method getGroupById (line 77) | @GetMapping("/{id}")
method saveGroup (line 89) | @PostMapping
method updateGroup (line 103) | @PutMapping
method removeGroupByIds (line 117) | @DeleteMapping
method exportGroups (line 131) | @ResponseExcel
method listGroups (line 143) | @GetMapping("/list")
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenTableController.java
class GenTableController (line 44) | @RestController
method getTablePage (line 64) | @GetMapping("/page")
method getTableById (line 75) | @GetMapping("/{id}")
method listTables (line 86) | @GetMapping("/list/{dsName}")
method getTable (line 97) | @GetMapping("/{dsName}/{tableName}")
method getTableColumn (line 108) | @GetMapping("/column/{dsName}/{tableName}")
method getTableDdl (line 119) | @GetMapping("/ddl/{dsName}/{tableName}")
method syncTable (line 130) | @GetMapping("/sync/{dsName}/{tableName}")
method updateTable (line 148) | @PutMapping
method updateTableField (line 161) | @PutMapping("/field/{dsName}/{tableName}")
method exportTables (line 174) | @ResponseExcel
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenTemplateController.java
class GenTemplateController (line 47) | @RestController
method getTemplatePage (line 62) | @Operation(summary = "分页查询", description = "分页查询")
method listTemplates (line 77) | @Operation(summary = "查询全部", description = "查询全部")
method getTemplateById (line 90) | @Operation(summary = "通过id查询", description = "通过id查询")
method saveTemplate (line 102) | @XssCleanIgnore
method updateTemplate (line 116) | @XssCleanIgnore
method removeTemplateByIds (line 130) | @Operation(summary = "通过id删除模板", description = "通过id删除模板")
method exportTemplates (line 143) | @ResponseExcel
method online (line 155) | @Operation(summary = "在线更新模板", description = "在线更新模板")
method checkVersion (line 166) | @Operation(summary = "在线检查模板", description = "在线检查模板")
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GenTemplateGroupController.java
class GenTemplateGroupController (line 45) | @RestController
method getTemplateGroupPage (line 60) | @Operation(summary = "分页查询", description = "分页查询")
method getTemplateGroupById (line 73) | @Operation(summary = "通过id查询", description = "通过id查询")
method saveTemplateGroup (line 85) | @Operation(summary = "新增模板分组关联表", description = "新增模板分组关联表")
method updateTemplateGroup (line 98) | @Operation(summary = "修改模板分组关联表", description = "修改模板分组关联表")
method removeTemplateGroupByIds (line 111) | @Operation(summary = "通过id删除模板分组关联表", description = "通过id删除模板分组关联表")
method exportTemplateGroups (line 124) | @ResponseExcel
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/controller/GeneratorController.java
class GeneratorController (line 46) | @RestController
method download (line 59) | @SneakyThrows
method code (line 89) | @ResponseBody
method preview (line 106) | @SneakyThrows
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/ColumnEntity.java
class ColumnEntity (line 26) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenConfig.java
class GenConfig (line 26) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenDatasourceConf.java
class GenDatasourceConf (line 32) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenFieldType.java
class GenFieldType (line 34) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenGroupEntity.java
class GenGroupEntity (line 34) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenTable.java
class GenTable (line 38) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenTableColumnEntity.java
class GenTableColumnEntity (line 31) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenTemplateEntity.java
class GenTemplateEntity (line 34) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/GenTemplateGroupEntity.java
class GenTemplateGroupEntity (line 33) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/entity/TableEntity.java
class TableEntity (line 28) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenDatasourceConfMapper.java
type GenDatasourceConfMapper (line 29) | @Mapper
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenDynamicMapper.java
type GenDynamicMapper (line 33) | @Mapper
method dynamicQuerySql (line 41) | @InterceptorIgnore(tenantLine = "true")
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenFieldTypeMapper.java
type GenFieldTypeMapper (line 33) | @Mapper
method getPackageByTableId (line 42) | Set<String> getPackageByTableId(@Param("dsName") String dsName, @Param...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenGroupMapper.java
type GenGroupMapper (line 32) | @Mapper
method getGroupVoById (line 40) | GroupVO getGroupVoById(@Param("id") Long id);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenTableColumnMapper.java
type GenTableColumnMapper (line 30) | @Mapper
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenTableMapper.java
type GenTableMapper (line 30) | @Mapper
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenTemplateGroupMapper.java
type GenTemplateGroupMapper (line 30) | @Mapper
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/mapper/GenTemplateMapper.java
type GenTemplateMapper (line 32) | @Mapper
method listTemplateById (line 40) | List<GenTemplateEntity> listTemplateById(Long groupId);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenDatasourceConfService.java
type GenDatasourceConfService (line 28) | public interface GenDatasourceConfService extends IService<GenDatasource...
method saveDsByEnc (line 35) | Boolean saveDsByEnc(GenDatasourceConf genDatasourceConf);
method updateDsByEnc (line 42) | Boolean updateDsByEnc(GenDatasourceConf genDatasourceConf);
method addDynamicDataSource (line 48) | void addDynamicDataSource(GenDatasourceConf datasourceConf);
method checkDataSource (line 55) | Boolean checkDataSource(GenDatasourceConf datasourceConf);
method removeByDsId (line 62) | Boolean removeByDsId(Long[] dsIds);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenFieldTypeService.java
type GenFieldTypeService (line 31) | public interface GenFieldTypeService extends IService<GenFieldType> {
method getPackageByTableId (line 39) | Set<String> getPackageByTableId(String dsName, String tableName);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenGroupService.java
type GenGroupService (line 31) | public interface GenGroupService extends IService<GenGroupEntity> {
method saveGenGroup (line 37) | void saveGenGroup(TemplateGroupDTO genTemplateGroup);
method delGroupAndTemplate (line 43) | void delGroupAndTemplate(Long[] ids);
method getGroupVoById (line 49) | GroupVO getGroupVoById(Long id);
method updateGroupAndTemplateById (line 55) | void updateGroupAndTemplateById(GroupVO GroupVo);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenTableColumnService.java
type GenTableColumnService (line 31) | public interface GenTableColumnService extends IService<GenTableColumnEn...
method initFieldList (line 37) | void initFieldList(List<GenTableColumnEntity> tableFieldList);
method updateTableField (line 45) | void updateTableField(String dsName, String tableName, List<GenTableCo...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenTableService.java
type GenTableService (line 34) | public interface GenTableService extends IService<GenTable> {
method queryTablePage (line 42) | IPage queryTablePage(Page<Table> page, GenTable table);
method queryOrBuildTable (line 50) | GenTable queryOrBuildTable(String dsName, String tableName);
method queryTableDdl (line 59) | String queryTableDdl(String dsName, String tableName) throws Exception;
method queryTableList (line 66) | List<String> queryTableList(String dsName);
method queryTableColumn (line 74) | List<String> queryTableColumn(String dsName, String tableName);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenTemplateGroupService.java
type GenTemplateGroupService (line 29) | public interface GenTemplateGroupService extends IService<GenTemplateGro...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GenTemplateService.java
type GenTemplateService (line 30) | public interface GenTemplateService extends IService<GenTemplateEntity> {
method checkVersion (line 36) | R checkVersion();
method onlineUpdate (line 42) | R onlineUpdate();
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/GeneratorService.java
type GeneratorService (line 30) | public interface GeneratorService {
method downloadCode (line 37) | void downloadCode(Long tableId, ZipOutputStream zip);
method preview (line 44) | List<Map<String, String>> preview(Long tableId);
method generatorCode (line 50) | void generatorCode(Long tableId);
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenDatasourceConfServiceImpl.java
class GenDatasourceConfServiceImpl (line 51) | @Slf4j
method saveDsByEnc (line 66) | @Override
method updateDsByEnc (line 87) | @Override
method removeByDsId (line 112) | @Override
method addDynamicDataSource (line 125) | @Override
method checkDataSource (line 144) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenFieldTypeServiceImpl.java
class GenFieldTypeServiceImpl (line 35) | @Service
method getPackageByTableId (line 45) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenGroupServiceImpl.java
class GenGroupServiceImpl (line 44) | @Service
method saveGenGroup (line 54) | @Override
method delGroupAndTemplate (line 75) | @Override
method getGroupVoById (line 89) | @Override
method updateGroupAndTemplateById (line 98) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenTableColumnServiceImpl.java
class GenTableColumnServiceImpl (line 28) | @Service
method initFieldList (line 39) | public void initFieldList(List<GenTableColumnEntity> tableFieldList) {
method updateTableField (line 81) | @Override
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenTableServiceImpl.java
class GenTableServiceImpl (line 63) | @Service
method queryTableDdl (line 80) | @Override
method queryTableColumn (line 96) | @Override
method queryTablePage (line 110) | @Override
method queryTableList (line 134) | @Override
method queryOrBuildTable (line 148) | @Override
method tableImport (line 177) | @Transactional(rollbackFor = Exception.class)
method getGenTableColumnEntities (line 233) | private static @NotNull List<GenTableColumnEntity> getGenTableColumnEn...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenTemplateGroupServiceImpl.java
class GenTemplateGroupServiceImpl (line 31) | @Service
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GenTemplateServiceImpl.java
class GenTemplateServiceImpl (line 55) | @Slf4j
method onlineUpdate (line 72) | @Override
method checkVersion (line 101) | public R checkVersion() {
method getConfigAndVersion (line 127) | private Map<String, Object> getConfigAndVersion() {
method insertTemplateFiles (line 149) | private void insertTemplateFiles(String version, JSONObject configJson...
method getCGTMFile (line 182) | private String getCGTMFile(String fileName) {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/service/impl/GeneratorServiceImpl.java
class GeneratorServiceImpl (line 59) | @Service
method downloadCode (line 78) | @Override
method preview (line 115) | @Override
method generatorCode (line 155) | @Override
method getDataModel (line 178) | private Map<String, Object> getDataModel(Long tableId) {
method isSpringBoot3 (line 257) | private boolean isSpringBoot3() {
method setFieldTypeList (line 266) | private void setFieldTypeList(Map<String, Object> dataModel, GenTable ...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/AutoFillEnum.java
type AutoFillEnum (line 8) | public enum AutoFillEnum {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/BoolFillEnum.java
type BoolFillEnum (line 11) | @Getter
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/CommonColumnFiledEnum.java
type CommonColumnFiledEnum (line 12) | @Getter
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/DictTool.java
class DictTool (line 15) | public class DictTool {
method quotation (line 21) | public static String quotation(List<String> fields) {
method format (line 30) | public static String format(List<String> fields) {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/GenKit.java
class GenKit (line 12) | @UtilityClass
method getFunctionName (line 20) | public String getFunctionName(String tableName) {
method getModuleName (line 29) | public String getModuleName(String packageName) {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/GeneratorStyleEnum.java
type GeneratorStyleEnum (line 11) | @Getter
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/NamingCaseTool.java
class NamingCaseTool (line 11) | public class NamingCaseTool {
method getProperty (line 18) | public static String getProperty(String in) {
method setProperty (line 27) | public static String setProperty(String in) {
method pascalCase (line 36) | public static String pascalCase(String in) {
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/VelocityKit.java
class VelocityKit (line 21) | @Service
method render (line 30) | public static String render(String template, Map<String, Object> map) {
method renderStr (line 55) | public static String renderStr(String str, Map<String, Object> dataMod...
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/vo/GenCreateTableVO.java
class GenCreateTableVO (line 31) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/vo/GenTemplateFileVO.java
class GenTemplateFileVO (line 15) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/vo/GroupVO.java
class GroupVO (line 11) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/vo/SqlDto.java
class SqlDto (line 9) | @Data
FILE: pig-visual/pig-codegen/src/main/java/com/pig4cloud/pig/codegen/util/vo/TemplateGroupDTO.java
class TemplateGroupDTO (line 16) | @Data
FILE: pig-visual/pig-monitor/src/main/java/com/pig4cloud/pig/monitor/PigMonitorApplication.java
class PigMonitorApplication (line 30) | @EnableAdminServer
method main (line 35) | public static void main(String[] args) {
FILE: pig-visual/pig-monitor/src/main/java/com/pig4cloud/pig/monitor/config/CustomCsrfFilter.java
class CustomCsrfFilter (line 20) | public class CustomCsrfFilter extends OncePerRequestFilter {
method doFilterInternal (line 32) | @Override
FILE: pig-visual/pig-monitor/src/main/java/com/pig4cloud/pig/monitor/config/SecuritySecureConfig.java
class SecuritySecureConfig (line 47) | @Configuration(proxyBeanMethods = false)
method SecuritySecureConfig (line 59) | public SecuritySecureConfig(AdminServerProperties adminServer, Securit...
method filterChain (line 70) | @Bean
method userDetailsService (line 116) | @Bean
method passwordEncoder (line 129) | @Bean
FILE: pig-visual/pig-monitor/src/main/java/com/pig4cloud/pig/monitor/converter/NacosServiceInstanceConverter.java
class NacosServiceInstanceConverter (line 18) | @Configuration(proxyBeanMethods = false)
method getMetadata (line 26) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/PigQuartzApplication.java
class PigQuartzApplication (line 19) | @EnablePigDoc("job")
method main (line 26) | public static void main(String[] args) {
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/AutowireCapableBeanJobFactory.java
class AutowireCapableBeanJobFactory (line 33) | class AutowireCapableBeanJobFactory extends SpringBeanJobFactory {
method AutowireCapableBeanJobFactory (line 37) | AutowireCapableBeanJobFactory(AutowireCapableBeanFactory beanFactory) {
method createJobInstance (line 48) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/PigInitQuartzJob.java
class PigInitQuartzJob (line 37) | @Configuration
method afterPropertiesSet (line 51) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/PigQuartzConfig.java
class PigQuartzConfig (line 49) | @EnableAsync
method PigQuartzConfig (line 77) | public PigQuartzConfig(QuartzProperties properties,
method quartzScheduler (line 93) | @Bean
method asProperties (line 124) | private Properties asProperties(Map<String, String> source) {
method customize (line 134) | private void customize(SchedulerFactoryBean schedulerFactoryBean) {
method scheduler (line 148) | @Bean
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/PigQuartzCustomizerConfig.java
class PigQuartzCustomizerConfig (line 31) | @Configuration
method customize (line 38) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/PigQuartzFactory.java
class PigQuartzFactory (line 37) | @DisallowConcurrentExecution
method execute (line 51) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/config/PigQuartzInvokeFactory.java
class PigQuartzInvokeFactory (line 37) | @Aspect
method init (line 49) | @SneakyThrows
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/constants/JobTypeQuartzEnum.java
type JobTypeQuartzEnum (line 29) | @Getter
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/constants/PigQuartzEnum.java
type PigQuartzEnum (line 32) | @Getter
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/controller/SysJobController.java
class SysJobController (line 56) | @Slf4j
method getJobPage (line 78) | @GetMapping("/page")
method getById (line 95) | @GetMapping("/{id}")
method saveJob (line 106) | @SysLog("新增定时任务")
method updateJob (line 140) | @SysLog("修改定时任务")
method removeById (line 176) | @SysLog("删除定时任务")
method shutdownJobs (line 196) | @SysLog("暂停全部定时任务")
method startJobs (line 221) | @SysLog("启动全部暂停的定时任务")
method refreshJobs (line 238) | @SysLog("刷新全部定时任务")
method startJob (line 260) | @SysLog("启动定时任务")
method runJob (line 293) | @SysLog("立刻执行定时任务")
method shutdownJob (line 314) | @SysLog("暂停定时任务")
method getJobLogPage (line 335) | @GetMapping("/job-log")
method isValidTaskName (line 347) | @GetMapping("/is-valid-task-name")
method exportJobs (line 360) | @ResponseExcel
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/controller/SysJobLogController.java
class SysJobLogController (line 40) | @RestController
method getJobLogPage (line 55) | @GetMapping("/page")
method removeBatchByIds (line 66) | @DeleteMapping
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/entity/SysJob.java
class SysJob (line 41) | @Data
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/entity/SysJobLog.java
class SysJobLog (line 42) | @Data
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/event/SysJobEvent.java
class SysJobEvent (line 32) | @Getter
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/event/SysJobListener.java
class SysJobListener (line 37) | @Service
method comSysJob (line 43) | @Async
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/event/SysJobLogEvent.java
class SysJobLogEvent (line 31) | @Getter
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/event/SysJobLogListener.java
class SysJobLogListener (line 36) | @Slf4j
method saveSysJobLog (line 47) | @Async
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/exception/TaskException.java
class TaskException (line 28) | public class TaskException extends Exception {
method TaskException (line 36) | public TaskException() {
method TaskException (line 44) | public TaskException(String msg) {
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/mapper/SysJobLogMapper.java
type SysJobLogMapper (line 30) | @Mapper
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/mapper/SysJobMapper.java
type SysJobMapper (line 30) | @Mapper
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/service/SysJobLogService.java
type SysJobLogService (line 29) | public interface SysJobLogService extends IService<SysJobLog> {
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/service/SysJobService.java
type SysJobService (line 29) | public interface SysJobService extends IService<SysJob> {
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/service/impl/SysJobLogServiceImpl.java
class SysJobLogServiceImpl (line 35) | @Service
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/service/impl/SysJobServiceImpl.java
class SysJobServiceImpl (line 35) | @Service
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/task/RestTaskDemo.java
class RestTaskDemo (line 21) | @Slf4j
method demoMethod (line 32) | @Inner(value = false)
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/task/SpringBeanTaskDemo.java
class SpringBeanTaskDemo (line 34) | @Slf4j
method demoMethod (line 44) | @SneakyThrows
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/ClassNameValidator.java
class ClassNameValidator (line 33) | @Slf4j
method isValidClassName (line 70) | public static boolean isValidClassName(String className) {
method isValidMethodName (line 106) | public static boolean isValidMethodName(String methodName) {
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/ITaskInvok.java
type ITaskInvok (line 29) | public interface ITaskInvok {
method invokMethod (line 36) | void invokMethod(SysJob sysJob) throws TaskException;
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/JarTaskInvok.java
class JarTaskInvok (line 37) | @Slf4j
method invokMethod (line 46) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/JavaClassTaskInvok.java
class JavaClassTaskInvok (line 36) | @Component("javaClassTaskInvok")
method invokMethod (line 45) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/RestTaskInvok.java
class RestTaskInvok (line 34) | @Slf4j
method invokMethod (line 44) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/SpringBeanTaskInvok.java
class SpringBeanTaskInvok (line 38) | @Component("springBeanTaskInvok")
method invokMethod (line 47) | @Override
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/TaskInvokFactory.java
class TaskInvokFactory (line 16) | @Slf4j
method getInvoker (line 25) | public static ITaskInvok getInvoker(String jobType) throws TaskExcepti...
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/TaskInvokUtil.java
class TaskInvokUtil (line 43) | @Slf4j
method invokMethod (line 57) | @SneakyThrows
FILE: pig-visual/pig-quartz/src/main/java/com/pig4cloud/pig/daemon/quartz/util/TaskUtil.java
class TaskUtil (line 33) | @Slf4j
method getJobKey (line 42) | public static JobKey getJobKey(SysJob sysjob) {
method getTriggerKey (line 51) | public static TriggerKey getTriggerKey(SysJob sysjob) {
method addOrUpateJob (line 60) | public void addOrUpateJob(SysJob sysjob, Scheduler scheduler) {
method runOnce (line 113) | public static boolean runOnce(Scheduler scheduler, SysJob sysJob) {
method pauseJob (line 134) | public void pauseJob(SysJob sysjob, Scheduler scheduler) {
method resumeJob (line 151) | public void resumeJob(SysJob sysjob, Scheduler scheduler) {
method removeJob (line 168) | public void removeJob(SysJob sysjob, Scheduler scheduler) {
method startJobs (line 189) | public void startJobs(Scheduler scheduler) {
method pauseJobs (line 205) | public void pauseJobs(Scheduler scheduler) {
method handleCronScheduleMisfirePolicy (line 222) | private CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob sys...
method isValidCron (line 246) | public boolean isValidCron(String cronExpression) {
Condensed preview — 490 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,345K chars).
[
{
"path": ".editorconfig",
"chars": 102,
"preview": "root = true\n\n[*.{groovy,java,kt,xml}]\nindent_style = tab\nindent_size = 4\ncontinuation_indent_size = 8\n"
},
{
"path": ".gitee/ISSUE_TEMPLATE/config.yml",
"chars": 184,
"preview": "blank_issues_enabled: false # 不允许用户创建空白 Issue\ncontact_links:\n - name: 遇到问题先去看文档!谢谢! # 外部网站名称\n url: https://wiki.pig4"
},
{
"path": ".gitee/ISSUE_TEMPLATE/issue.yml",
"chars": 622,
"preview": "name: 问题咨询\ndescription: \"请尽可能详细的描述问题,提供足够的上下文,一分钟的描述不需要期望别人花半小时帮你排查\"\nbody:\n - type: dropdown\n id: version\n attrib"
},
{
"path": ".github/renovate.json",
"chars": 517,
"preview": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"baseBranches\": [\n \"jdk17-dev\"\n ],\n \"extends\""
},
{
"path": ".github/workflows/github-release.yml",
"chars": 975,
"preview": "name: publish github release\n\non:\n workflow_dispatch:\n inputs:\n releaseversion:\n description: 'Release v"
},
{
"path": ".github/workflows/image.yml",
"chars": 1296,
"preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
},
{
"path": ".github/workflows/maven.yml",
"chars": 2436,
"preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
},
{
"path": ".github/workflows/mirror.yml",
"chars": 451,
"preview": "name: 同步代码\n\non:\n push:\n branches: [ master,dev ]\n pull_request:\n branches: [ master,dev ]\n\njobs:\n gitee:\n ru"
},
{
"path": ".gitignore",
"chars": 626,
"preview": "### gradle ###\n.gradle\n/build/\n!gradle/wrapper/gradle-wrapper.jar\n.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.settings/"
},
{
"path": "LICENSE",
"chars": 11370,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 4611,
"preview": "> **🚀 Spring Boot 4.0 版本来了**\n>\n> 分支 `boot4` 基于 Spring Boot 4.0 + Spring Cloud 2025.1 进行开发。\n\n<p align=\"center\">\n <img src"
},
{
"path": "db/Dockerfile",
"chars": 327,
"preview": "FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/mysql-server:8.0.32\n\nMAINTAINER lengleng(wangiegie@gmail.com)\n\nE"
},
{
"path": "db/pig.sql",
"chars": 74304,
"preview": "DROP DATABASE IF EXISTS `pig`;\n\nCREATE DATABASE `pig` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;\n\nSET NA"
},
{
"path": "db/pig_config.sql",
"chars": 21980,
"preview": "DROP DATABASE IF EXISTS `pig_config`;\n\nCREATE DATABASE `pig_config` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
},
{
"path": "docker-compose.yml",
"chars": 2688,
"preview": "services:\n pig-mysql:\n build:\n context: ./db\n environment:\n MYSQL_ROOT_HOST: \"%\"\n MYSQL_ROOT_PASSW"
},
{
"path": "pig-auth/Dockerfile",
"chars": 299,
"preview": "FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:21-anolis\n\nWORKDIR /pig-auth\n\nARG JAR_FILE=target/pig-auth."
},
{
"path": "pig-auth/pom.xml",
"chars": 3963,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/PigAuthApplication.java",
"chars": 1202,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/config/AuthorizationServerConfiguration.java",
"chars": 9617,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/ImageCodeEndpoint.java",
"chars": 1723,
"preview": "package com.pig4cloud.pig.auth.endpoint;\n\nimport cn.hutool.core.lang.Validator;\nimport com.pig4cloud.captcha.ArithmeticC"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/endpoint/PigTokenEndpoint.java",
"chars": 11461,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/CustomeOAuth2AccessTokenGenerator.java",
"chars": 5847,
"preview": "package com.pig4cloud.pig.auth.support;\n\nimport org.springframework.lang.Nullable;\nimport org.springframework.security.c"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationConverter.java",
"chars": 3298,
"preview": "package com.pig4cloud.pig.auth.support.base;\n\nimport com.pig4cloud.pig.common.security.util.OAuth2EndpointUtils;\nimport "
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationProvider.java",
"chars": 12968,
"preview": "package com.pig4cloud.pig.auth.support.base;\n\nimport cn.hutool.extra.spring.SpringUtil;\nimport com.pig4cloud.pig.common."
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/OAuth2ResourceOwnerBaseAuthenticationToken.java",
"chars": 1847,
"preview": "package com.pig4cloud.pig.auth.support.base;\n\nimport lombok.Getter;\nimport org.springframework.lang.Nullable;\nimport org"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/base/package-info.java",
"chars": 71,
"preview": "/**\n * 自定义认证模式接入的抽象实现\n */\npackage com.pig4cloud.pig.auth.support.base;\n"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/CustomeOAuth2TokenCustomizer.java",
"chars": 1448,
"preview": "package com.pig4cloud.pig.auth.support.core;\n\nimport com.pig4cloud.pig.common.core.constant.SecurityConstants;\nimport co"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/FormIdentityLoginConfigurer.java",
"chars": 1100,
"preview": "package com.pig4cloud.pig.auth.support.core;\n\nimport com.pig4cloud.pig.auth.support.handler.FormAuthenticationFailureHan"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/core/PigDaoAuthenticationProvider.java",
"chars": 8102,
"preview": "package com.pig4cloud.pig.auth.support.core;\n\nimport cn.hutool.core.util.StrUtil;\nimport cn.hutool.extra.spring.SpringUt"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/AuthSecurityConfigProperties.java",
"chars": 697,
"preview": "package com.pig4cloud.pig.auth.support.filter;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.C"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/PasswordDecoderFilter.java",
"chars": 3222,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/filter/ValidateCodeFilter.java",
"chars": 3565,
"preview": "package com.pig4cloud.pig.auth.support.filter;\n\nimport java.io.IOException;\nimport java.util.Optional;\n\nimport org.sprin"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/FormAuthenticationFailureHandler.java",
"chars": 2009,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigAuthenticationFailureEventHandler.java",
"chars": 4141,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigAuthenticationSuccessEventHandler.java",
"chars": 5399,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/PigLogoutSuccessEventHandler.java",
"chars": 2917,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/handler/SsoLogoutSuccessHandler.java",
"chars": 1318,
"preview": "package com.pig4cloud.pig.auth.support.handler;\n\nimport cn.hutool.core.util.StrUtil;\nimport jakarta.servlet.http.HttpSer"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationConverter.java",
"chars": 2601,
"preview": "package com.pig4cloud.pig.auth.support.password;\n\nimport com.pig4cloud.pig.auth.support.base.OAuth2ResourceOwnerBaseAuth"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationProvider.java",
"chars": 3252,
"preview": "package com.pig4cloud.pig.auth.support.password;\n\nimport com.pig4cloud.pig.auth.support.base.OAuth2ResourceOwnerBaseAuth"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/OAuth2ResourceOwnerPasswordAuthenticationToken.java",
"chars": 1060,
"preview": "package com.pig4cloud.pig.auth.support.password;\n\nimport com.pig4cloud.pig.auth.support.base.OAuth2ResourceOwnerBaseAuth"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/password/package-info.java",
"chars": 65,
"preview": "/**\n * 密码模式\n */\npackage com.pig4cloud.pig.auth.support.password;\n"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationConverter.java",
"chars": 1969,
"preview": "package com.pig4cloud.pig.auth.support.sms;\n\nimport com.pig4cloud.pig.auth.support.base.OAuth2ResourceOwnerBaseAuthentic"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationProvider.java",
"chars": 2765,
"preview": "package com.pig4cloud.pig.auth.support.sms;\n\nimport com.pig4cloud.pig.auth.support.base.OAuth2ResourceOwnerBaseAuthentic"
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/OAuth2ResourceOwnerSmsAuthenticationToken.java",
"chars": 838,
"preview": "package com.pig4cloud.pig.auth.support.sms;\n\nimport java.io.Serial;\nimport java.util.Map;\nimport java.util.Set;\n\nimport "
},
{
"path": "pig-auth/src/main/java/com/pig4cloud/pig/auth/support/sms/package-info.java",
"chars": 60,
"preview": "/**\n * 短信模式\n */\npackage com.pig4cloud.pig.auth.support.sms;\n"
},
{
"path": "pig-auth/src/main/resources/application.yml",
"chars": 450,
"preview": "server:\n port: 3000\n\nspring:\n application:\n name: @artifactId@\n cloud:\n nacos:\n username: @nacos.username@"
},
{
"path": "pig-auth/src/main/resources/logback-spring.xml",
"chars": 3301,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-auth/src/main/resources/templates/ftl/confirm.ftl",
"chars": 2405,
"preview": "<#assign content>\n\t<div class=\"mb-7\">\n\t\t<h3 class=\"font-semibold text-2xl text-gray-800 dark:text-gray-200 text-center t"
},
{
"path": "pig-auth/src/main/resources/templates/ftl/layout/base.ftl",
"chars": 4779,
"preview": "<!doctype html>\n<html class=\"dark\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-wi"
},
{
"path": "pig-auth/src/main/resources/templates/ftl/login.ftl",
"chars": 2970,
"preview": "<#assign content>\n <div class=\"mb-8 text-center\">\n <svg class=\"w-16 h-16 mx-auto mb-4 text-purple-600 dark:tex"
},
{
"path": "pig-boot/Dockerfile",
"chars": 300,
"preview": "FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:21-anolis\n\nWORKDIR /pig-boot\n\nARG JAR_FILE=target/pig-boot."
},
{
"path": "pig-boot/pom.xml",
"chars": 2935,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved. ~ ~ Licensed \n\t"
},
{
"path": "pig-boot/src/main/java/com/pig4cloud/pig/PigBootApplication.java",
"chars": 1231,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-boot/src/main/resources/application-dev.yml",
"chars": 949,
"preview": "spring:\n cache:\n type: redis # 缓存类型 Redis\n data:\n redis:\n database: 5\n host: 127.0.0.1\n # 数据库相关配置\n d"
},
{
"path": "pig-boot/src/main/resources/application.yml",
"chars": 1685,
"preview": "server:\n port: 9999 # 项目端口\n servlet:\n context-path: /admin # 项目访问路径\n\nspring:\n application:\n name: @project."
},
{
"path": "pig-boot/src/main/resources/logback-spring.xml",
"chars": 2991,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n 小技巧: 在根pom里面设置统一存放路径,统一管理方便维护\n <properties>\n <log-path>/Users/"
},
{
"path": "pig-common/pig-common-bom/pom.xml",
"chars": 8942,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n\txmlns:xsi=\"http://www.w3.org/"
},
{
"path": "pig-common/pig-common-core/pom.xml",
"chars": 2502,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/JacksonConfiguration.java",
"chars": 2357,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/RedisTemplateConfiguration.java",
"chars": 3326,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/RestTemplateConfiguration.java",
"chars": 1754,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/config/WebMvcConfiguration.java",
"chars": 2335,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/CacheConstants.java",
"chars": 1313,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/CommonConstants.java",
"chars": 1470,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/SecurityConstants.java",
"chars": 2033,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/ServiceNameConstants.java",
"chars": 908,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/DictTypeEnum.java",
"chars": 1066,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/LoginTypeEnum.java",
"chars": 1050,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/constant/enums/MenuTypeEnum.java",
"chars": 1100,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/CheckedException.java",
"chars": 1323,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/ErrorCodes.java",
"chars": 1814,
"preview": "package com.pig4cloud.pig.common.core.exception;\n\n/**\n * 错误编码\n *\n * @author lengleng\n * @date 2022/3/30\n */\npublic inter"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/PigDeniedException.java",
"chars": 1315,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/exception/ValidateCodeException.java",
"chars": 974,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/factory/YamlPropertySourceFactory.java",
"chars": 1776,
"preview": "package com.pig4cloud.pig.common.core.factory;\n\nimport org.springframework.beans.factory.config.YamlPropertiesFactoryBea"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/jackson/PigJavaTimeModule.java",
"chars": 2594,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/servlet/RepeatBodyRequestWrapper.java",
"chars": 3664,
"preview": "/*\n * Copyright 2023-2024 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/ClassUtils.java",
"chars": 3803,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/MsgUtils.java",
"chars": 1148,
"preview": "package com.pig4cloud.pig.common.core.util;\n\nimport lombok.experimental.UtilityClass;\nimport org.springframework.context"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/R.java",
"chars": 2140,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/RedisUtils.java",
"chars": 17963,
"preview": "package com.pig4cloud.pig.common.core.util;\n\nimport cn.hutool.core.convert.Convert;\nimport lombok.experimental.UtilityCl"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/RetOps.java",
"chars": 7327,
"preview": "/*\n *\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary "
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/SpringContextHolder.java",
"chars": 3146,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java",
"chars": 4782,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 297,
"preview": "com.pig4cloud.pig.common.core.config.JacksonConfiguration\ncom.pig4cloud.pig.common.core.config.RedisTemplateConfiguratio"
},
{
"path": "pig-common/pig-common-core/src/main/resources/banner.txt",
"chars": 526,
"preview": "${AnsiColor.BRIGHT_YELLOW}\n\n ::::::::: ::::::::::: ::::::::\n :+: :+: "
},
{
"path": "pig-common/pig-common-core/src/main/resources/i18n/messages_zh_CN.properties",
"chars": 1552,
"preview": "sys.user.update.passwordError=\\u539F\\u5BC6\\u7801\\u9519\\u8BEF\\uFF0C\\u4FEE\\u6539\\u5931\\u8D25\nsys.user.query.error=\\u83B7\\u"
},
{
"path": "pig-common/pig-common-core/src/main/resources/logback-spring.xml",
"chars": 3186,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-datasource/pom.xml",
"chars": 1607,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/DynamicDataSourceAutoConfiguration.java",
"chars": 4504,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/annotation/EnableDynamicDataSource.java",
"chars": 499,
"preview": "package com.pig4cloud.pig.common.datasource.annotation;\n\nimport com.pig4cloud.pig.common.datasource.DynamicDataSourceAut"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/ClearTtlDataSourceFilter.java",
"chars": 954,
"preview": "package com.pig4cloud.pig.common.datasource.config;\n\nimport com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceCon"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/DataSourceProperties.java",
"chars": 1229,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/JdbcDynamicDataSourceProvider.java",
"chars": 3649,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/LastParamDsProcessor.java",
"chars": 1877,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/config/MasterDataSourceProvider.java",
"chars": 2273,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/support/DataSourceConstants.java",
"chars": 721,
"preview": "package com.pig4cloud.pig.common.datasource.support;\n\n/**\n * 数据源相关常量\n *\n * @author lengleng\n * @date 2019-04-01\n */\npubl"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/util/DsConfTypeEnum.java",
"chars": 376,
"preview": "package com.pig4cloud.pig.common.datasource.util;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Getter;\n\n/**\n * 数据源配置"
},
{
"path": "pig-common/pig-common-datasource/src/main/java/com/pig4cloud/pig/common/datasource/util/DsJdbcUrlEnum.java",
"chars": 1505,
"preview": "package com.pig4cloud.pig.common.datasource.util;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Getter;\n\nimport java."
},
{
"path": "pig-common/pig-common-excel/pom.xml",
"chars": 1742,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ /*\n ~ * Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).\n ~ * <p"
},
{
"path": "pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/ExcelAutoConfiguration.java",
"chars": 2292,
"preview": "package com.pig4cloud.pig.common.excel;\n\nimport com.pig4cloud.pig.common.core.constant.SecurityConstants;\nimport com.pig"
},
{
"path": "pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/provider/RemoteDictApiService.java",
"chars": 602,
"preview": "package com.pig4cloud.pig.common.excel.provider;\n\nimport com.pig4cloud.pig.common.core.util.R;\nimport org.springframewor"
},
{
"path": "pig-common/pig-common-excel/src/main/java/com/pig4cloud/pig/common/excel/provider/RemoteDictDataProvider.java",
"chars": 1264,
"preview": "package com.pig4cloud.pig.common.excel.provider;\n\nimport cn.hutool.core.collection.CollUtil;\nimport cn.hutool.core.map.M"
},
{
"path": "pig-common/pig-common-excel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 55,
"preview": " com.pig4cloud.pig.common.excel.ExcelAutoConfiguration\n"
},
{
"path": "pig-common/pig-common-feign/pom.xml",
"chars": 2693,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/PigFeignAutoConfiguration.java",
"chars": 2648,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/annotation/EnablePigFeignClients.java",
"chars": 1441,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/annotation/NoToken.java",
"chars": 278,
"preview": "package com.pig4cloud.pig.common.feign.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * 服务无token调用声明注解\n * <p>\n * 只有发起"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/core/PigFeignInnerRequestInterceptor.java",
"chars": 915,
"preview": "package com.pig4cloud.pig.common.feign.core;\n\nimport com.pig4cloud.pig.common.core.constant.SecurityConstants;\nimport co"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/core/PigFeignRequestCloseInterceptor.java",
"chars": 466,
"preview": "package com.pig4cloud.pig.common.feign.core;\n\nimport feign.RequestInterceptor;\nimport org.springframework.http.HttpHeade"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/SentinelAutoConfiguration.java",
"chars": 3026,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/ext/PigSentinelFeign.java",
"chars": 4872,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/ext/PigSentinelInvocationHandler.java",
"chars": 5835,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/GlobalBizExceptionHandler.java",
"chars": 4712,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/handle/PigUrlBlockHandler.java",
"chars": 1883,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/com/pig4cloud/pig/common/feign/sentinel/parser/PigHeaderRequestOriginParser.java",
"chars": 1253,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-feign/src/main/java/org/springframework/cloud/openfeign/PigFeignClientsRegistrar.java",
"chars": 10145,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-feign/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 196,
"preview": "com.pig4cloud.pig.common.feign.PigFeignAutoConfiguration\ncom.pig4cloud.pig.common.feign.sentinel.SentinelAutoConfigurati"
},
{
"path": "pig-common/pig-common-log/pom.xml",
"chars": 2205,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/LogAutoConfiguration.java",
"chars": 2001,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/annotation/SysLog.java",
"chars": 1034,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/aspect/SysLogAspect.java",
"chars": 3092,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/config/PigLogProperties.java",
"chars": 1379,
"preview": "/*\n * Copyright (c) 2019-2029, Dreamlu 卢春梦 (596392912@qq.com & www.dreamlu.net).\n * <p>\n * Licensed under the GNU LESSER"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogEvent.java",
"chars": 1107,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogEventSource.java",
"chars": 451,
"preview": "package com.pig4cloud.pig.common.log.event;\n\nimport java.io.Serial;\n\nimport com.pig4cloud.pig.admin.api.entity.SysLog;\n\n"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/event/SysLogListener.java",
"chars": 3164,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/init/ApplicationLoggerInitializer.java",
"chars": 2022,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/util/LogTypeEnum.java",
"chars": 1043,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/java/com/pig4cloud/pig/common/log/util/SysLogUtils.java",
"chars": 4281,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 50,
"preview": "com.pig4cloud.pig.common.log.LogAutoConfiguration\n"
},
{
"path": "pig-common/pig-common-log/src/main/resources/META-INF/spring-configuration-metadata.json",
"chars": 878,
"preview": "{\n \"groups\": [\n {\n \"name\": \"security.log\",\n \"type\": \"com.pig4cloud.pig.common.log.config.PigLogProperties\""
},
{
"path": "pig-common/pig-common-log/src/main/resources/META-INF/spring.factories",
"chars": 123,
"preview": "org.springframework.boot.env.EnvironmentPostProcessor=\\\n com.pig4cloud.pig.common.log.init.ApplicationLoggerInitializ"
},
{
"path": "pig-common/pig-common-mybatis/pom.xml",
"chars": 2726,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/MybatisAutoConfiguration.java",
"chars": 2260,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/base/BaseEntity.java",
"chars": 1027,
"preview": "package com.pig4cloud.pig.common.mybatis.base;\n\nimport java.io.Serial;\nimport java.io.Serializable;\nimport java.time.Loc"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java",
"chars": 2932,
"preview": "package com.pig4cloud.pig.common.mybatis.config;\n\nimport cn.hutool.core.util.StrUtil;\nimport com.baomidou.mybatisplus.co"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/handler/JsonLongArrayTypeHandler.java",
"chars": 2263,
"preview": "package com.pig4cloud.pig.common.mybatis.handler;\n\nimport cn.hutool.core.convert.Convert;\nimport cn.hutool.core.util.Arr"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/handler/JsonStringArrayTypeHandler.java",
"chars": 2257,
"preview": "package com.pig4cloud.pig.common.mybatis.handler;\n\nimport cn.hutool.core.convert.Convert;\nimport cn.hutool.core.util.Arr"
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/plugins/PigPaginationInnerInterceptor.java",
"chars": 1932,
"preview": "package com.pig4cloud.pig.common.mybatis.plugins;\n\nimport org.apache.ibatis.executor.Executor;\nimport org.apache.ibatis."
},
{
"path": "pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/resolver/SqlFilterArgumentResolver.java",
"chars": 3247,
"preview": "/*\n *\n * * Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).\n * * <p>\n * * Licensed under the GNU Lesser General "
},
{
"path": "pig-common/pig-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 58,
"preview": "com.pig4cloud.pig.common.mybatis.MybatisAutoConfiguration\n"
},
{
"path": "pig-common/pig-common-oss/pom.xml",
"chars": 892,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns=\"ht"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/FileAutoConfiguration.java",
"chars": 1438,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/core/FileProperties.java",
"chars": 1539,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/core/FileTemplate.java",
"chars": 1787,
"preview": "package com.pig4cloud.pig.common.file.core;\n\nimport org.springframework.beans.factory.InitializingBean;\n\nimport java.io."
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileAutoConfiguration.java",
"chars": 1641,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileProperties.java",
"chars": 1084,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/local/LocalFileTemplate.java",
"chars": 3738,
"preview": "package com.pig4cloud.pig.common.file.local;\n\nimport cn.hutool.core.io.FileUtil;\nimport com.pig4cloud.pig.common.file.co"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/OssAutoConfiguration.java",
"chars": 2358,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/OssProperties.java",
"chars": 1895,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/http/OssEndpoint.java",
"chars": 5834,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/java/com/pig4cloud/pig/common/file/oss/service/OssTemplate.java",
"chars": 9800,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-oss/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 52,
"preview": "com.pig4cloud.pig.common.file.FileAutoConfiguration\n"
},
{
"path": "pig-common/pig-common-seata/pom.xml",
"chars": 1677,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ /*\n ~ * Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).\n ~ * <p"
},
{
"path": "pig-common/pig-common-seata/src/main/java/com/pig4cloud/pig/common/seata/config/SeataAutoConfiguration.java",
"chars": 490,
"preview": "package com.pig4cloud.pig.common.seata.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org."
},
{
"path": "pig-common/pig-common-seata/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 62,
"preview": " com.pig4cloud.pig.common.seata.config.SeataAutoConfiguration\n"
},
{
"path": "pig-common/pig-common-seata/src/main/resources/seata-config.yml",
"chars": 1842,
"preview": "seata:\n enabled: true\n tx-service-group: pig_tx_group # 事务群组(可以每个应用独立取名,也可以使用相同的名字)\n client:\n rm-report-success-en"
},
{
"path": "pig-common/pig-common-security/pom.xml",
"chars": 2598,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n ~\n ~ Licen"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/annotation/EnablePigResourceServer.java",
"chars": 1380,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/annotation/HasPermission.java",
"chars": 587,
"preview": "package com.pig4cloud.pig.common.security.annotation;\n\nimport org.springframework.security.access.prepost.PreAuthorize;\n"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/annotation/Inner.java",
"chars": 1076,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PermissionService.java",
"chars": 1737,
"preview": "\n/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 ("
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PermitAllUrlProperties.java",
"chars": 3060,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigBearerTokenExtractor.java",
"chars": 4408,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigBootCorsProperties.java",
"chars": 1040,
"preview": "package com.pig4cloud.pig.common.security.component;\n\nimport lombok.Data;\nimport org.springframework.boot.context.proper"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigClientCredentialsOAuth2AuthenticatedPrincipal.java",
"chars": 998,
"preview": "package com.pig4cloud.pig.common.security.component;\n\nimport lombok.RequiredArgsConstructor;\nimport org.springframework."
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigCustomOAuth2AccessTokenResponseHttpMessageConverter.java",
"chars": 2587,
"preview": "package com.pig4cloud.pig.common.security.component;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.pig"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigCustomOpaqueTokenIntrospector.java",
"chars": 3966,
"preview": "package com.pig4cloud.pig.common.security.component;\n\nimport cn.hutool.extra.spring.SpringUtil;\nimport com.pig4cloud.pig"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigResourceServerAutoConfiguration.java",
"chars": 2715,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigResourceServerConfiguration.java",
"chars": 4453,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigSecurityInnerAspect.java",
"chars": 2280,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/PigSecurityMessageSourceConfiguration.java",
"chars": 1751,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/component/ResourceAuthExceptionEntryPoint.java",
"chars": 2927,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/feign/PigFeignClientConfiguration.java",
"chars": 1211,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/feign/PigOAuthRequestInterceptor.java",
"chars": 1784,
"preview": "package com.pig4cloud.pig.common.security.feign;\n\nimport java.util.Collection;\n\nimport org.springframework.http.HttpHead"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigAppUserDetailsServiceImpl.java",
"chars": 2533,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRedisOAuth2AuthorizationConsentService.java",
"chars": 2465,
"preview": "package com.pig4cloud.pig.common.security.service;\n\nimport com.pig4cloud.pig.common.core.util.RedisUtils;\nimport lombok."
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRedisOAuth2AuthorizationService.java",
"chars": 6203,
"preview": "package com.pig4cloud.pig.common.security.service;\n\nimport com.pig4cloud.pig.common.core.util.RedisUtils;\nimport lombok."
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigRemoteRegisteredClientRepository.java",
"chars": 4425,
"preview": "package com.pig4cloud.pig.common.security.service;\n\nimport cn.hutool.core.util.BooleanUtil;\nimport cn.hutool.core.util.S"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUser.java",
"chars": 2531,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUserDetailsService.java",
"chars": 2386,
"preview": "package com.pig4cloud.pig.common.security.service;\n\nimport cn.hutool.core.util.StrUtil;\nimport com.pig4cloud.pig.admin.a"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/service/PigUserDetailsServiceImpl.java",
"chars": 2227,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuth2EndpointUtils.java",
"chars": 3378,
"preview": "package com.pig4cloud.pig.common.security.util;\n\nimport cn.hutool.core.map.MapUtil;\nimport jakarta.servlet.http.HttpServ"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuth2ErrorCodesExpand.java",
"chars": 789,
"preview": "package com.pig4cloud.pig.common.security.util;\n\n/**\n * OAuth2 异常信息常量接口\n *\n * @author lengleng\n * @date 2025/05/31\n */\np"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/OAuthClientException.java",
"chars": 756,
"preview": "package com.pig4cloud.pig.common.security.util;\n\nimport org.springframework.security.oauth2.core.OAuth2AuthenticationExc"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/ScopeException.java",
"chars": 757,
"preview": "package com.pig4cloud.pig.common.security.util;\n\nimport java.io.Serial;\n\nimport org.springframework.security.oauth2.core"
},
{
"path": "pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/util/SecurityUtils.java",
"chars": 2489,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 593,
"preview": "com.pig4cloud.pig.common.security.service.PigUserDetailsServiceImpl\ncom.pig4cloud.pig.common.security.service.PigAppUser"
},
{
"path": "pig-common/pig-common-security/src/main/resources/i18n/errors/messages_zh_CN.properties",
"chars": 5469,
"preview": "AbstractAccessDecisionManager.accessDenied=\\u4E0D\\u5141\\u8BB8\\u8BBF\\u95EE\nAbstractLdapAuthenticationProvider.emptyPasswo"
},
{
"path": "pig-common/pig-common-swagger/pom.xml",
"chars": 2816,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~\n ~ Copyright (c) 2018-2025, lengleng All rights reserved.\n ~\n ~ "
},
{
"path": "pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/annotation/EnablePigDoc.java",
"chars": 1665,
"preview": "/*\n * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (t"
},
{
"path": "pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIDefinition.java",
"chars": 3809,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIDefinitionImportSelector.java",
"chars": 1754,
"preview": "package com.pig4cloud.pig.common.swagger.config;\n\nimport com.pig4cloud.pig.common.swagger.annotation.EnablePigDoc;\nimpor"
},
{
"path": "pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/config/OpenAPIMetadataConfiguration.java",
"chars": 1363,
"preview": "package com.pig4cloud.pig.common.swagger.config;\n\nimport lombok.Setter;\nimport org.springframework.beans.BeansException;"
},
{
"path": "pig-common/pig-common-swagger/src/main/java/com/pig4cloud/pig/common/swagger/support/SwaggerProperties.java",
"chars": 1807,
"preview": "/*\n * Copyright (c) 2018-2025, lengleng All rights reserved.\n *\n * Redistribution and use in source and binary forms,"
},
{
"path": "pig-common/pig-common-swagger/src/main/resources/openapi-config.yaml",
"chars": 194,
"preview": "# swagger 配置\nswagger:\n enabled: true\n title: Pig Swagger API\n gateway: http://${GATEWAY-HOST:127.0.0.1}:${GATEWAY-POR"
},
{
"path": "pig-common/pig-common-websocket/pom.xml",
"chars": 1213,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns=\"ht"
},
{
"path": "pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/LocalMessageDistributorConfiguration.java",
"chars": 1027,
"preview": "package com.pig4cloud.pig.common.websocket.config;\n\nimport com.pig4cloud.pig.common.websocket.distribute.LocalMessageDis"
},
{
"path": "pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/MessageDistributorTypeConstants.java",
"chars": 599,
"preview": "package com.pig4cloud.pig.common.websocket.config;\n\n/**\n * 消息分发器类型常量\n * <p>\n * 定义了不同消息分发策略的常量标识符。\n * </p>\n *\n * @author "
},
{
"path": "pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/RedisMessageDistributorConfiguration.java",
"chars": 3581,
"preview": "package com.pig4cloud.pig.common.websocket.config;\n\nimport com.pig4cloud.pig.common.websocket.distribute.MessageDistribu"
},
{
"path": "pig-common/pig-common-websocket/src/main/java/com/pig4cloud/pig/common/websocket/config/WebSocketAutoConfiguration.java",
"chars": 2125,
"preview": "package com.pig4cloud.pig.common.websocket.config;\n\nimport com.pig4cloud.pig.common.websocket.handler.JsonMessageHandler"
}
]
// ... and 290 more files (download for full content)
About this extraction
This page contains the full source code of the pig-mesh/pig GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 490 files (1.2 MB), approximately 349.9k tokens, and a symbol index with 1337 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.