From b4951cb721058c8731d23c8320d8913fcc806afa Mon Sep 17 00:00:00 2001
From: hongawen <83944980@qq.com>
Date: Tue, 3 Feb 2026 10:18:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 75 +
LICENSE | 20 +
lombok.config | 4 +
msgpush-dependencies/pom.xml | 726 ++++
msgpush-framework/msgpush-common/pom.xml | 156 +
.../com/fhs/trans/service/AutoTransable.java | 59 +
.../infra/logger/ApiAccessLogCommonApi.java | 34 +
.../infra/logger/ApiErrorLogCommonApi.java | 34 +
.../logger/dto/ApiAccessLogCreateReqDTO.java | 103 +
.../logger/dto/ApiErrorLogCreateReqDTO.java | 68 +
.../common/biz/infra/package-info.java | 4 +
.../framework/common/biz/package-info.java | 4 +
.../biz/system/dict/DictDataCommonApi.java | 26 +
.../biz/system/dict/dto/DictDataRespDTO.java | 22 +
.../system/logger/OperateLogCommonApi.java | 34 +
.../logger/dto/OperateLogCreateReqDTO.java | 50 +
.../system/oauth2/OAuth2TokenCommonApi.java | 52 +
.../dto/OAuth2AccessTokenCheckRespDTO.java | 33 +
.../dto/OAuth2AccessTokenCreateReqDTO.java | 32 +
.../oauth2/dto/OAuth2AccessTokenRespDTO.java | 28 +
.../common/biz/system/package-info.java | 4 +
.../permission/PermissionCommonApi.java | 43 +
.../dto/DeptDataPermissionRespDTO.java | 28 +
.../biz/system/tenant/TenantCommonApi.java | 29 +
.../framework/common/core/ArrayValuable.java | 15 +
.../framework/common/core/KeyValue.java | 22 +
.../common/enums/CommonStatusEnum.java | 46 +
.../common/enums/DateIntervalEnum.java | 47 +
.../framework/common/enums/DocumentEnum.java | 21 +
.../framework/common/enums/RpcConstants.java | 40 +
.../framework/common/enums/TerminalEnum.java | 40 +
.../framework/common/enums/UserTypeEnum.java | 39 +
.../common/enums/WebFilterOrderEnum.java | 38 +
.../framework/common/exception/ErrorCode.java | 32 +
.../common/exception/ServerException.java | 60 +
.../common/exception/ServiceException.java | 60 +
.../enums/GlobalErrorCodeConstants.java | 41 +
.../enums/ServiceErrorCodeRange.java | 48 +
.../exception/util/ServiceExceptionUtil.java | 77 +
.../framework/common/package-info.java | 6 +
.../framework/common/pojo/CommonResult.java | 121 +
.../framework/common/pojo/PageParam.java | 36 +
.../framework/common/pojo/PageResult.java | 41 +
.../common/pojo/SortablePageParam.java | 19 +
.../framework/common/pojo/SortingField.java | 37 +
.../common/util/cache/CacheUtils.java | 61 +
.../common/util/collection/ArrayUtils.java | 58 +
.../util/collection/CollectionUtils.java | 352 ++
.../common/util/collection/MapUtils.java | 68 +
.../common/util/collection/SetUtils.java | 19 +
.../framework/common/util/date/DateUtils.java | 149 +
.../common/util/date/LocalDateTimeUtils.java | 350 ++
.../framework/common/util/http/HttpUtils.java | 193 +
.../framework/common/util/io/FileUtils.java | 61 +
.../framework/common/util/io/IoUtils.java | 28 +
.../framework/common/util/json/JsonUtils.java | 232 ++
.../util/json/databind/NumberSerializer.java | 37 +
.../TimestampLocalDateTimeDeserializer.java | 27 +
.../TimestampLocalDateTimeSerializer.java | 85 +
.../common/util/monitor/TracerUtils.java | 30 +
.../common/util/number/MoneyUtils.java | 131 +
.../common/util/number/NumberUtils.java | 78 +
.../common/util/object/BeanUtils.java | 69 +
.../common/util/object/ObjectUtils.java | 67 +
.../common/util/object/PageUtils.java | 67 +
.../framework/common/util/package-info.java | 7 +
.../common/util/servlet/ServletUtils.java | 105 +
.../util/spring/SpringExpressionUtils.java | 123 +
.../common/util/spring/SpringUtils.java | 24 +
.../common/util/string/StrUtils.java | 107 +
.../util/validation/ValidationUtils.java | 55 +
.../framework/common/validation/InEnum.java | 35 +
.../validation/InEnumCollectionValidator.java | 44 +
.../common/validation/InEnumValidator.java | 43 +
.../framework/common/validation/Mobile.java | 28 +
.../common/validation/MobileValidator.java | 25 +
.../common/validation/Telephone.java | 28 +
.../common/validation/TelephoneValidator.java | 25 +
.../common/validation/package-info.java | 4 +
.../util/collection/CollectionUtilsTest.java | 64 +
.../pom.xml | 54 +
.../njcn/msgpush/framework/ip/core/Area.java | 61 +
.../framework/ip/core/enums/AreaTypeEnum.java | 39 +
.../framework/ip/core/utils/AreaUtils.java | 214 +
.../framework/ip/core/utils/IPUtils.java | 87 +
.../msgpush/framework/ip/package-info.java | 11 +
.../src/main/resources/area.csv | 3662 +++++++++++++++++
.../src/main/resources/ip2region.xdb | Bin 0 -> 4177309 bytes
.../ip/core/utils/AreaUtilsTest.java | 36 +
.../framework/ip/core/utils/IPUtilsTest.java | 47 +
.../pom.xml | 85 +
.../MsgpushTenantAutoConfiguration.java | 212 +
.../MsgpushTenantRpcAutoConfiguration.java | 20 +
.../tenant/config/TenantProperties.java | 57 +
.../tenant/core/aop/TenantIgnore.java | 32 +
.../tenant/core/aop/TenantIgnoreAspect.java | 41 +
.../core/context/TenantContextHolder.java | 69 +
.../tenant/core/db/TenantBaseDO.java | 21 +
.../core/db/TenantDatabaseInterceptor.java | 83 +
.../TenantKafkaEnvironmentPostProcessor.java | 37 +
.../kafka/TenantKafkaProducerInterceptor.java | 47 +
.../rabbitmq/TenantRabbitMQInitializer.java | 24 +
.../TenantRabbitMQMessagePostProcessor.java | 31 +
.../redis/TenantRedisMessageInterceptor.java | 42 +
.../TenantRocketMQConsumeMessageHook.java | 46 +
.../rocketmq/TenantRocketMQInitializer.java | 54 +
.../TenantRocketMQSendMessageHook.java | 36 +
.../core/redis/TenantRedisCacheManager.java | 50 +
.../core/rpc/TenantRequestInterceptor.java | 25 +
.../security/TenantSecurityWebFilter.java | 134 +
.../core/service/TenantFrameworkService.java | 26 +
.../service/TenantFrameworkServiceImpl.java | 65 +
.../tenant/core/util/TenantUtils.java | 113 +
.../core/web/TenantContextWebFilter.java | 37 +
.../web/TenantVisitContextInterceptor.java | 65 +
.../framework/tenant/package-info.java | 17 +
.../invocation/InvocableHandlerMethod.java | 275 ++
.../main/resources/META-INF/spring.factories | 2 +
...ot.autoconfigure.AutoConfiguration.imports | 2 +
.../msgpush-spring-boot-starter-env/pom.xml | 66 +
.../config/EnvEnvironmentPostProcessor.java | 51 +
.../framework/env/config/EnvProperties.java | 22 +
.../MsgpushEnvRpcAutoConfiguration.java | 46 +
.../MsgpushEnvWebAutoConfiguration.java | 32 +
.../env/core/context/EnvContextHolder.java | 39 +
.../env/core/fegin/EnvLoadBalancerClient.java | 106 +
.../fegin/EnvLoadBalancerClientFactory.java | 30 +
.../env/core/fegin/EnvRequestInterceptor.java | 24 +
.../framework/env/core/package-info.java | 1 +
.../framework/env/core/util/EnvUtils.java | 56 +
.../framework/env/core/web/EnvWebFilter.java | 41 +
.../msgpush/framework/env/package-info.java | 7 +
.../main/resources/META-INF/spring.factories | 2 +
...ot.autoconfigure.AutoConfiguration.imports | 2 +
.../msgpush-spring-boot-starter-excel/pom.xml | 75 +
.../config/MsgpushDictAutoConfiguration.java | 18 +
.../MsgpushDictRpcAutoConfiguration.java | 15 +
.../dict/core/DictFrameworkUtils.java | 84 +
.../msgpush/framework/dict/package-info.java | 6 +
.../framework/dict/validation/InDict.java | 34 +
.../validation/InDictCollectionValidator.java | 43 +
.../dict/validation/InDictValidator.java | 41 +
.../excel/core/annotations/DictFormat.java | 22 +
.../core/annotations/ExcelColumnSelect.java | 27 +
.../excel/core/convert/AreaConvert.java | 46 +
.../excel/core/convert/DictConvert.java | 72 +
.../excel/core/convert/JsonConvert.java | 34 +
.../excel/core/convert/MoneyConvert.java | 39 +
.../function/ExcelColumnSelectFunction.java | 28 +
.../ColumnWidthMatchStyleStrategy.java | 78 +
.../core/handler/SelectSheetWriteHandler.java | 188 +
.../framework/excel/core/util/ExcelUtils.java | 56 +
.../msgpush/framework/excel/package-info.java | 4 +
...ot.autoconfigure.AutoConfiguration.imports | 2 +
.../core/util/DictFrameworkUtilsTest.java | 61 +
.../msgpush-spring-boot-starter-mq/pom.xml | 43 +
.../msgpush/framework/mq/package-info.java | 4 +
.../MsgpushRabbitMQAutoConfiguration.java | 28 +
.../mq/rabbitmq/core/package-info.java | 4 +
.../framework/mq/rabbitmq/package-info.java | 4 +
...gpushRedisMQConsumerAutoConfiguration.java | 162 +
...gpushRedisMQProducerAutoConfiguration.java | 31 +
.../mq/redis/core/RedisMQTemplate.java | 87 +
.../interceptor/RedisMessageInterceptor.java | 26 +
.../job/RedisPendingMessageResendJob.java | 99 +
.../job/RedisStreamMessageCleanupJob.java | 72 +
.../core/message/AbstractRedisMessage.java | 29 +
.../pubsub/AbstractRedisChannelMessage.java | 23 +
.../AbstractRedisChannelMessageListener.java | 103 +
.../stream/AbstractRedisStreamMessage.java | 23 +
.../AbstractRedisStreamMessageListener.java | 119 +
.../framework/mq/redis/package-info.java | 6 +
...ot.autoconfigure.AutoConfiguration.imports | 3 +
.../pom.xml | 105 +
.../MsgpushDataSourceAutoConfiguration.java | 40 +
.../datasource/core/enums/DataSourceEnum.java | 22 +
.../core/filter/DruidAdRemoveFilter.java | 38 +
.../framework/datasource/package-info.java | 5 +
.../IdTypeEnvironmentPostProcessor.java | 119 +
.../MsgpushMybatisAutoConfiguration.java | 95 +
.../mybatis/core/dataobject/BaseDO.java | 66 +
.../mybatis/core/enums/DbTypeEnum.java | 101 +
.../core/handler/DefaultDBFieldHandler.java | 63 +
.../mybatis/core/mapper/BaseMapperX.java | 249 ++
.../core/query/LambdaQueryWrapperX.java | 135 +
.../mybatis/core/query/MPJLambdaWrapperX.java | 348 ++
.../mybatis/core/query/QueryWrapperX.java | 166 +
.../mybatis/core/type/EncryptTypeHandler.java | 75 +
.../core/type/IntegerListTypeHandler.java | 56 +
.../core/type/LongListTypeHandler.java | 57 +
.../mybatis/core/type/LongSetTypeHandler.java | 58 +
.../core/type/StringListTypeHandler.java | 58 +
.../mybatis/core/util/JdbcUtils.java | 89 +
.../mybatis/core/util/MyBatisUtils.java | 157 +
.../framework/mybatis/package-info.java | 4 +
.../MsgpushTranslateAutoConfiguration.java | 18 +
.../translate/core/TranslateUtils.java | 37 +
.../framework/translate/package-info.java | 4 +
.../main/resources/META-INF/spring.factories | 2 +
...ot.autoconfigure.AutoConfiguration.imports | 3 +
.../pom.xml | 47 +
.../MsgpushIdempotentConfiguration.java | 46 +
.../core/annotation/Idempotent.java | 63 +
.../idempotent/core/aop/IdempotentAspect.java | 68 +
.../keyresolver/IdempotentKeyResolver.java | 22 +
.../impl/DefaultIdempotentKeyResolver.java | 25 +
.../impl/ExpressionIdempotentKeyResolver.java | 64 +
.../impl/UserIdempotentKeyResolver.java | 28 +
.../core/redis/IdempotentRedisDAO.java | 41 +
.../framework/idempotent/package-info.java | 12 +
.../config/MsgpushLock4jConfiguration.java | 18 +
.../core/DefaultLockFailureStrategy.java | 21 +
.../lock4j/core/Lock4jRedisKeyConstants.java | 19 +
.../framework/lock4j/package-info.java | 4 +
.../MsgpushRateLimiterConfiguration.java | 55 +
.../core/annotation/RateLimiter.java | 62 +
.../core/aop/RateLimiterAspect.java | 60 +
.../keyresolver/RateLimiterKeyResolver.java | 22 +
.../impl/ClientIpRateLimiterKeyResolver.java | 27 +
.../impl/DefaultRateLimiterKeyResolver.java | 25 +
.../ExpressionRateLimiterKeyResolver.java | 64 +
.../ServerNodeRateLimiterKeyResolver.java | 27 +
.../impl/UserRateLimiterKeyResolver.java | 28 +
.../core/redis/RateLimiterRedisDAO.java | 66 +
.../framework/ratelimiter/package-info.java | 4 +
.../MsgpushApiSignatureAutoConfiguration.java | 28 +
.../core/annotation/ApiSignature.java | 59 +
.../core/aop/ApiSignatureAspect.java | 174 +
.../core/redis/ApiSignatureRedisDAO.java | 57 +
.../framework/signature/package-info.java | 6 +
...ot.autoconfigure.AutoConfiguration.imports | 4 +
.../signature/core/ApiSignatureTest.java | 74 +
.../msgpush-spring-boot-starter-redis/pom.xml | 41 +
.../config/MsgpushCacheAutoConfiguration.java | 82 +
.../redis/config/MsgpushCacheProperties.java | 27 +
.../config/MsgpushRedisAutoConfiguration.java | 45 +
.../redis/core/TimeoutRedisCacheManager.java | 86 +
.../msgpush/framework/redis/package-info.java | 4 +
...ot.autoconfigure.AutoConfiguration.imports | 2 +
.../msgpush-spring-boot-starter-rpc/pom.xml | 46 +
.../framework/rpc/config/package-info.java | 4 +
.../framework/rpc/core/package-info.java | 4 +
.../msgpush/framework/rpc/package-info.java | 6 +
.../pom.xml | 72 +
.../MsgpushOperateLogConfiguration.java | 27 +
...MsgpushOperateLogRpcAutoConfiguration.java | 15 +
.../operatelog/core/package-info.java | 4 +
.../core/service/LogRecordServiceImpl.java | 92 +
.../framework/operatelog/package-info.java | 7 +
.../config/AuthorizeRequestsCustomizer.java | 35 +
.../MsgpushSecurityAutoConfiguration.java | 94 +
.../MsgpushSecurityRpcAutoConfiguration.java | 25 +
.../MsgpushWebSecurityConfigurerAdapter.java | 221 +
.../security/config/SecurityProperties.java | 51 +
.../framework/security/core/LoginUser.java | 75 +
...eadLocalSecurityContextHolderStrategy.java | 48 +
.../filter/TokenAuthenticationFilter.java | 155 +
.../core/handler/AccessDeniedHandlerImpl.java | 41 +
.../handler/AuthenticationEntryPointImpl.java | 35 +
.../core/rpc/LoginUserRequestInterceptor.java | 37 +
.../service/SecurityFrameworkService.java | 59 +
.../service/SecurityFrameworkServiceImpl.java | 121 +
.../core/util/SecurityFrameworkUtils.java | 162 +
.../framework/security/package-info.java | 7 +
...ot.autoconfigure.AutoConfiguration.imports | 5 +
.../msgpush-spring-boot-starter-test/pom.xml | 60 +
.../test/config/RedisTestConfiguration.java | 35 +
.../SqlInitializationTestConfiguration.java | 52 +
.../test/core/ut/BaseDbAndRedisUnitTest.java | 55 +
.../test/core/ut/BaseDbUnitTest.java | 47 +
.../test/core/ut/BaseMockitoUnitTest.java | 13 +
.../test/core/ut/BaseRedisUnitTest.java | 36 +
.../framework/test/core/ut/package-info.java | 4 +
.../framework/test/core/util/AssertUtils.java | 101 +
.../framework/test/core/util/RandomUtils.java | 146 +
.../msgpush/framework/test/package-info.java | 4 +
.../msgpush-spring-boot-starter-web/pom.xml | 89 +
.../MsgpushApiLogAutoConfiguration.java | 44 +
.../MsgpushApiLogRpcAutoConfiguration.java | 16 +
.../apilog/core/annotation/ApiAccessLog.java | 65 +
.../apilog/core/enums/OperateTypeEnum.java | 51 +
.../core/filter/ApiAccessLogFilter.java | 252 ++
.../interceptor/ApiAccessLogInterceptor.java | 103 +
.../framework/apilog/package-info.java | 8 +
.../MsgpushBannerAutoConfiguration.java | 20 +
.../banner/core/BannerApplicationRunner.java | 25 +
.../framework/banner/package-info.java | 6 +
.../core/base/annotation/DesensitizeBy.java | 28 +
.../base/handler/DesensitizationHandler.java | 40 +
.../StringDesensitizeSerializer.java | 92 +
.../regex/annotation/EmailDesensitize.java | 40 +
.../regex/annotation/RegexDesensitize.java | 42 +
.../AbstractRegexDesensitizationHandler.java | 46 +
.../DefaultRegexDesensitizationHandler.java | 27 +
.../handler/EmailDesensitizationHandler.java | 22 +
.../annotation/BankCardDesensitize.java | 43 +
.../annotation/CarLicenseDesensitize.java | 43 +
.../annotation/ChineseNameDesensitize.java | 43 +
.../annotation/FixedPhoneDesensitize.java | 43 +
.../slider/annotation/IdCardDesensitize.java | 43 +
.../slider/annotation/MobileDesensitize.java | 43 +
.../annotation/PasswordDesensitize.java | 45 +
.../slider/annotation/SliderDesensitize.java | 47 +
.../AbstractSliderDesensitizationHandler.java | 77 +
.../handler/BankCardDesensitization.java | 32 +
.../handler/CarLicenseDesensitization.java | 32 +
.../handler/ChineseNameDesensitization.java | 27 +
.../DefaultDesensitizationHandler.java | 27 +
.../handler/FixedPhoneDesensitization.java | 27 +
.../slider/handler/IdCardDesensitization.java | 26 +
.../slider/handler/MobileDesensitization.java | 27 +
.../handler/PasswordDesensitization.java | 26 +
.../framework/desensitize/package-info.java | 4 +
.../encrypt/config/ApiEncryptProperties.java | 70 +
.../MsgpushApiEncryptAutoConfiguration.java | 34 +
.../encrypt/core/annotation/ApiEncrypt.java | 23 +
.../core/filter/ApiDecryptRequestWrapper.java | 86 +
.../encrypt/core/filter/ApiEncryptFilter.java | 161 +
.../filter/ApiEncryptResponseWrapper.java | 110 +
.../framework/encrypt/package-info.java | 4 +
.../MsgpushJacksonAutoConfiguration.java | 78 +
.../framework/jackson/core/package-info.java | 1 +
.../njcn/msgpush/framework/package-info.java | 4 +
.../config/Knife4jOpenApiCustomizer.java | 146 +
.../MsgpushSwaggerAutoConfiguration.java | 186 +
.../swagger/config/SwaggerProperties.java | 60 +
.../framework/swagger/package-info.java | 6 +
.../config/MsgpushWebAutoConfiguration.java | 171 +
.../framework/web/config/WebProperties.java | 66 +
.../web/core/filter/ApiRequestFilter.java | 27 +
.../core/filter/CacheRequestBodyFilter.java | 46 +
.../core/filter/CacheRequestBodyWrapper.java | 77 +
.../framework/web/core/filter/DemoFilter.java | 35 +
.../core/handler/GlobalExceptionHandler.java | 453 ++
.../handler/GlobalResponseBodyHandler.java | 45 +
.../web/core/util/WebFrameworkUtils.java | 183 +
.../msgpush/framework/web/package-info.java | 4 +
.../config/MsgpushXssAutoConfiguration.java | 63 +
.../framework/xss/config/XssProperties.java | 29 +
.../xss/core/clean/JsoupXssCleaner.java | 64 +
.../framework/xss/core/clean/XssCleaner.java | 16 +
.../framework/xss/core/filter/XssFilter.java | 52 +
.../xss/core/filter/XssRequestWrapper.java | 92 +
.../core/json/XssStringJsonDeserializer.java | 82 +
.../msgpush/framework/xss/package-info.java | 6 +
...ot.autoconfigure.AutoConfiguration.imports | 8 +
.../src/main/resources/banner.txt | 17 +
.../desensitize/core/DesensitizeTest.java | 100 +
.../desensitize/core/annotation/Address.java | 30 +
.../core/handler/AddressHandler.java | 19 +
.../framework/encrypt/ApiEncryptTest.java | 86 +
.../pom.xml | 73 +
.../MsgpushWebSocketAutoConfiguration.java | 183 +
.../websocket/config/WebSocketProperties.java | 34 +
.../handler/JsonWebSocketMessageHandler.java | 83 +
.../listener/WebSocketMessageListener.java | 31 +
.../core/message/JsonWebSocketMessage.java | 29 +
.../LoginUserHandshakeInterceptor.java | 42 +
.../WebSocketAuthorizeRequestsCustomizer.java | 24 +
.../AbstractWebSocketMessageSender.java | 106 +
.../core/sender/WebSocketMessageSender.java | 52 +
.../sender/kafka/KafkaWebSocketMessage.java | 35 +
.../kafka/KafkaWebSocketMessageConsumer.java | 28 +
.../kafka/KafkaWebSocketMessageSender.java | 67 +
.../local/LocalWebSocketMessageSender.java | 20 +
.../rabbitmq/RabbitMQWebSocketMessage.java | 37 +
.../RabbitMQWebSocketMessageConsumer.java | 39 +
.../RabbitMQWebSocketMessageSender.java | 62 +
.../sender/redis/RedisWebSocketMessage.java | 34 +
.../redis/RedisWebSocketMessageConsumer.java | 23 +
.../redis/RedisWebSocketMessageSender.java | 57 +
.../rocketmq/RocketMQWebSocketMessage.java | 35 +
.../RocketMQWebSocketMessageConsumer.java | 30 +
.../RocketMQWebSocketMessageSender.java | 61 +
.../WebSocketSessionHandlerDecorator.java | 49 +
.../core/session/WebSocketSessionManager.java | 53 +
.../session/WebSocketSessionManagerImpl.java | 125 +
.../core/util/WebSocketFrameworkUtils.java | 67 +
.../framework/websocket/package-info.java | 4 +
...ot.autoconfigure.AutoConfiguration.imports | 1 +
msgpush-framework/pom.xml | 42 +
msgpush-gateway/pom.xml | 94 +
.../gateway/GatewayServerApplication.java | 14 +
.../gateway/filter/cors/CorsFilter.java | 48 +
.../filter/cors/CorsResponseHeaderFilter.java | 54 +
.../gateway/filter/grey/GrayLoadBalancer.java | 117 +
.../GrayReactiveLoadBalancerClientFilter.java | 139 +
.../gateway/filter/logging/AccessLog.java | 92 +
.../filter/logging/AccessLogFilter.java | 268 ++
.../gateway/filter/security/LoginUser.java | 44 +
.../security/TokenAuthenticationFilter.java | 168 +
.../handler/GlobalExceptionHandler.java | 74 +
.../GatewayJacksonAutoConfiguration.java | 92 +
.../gateway/route/dynamic/package-info.java | 10 +
.../msgpush/gateway/route/package-info.java | 4 +
.../gateway/util/BannerApplicationRunner.java | 27 +
.../njcn/msgpush/gateway/util/EnvUtils.java | 39 +
.../gateway/util/SecurityFrameworkUtils.java | 118 +
.../gateway/util/WebFrameworkUtils.java | 116 +
.../src/main/resources/application-dev.yaml | 25 +
.../src/main/resources/application-local.yaml | 31 +
.../src/main/resources/application.yaml | 95 +
msgpush-gateway/src/main/resources/banner.txt | 17 +
.../src/main/resources/logback-spring.xml | 56 +
.../src/main/resources/static/favicon.ico | Bin 0 -> 3708 bytes
.../java/com/njcn/msgpush/ProjectReactor.java | 146 +
.../msgpush-module-infra-api/pom.xml | 47 +
.../module/infra/api/config/ConfigApi.java | 21 +
.../module/infra/api/file/FileApi.java | 73 +
.../infra/api/file/dto/FileCreateReqDTO.java | 25 +
.../module/infra/api/package-info.java | 4 +
.../api/websocket/WebSocketSenderApi.java | 74 +
.../websocket/dto/WebSocketSendReqDTO.java | 26 +
.../module/infra/enums/ApiConstants.java | 23 +
.../module/infra/enums/DictTypeConstants.java | 22 +
.../infra/enums/ErrorCodeConstants.java | 72 +
.../codegen/CodegenColumnHtmlTypeEnum.java | 29 +
.../CodegenColumnListConditionEnum.java | 27 +
.../enums/codegen/CodegenFrontTypeEnum.java | 35 +
.../infra/enums/codegen/CodegenSceneEnum.java | 41 +
.../codegen/CodegenTemplateTypeEnum.java | 53 +
.../enums/codegen/CodegenVOTypeEnum.java | 30 +
.../infra/enums/config/ConfigTypeEnum.java | 21 +
.../logger/ApiErrorLogProcessStatusEnum.java | 28 +
.../module/infra/enums/package-info.java | 4 +
.../msgpush-module-infra-server/pom.xml | 154 +
.../module/infra/InfraServerApplication.java | 21 +
.../infra/api/config/ConfigApiImpl.java | 25 +
.../module/infra/api/file/FileApiImpl.java | 31 +
.../infra/api/logger/ApiAccessLogApiImpl.java | 27 +
.../infra/api/logger/ApiErrorLogApiImpl.java | 27 +
.../module/infra/api/package-info.java | 1 +
.../api/websocket/WebSocketSenderApiImpl.java | 36 +
.../admin/codegen/CodegenController.java | 160 +
.../codegen/vo/CodegenCreateListReqVO.java | 21 +
.../admin/codegen/vo/CodegenDetailRespVO.java | 20 +
.../codegen/vo/CodegenPreviewRespVO.java | 16 +
.../admin/codegen/vo/CodegenUpdateReqVO.java | 24 +
.../vo/column/CodegenColumnRespVO.java | 69 +
.../vo/column/CodegenColumnSaveReqVO.java | 81 +
.../vo/table/CodegenTablePageReqVO.java | 29 +
.../codegen/vo/table/CodegenTableRespVO.java | 72 +
.../vo/table/CodegenTableSaveReqVO.java | 100 +
.../codegen/vo/table/DatabaseTableRespVO.java | 16 +
.../admin/config/ConfigController.java | 117 +
.../admin/config/vo/ConfigPageReqVO.java | 29 +
.../admin/config/vo/ConfigRespVO.java | 56 +
.../admin/config/vo/ConfigSaveReqVO.java | 45 +
.../admin/db/DataSourceConfigController.java | 81 +
.../admin/db/vo/DataSourceConfigRespVO.java | 27 +
.../db/vo/DataSourceConfigSaveReqVO.java | 31 +
.../demo/demo01/Demo01ContactController.java | 102 +
.../demo01/vo/Demo01ContactPageReqVO.java | 26 +
.../demo/demo01/vo/Demo01ContactRespVO.java | 46 +
.../demo01/vo/Demo01ContactSaveReqVO.java | 36 +
.../demo/demo02/Demo02CategoryController.java | 90 +
.../demo02/vo/Demo02CategoryListReqVO.java | 25 +
.../demo/demo02/vo/Demo02CategoryRespVO.java | 31 +
.../demo02/vo/Demo02CategorySaveReqVO.java | 23 +
.../erp/Demo03StudentErpController.java | 208 +
.../erp/vo/Demo03StudentErpPageReqVO.java | 29 +
.../demo03/erp/vo/Demo03StudentErpRespVO.java | 42 +
.../erp/vo/Demo03StudentErpSaveReqVO.java | 33 +
.../inner/Demo03StudentInnerController.java | 124 +
.../inner/vo/Demo03StudentInnerPageReqVO.java | 29 +
.../inner/vo/Demo03StudentInnerRespVO.java | 42 +
.../inner/vo/Demo03StudentInnerSaveReqVO.java | 42 +
.../normal/Demo03StudentNormalController.java | 124 +
.../vo/Demo03StudentNormalPageReqVO.java | 29 +
.../normal/vo/Demo03StudentNormalRespVO.java | 42 +
.../vo/Demo03StudentNormalSaveReqVO.java | 42 +
.../controller/admin/demo/package-info.java | 8 +
.../admin/file/FileConfigController.http | 45 +
.../admin/file/FileConfigController.java | 98 +
.../controller/admin/file/FileController.java | 137 +
.../file/vo/config/FileConfigPageReqVO.java | 26 +
.../file/vo/config/FileConfigRespVO.java | 34 +
.../file/vo/config/FileConfigSaveReqVO.java | 31 +
.../admin/file/vo/file/FileCreateReqVO.java | 33 +
.../admin/file/vo/file/FilePageReqVO.java | 26 +
.../file/vo/file/FilePresignedUrlRespVO.java | 38 +
.../admin/file/vo/file/FileRespVO.java | 36 +
.../admin/file/vo/file/FileUploadReqVO.java | 35 +
.../admin/logger/ApiAccessLogController.java | 71 +
.../admin/logger/ApiErrorLogController.java | 83 +
.../apiaccesslog/ApiAccessLogPageReqVO.java | 38 +
.../vo/apiaccesslog/ApiAccessLogRespVO.java | 99 +
.../vo/apierrorlog/ApiErrorLogPageReqVO.java | 35 +
.../vo/apierrorlog/ApiErrorLogRespVO.java | 112 +
.../admin/redis/RedisController.http | 4 +
.../admin/redis/RedisController.java | 43 +
.../admin/redis/vo/RedisMonitorRespVO.java | 43 +
.../app/file/AppFileController.java | 65 +
.../app/file/vo/AppFileUploadReqVO.java | 28 +
.../infra/controller/app/package-info.java | 4 +
.../module/infra/controller/package-info.java | 6 +
.../infra/convert/codegen/CodegenConvert.java | 68 +
.../infra/convert/config/ConfigConvert.java | 28 +
.../infra/convert/file/FileConfigConvert.java | 22 +
.../module/infra/convert/package-info.java | 6 +
.../infra/convert/redis/RedisConvert.java | 29 +
.../dataobject/codegen/CodegenColumnDO.java | 134 +
.../dataobject/codegen/CodegenTableDO.java | 156 +
.../infra/dal/dataobject/config/ConfigDO.java | 66 +
.../dal/dataobject/db/DataSourceConfigDO.java | 50 +
.../demo/demo01/Demo01ContactDO.java | 54 +
.../demo/demo02/Demo02CategoryDO.java | 40 +
.../demo/demo03/Demo03CourseDO.java | 42 +
.../dataobject/demo/demo03/Demo03GradeDO.java | 42 +
.../demo/demo03/Demo03StudentDO.java | 50 +
.../dal/dataobject/file/FileConfigDO.java | 113 +
.../dal/dataobject/file/FileContentDO.java | 49 +
.../infra/dal/dataobject/file/FileDO.java | 57 +
.../dal/dataobject/logger/ApiAccessLogDO.java | 140 +
.../dal/dataobject/logger/ApiErrorLogDO.java | 161 +
.../mysql/codegen/CodegenColumnMapper.java | 29 +
.../dal/mysql/codegen/CodegenTableMapper.java | 39 +
.../infra/dal/mysql/config/ConfigMapper.java | 26 +
.../dal/mysql/db/DataSourceConfigMapper.java | 14 +
.../demo/demo01/Demo01ContactMapper.java | 26 +
.../demo/demo02/Demo02CategoryMapper.java | 35 +
.../demo03/erp/Demo03CourseErpMapper.java | 34 +
.../demo/demo03/erp/Demo03GradeErpMapper.java | 38 +
.../demo03/erp/Demo03StudentErpMapper.java | 27 +
.../demo03/inner/Demo03CourseInnerMapper.java | 29 +
.../demo03/inner/Demo03GradeInnerMapper.java | 29 +
.../inner/Demo03StudentInnerMapper.java | 27 +
.../normal/Demo03CourseNormalMapper.java | 29 +
.../normal/Demo03GradeNormalMapper.java | 29 +
.../normal/Demo03StudentNormalMapper.java | 27 +
.../dal/mysql/file/FileConfigMapper.java | 25 +
.../dal/mysql/file/FileContentMapper.java | 25 +
.../infra/dal/mysql/file/FileMapper.java | 26 +
.../dal/mysql/logger/ApiAccessLogMapper.java | 45 +
.../dal/mysql/logger/ApiErrorLogMapper.java | 44 +
.../codegen/config/CodegenConfiguration.java | 9 +
.../codegen/config/CodegenProperties.java | 58 +
.../infra/framework/codegen/package-info.java | 4 +
.../config/MsgpushFileAutoConfiguration.java | 21 +
.../file/core/client/AbstractFileClient.java | 78 +
.../file/core/client/FileClient.java | 66 +
.../file/core/client/FileClientConfig.java | 16 +
.../file/core/client/FileClientFactory.java | 24 +
.../core/client/FileClientFactoryImpl.java | 56 +
.../file/core/client/db/DBFileClient.java | 55 +
.../core/client/db/DBFileClientConfig.java | 23 +
.../file/core/client/ftp/FtpFileClient.java | 88 +
.../core/client/ftp/FtpFileClientConfig.java | 58 +
.../core/client/local/LocalFileClient.java | 56 +
.../client/local/LocalFileClientConfig.java | 29 +
.../file/core/client/s3/S3FileClient.java | 233 ++
.../core/client/s3/S3FileClientConfig.java | 108 +
.../file/core/client/sftp/SftpFileClient.java | 93 +
.../client/sftp/SftpFileClientConfig.java | 51 +
.../file/core/enums/FileStorageEnum.java | 55 +
.../file/core/utils/FileTypeUtils.java | 110 +
.../infra/framework/file/package-info.java | 12 +
.../config/AdminServerConfiguration.java | 106 +
.../infra/framework/monitor/package-info.java | 4 +
.../module/infra/framework/package-info.java | 6 +
.../rpc/config/RpcConfiguration.java | 9 +
.../infra/framework/rpc/package-info.java | 4 +
.../config/SecurityConfiguration.java | 43 +
.../framework/security/core/package-info.java | 4 +
.../infra/mq/consumer/package-info.java | 4 +
.../module/infra/mq/message/package-info.java | 4 +
.../infra/mq/producer/package-info.java | 4 +
.../msgpush/module/infra/package-info.java | 9 +
.../infra/service/codegen/CodegenService.java | 108 +
.../service/codegen/CodegenServiceImpl.java | 310 ++
.../service/codegen/inner/CodegenBuilder.java | 220 +
.../service/codegen/inner/CodegenEngine.java | 679 +++
.../infra/service/config/ConfigService.java | 71 +
.../service/config/ConfigServiceImpl.java | 124 +
.../service/db/DataSourceConfigService.java | 60 +
.../db/DataSourceConfigServiceImpl.java | 111 +
.../service/db/DatabaseTableService.java | 33 +
.../service/db/DatabaseTableServiceImpl.java | 77 +
.../demo/demo01/Demo01ContactService.java | 63 +
.../demo/demo01/Demo01ContactServiceImpl.java | 88 +
.../demo/demo02/Demo02CategoryService.java | 55 +
.../demo02/Demo02CategoryServiceImpl.java | 134 +
.../demo03/erp/Demo03StudentErpService.java | 162 +
.../erp/Demo03StudentErpServiceImpl.java | 219 +
.../inner/Demo03StudentInnerService.java | 85 +
.../inner/Demo03StudentInnerServiceImpl.java | 194 +
.../normal/Demo03StudentNormalService.java | 85 +
.../Demo03StudentNormalServiceImpl.java | 194 +
.../infra/service/file/FileConfigService.java | 94 +
.../service/file/FileConfigServiceImpl.java | 207 +
.../infra/service/file/FileService.java | 89 +
.../infra/service/file/FileServiceImpl.java | 206 +
.../service/logger/ApiAccessLogService.java | 46 +
.../logger/ApiAccessLogServiceImpl.java | 75 +
.../service/logger/ApiErrorLogService.java | 55 +
.../logger/ApiErrorLogServiceImpl.java | 97 +
.../DemoWebSocketMessageListener.java | 48 +
.../websocket/message/DemoReceiveMessage.java | 27 +
.../websocket/message/DemoSendMessage.java | 24 +
.../src/main/resources/application-dev.yaml | 89 +
.../src/main/resources/application-local.yaml | 103 +
.../src/main/resources/application.yaml | 115 +
.../codegen/java/controller/controller.vm | 271 ++
.../codegen/java/controller/vo/listReqVO.vm | 45 +
.../codegen/java/controller/vo/pageReqVO.vm | 45 +
.../codegen/java/controller/vo/respVO.vm | 53 +
.../codegen/java/controller/vo/saveReqVO.vm | 64 +
.../src/main/resources/codegen/java/dal/do.vm | 103 +
.../main/resources/codegen/java/dal/do_sub.vm | 69 +
.../main/resources/codegen/java/dal/mapper.vm | 82 +
.../resources/codegen/java/dal/mapper.xml.vm | 12 +
.../resources/codegen/java/dal/mapper_sub.vm | 63 +
.../resources/codegen/java/enums/errorcode.vm | 22 +
.../resources/codegen/java/service/service.vm | 165 +
.../codegen/java/service/serviceImpl.vm | 419 ++
.../codegen/java/test/serviceTest.vm | 167 +
.../src/main/resources/codegen/sql/h2.vm | 37 +
.../src/main/resources/codegen/sql/sql.vm | 181 +
.../main/resources/codegen/vue/api/api.js.vm | 160 +
.../vue/views/components/form_sub_erp.vue.vm | 205 +
.../views/components/form_sub_inner.vue.vm | 2 +
.../views/components/form_sub_normal.vue.vm | 347 ++
.../vue/views/components/list_sub_erp.vue.vm | 210 +
.../views/components/list_sub_inner.vue.vm | 4 +
.../resources/codegen/vue/views/form.vue.vm | 320 ++
.../resources/codegen/vue/views/index.vue.vm | 386 ++
.../main/resources/codegen/vue3/api/api.ts.vm | 166 +
.../vue3/views/components/form_sub_erp.vue.vm | 204 +
.../views/components/form_sub_inner.vue.vm | 2 +
.../views/components/form_sub_normal.vue.vm | 360 ++
.../vue3/views/components/list_sub_erp.vue.vm | 231 ++
.../views/components/list_sub_inner.vue.vm | 4 +
.../resources/codegen/vue3/views/form.vue.vm | 300 ++
.../resources/codegen/vue3/views/index.vue.vm | 424 ++
.../components/search-form.vue.vm | 297 ++
.../views/detail/index.vue.vm | 151 +
.../vue3_admin_uniapp/views/form/index.vue.vm | 253 ++
.../vue3_admin_uniapp/views/index.vue.vm | 211 +
.../resources/codegen/vue3_vben/api/api.ts.vm | 32 +
.../codegen/vue3_vben/views/data.ts.vm | 260 ++
.../codegen/vue3_vben/views/form.vue.vm | 58 +
.../codegen/vue3_vben/views/index.vue.vm | 92 +
.../vue3_vben5_antd/general/api/api.ts.vm | 167 +
.../vue3_vben5_antd/general/views/form.vue.vm | 325 ++
.../general/views/index.vue.vm | 483 +++
.../general/views/modules/form_sub_erp.vue.vm | 213 +
.../views/modules/form_sub_inner.vue.vm | 2 +
.../views/modules/form_sub_normal.vue.vm | 347 ++
.../general/views/modules/list_sub_erp.vue.vm | 424 ++
.../views/modules/list_sub_inner.vue.vm | 4 +
.../vue3_vben5_antd/schema/api/api.ts.vm | 1 +
.../vue3_vben5_antd/schema/views/data.ts.vm | 601 +++
.../vue3_vben5_antd/schema/views/form.vue.vm | 157 +
.../vue3_vben5_antd/schema/views/index.vue.vm | 321 ++
.../schema/views/modules/form_sub_erp.vue.vm | 89 +
.../views/modules/form_sub_inner.vue.vm | 2 +
.../views/modules/form_sub_normal.vue.vm | 195 +
.../schema/views/modules/list_sub_erp.vue.vm | 240 ++
.../views/modules/list_sub_inner.vue.vm | 4 +
.../vue3_vben5_ele/general/api/api.ts.vm | 167 +
.../vue3_vben5_ele/general/views/form.vue.vm | 321 ++
.../vue3_vben5_ele/general/views/index.vue.vm | 488 +++
.../general/views/modules/form_sub_erp.vue.vm | 210 +
.../views/modules/form_sub_inner.vue.vm | 2 +
.../views/modules/form_sub_normal.vue.vm | 341 ++
.../general/views/modules/list_sub_erp.vue.vm | 427 ++
.../views/modules/list_sub_inner.vue.vm | 4 +
.../vue3_vben5_ele/schema/api/api.ts.vm | 191 +
.../vue3_vben5_ele/schema/views/data.ts.vm | 610 +++
.../vue3_vben5_ele/schema/views/form.vue.vm | 157 +
.../vue3_vben5_ele/schema/views/index.vue.vm | 320 ++
.../schema/views/modules/form_sub_erp.vue.vm | 93 +
.../views/modules/form_sub_inner.vue.vm | 2 +
.../views/modules/form_sub_normal.vue.vm | 204 +
.../schema/views/modules/list_sub_erp.vue.vm | 237 ++
.../views/modules/list_sub_inner.vue.vm | 4 +
.../src/main/resources/file/erweima.jpg | Bin 0 -> 18385 bytes
.../src/main/resources/logback-spring.xml | 56 +
.../file/core/ftp/FtpFileClientTest.java | 56 +
.../file/core/local/LocalFileClientTest.java | 45 +
.../file/core/s3/S3FileClientTest.java | 146 +
.../file/core/sftp/SftpFileClientTest.java | 49 +
.../service/DefaultDatabaseQueryTest.java | 37 +
.../codegen/CodegenServiceImplTest.java | 563 +++
.../codegen/inner/CodegenBuilderTest.java | 87 +
.../inner/CodegenEngineAbstractTest.java | 138 +
.../codegen/inner/CodegenEngineVue2Test.java | 101 +
.../codegen/inner/CodegenEngineVue3Test.java | 101 +
.../service/config/ConfigServiceImplTest.java | 219 +
.../db/DataSourceConfigServiceImplTest.java | 208 +
.../db/DatabaseTableServiceImplTest.java | 89 +
.../file/FileConfigServiceImplTest.java | 281 ++
.../service/file/FileServiceImplTest.java | 309 ++
.../logger/ApiAccessLogServiceImplTest.java | 110 +
.../logger/ApiErrorLogServiceImplTest.java | 164 +
.../test/resources/application-unit-test.yaml | 51 +
.../resources/codegen/table/category.json | 52 +
.../test/resources/codegen/table/contact.json | 143 +
.../test/resources/codegen/table/student.json | 134 +
.../test/resources/codegen/table/teacher.json | 143 +
.../windows10/vue2_master_erp/assert.json | 73 +
.../java/ErrorCodeConstants_手动操作 | 6 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 30 +
.../java/InfraStudentController | 183 +
.../vue2_master_erp/java/InfraStudentDO | 67 +
.../vue2_master_erp/java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../vue2_master_erp/java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 52 +
.../vue2_master_erp/java/InfraStudentService | 139 +
.../java/InfraStudentServiceImpl | 180 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 30 +
.../windows10/vue2_master_erp/js/index | 141 +
.../codegen/windows10/vue2_master_erp/sql/h2 | 17 +
.../codegen/windows10/vue2_master_erp/sql/sql | 55 +
.../vue2_master_erp/vue/StudentContactForm | 151 +
.../vue2_master_erp/vue/StudentContactList | 129 +
.../windows10/vue2_master_erp/vue/StudentForm | 149 +
.../vue2_master_erp/vue/StudentTeacherForm | 151 +
.../vue2_master_erp/vue/StudentTeacherList | 129 +
.../windows10/vue2_master_erp/vue/index | 233 ++
.../vue2_master_erp/xml/InfraStudentMapper | 12 +
.../windows10/vue2_master_inner/assert.json | 73 +
.../java/ErrorCodeConstants_手动操作 | 3 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 28 +
.../java/InfraStudentController | 117 +
.../vue2_master_inner/java/InfraStudentDO | 67 +
.../vue2_master_inner/java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../vue2_master_inner/java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 58 +
.../java/InfraStudentService | 77 +
.../java/InfraStudentServiceImpl | 147 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 28 +
.../windows10/vue2_master_inner/js/index | 74 +
.../windows10/vue2_master_inner/sql/h2 | 17 +
.../windows10/vue2_master_inner/sql/sql | 55 +
.../vue2_master_inner/vue/StudentContactForm | 177 +
.../vue2_master_inner/vue/StudentContactList | 89 +
.../vue2_master_inner/vue/StudentForm | 180 +
.../vue2_master_inner/vue/StudentTeacherForm | 127 +
.../vue2_master_inner/vue/StudentTeacherList | 93 +
.../windows10/vue2_master_inner/vue/index | 222 +
.../vue2_master_inner/xml/InfraStudentMapper | 12 +
.../windows10/vue2_master_normal/assert.json | 67 +
.../java/ErrorCodeConstants_手动操作 | 3 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 28 +
.../java/InfraStudentController | 117 +
.../vue2_master_normal/java/InfraStudentDO | 67 +
.../java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 58 +
.../java/InfraStudentService | 77 +
.../java/InfraStudentServiceImpl | 147 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 28 +
.../windows10/vue2_master_normal/js/index | 74 +
.../windows10/vue2_master_normal/sql/h2 | 17 +
.../windows10/vue2_master_normal/sql/sql | 55 +
.../vue2_master_normal/vue/StudentContactForm | 177 +
.../vue2_master_normal/vue/StudentForm | 180 +
.../vue2_master_normal/vue/StudentTeacherForm | 127 +
.../windows10/vue2_master_normal/vue/index | 205 +
.../vue2_master_normal/xml/InfraStudentMapper | 12 +
.../codegen/windows10/vue2_one/assert.json | 49 +
.../vue2_one/java/ErrorCodeConstants_手动操作 | 3 +
.../vue2_one/java/InfraStudentController | 95 +
.../windows10/vue2_one/java/InfraStudentDO | 67 +
.../vue2_one/java/InfraStudentMapper | 30 +
.../vue2_one/java/InfraStudentPageReqVO | 34 +
.../vue2_one/java/InfraStudentRespVO | 60 +
.../vue2_one/java/InfraStudentSaveReqVO | 50 +
.../vue2_one/java/InfraStudentService | 55 +
.../vue2_one/java/InfraStudentServiceImpl | 74 +
.../vue2_one/java/InfraStudentServiceImplTest | 145 +
.../codegen/windows10/vue2_one/js/index | 53 +
.../codegen/windows10/vue2_one/sql/h2 | 17 +
.../codegen/windows10/vue2_one/sql/sql | 55 +
.../windows10/vue2_one/vue/StudentForm | 149 +
.../codegen/windows10/vue2_one/vue/index | 205 +
.../windows10/vue2_one/xml/InfraStudentMapper | 12 +
.../codegen/windows10/vue2_tree/assert.json | 49 +
.../java/ErrorCodeConstants_手动操作 | 8 +
.../vue2_tree/java/InfraCategoryController | 94 +
.../windows10/vue2_tree/java/InfraCategoryDO | 39 +
.../vue2_tree/java/InfraCategoryListReqVO | 15 +
.../vue2_tree/java/InfraCategoryMapper | 34 +
.../vue2_tree/java/InfraCategoryRespVO | 26 +
.../vue2_tree/java/InfraCategorySaveReqVO | 24 +
.../vue2_tree/java/InfraCategoryService | 55 +
.../vue2_tree/java/InfraCategoryServiceImpl | 136 +
.../java/InfraCategoryServiceImplTest | 128 +
.../codegen/windows10/vue2_tree/js/index | 53 +
.../codegen/windows10/vue2_tree/sql/h2 | 10 +
.../codegen/windows10/vue2_tree/sql/sql | 55 +
.../windows10/vue2_tree/vue/CategoryForm | 130 +
.../codegen/windows10/vue2_tree/vue/index | 161 +
.../vue2_tree/xml/InfraCategoryMapper | 12 +
.../windows10/vue3_master_erp/assert.json | 73 +
.../java/ErrorCodeConstants_手动操作 | 6 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 30 +
.../java/InfraStudentController | 183 +
.../vue3_master_erp/java/InfraStudentDO | 67 +
.../vue3_master_erp/java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../vue3_master_erp/java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 52 +
.../vue3_master_erp/java/InfraStudentService | 139 +
.../java/InfraStudentServiceImpl | 180 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 30 +
.../codegen/windows10/vue3_master_erp/sql/h2 | 17 +
.../codegen/windows10/vue3_master_erp/sql/sql | 55 +
.../windows10/vue3_master_erp/ts/index | 95 +
.../vue3_master_erp/vue/StudentContactForm | 155 +
.../vue3_master_erp/vue/StudentContactList | 146 +
.../windows10/vue3_master_erp/vue/StudentForm | 152 +
.../vue3_master_erp/vue/StudentTeacherForm | 155 +
.../vue3_master_erp/vue/StudentTeacherList | 146 +
.../windows10/vue3_master_erp/vue/index | 278 ++
.../vue3_master_erp/xml/InfraStudentMapper | 12 +
.../windows10/vue3_master_inner/assert.json | 73 +
.../java/ErrorCodeConstants_手动操作 | 3 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 28 +
.../java/InfraStudentController | 117 +
.../vue3_master_inner/java/InfraStudentDO | 67 +
.../vue3_master_inner/java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../vue3_master_inner/java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 58 +
.../java/InfraStudentService | 77 +
.../java/InfraStudentServiceImpl | 147 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 28 +
.../windows10/vue3_master_inner/sql/h2 | 17 +
.../windows10/vue3_master_inner/sql/sql | 55 +
.../windows10/vue3_master_inner/ts/index | 57 +
.../vue3_master_inner/vue/StudentContactForm | 174 +
.../vue3_master_inner/vue/StudentContactList | 72 +
.../vue3_master_inner/vue/StudentForm | 184 +
.../vue3_master_inner/vue/StudentTeacherForm | 122 +
.../vue3_master_inner/vue/StudentTeacherList | 76 +
.../windows10/vue3_master_inner/vue/index | 267 ++
.../vue3_master_inner/xml/InfraStudentMapper | 12 +
.../windows10/vue3_master_normal/assert.json | 67 +
.../java/ErrorCodeConstants_手动操作 | 3 +
.../java/InfraStudentContactDO | 71 +
.../java/InfraStudentContactMapper | 28 +
.../java/InfraStudentController | 117 +
.../vue3_master_normal/java/InfraStudentDO | 67 +
.../java/InfraStudentMapper | 30 +
.../java/InfraStudentPageReqVO | 34 +
.../java/InfraStudentRespVO | 60 +
.../java/InfraStudentSaveReqVO | 58 +
.../java/InfraStudentService | 77 +
.../java/InfraStudentServiceImpl | 147 +
.../java/InfraStudentServiceImplTest | 145 +
.../java/InfraStudentTeacherDO | 71 +
.../java/InfraStudentTeacherMapper | 28 +
.../windows10/vue3_master_normal/sql/h2 | 17 +
.../windows10/vue3_master_normal/sql/sql | 55 +
.../windows10/vue3_master_normal/ts/index | 57 +
.../vue3_master_normal/vue/StudentContactForm | 174 +
.../vue3_master_normal/vue/StudentForm | 184 +
.../vue3_master_normal/vue/StudentTeacherForm | 122 +
.../windows10/vue3_master_normal/vue/index | 252 ++
.../vue3_master_normal/xml/InfraStudentMapper | 12 +
.../codegen/windows10/vue3_one/assert.json | 49 +
.../vue3_one/java/ErrorCodeConstants_手动操作 | 3 +
.../vue3_one/java/InfraStudentController | 95 +
.../windows10/vue3_one/java/InfraStudentDO | 67 +
.../vue3_one/java/InfraStudentMapper | 30 +
.../vue3_one/java/InfraStudentPageReqVO | 34 +
.../vue3_one/java/InfraStudentRespVO | 60 +
.../vue3_one/java/InfraStudentSaveReqVO | 50 +
.../vue3_one/java/InfraStudentService | 55 +
.../vue3_one/java/InfraStudentServiceImpl | 74 +
.../vue3_one/java/InfraStudentServiceImplTest | 145 +
.../codegen/windows10/vue3_one/sql/h2 | 17 +
.../codegen/windows10/vue3_one/sql/sql | 55 +
.../codegen/windows10/vue3_one/ts/index | 43 +
.../windows10/vue3_one/vue/StudentForm | 152 +
.../codegen/windows10/vue3_one/vue/index | 252 ++
.../windows10/vue3_one/xml/InfraStudentMapper | 12 +
.../codegen/windows10/vue3_tree/assert.json | 49 +
.../java/ErrorCodeConstants_手动操作 | 8 +
.../vue3_tree/java/InfraCategoryController | 94 +
.../windows10/vue3_tree/java/InfraCategoryDO | 39 +
.../vue3_tree/java/InfraCategoryListReqVO | 15 +
.../vue3_tree/java/InfraCategoryMapper | 34 +
.../vue3_tree/java/InfraCategoryRespVO | 26 +
.../vue3_tree/java/InfraCategorySaveReqVO | 24 +
.../vue3_tree/java/InfraCategoryService | 55 +
.../vue3_tree/java/InfraCategoryServiceImpl | 136 +
.../java/InfraCategoryServiceImplTest | 128 +
.../codegen/windows10/vue3_tree/sql/h2 | 10 +
.../codegen/windows10/vue3_tree/sql/sql | 55 +
.../codegen/windows10/vue3_tree/ts/index | 37 +
.../windows10/vue3_tree/vue/CategoryForm | 114 +
.../codegen/windows10/vue3_tree/vue/index | 185 +
.../vue3_tree/xml/InfraCategoryMapper | 12 +
.../src/test/resources/logback.xml | 4 +
.../src/test/resources/sql/clean.sql | 11 +
.../src/test/resources/sql/create_tables.sql | 216 +
msgpush-module-infra/pom.xml | 25 +
.../msgpush-module-push-api/pom.xml | 45 +
.../msgpush-module-push-server/pom.xml | 134 +
.../module/push/PushServerApplication.java | 18 +
.../src/main/resources/application-dev.yaml | 89 +
.../src/main/resources/application-local.yaml | 103 +
.../src/main/resources/application.yaml | 108 +
.../src/main/resources/logback-spring.xml | 56 +
msgpush-module-push/pom.xml | 19 +
.../msgpush-module-system-api/pom.xml | 48 +
.../module/system/api/dept/DeptApi.java | 56 +
.../module/system/api/dept/PostApi.java | 45 +
.../system/api/dept/dto/DeptRespDTO.java | 25 +
.../system/api/dept/dto/PostRespDTO.java | 30 +
.../module/system/api/dict/DictDataApi.java | 31 +
.../module/system/api/logger/LoginLogApi.java | 24 +
.../system/api/logger/OperateLogApi.java | 25 +
.../api/logger/dto/LoginLogCreateReqDTO.java | 40 +
.../api/logger/dto/OperateLogPageReqDTO.java | 20 +
.../api/logger/dto/OperateLogRespDTO.java | 52 +
.../module/system/api/mail/MailSendApi.java | 28 +
.../mail/dto/MailSendSingleToUserReqDTO.java | 50 +
.../api/notify/NotifyMessageSendApi.java | 28 +
.../dto/NotifySendSingleToUserReqDTO.java | 23 +
.../module/system/api/package-info.java | 4 +
.../system/api/permission/PermissionApi.java | 27 +
.../module/system/api/permission/RoleApi.java | 25 +
.../module/system/api/user/AdminUserApi.java | 96 +
.../system/api/user/dto/AdminUserRespDTO.java | 34 +
.../module/system/enums/ApiConstants.java | 23 +
.../system/enums/DictTypeConstants.java | 26 +
.../system/enums/ErrorCodeConstants.java | 171 +
.../system/enums/LogRecordConstants.java | 33 +
.../module/system/enums/common/SexEnum.java | 27 +
.../system/enums/logger/LoginLogTypeEnum.java | 27 +
.../system/enums/logger/LoginResultEnum.java | 26 +
.../system/enums/mail/MailSendStatusEnum.java | 24 +
.../system/enums/notice/NoticeTypeEnum.java | 23 +
.../enums/notify/NotifyTemplateTypeEnum.java | 26 +
.../enums/oauth2/OAuth2ClientConstants.java | 12 +
.../enums/oauth2/OAuth2GrantTypeEnum.java | 29 +
.../enums/permission/DataScopeEnum.java | 40 +
.../system/enums/permission/MenuTypeEnum.java | 25 +
.../system/enums/permission/RoleCodeEnum.java | 32 +
.../system/enums/permission/RoleTypeEnum.java | 21 +
.../msgpush-module-system-server/pom.xml | 136 +
.../system/SystemServerApplication.java | 18 +
.../module/system/api/dept/DeptApiImpl.java | 49 +
.../module/system/api/dept/PostApiImpl.java | 36 +
.../system/api/dict/DictDataApiImpl.java | 38 +
.../system/api/logger/LoginLogApiImpl.java | 26 +
.../system/api/logger/OperateLogApiImpl.java | 38 +
.../api/notify/NotifyMessageSendApiImpl.java | 32 +
.../system/api/oauth2/OAuth2TokenApiImpl.java | 51 +
.../api/permission/PermissionApiImpl.java | 44 +
.../system/api/permission/RoleApiImpl.java | 25 +
.../system/api/tenant/TenantApiImpl.java | 35 +
.../system/api/user/AdminUserApiImpl.java | 91 +
.../controller/admin/auth/AuthController.http | 51 +
.../controller/admin/auth/AuthController.java | 121 +
.../admin/auth/vo/AuthLoginReqVO.java | 41 +
.../admin/auth/vo/AuthLoginRespVO.java | 30 +
.../admin/auth/vo/AuthMenuRespVO.java | 53 +
.../auth/vo/AuthPermissionInfoRespVO.java | 102 +
.../admin/auth/vo/AuthRegisterReqVO.java | 31 +
.../admin/auth/vo/AuthResetPasswordReqVO.java | 32 +
.../auth/vo/CaptchaVerificationReqVO.java | 22 +
.../admin/captcha/CaptchaController.java | 55 +
.../controller/admin/dept/DeptController.java | 93 +
.../controller/admin/dept/PostController.java | 114 +
.../admin/dept/vo/dept/DeptListReqVO.java | 16 +
.../admin/dept/vo/dept/DeptRespVO.java | 39 +
.../admin/dept/vo/dept/DeptSaveReqVO.java | 48 +
.../admin/dept/vo/dept/DeptSimpleRespVO.java | 23 +
.../admin/dept/vo/post/PostPageReqVO.java | 22 +
.../admin/dept/vo/post/PostRespVO.java | 45 +
.../admin/dept/vo/post/PostSaveReqVO.java | 39 +
.../admin/dept/vo/post/PostSimpleRespVO.java | 19 +
.../admin/dict/DictDataController.http | 4 +
.../admin/dict/DictDataController.java | 113 +
.../admin/dict/DictTypeController.java | 111 +
.../admin/dict/vo/data/DictDataPageReqVO.java | 28 +
.../admin/dict/vo/data/DictDataRespVO.java | 55 +
.../admin/dict/vo/data/DictDataSaveReqVO.java | 51 +
.../dict/vo/data/DictDataSimpleRespVO.java | 25 +
.../admin/dict/vo/type/DictTypePageReqVO.java | 33 +
.../admin/dict/vo/type/DictTypeRespVO.java | 41 +
.../admin/dict/vo/type/DictTypeSaveReqVO.java | 34 +
.../dict/vo/type/DictTypeSimpleRespVO.java | 19 +
.../controller/admin/ip/AreaController.http | 5 +
.../controller/admin/ip/AreaController.java | 50 +
.../admin/ip/vo/AreaNodeRespVO.java | 23 +
.../admin/logger/LoginLogController.java | 67 +
.../admin/logger/OperateLogController.http | 4 +
.../admin/logger/OperateLogController.java | 73 +
.../logger/vo/loginlog/LoginLogPageReqVO.java | 31 +
.../logger/vo/loginlog/LoginLogRespVO.java | 57 +
.../vo/operatelog/OperateLogPageReqVO.java | 35 +
.../vo/operatelog/OperateLogRespVO.java | 75 +
.../admin/notice/NoticeController.java | 102 +
.../admin/notice/vo/NoticePageReqVO.java | 19 +
.../admin/notice/vo/NoticeRespVO.java | 30 +
.../admin/notice/vo/NoticeSaveReqVO.java | 32 +
.../admin/notify/NotifyMessageController.java | 98 +
.../notify/NotifyTemplateController.java | 101 +
.../vo/message/NotifyMessageMyPageReqVO.java | 27 +
.../vo/message/NotifyMessagePageReqVO.java | 36 +
.../vo/message/NotifyMessageRespVO.java | 49 +
.../vo/template/NotifyTemplatePageReqVO.java | 33 +
.../vo/template/NotifyTemplateRespVO.java | 43 +
.../vo/template/NotifyTemplateSaveReqVO.java | 46 +
.../vo/template/NotifyTemplateSendReqVO.java | 29 +
.../admin/oauth2/OAuth2ClientController.http | 23 +
.../admin/oauth2/OAuth2ClientController.java | 83 +
.../admin/oauth2/OAuth2OpenController.http | 62 +
.../admin/oauth2/OAuth2OpenController.java | 298 ++
.../admin/oauth2/OAuth2TokenController.java | 61 +
.../admin/oauth2/OAuth2UserController.http | 14 +
.../admin/oauth2/OAuth2UserController.java | 81 +
.../vo/client/OAuth2ClientPageReqVO.java | 21 +
.../oauth2/vo/client/OAuth2ClientRespVO.java | 64 +
.../vo/client/OAuth2ClientSaveReqVO.java | 81 +
.../vo/open/OAuth2OpenAccessTokenRespVO.java | 34 +
.../open/OAuth2OpenAuthorizeInfoRespVO.java | 38 +
.../vo/open/OAuth2OpenCheckTokenRespVO.java | 40 +
.../vo/token/OAuth2AccessTokenPageReqVO.java | 22 +
.../vo/token/OAuth2AccessTokenRespVO.java | 40 +
.../oauth2/vo/user/OAuth2UserInfoRespVO.java | 70 +
.../oauth2/vo/user/OAuth2UserUpdateReqVO.java | 34 +
.../admin/permission/MenuController.http | 4 +
.../admin/permission/MenuController.java | 97 +
.../permission/PermissionController.java | 82 +
.../admin/permission/RoleController.http | 42 +
.../admin/permission/RoleController.java | 111 +
.../permission/vo/menu/MenuListReqVO.java | 16 +
.../admin/permission/vo/menu/MenuRespVO.java | 69 +
.../admin/permission/vo/menu/MenuSaveVO.java | 64 +
.../permission/vo/menu/MenuSimpleRespVO.java | 22 +
.../PermissionAssignRoleDataScopeReqVO.java | 28 +
.../PermissionAssignRoleMenuReqVO.java | 21 +
.../PermissionAssignUserRoleReqVO.java | 21 +
.../permission/vo/role/RolePageReqVO.java | 31 +
.../admin/permission/vo/role/RoleRespVO.java | 59 +
.../permission/vo/role/RoleSaveReqVO.java | 47 +
.../permission/vo/role/RoleSimpleRespVO.java | 16 +
.../admin/tenant/TenantController.http | 21 +
.../admin/tenant/TenantController.java | 136 +
.../admin/tenant/TenantPackageController.java | 92 +
.../vo/packages/TenantPackagePageReqVO.java | 32 +
.../vo/packages/TenantPackageRespVO.java | 31 +
.../vo/packages/TenantPackageSaveReqVO.java | 35 +
.../packages/TenantPackageSimpleRespVO.java | 20 +
.../tenant/vo/tenant/TenantPageReqVO.java | 36 +
.../admin/tenant/vo/tenant/TenantRespVO.java | 56 +
.../tenant/vo/tenant/TenantSaveReqVO.java | 71 +
.../controller/admin/user/UserController.http | 11 +
.../controller/admin/user/UserController.java | 181 +
.../admin/user/UserProfileController.http | 4 +
.../admin/user/UserProfileController.java | 77 +
.../user/vo/profile/UserProfileRespVO.java | 59 +
.../UserProfileUpdatePasswordReqVO.java | 23 +
.../vo/profile/UserProfileUpdateReqVO.java | 36 +
.../admin/user/vo/user/UserImportExcelVO.java | 44 +
.../admin/user/vo/user/UserImportRespVO.java | 24 +
.../admin/user/vo/user/UserPageReqVO.java | 41 +
.../admin/user/vo/user/UserRespVO.java | 75 +
.../admin/user/vo/user/UserSaveReqVO.java | 80 +
.../admin/user/vo/user/UserSimpleRespVO.java | 25 +
.../user/vo/user/UserUpdatePasswordReqVO.java | 23 +
.../user/vo/user/UserUpdateStatusReqVO.java | 25 +
.../app/dict/AppDictDataController.java | 43 +
.../app/dict/vo/AppDictDataRespVO.java | 26 +
.../controller/app/ip/AppAreaController.java | 36 +
.../app/ip/vo/AppAreaNodeRespVO.java | 23 +
.../system/controller/app/package-info.java | 4 +
.../app/tenant/AppTenantController.java | 43 +
.../app/tenant/vo/AppTenantRespVO.java | 16 +
.../system/controller/package-info.java | 6 +
.../system/convert/auth/AuthConvert.java | 78 +
.../convert/oauth2/OAuth2OpenConvert.java | 56 +
.../module/system/convert/package-info.java | 6 +
.../system/convert/tenant/TenantConvert.java | 26 +
.../system/convert/user/UserConvert.java | 56 +
.../system/dal/dataobject/dept/DeptDO.java | 66 +
.../system/dal/dataobject/dept/PostDO.java | 50 +
.../dal/dataobject/dept/UserPostDO.java | 40 +
.../dal/dataobject/dict/DictDataDO.java | 67 +
.../dal/dataobject/dict/DictTypeDO.java | 58 +
.../dal/dataobject/logger/LoginLogDO.java | 72 +
.../dal/dataobject/logger/OperateLogDO.java | 85 +
.../dal/dataobject/mail/MailAccountDO.java | 61 +
.../system/dal/dataobject/mail/MailLogDO.java | 139 +
.../dal/dataobject/mail/MailTemplateDO.java | 75 +
.../dal/dataobject/notice/NoticeDO.java | 47 +
.../dataobject/notify/NotifyMessageDO.java | 99 +
.../dataobject/notify/NotifyTemplateDO.java | 74 +
.../oauth2/OAuth2AccessTokenDO.java | 75 +
.../dataobject/oauth2/OAuth2ApproveDO.java | 63 +
.../dal/dataobject/oauth2/OAuth2ClientDO.java | 109 +
.../dal/dataobject/oauth2/OAuth2CodeDO.java | 68 +
.../oauth2/OAuth2RefreshTokenDO.java | 59 +
.../dal/dataobject/permission/MenuDO.java | 109 +
.../dal/dataobject/permission/RoleDO.java | 78 +
.../dal/dataobject/permission/RoleMenuDO.java | 35 +
.../dal/dataobject/permission/UserRoleDO.java | 35 +
.../dal/dataobject/tenant/TenantDO.java | 89 +
.../dataobject/tenant/TenantPackageDO.java | 54 +
.../dal/dataobject/user/AdminUserDO.java | 96 +
.../system/dal/mysql/dept/DeptMapper.java | 37 +
.../system/dal/mysql/dept/PostMapper.java | 38 +
.../system/dal/mysql/dept/UserPostMapper.java | 32 +
.../system/dal/mysql/dict/DictDataMapper.java | 49 +
.../system/dal/mysql/dict/DictTypeMapper.java | 37 +
.../dal/mysql/logger/LoginLogMapper.java | 28 +
.../dal/mysql/logger/OperateLogMapper.java | 33 +
.../system/dal/mysql/notice/NoticeMapper.java | 20 +
.../dal/mysql/notify/NotifyMessageMapper.java | 70 +
.../mysql/notify/NotifyTemplateMapper.java | 26 +
.../mysql/oauth2/OAuth2AccessTokenMapper.java | 40 +
.../dal/mysql/oauth2/OAuth2ApproveMapper.java | 28 +
.../dal/mysql/oauth2/OAuth2ClientMapper.java | 30 +
.../dal/mysql/oauth2/OAuth2CodeMapper.java | 14 +
.../oauth2/OAuth2RefreshTokenMapper.java | 22 +
.../module/system/dal/mysql/package-info.java | 9 +
.../dal/mysql/permission/MenuMapper.java | 36 +
.../dal/mysql/permission/RoleMapper.java | 39 +
.../dal/mysql/permission/RoleMenuMapper.java | 40 +
.../dal/mysql/permission/UserRoleMapper.java | 36 +
.../system/dal/mysql/tenant/TenantMapper.java | 47 +
.../dal/mysql/tenant/TenantPackageMapper.java | 31 +
.../dal/mysql/user/AdminUserMapper.java | 51 +
.../system/dal/redis/RedisKeyConstants.java | 110 +
.../oauth2/OAuth2AccessTokenRedisDAO.java | 59 +
.../config/MsgpushCaptchaConfiguration.java | 34 +
.../core/PictureWordCaptchaServiceImpl.java | 212 +
.../captcha/core/RedisCaptchaServiceImpl.java | 49 +
.../framework/captcha/package-info.java | 8 +
.../core/AdminUserParseFunction.java | 51 +
.../operatelog/core/AreaParseFunction.java | 39 +
.../operatelog/core/BooleanParseFunction.java | 39 +
.../operatelog/core/DeptParseFunction.java | 46 +
.../operatelog/core/PostParseFunction.java | 46 +
.../operatelog/core/SexParseFunction.java | 39 +
.../framework/operatelog/package-info.java | 4 +
.../module/system/framework/package-info.java | 6 +
.../rpc/config/RpcConfiguration.java | 12 +
.../system/framework/rpc/package-info.java | 4 +
.../config/SecurityConfiguration.java | 40 +
.../framework/security/core/package-info.java | 4 +
.../mq/message/mail/MailSendMessage.java | 58 +
.../system/mq/message/sms/SmsSendMessage.java | 42 +
.../system/mq/producer/mail/MailProducer.java | 51 +
.../system/mq/producer/sms/SmsProducer.java | 41 +
.../msgpush/module/system/package-info.java | 8 +
.../system/service/auth/AdminAuthService.java | 60 +
.../service/auth/AdminAuthServiceImpl.java | 220 +
.../system/service/dept/DeptService.java | 124 +
.../system/service/dept/DeptServiceImpl.java | 236 ++
.../system/service/dept/PostService.java | 91 +
.../system/service/dept/PostServiceImpl.java | 158 +
.../system/service/dict/DictDataService.java | 117 +
.../service/dict/DictDataServiceImpl.java | 184 +
.../system/service/dict/DictTypeService.java | 77 +
.../service/dict/DictTypeServiceImpl.java | 155 +
.../service/logger/LoginLogService.java | 38 +
.../service/logger/LoginLogServiceImpl.java | 40 +
.../service/logger/OperateLogService.java | 47 +
.../service/logger/OperateLogServiceImpl.java | 49 +
.../system/service/member/MemberService.java | 26 +
.../service/member/MemberServiceImpl.java | 54 +
.../system/service/member/package-info.java | 4 +
.../system/service/notice/NoticeService.java | 60 +
.../service/notice/NoticeServiceImpl.java | 79 +
.../service/notify/NotifyMessageService.java | 97 +
.../notify/NotifyMessageServiceImpl.java | 75 +
.../service/notify/NotifySendService.java | 55 +
.../service/notify/NotifySendServiceImpl.java | 87 +
.../service/notify/NotifyTemplateService.java | 81 +
.../notify/NotifyTemplateServiceImpl.java | 145 +
.../service/oauth2/OAuth2ApproveService.java | 52 +
.../oauth2/OAuth2ApproveServiceImpl.java | 106 +
.../service/oauth2/OAuth2ClientService.java | 98 +
.../oauth2/OAuth2ClientServiceImpl.java | 161 +
.../service/oauth2/OAuth2CodeService.java | 39 +
.../service/oauth2/OAuth2CodeServiceImpl.java | 64 +
.../service/oauth2/OAuth2GrantService.java | 113 +
.../oauth2/OAuth2GrantServiceImpl.java | 104 +
.../service/oauth2/OAuth2TokenService.java | 91 +
.../oauth2/OAuth2TokenServiceImpl.java | 243 ++
.../service/permission/MenuService.java | 102 +
.../service/permission/MenuServiceImpl.java | 307 ++
.../service/permission/PermissionService.java | 146 +
.../permission/PermissionServiceImpl.java | 339 ++
.../service/permission/RoleService.java | 131 +
.../service/permission/RoleServiceImpl.java | 274 ++
.../service/tenant/TenantPackageService.java | 79 +
.../tenant/TenantPackageServiceImpl.java | 152 +
.../system/service/tenant/TenantService.java | 145 +
.../service/tenant/TenantServiceImpl.java | 318 ++
.../tenant/handler/TenantInfoHandler.java | 21 +
.../tenant/handler/TenantMenuHandler.java | 21 +
.../system/service/user/AdminUserService.java | 217 +
.../service/user/AdminUserServiceImpl.java | 542 +++
.../system/util/oauth2/OAuth2Utils.java | 103 +
.../module/system/util/package-info.java | 4 +
...m.anji.captcha.service.CaptchaCacheService | 1 +
.../com.anji.captcha.service.CaptchaService | 1 +
.../src/main/resources/application-dev.yaml | 89 +
.../src/main/resources/application-local.yaml | 108 +
.../src/main/resources/application.yaml | 145 +
.../resources/images/jigsaw/original/bg1.png | Bin 0 -> 17827 bytes
.../resources/images/jigsaw/original/bg2.png | Bin 0 -> 28732 bytes
.../resources/images/jigsaw/original/bg3.png | Bin 0 -> 25814 bytes
.../resources/images/jigsaw/original/bg4.png | Bin 0 -> 27859 bytes
.../resources/images/jigsaw/original/bg5.png | Bin 0 -> 24036 bytes
.../resources/images/jigsaw/original/bg6.png | Bin 0 -> 19160 bytes
.../resources/images/jigsaw/original/bg7.png | Bin 0 -> 21445 bytes
.../resources/images/jigsaw/original/bg8.png | Bin 0 -> 30332 bytes
.../resources/images/jigsaw/original/bg9.png | Bin 0 -> 26977 bytes
.../images/jigsaw/slidingBlock/1.png | Bin 0 -> 2158 bytes
.../images/jigsaw/slidingBlock/11/10.png | Bin 0 -> 1657 bytes
.../images/jigsaw/slidingBlock/11/11.png | Bin 0 -> 1657 bytes
.../images/jigsaw/slidingBlock/11/12.png | Bin 0 -> 1657 bytes
.../images/jigsaw/slidingBlock/11/13.png | Bin 0 -> 1873 bytes
.../images/jigsaw/slidingBlock/11/14.png | Bin 0 -> 1872 bytes
.../images/jigsaw/slidingBlock/11/15.png | Bin 0 -> 1872 bytes
.../images/jigsaw/slidingBlock/11/16.png | Bin 0 -> 1838 bytes
.../images/jigsaw/slidingBlock/11/17.png | Bin 0 -> 1839 bytes
.../images/jigsaw/slidingBlock/11/18.png | Bin 0 -> 1836 bytes
.../images/jigsaw/slidingBlock/11/19.png | Bin 0 -> 1838 bytes
.../images/jigsaw/slidingBlock/11/8.png | Bin 0 -> 1657 bytes
.../images/jigsaw/slidingBlock/11/9.png | Bin 0 -> 1657 bytes
.../images/jigsaw/slidingBlock/2.png | Bin 0 -> 2297 bytes
.../images/jigsaw/slidingBlock/3.png | Bin 0 -> 2241 bytes
.../images/jigsaw/slidingBlock/4.png | Bin 0 -> 2255 bytes
.../main/resources/images/pic-click/bg1.png | Bin 0 -> 24041 bytes
.../main/resources/images/pic-click/bg10.png | Bin 0 -> 27872 bytes
.../main/resources/images/pic-click/bg2.png | Bin 0 -> 28394 bytes
.../main/resources/images/pic-click/bg3.png | Bin 0 -> 23407 bytes
.../main/resources/images/pic-click/bg4.png | Bin 0 -> 25379 bytes
.../main/resources/images/pic-click/bg5.png | Bin 0 -> 16422 bytes
.../main/resources/images/pic-click/bg6.png | Bin 0 -> 23607 bytes
.../main/resources/images/pic-click/bg7.png | Bin 0 -> 26113 bytes
.../main/resources/images/pic-click/bg8.png | Bin 0 -> 27260 bytes
.../main/resources/images/pic-click/bg9.png | Bin 0 -> 29878 bytes
.../src/main/resources/logback-spring.xml | 56 +
.../oauth2/OAuth2OpenControllerTest.java | 337 ++
.../auth/AdminAuthServiceImplTest.java | 235 ++
.../service/dept/DeptServiceImplTest.java | 324 ++
.../service/dept/PostServiceImplTest.java | 248 ++
.../service/dict/DictDataServiceImplTest.java | 352 ++
.../service/dict/DictTypeServiceImplTest.java | 271 ++
.../logger/LoginLogServiceImplTest.java | 76 +
.../logger/OperateLogServiceImplTest.java | 113 +
.../service/notice/NoticeServiceImplTest.java | 130 +
.../notify/NotifyMessageServiceImplTest.java | 276 ++
.../notify/NotifySendServiceImplTest.java | 190 +
.../notify/NotifyTemplateServiceImplTest.java | 178 +
.../oauth2/OAuth2ApproveServiceImplTest.java | 272 ++
.../oauth2/OAuth2ClientServiceImplTest.java | 220 +
.../oauth2/OAuth2CodeServiceImplTest.java | 101 +
.../oauth2/OAuth2GrantServiceImplTest.java | 166 +
.../oauth2/OAuth2TokenServiceImplTest.java | 330 ++
.../permission/MenuServiceImplTest.java | 331 ++
.../permission/PermissionServiceTest.java | 527 +++
.../permission/RoleServiceImplTest.java | 372 ++
.../tenant/TenantPackageServiceImplTest.java | 237 ++
.../service/tenant/TenantServiceImplTest.java | 461 +++
.../user/AdminUserServiceImplTest.java | 768 ++++
.../test/resources/application-unit-test.yaml | 53 +
.../src/test/resources/logback.xml | 4 +
.../src/test/resources/sql/clean.sql | 33 +
.../src/test/resources/sql/create_tables.sql | 617 +++
msgpush-module-system/pom.xml | 24 +
msgpush-server/pom.xml | 96 +
.../server/MsgpushServerApplication.java | 23 +
.../server/controller/DefaultController.java | 38 +
.../src/main/resources/application-dev.yaml | 82 +
.../src/main/resources/application-local.yaml | 99 +
.../src/main/resources/application.yaml | 166 +
.../src/main/resources/logback-spring.xml | 56 +
pom.xml | 168 +
1299 files changed, 100558 insertions(+)
create mode 100644 .gitignore
create mode 100644 LICENSE
create mode 100644 lombok.config
create mode 100644 msgpush-dependencies/pom.xml
create mode 100644 msgpush-framework/msgpush-common/pom.xml
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/fhs/trans/service/AutoTransable.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiAccessLogCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiErrorLogCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiAccessLogCreateReqDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiErrorLogCreateReqDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/DictDataCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/dto/DictDataRespDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/OperateLogCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/dto/OperateLogCreateReqDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/OAuth2TokenCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenRespDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/PermissionCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/dto/DeptDataPermissionRespDTO.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/tenant/TenantCommonApi.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/ArrayValuable.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/KeyValue.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/CommonStatusEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DateIntervalEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DocumentEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/RpcConstants.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/TerminalEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/UserTypeEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/WebFilterOrderEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ErrorCode.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServerException.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServiceException.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/GlobalErrorCodeConstants.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/ServiceErrorCodeRange.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/util/ServiceExceptionUtil.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/CommonResult.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageParam.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageResult.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortablePageParam.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortingField.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/cache/CacheUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/ArrayUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/CollectionUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/MapUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/SetUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/DateUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/LocalDateTimeUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/http/HttpUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/io/FileUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/io/IoUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/json/JsonUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/json/databind/NumberSerializer.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/json/databind/TimestampLocalDateTimeDeserializer.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/json/databind/TimestampLocalDateTimeSerializer.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/monitor/TracerUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/number/MoneyUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/number/NumberUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/object/BeanUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/object/ObjectUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/object/PageUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/servlet/ServletUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/spring/SpringExpressionUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/spring/SpringUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/string/StrUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/validation/ValidationUtils.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/InEnum.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/InEnumCollectionValidator.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/InEnumValidator.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/Mobile.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/MobileValidator.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/Telephone.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/TelephoneValidator.java
create mode 100644 msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/validation/package-info.java
create mode 100644 msgpush-framework/msgpush-common/src/test/java/com/njcn/msgpush/framework/common/util/collection/CollectionUtilsTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/java/com/njcn/msgpush/framework/ip/core/Area.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/java/com/njcn/msgpush/framework/ip/core/enums/AreaTypeEnum.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/java/com/njcn/msgpush/framework/ip/core/utils/AreaUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/java/com/njcn/msgpush/framework/ip/core/utils/IPUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/java/com/njcn/msgpush/framework/ip/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/resources/area.csv
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/main/resources/ip2region.xdb
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/test/java/com/njcn/msgpush/framework/ip/core/utils/AreaUtilsTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-ip/src/test/java/com/njcn/msgpush/framework/ip/core/utils/IPUtilsTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/config/MsgpushTenantAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/config/MsgpushTenantRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/config/TenantProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/aop/TenantIgnore.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/aop/TenantIgnoreAspect.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/context/TenantContextHolder.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/db/TenantBaseDO.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/db/TenantDatabaseInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/kafka/TenantKafkaEnvironmentPostProcessor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/kafka/TenantKafkaProducerInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/rabbitmq/TenantRabbitMQInitializer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/rabbitmq/TenantRabbitMQMessagePostProcessor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/redis/TenantRedisMessageInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/rocketmq/TenantRocketMQConsumeMessageHook.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/rocketmq/TenantRocketMQInitializer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/mq/rocketmq/TenantRocketMQSendMessageHook.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/redis/TenantRedisCacheManager.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/rpc/TenantRequestInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/security/TenantSecurityWebFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/service/TenantFrameworkService.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/service/TenantFrameworkServiceImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/util/TenantUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/web/TenantContextWebFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/core/web/TenantVisitContextInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/com/njcn/msgpush/framework/tenant/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring.factories
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/config/EnvEnvironmentPostProcessor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/config/EnvProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/config/MsgpushEnvRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/config/MsgpushEnvWebAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/context/EnvContextHolder.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/fegin/EnvLoadBalancerClient.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/fegin/EnvLoadBalancerClientFactory.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/fegin/EnvRequestInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/util/EnvUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/core/web/EnvWebFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/java/com/njcn/msgpush/framework/env/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/resources/META-INF/spring.factories
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-env/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/config/MsgpushDictAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/config/MsgpushDictRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/core/DictFrameworkUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/validation/InDict.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/validation/InDictCollectionValidator.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/dict/validation/InDictValidator.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/annotations/DictFormat.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/annotations/ExcelColumnSelect.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/convert/AreaConvert.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/convert/DictConvert.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/convert/JsonConvert.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/convert/MoneyConvert.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/function/ExcelColumnSelectFunction.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/handler/ColumnWidthMatchStyleStrategy.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/handler/SelectSheetWriteHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/core/util/ExcelUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/java/com/njcn/msgpush/framework/excel/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-excel/src/test/java/com/njcn/msgpush/framework/dict/core/util/DictFrameworkUtilsTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/rabbitmq/config/MsgpushRabbitMQAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/rabbitmq/core/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/rabbitmq/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/config/MsgpushRedisMQConsumerAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/config/MsgpushRedisMQProducerAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/RedisMQTemplate.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/interceptor/RedisMessageInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/job/RedisPendingMessageResendJob.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/job/RedisStreamMessageCleanupJob.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/message/AbstractRedisMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/pubsub/AbstractRedisChannelMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/pubsub/AbstractRedisChannelMessageListener.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/stream/AbstractRedisStreamMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/core/stream/AbstractRedisStreamMessageListener.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/java/com/njcn/msgpush/framework/mq/redis/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/datasource/config/MsgpushDataSourceAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/datasource/core/enums/DataSourceEnum.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/datasource/core/filter/DruidAdRemoveFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/datasource/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/config/MsgpushMybatisAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/dataobject/BaseDO.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/enums/DbTypeEnum.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/handler/DefaultDBFieldHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/mapper/BaseMapperX.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/query/LambdaQueryWrapperX.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/query/MPJLambdaWrapperX.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/query/QueryWrapperX.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/type/EncryptTypeHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/type/IntegerListTypeHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/type/LongListTypeHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/type/LongSetTypeHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/type/StringListTypeHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/util/JdbcUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/core/util/MyBatisUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/mybatis/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/translate/config/MsgpushTranslateAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/translate/core/TranslateUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/java/com/njcn/msgpush/framework/translate/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/resources/META-INF/spring.factories
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/config/MsgpushIdempotentConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/annotation/Idempotent.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/aop/IdempotentAspect.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/keyresolver/IdempotentKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/keyresolver/impl/UserIdempotentKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/core/redis/IdempotentRedisDAO.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/idempotent/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/lock4j/config/MsgpushLock4jConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/lock4j/core/DefaultLockFailureStrategy.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/lock4j/core/Lock4jRedisKeyConstants.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/lock4j/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/config/MsgpushRateLimiterConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/annotation/RateLimiter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/aop/RateLimiterAspect.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/RateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/impl/ClientIpRateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/impl/DefaultRateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/impl/ExpressionRateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/impl/ServerNodeRateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/keyresolver/impl/UserRateLimiterKeyResolver.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/core/redis/RateLimiterRedisDAO.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/ratelimiter/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/signature/config/MsgpushApiSignatureAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/signature/core/annotation/ApiSignature.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/signature/core/aop/ApiSignatureAspect.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/signature/core/redis/ApiSignatureRedisDAO.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/java/com/njcn/msgpush/framework/signature/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-protection/src/test/java/com/njcn/msgpush/framework/signature/core/ApiSignatureTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/java/com/njcn/msgpush/framework/redis/config/MsgpushCacheAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/java/com/njcn/msgpush/framework/redis/config/MsgpushCacheProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/java/com/njcn/msgpush/framework/redis/config/MsgpushRedisAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/java/com/njcn/msgpush/framework/redis/core/TimeoutRedisCacheManager.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/java/com/njcn/msgpush/framework/redis/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-rpc/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-rpc/src/main/java/com/njcn/msgpush/framework/rpc/config/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-rpc/src/main/java/com/njcn/msgpush/framework/rpc/core/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-rpc/src/main/java/com/njcn/msgpush/framework/rpc/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/operatelog/config/MsgpushOperateLogConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/operatelog/config/MsgpushOperateLogRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/operatelog/core/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/operatelog/core/service/LogRecordServiceImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/operatelog/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/config/AuthorizeRequestsCustomizer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/config/MsgpushSecurityAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/config/MsgpushSecurityRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/config/MsgpushWebSecurityConfigurerAdapter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/config/SecurityProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/LoginUser.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/context/TransmittableThreadLocalSecurityContextHolderStrategy.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/filter/TokenAuthenticationFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/handler/AccessDeniedHandlerImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/handler/AuthenticationEntryPointImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/rpc/LoginUserRequestInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/service/SecurityFrameworkService.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/service/SecurityFrameworkServiceImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/core/util/SecurityFrameworkUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/java/com/njcn/msgpush/framework/security/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/config/RedisTestConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/config/SqlInitializationTestConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/ut/BaseDbAndRedisUnitTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/ut/BaseDbUnitTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/ut/BaseMockitoUnitTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/ut/BaseRedisUnitTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/ut/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/util/AssertUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/core/util/RandomUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-test/src/main/java/com/njcn/msgpush/framework/test/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/config/MsgpushApiLogAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/config/MsgpushApiLogRpcAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/core/annotation/ApiAccessLog.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/core/enums/OperateTypeEnum.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/core/filter/ApiAccessLogFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/apilog/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/banner/config/MsgpushBannerAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/banner/core/BannerApplicationRunner.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/banner/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/base/annotation/DesensitizeBy.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/base/handler/DesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/base/serializer/StringDesensitizeSerializer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/regex/annotation/EmailDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/regex/annotation/RegexDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/regex/handler/DefaultRegexDesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/regex/handler/EmailDesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/BankCardDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/CarLicenseDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/ChineseNameDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/FixedPhoneDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/IdCardDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/MobileDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/PasswordDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/annotation/SliderDesensitize.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/AbstractSliderDesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/BankCardDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/CarLicenseDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/ChineseNameDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/DefaultDesensitizationHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/FixedPhoneDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/IdCardDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/MobileDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/core/slider/handler/PasswordDesensitization.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/desensitize/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/config/ApiEncryptProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/config/MsgpushApiEncryptAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/core/annotation/ApiEncrypt.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/core/filter/ApiDecryptRequestWrapper.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/core/filter/ApiEncryptFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/core/filter/ApiEncryptResponseWrapper.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/encrypt/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/jackson/config/MsgpushJacksonAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/jackson/core/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/swagger/config/Knife4jOpenApiCustomizer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/swagger/config/MsgpushSwaggerAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/swagger/config/SwaggerProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/swagger/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/config/MsgpushWebAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/config/WebProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/filter/ApiRequestFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/filter/CacheRequestBodyFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/filter/CacheRequestBodyWrapper.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/filter/DemoFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/handler/GlobalExceptionHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/handler/GlobalResponseBodyHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/core/util/WebFrameworkUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/web/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/config/MsgpushXssAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/config/XssProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/core/clean/JsoupXssCleaner.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/core/clean/XssCleaner.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/core/filter/XssFilter.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/core/filter/XssRequestWrapper.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/core/json/XssStringJsonDeserializer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/java/com/njcn/msgpush/framework/xss/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/main/resources/banner.txt
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/test/java/com/njcn/msgpush/framework/desensitize/core/DesensitizeTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/test/java/com/njcn/msgpush/framework/desensitize/core/annotation/Address.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/test/java/com/njcn/msgpush/framework/desensitize/core/handler/AddressHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-web/src/test/java/com/njcn/msgpush/framework/encrypt/ApiEncryptTest.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/pom.xml
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/config/MsgpushWebSocketAutoConfiguration.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/config/WebSocketProperties.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/handler/JsonWebSocketMessageHandler.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/listener/WebSocketMessageListener.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/message/JsonWebSocketMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/security/LoginUserHandshakeInterceptor.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/security/WebSocketAuthorizeRequestsCustomizer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/AbstractWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/WebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/kafka/KafkaWebSocketMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/kafka/KafkaWebSocketMessageConsumer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/kafka/KafkaWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/local/LocalWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rabbitmq/RabbitMQWebSocketMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rabbitmq/RabbitMQWebSocketMessageConsumer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rabbitmq/RabbitMQWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/redis/RedisWebSocketMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/redis/RedisWebSocketMessageConsumer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/redis/RedisWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rocketmq/RocketMQWebSocketMessage.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rocketmq/RocketMQWebSocketMessageConsumer.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/sender/rocketmq/RocketMQWebSocketMessageSender.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/session/WebSocketSessionHandlerDecorator.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/session/WebSocketSessionManager.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/session/WebSocketSessionManagerImpl.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/core/util/WebSocketFrameworkUtils.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/java/com/njcn/msgpush/framework/websocket/package-info.java
create mode 100644 msgpush-framework/msgpush-spring-boot-starter-websocket/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 msgpush-framework/pom.xml
create mode 100644 msgpush-gateway/pom.xml
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/GatewayServerApplication.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/cors/CorsFilter.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/cors/CorsResponseHeaderFilter.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/grey/GrayLoadBalancer.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/grey/GrayReactiveLoadBalancerClientFilter.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/logging/AccessLog.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/logging/AccessLogFilter.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/security/LoginUser.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/filter/security/TokenAuthenticationFilter.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/handler/GlobalExceptionHandler.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/jackson/GatewayJacksonAutoConfiguration.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/route/dynamic/package-info.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/route/package-info.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/util/BannerApplicationRunner.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/util/EnvUtils.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/util/SecurityFrameworkUtils.java
create mode 100644 msgpush-gateway/src/main/java/com/njcn/msgpush/gateway/util/WebFrameworkUtils.java
create mode 100644 msgpush-gateway/src/main/resources/application-dev.yaml
create mode 100644 msgpush-gateway/src/main/resources/application-local.yaml
create mode 100644 msgpush-gateway/src/main/resources/application.yaml
create mode 100644 msgpush-gateway/src/main/resources/banner.txt
create mode 100644 msgpush-gateway/src/main/resources/logback-spring.xml
create mode 100644 msgpush-gateway/src/main/resources/static/favicon.ico
create mode 100644 msgpush-gateway/src/test/java/com/njcn/msgpush/ProjectReactor.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/pom.xml
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/config/ConfigApi.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/file/FileApi.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/file/dto/FileCreateReqDTO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/websocket/WebSocketSenderApi.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/api/websocket/dto/WebSocketSendReqDTO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/ApiConstants.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/DictTypeConstants.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/ErrorCodeConstants.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenColumnHtmlTypeEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenColumnListConditionEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenFrontTypeEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenSceneEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenTemplateTypeEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/codegen/CodegenVOTypeEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/config/ConfigTypeEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-api/src/main/java/com/njcn/msgpush/module/infra/enums/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/pom.xml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/InfraServerApplication.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/config/ConfigApiImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/file/FileApiImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/logger/ApiAccessLogApiImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/logger/ApiErrorLogApiImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/api/websocket/WebSocketSenderApiImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/CodegenController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/CodegenCreateListReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/CodegenDetailRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/CodegenUpdateReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/column/CodegenColumnRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/column/CodegenColumnSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/table/CodegenTableSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/config/ConfigController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/config/vo/ConfigPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/config/vo/ConfigRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/config/vo/ConfigSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/db/DataSourceConfigController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/db/vo/DataSourceConfigSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo01/Demo01ContactController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo01/vo/Demo01ContactPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo01/vo/Demo01ContactRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo01/vo/Demo01ContactSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo02/Demo02CategoryController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo02/vo/Demo02CategoryListReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo02/vo/Demo02CategoryRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo02/vo/Demo02CategorySaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/erp/Demo03StudentErpController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/erp/vo/Demo03StudentErpPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/erp/vo/Demo03StudentErpRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/erp/vo/Demo03StudentErpSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/inner/Demo03StudentInnerController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/inner/vo/Demo03StudentInnerPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/inner/vo/Demo03StudentInnerRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/inner/vo/Demo03StudentInnerSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/normal/Demo03StudentNormalController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/normal/vo/Demo03StudentNormalPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/normal/vo/Demo03StudentNormalRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/demo03/normal/vo/Demo03StudentNormalSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/demo/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/FileConfigController.http
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/FileConfigController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/FileController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/config/FileConfigRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/config/FileConfigSaveReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/file/FileCreateReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/file/FilePageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/file/FilePresignedUrlRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/file/FileRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/ApiAccessLogController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/ApiErrorLogController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/redis/RedisController.http
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/redis/RedisController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/admin/redis/vo/RedisMonitorRespVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/app/file/AppFileController.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/app/file/vo/AppFileUploadReqVO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/app/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/controller/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/convert/codegen/CodegenConvert.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/convert/config/ConfigConvert.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/convert/file/FileConfigConvert.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/convert/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/convert/redis/RedisConvert.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/codegen/CodegenColumnDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/codegen/CodegenTableDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/config/ConfigDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/db/DataSourceConfigDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/demo/demo01/Demo01ContactDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/demo/demo02/Demo02CategoryDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/demo/demo03/Demo03CourseDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/demo/demo03/Demo03GradeDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/demo/demo03/Demo03StudentDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/file/FileConfigDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/file/FileContentDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/file/FileDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/logger/ApiAccessLogDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/dataobject/logger/ApiErrorLogDO.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/codegen/CodegenColumnMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/codegen/CodegenTableMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/config/ConfigMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/db/DataSourceConfigMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo01/Demo01ContactMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo02/Demo02CategoryMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/erp/Demo03CourseErpMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/erp/Demo03GradeErpMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/erp/Demo03StudentErpMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/inner/Demo03CourseInnerMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/inner/Demo03GradeInnerMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/inner/Demo03StudentInnerMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/normal/Demo03CourseNormalMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/normal/Demo03GradeNormalMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/demo/demo03/normal/Demo03StudentNormalMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/file/FileConfigMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/file/FileContentMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/file/FileMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/logger/ApiAccessLogMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/dal/mysql/logger/ApiErrorLogMapper.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/codegen/config/CodegenConfiguration.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/codegen/config/CodegenProperties.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/codegen/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/config/MsgpushFileAutoConfiguration.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/AbstractFileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/FileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/FileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/FileClientFactory.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/FileClientFactoryImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/db/DBFileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/db/DBFileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/ftp/FtpFileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/ftp/FtpFileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/local/LocalFileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/local/LocalFileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/s3/S3FileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/s3/S3FileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/sftp/SftpFileClient.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/client/sftp/SftpFileClientConfig.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/enums/FileStorageEnum.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/core/utils/FileTypeUtils.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/file/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/monitor/config/AdminServerConfiguration.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/monitor/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/rpc/config/RpcConfiguration.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/rpc/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/security/config/SecurityConfiguration.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/framework/security/core/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/mq/consumer/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/mq/message/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/mq/producer/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/package-info.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/codegen/CodegenService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/codegen/CodegenServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenBuilder.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenEngine.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/config/ConfigService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/config/ConfigServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/db/DataSourceConfigService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/db/DataSourceConfigServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/db/DatabaseTableService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/db/DatabaseTableServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo01/Demo01ContactService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo01/Demo01ContactServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo02/Demo02CategoryService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo02/Demo02CategoryServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/erp/Demo03StudentErpService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/erp/Demo03StudentErpServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/inner/Demo03StudentInnerService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/inner/Demo03StudentInnerServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/normal/Demo03StudentNormalService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/demo/demo03/normal/Demo03StudentNormalServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/file/FileConfigService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/file/FileConfigServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/file/FileService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/file/FileServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/logger/ApiAccessLogService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/logger/ApiAccessLogServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/logger/ApiErrorLogService.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/service/logger/ApiErrorLogServiceImpl.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/websocket/DemoWebSocketMessageListener.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/websocket/message/DemoReceiveMessage.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/java/com/njcn/msgpush/module/infra/websocket/message/DemoSendMessage.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/application-dev.yaml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/application-local.yaml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/application.yaml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/controller/controller.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/controller/vo/listReqVO.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/controller/vo/pageReqVO.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/controller/vo/respVO.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/controller/vo/saveReqVO.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/dal/do.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/dal/do_sub.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/dal/mapper.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/dal/mapper.xml.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/dal/mapper_sub.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/enums/errorcode.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/service/service.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/service/serviceImpl.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/java/test/serviceTest.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/sql/h2.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/sql/sql.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/api/api.js.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/components/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_admin_uniapp/views/detail/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_admin_uniapp/views/form/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_admin_uniapp/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben/views/data.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/modules/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/modules/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/modules/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/modules/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/general/views/modules/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/api/api.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/form.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/form_sub_normal.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/list_sub_erp.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/codegen/vue3_vben5_ele/schema/views/modules/list_sub_inner.vue.vm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/file/erweima.jpg
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/main/resources/logback-spring.xml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/framework/file/core/ftp/FtpFileClientTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/framework/file/core/local/LocalFileClientTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/framework/file/core/s3/S3FileClientTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/framework/file/core/sftp/SftpFileClientTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/DefaultDatabaseQueryTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/codegen/CodegenServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenBuilderTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenEngineAbstractTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenEngineVue2Test.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/codegen/inner/CodegenEngineVue3Test.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/config/ConfigServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/db/DataSourceConfigServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/db/DatabaseTableServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/file/FileConfigServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/file/FileServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/logger/ApiAccessLogServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/java/com/njcn/msgpush/module/infra/service/logger/ApiErrorLogServiceImplTest.java
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/application-unit-test.yaml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/table/category.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/table/contact.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/table/student.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/table/teacher.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/js/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/StudentContactList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/StudentTeacherList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_erp/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/js/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/StudentContactList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/StudentTeacherList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_inner/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/js/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_master_normal/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/js/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_one/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryListReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategorySaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/java/InfraCategoryServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/js/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/vue/CategoryForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue2_tree/xml/InfraCategoryMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/ts/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/StudentContactList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/StudentTeacherList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_erp/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/ts/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/StudentContactList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/StudentTeacherList
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_inner/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentContactDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentContactMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/ts/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/vue/StudentContactForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/vue/StudentTeacherForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_master_normal/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentPageReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentSaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/java/InfraStudentServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/ts/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/vue/StudentForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_one/xml/InfraStudentMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/assert.json
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/ErrorCodeConstants_手动操作
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryController
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryDO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryListReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryRespVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategorySaveReqVO
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryService
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryServiceImpl
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/java/InfraCategoryServiceImplTest
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/sql/h2
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/sql/sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/ts/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/vue/CategoryForm
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/vue/index
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/codegen/windows10/vue3_tree/xml/InfraCategoryMapper
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/logback.xml
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/sql/clean.sql
create mode 100644 msgpush-module-infra/msgpush-module-infra-server/src/test/resources/sql/create_tables.sql
create mode 100644 msgpush-module-infra/pom.xml
create mode 100644 msgpush-module-push/msgpush-module-push-api/pom.xml
create mode 100644 msgpush-module-push/msgpush-module-push-server/pom.xml
create mode 100644 msgpush-module-push/msgpush-module-push-server/src/main/java/com/njcn/msgpush/module/push/PushServerApplication.java
create mode 100644 msgpush-module-push/msgpush-module-push-server/src/main/resources/application-dev.yaml
create mode 100644 msgpush-module-push/msgpush-module-push-server/src/main/resources/application-local.yaml
create mode 100644 msgpush-module-push/msgpush-module-push-server/src/main/resources/application.yaml
create mode 100644 msgpush-module-push/msgpush-module-push-server/src/main/resources/logback-spring.xml
create mode 100644 msgpush-module-push/pom.xml
create mode 100644 msgpush-module-system/msgpush-module-system-api/pom.xml
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/dept/DeptApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/dept/PostApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/dept/dto/DeptRespDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/dept/dto/PostRespDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/dict/DictDataApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/logger/LoginLogApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/logger/OperateLogApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/logger/dto/LoginLogCreateReqDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/logger/dto/OperateLogPageReqDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/logger/dto/OperateLogRespDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/mail/MailSendApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/notify/NotifyMessageSendApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/notify/dto/NotifySendSingleToUserReqDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/permission/PermissionApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/permission/RoleApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/user/AdminUserApi.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/api/user/dto/AdminUserRespDTO.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/ApiConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/DictTypeConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/ErrorCodeConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/LogRecordConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/common/SexEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/logger/LoginLogTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/logger/LoginResultEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/mail/MailSendStatusEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/notice/NoticeTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/notify/NotifyTemplateTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/oauth2/OAuth2ClientConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/oauth2/OAuth2GrantTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/permission/DataScopeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/permission/MenuTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/permission/RoleCodeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-api/src/main/java/com/njcn/msgpush/module/system/enums/permission/RoleTypeEnum.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/pom.xml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/SystemServerApplication.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/dept/DeptApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/dept/PostApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/dict/DictDataApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/logger/LoginLogApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/logger/OperateLogApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/notify/NotifyMessageSendApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/oauth2/OAuth2TokenApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/permission/PermissionApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/permission/RoleApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/tenant/TenantApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/api/user/AdminUserApiImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/AuthController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/AuthController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthLoginRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthMenuRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthRegisterReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/AuthResetPasswordReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/auth/vo/CaptchaVerificationReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/captcha/CaptchaController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/DeptController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/PostController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/dept/DeptRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/dept/DeptSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/post/PostPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/post/PostRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/post/PostSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dept/vo/post/PostSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/DictDataController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/DictDataController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/DictTypeController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/data/DictDataRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/data/DictDataSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/data/DictDataSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/type/DictTypePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/type/DictTypeRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/type/DictTypeSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/ip/AreaController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/ip/AreaController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/ip/vo/AreaNodeRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/LoginLogController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/OperateLogController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/OperateLogController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/vo/loginlog/LoginLogPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/vo/loginlog/LoginLogRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/logger/vo/operatelog/OperateLogRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notice/NoticeController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notice/vo/NoticePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notice/vo/NoticeRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notice/vo/NoticeSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/NotifyMessageController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/NotifyTemplateController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/message/NotifyMessageMyPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/message/NotifyMessagePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/message/NotifyMessageRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/template/NotifyTemplatePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/template/NotifyTemplateRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/template/NotifyTemplateSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/notify/vo/template/NotifyTemplateSendReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2ClientController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2ClientController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2OpenController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2OpenController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2TokenController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2UserController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2UserController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/client/OAuth2ClientPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/client/OAuth2ClientRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/client/OAuth2ClientSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAccessTokenRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAuthorizeInfoRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/open/OAuth2OpenCheckTokenRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/oauth2/vo/user/OAuth2UserUpdateReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/MenuController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/MenuController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/PermissionController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/RoleController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/RoleController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/menu/MenuRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/menu/MenuSaveVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleDataScopeReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/permission/PermissionAssignUserRoleReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/role/RolePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/role/RoleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/role/RoleSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/TenantController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/TenantController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/TenantPackageController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/packages/TenantPackagePageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/packages/TenantPackageRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/packages/TenantPackageSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/packages/TenantPackageSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/tenant/TenantPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/UserController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/UserController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/UserProfileController.http
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/UserProfileController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/profile/UserProfileUpdatePasswordReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserImportExcelVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserImportRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserPageReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserSaveReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserSimpleRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserUpdatePasswordReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/admin/user/vo/user/UserUpdateStatusReqVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/dict/AppDictDataController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/dict/vo/AppDictDataRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/ip/AppAreaController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/ip/vo/AppAreaNodeRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/tenant/AppTenantController.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/app/tenant/vo/AppTenantRespVO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/controller/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/convert/auth/AuthConvert.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/convert/oauth2/OAuth2OpenConvert.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/convert/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/convert/tenant/TenantConvert.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/convert/user/UserConvert.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/dept/DeptDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/dept/PostDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/dept/UserPostDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/dict/DictDataDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/dict/DictTypeDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/logger/LoginLogDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/logger/OperateLogDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/mail/MailAccountDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/mail/MailLogDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/mail/MailTemplateDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/notice/NoticeDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/notify/NotifyMessageDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/notify/NotifyTemplateDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/permission/MenuDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/permission/RoleDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/permission/RoleMenuDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/permission/UserRoleDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/tenant/TenantDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/tenant/TenantPackageDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/dataobject/user/AdminUserDO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/dept/DeptMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/dept/PostMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/dept/UserPostMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/dict/DictDataMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/dict/DictTypeMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/logger/LoginLogMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/logger/OperateLogMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/notice/NoticeMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/notify/NotifyMessageMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/notify/NotifyTemplateMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/oauth2/OAuth2AccessTokenMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/oauth2/OAuth2ApproveMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/oauth2/OAuth2CodeMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/oauth2/OAuth2RefreshTokenMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/permission/MenuMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/permission/RoleMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/permission/RoleMenuMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/permission/UserRoleMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/tenant/TenantMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/tenant/TenantPackageMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/mysql/user/AdminUserMapper.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/redis/RedisKeyConstants.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/captcha/config/MsgpushCaptchaConfiguration.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/captcha/core/PictureWordCaptchaServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/captcha/core/RedisCaptchaServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/captcha/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/AdminUserParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/AreaParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/BooleanParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/DeptParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/PostParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/core/SexParseFunction.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/operatelog/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/rpc/config/RpcConfiguration.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/rpc/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/security/config/SecurityConfiguration.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/framework/security/core/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/mq/message/mail/MailSendMessage.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/mq/message/sms/SmsSendMessage.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/mq/producer/mail/MailProducer.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/mq/producer/sms/SmsProducer.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/auth/AdminAuthService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/auth/AdminAuthServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dept/DeptService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dept/DeptServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dept/PostService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dept/PostServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dict/DictDataService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dict/DictDataServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dict/DictTypeService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/dict/DictTypeServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/logger/LoginLogService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/logger/LoginLogServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/logger/OperateLogService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/logger/OperateLogServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/member/MemberService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/member/MemberServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/member/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notice/NoticeService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notice/NoticeServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifyMessageService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifyMessageServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifySendService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifySendServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifyTemplateService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/notify/NotifyTemplateServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ApproveService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ApproveServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ClientService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ClientServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2CodeService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2CodeServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2GrantService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2GrantServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2TokenService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2TokenServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/MenuService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/MenuServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/PermissionService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/PermissionServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/RoleService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/permission/RoleServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/TenantPackageService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/TenantPackageServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/TenantService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/TenantServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/handler/TenantInfoHandler.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/tenant/handler/TenantMenuHandler.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/user/AdminUserService.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/service/user/AdminUserServiceImpl.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/util/oauth2/OAuth2Utils.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/java/com/njcn/msgpush/module/system/util/package-info.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaService
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/application-dev.yaml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/application-local.yaml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/application.yaml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg1.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg2.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg3.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg4.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg5.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg6.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg7.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg8.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/original/bg9.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/1.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/10.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/11.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/12.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/13.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/14.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/15.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/16.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/17.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/18.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/19.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/8.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/11/9.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/2.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/3.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/jigsaw/slidingBlock/4.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg1.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg10.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg2.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg3.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg4.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg5.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg6.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg7.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg8.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/images/pic-click/bg9.png
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/main/resources/logback-spring.xml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/auth/AdminAuthServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/dept/DeptServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/dept/PostServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/dict/DictDataServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/dict/DictTypeServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/logger/LoginLogServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/logger/OperateLogServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/notice/NoticeServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/notify/NotifyMessageServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/notify/NotifySendServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/notify/NotifyTemplateServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2ClientServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2CodeServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2GrantServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/oauth2/OAuth2TokenServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/permission/MenuServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/permission/PermissionServiceTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/permission/RoleServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/tenant/TenantPackageServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/tenant/TenantServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/java/com/njcn/msgpush/module/system/service/user/AdminUserServiceImplTest.java
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/resources/application-unit-test.yaml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/resources/logback.xml
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/resources/sql/clean.sql
create mode 100644 msgpush-module-system/msgpush-module-system-server/src/test/resources/sql/create_tables.sql
create mode 100644 msgpush-module-system/pom.xml
create mode 100644 msgpush-server/pom.xml
create mode 100644 msgpush-server/src/main/java/com/njcn/msgpush/server/MsgpushServerApplication.java
create mode 100644 msgpush-server/src/main/java/com/njcn/msgpush/server/controller/DefaultController.java
create mode 100644 msgpush-server/src/main/resources/application-dev.yaml
create mode 100644 msgpush-server/src/main/resources/application-local.yaml
create mode 100644 msgpush-server/src/main/resources/application.yaml
create mode 100644 msgpush-server/src/main/resources/logback-spring.xml
create mode 100644 pom.xml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e55eb64
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,75 @@
+
+# 查看更多 .gitignore 配置 -> https://help.github.com/articles/ignoring-files/
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+.flattened-pom.xml
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+*.class
+target/*
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+/build/
+
+
+
+### admin-web ###
+
+# dependencies
+**/node_modules
+
+# roadhog-api-doc ignore
+/src/utils/request-temp.js
+_roadhog-api-doc
+
+# production
+/dist
+/.vscode
+
+# misc
+.DS_Store
+npm-debug.log*
+yarn-error.log
+
+/coverage
+.idea
+yarn.lock
+package-lock.json
+*bak
+.vscode
+
+# visual studio code
+.history
+*.log
+
+functions/mock
+.temp/**
+
+# umi
+.umi
+.umi-production
+
+# screenshot
+screenshot
+.firebase
+sessionStore
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..42144ac
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2021 msgpush-cloud
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/lombok.config b/lombok.config
new file mode 100644
index 0000000..a8e8ce6
--- /dev/null
+++ b/lombok.config
@@ -0,0 +1,4 @@
+config.stopBubbling = true
+lombok.tostring.callsuper=CALL
+lombok.equalsandhashcode.callsuper=CALL
+lombok.accessors.chain=true
diff --git a/msgpush-dependencies/pom.xml b/msgpush-dependencies/pom.xml
new file mode 100644
index 0000000..bbd3ce4
--- /dev/null
+++ b/msgpush-dependencies/pom.xml
@@ -0,0 +1,726 @@
+
+
+ 4.0.0
+
+ com.njcn
+ msgpush-dependencies
+ ${revision}
+ pom
+
+ ${project.artifactId}
+ 基础 bom 文件,管理整个项目的依赖版本
+
+
+
+ 2025.12-SNAPSHOT
+ 1.7.2
+
+ 3.5.9
+ 2025.0.0
+ 2023.0.3.3
+
+ 2.8.14
+ 4.5.0
+
+ 1.2.27
+ 3.5.19
+ 3.5.15
+ 1.5.5
+ 4.5.0
+ 3.0.6
+ 3.52.0
+ 8.1.3.140
+ 8.6.0
+ 5.1.0
+ 3.7.9
+
+ 2.3.5
+
+
+
+ 2.4.0
+
+ 2.2.7
+
+ 9.5.0
+ 3.5.6
+ 0.33.0
+
+ 8.0.2.RELEASE
+ 1.1.12
+ 5.2.0
+
+ 7.2.0
+
+ 1.4.0
+ 1.21.2
+ 1.18.42
+ 1.6.3
+ 5.8.42
+ 6.0.0-M22
+ 1.3.0
+ 2.4.1
+ 1.2.83
+ 33.5.0-jre
+ 2.14.5
+ 3.12.0
+ 3.20.0
+ 2.27.7
+ 3.2.3
+ 2.7.0
+ 3.0.6
+ 0.10.2
+ 4.2.9.Final
+ 1.2.5
+ 4.5.22
+
+ 2.40.15
+ 1.16.7
+ 1.4.0
+ 2.1.3
+ 2.3.0
+ 4.7.9-20251224.161447
+ 4.40.607.ALL
+
+
+
+
+
+
+ io.netty
+ netty-bom
+ ${netty.version}
+ pom
+ import
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring.boot.version}
+ pom
+ import
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring.cloud.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring.cloud.alibaba.version}
+ pom
+ import
+
+
+
+
+ io.github.mouzt
+ bizlog-sdk
+ ${bizlog-sdk.version}
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-biz-tenant
+ ${revision}
+
+
+ com.njcn
+ msgpush-spring-boot-starter-biz-ip
+ ${revision}
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ ${spring.boot.version}
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-env
+ ${revision}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-web
+ ${revision}
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-security
+ ${revision}
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-websocket
+ ${revision}
+
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ ${knife4j.version}
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
+
+
+ com.github.xiaoymin
+ knife4j-gateway-spring-boot-starter
+ ${knife4j.version}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-mybatis
+ ${revision}
+
+
+
+ com.alibaba
+ druid-spring-boot-3-starter
+ ${druid.version}
+
+
+
+ org.mybatis
+ mybatis
+ ${mybatis.version}
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+ ${mybatis-plus.version}
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+ ${mybatis-plus.version}
+
+
+ com.baomidou
+ mybatis-plus-generator
+ ${mybatis-plus.version}
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot3-starter
+ ${dynamic-datasource.version}
+
+
+ com.github.yulichang
+ mybatis-plus-join-boot-starter
+ ${mybatis-plus-join.version}
+
+
+
+ com.fhs-opensource
+ easy-trans-spring-boot-starter
+ ${easy-trans.version}
+
+
+ org.springframework
+ spring-context
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+
+
+
+
+ com.fhs-opensource
+ easy-trans-mybatis-plus-extend
+ ${easy-trans.version}
+
+
+ com.fhs-opensource
+ easy-trans-anno
+ ${easy-trans.version}
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-redis
+ ${revision}
+
+
+
+ org.redisson
+ redisson-spring-boot-starter
+ ${redisson.version}
+
+
+
+ com.dameng
+ DmJdbcDriver18
+ ${dm8.jdbc.version}
+
+
+
+ org.opengauss
+ opengauss-jdbc
+ ${opengauss.jdbc.version}
+
+
+
+ cn.com.kingbase
+ kingbase8
+ ${kingbase.jdbc.version}
+
+
+
+ com.taosdata.jdbc
+ taos-jdbcdriver
+ ${taos.version}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-rpc
+ ${revision}
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+ ${spring.cloud.alibaba.version}
+
+
+
+ logback-adapter
+ com.alibaba.nacos
+
+
+
+
+
+
+
+
+ com.xuxueli
+ xxl-job-core
+ ${xxl-job.version}
+
+
+ com.njcn
+ msgpush-spring-boot-starter-job
+ ${revision}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-mq
+ ${revision}
+
+
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+ ${rocketmq-spring.version}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-protection
+ ${revision}
+
+
+
+ com.baomidou
+ lock4j-redisson-spring-boot-starter
+ ${lock4j.version}
+
+
+ redisson-spring-boot-starter
+ org.redisson
+
+
+
+
+ org.apache.skywalking
+ apm-toolkit-trace
+ ${skywalking.version}
+
+
+ org.apache.skywalking
+ apm-toolkit-logback-1.x
+ ${skywalking.version}
+
+
+ org.apache.skywalking
+ apm-toolkit-opentracing
+ ${skywalking.version}
+
+
+
+
+
+
+
+
+
+
+
+
+ io.opentracing
+ opentracing-api
+ ${opentracing.version}
+
+
+ io.opentracing
+ opentracing-util
+ ${opentracing.version}
+
+
+ io.opentracing
+ opentracing-noop
+ ${opentracing.version}
+
+
+
+ de.codecentric
+ spring-boot-admin-starter-server
+ ${spring-boot-admin.version}
+
+
+ de.codecentric
+ spring-boot-admin-starter-client
+ ${spring-boot-admin.version}
+
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-test
+ ${revision}
+ test
+
+
+
+ org.mockito
+ mockito-inline
+ ${mockito-inline.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.boot.version}
+
+
+ asm
+ org.ow2.asm
+
+
+ org.mockito
+ mockito-core
+
+
+
+
+
+ com.github.fppt
+ jedis-mock
+ ${jedis-mock.version}
+
+
+
+ uk.co.jemos.podam
+ podam
+ ${podam.version}
+
+
+
+
+ org.flowable
+ flowable-spring-boot-starter-process
+ ${flowable.version}
+
+
+ org.flowable
+ flowable-spring-boot-starter-actuator
+ ${flowable.version}
+
+
+
+
+
+ com.njcn
+ msgpush-common
+ ${revision}
+
+
+
+ com.njcn
+ msgpush-spring-boot-starter-excel
+ ${revision}
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+ org.mapstruct
+ mapstruct
+ ${mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct-jdk8
+ ${mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${mapstruct.version}
+
+
+
+ cn.hutool
+ hutool-all
+ ${hutool-5.version}
+
+
+ org.dromara.hutool
+ hutool-extra
+ ${hutool-6.version}
+
+
+
+ cn.idev.excel
+ fastexcel
+ ${fastexcel.version}
+
+
+
+ org.apache.tika
+ tika-core
+ ${tika-core.version}
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+ ${velocity.version}
+
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+
+ com.alibaba
+ transmittable-thread-local
+ ${transmittable-thread-local.version}
+
+
+
+ commons-net
+ commons-net
+ ${commons-net.version}
+
+
+ com.github.mwiede
+ jsch
+ ${jsch.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+ com.anji-plus
+ captcha-spring-boot-starter
+ ${anji-plus-captcha.version}
+
+
+
+ org.lionsoul
+ ip2region
+ ${ip2region.version}
+
+
+
+ org.jsoup
+ jsoup
+ ${jsoup.version}
+
+
+
+ org.reflections
+ reflections
+ ${reflections.version}
+
+
+
+
+ software.amazon.awssdk
+ s3
+ ${awssdk.version}
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ ${alipay-sdk-java.version}
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
+
+
+
+ com.github.binarywang
+ weixin-java-pay
+ ${weixin-java.version}
+
+
+ com.github.binarywang
+ wx-java-mp-spring-boot-starter
+ ${weixin-java.version}
+
+
+ com.github.binarywang
+ wx-java-miniapp-spring-boot-starter
+ ${weixin-java.version}
+
+
+
+ me.zhyd.oauth
+ JustAuth
+ ${justauth.version}
+
+
+ com.xkcoding.justauth
+ justauth-spring-boot-starter
+ ${justauth-starter.version}
+
+
+
+
+ org.jeecgframework.jimureport
+ jimureport-spring-boot3-starter-fastjson2
+ ${jimureport.version}
+
+
+ org.jeecgframework.jimureport
+ jimubi-spring-boot3-starter
+ ${jimubi.version}
+
+
+ com.github.jsqlparser
+ jsqlparser
+
+
+ cn.hutool
+ hutool-core
+
+
+
+
+
+
+ io.vertx
+ vertx-core
+ ${vertx.version}
+
+
+ io.vertx
+ vertx-web
+ ${vertx.version}
+
+
+ io.vertx
+ vertx-mqtt
+ ${vertx.version}
+
+
+
+
+ org.eclipse.paho
+ org.eclipse.paho.client.mqttv3
+ ${mqtt.version}
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${flatten-maven-plugin.version}
+
+ bom
+ true
+
+
+
+
+ flatten
+
+ flatten
+ process-resources
+
+
+
+ clean
+
+ flatten.clean
+ clean
+
+
+
+
+
+
+
diff --git a/msgpush-framework/msgpush-common/pom.xml b/msgpush-framework/msgpush-common/pom.xml
new file mode 100644
index 0000000..2fbfde0
--- /dev/null
+++ b/msgpush-framework/msgpush-common/pom.xml
@@ -0,0 +1,156 @@
+
+
+
+ com.njcn
+ msgpush-framework
+ ${revision}
+
+ 4.0.0
+ msgpush-common
+ jar
+
+ ${project.artifactId}
+ 定义基础 pojo 类、枚举、工具类等等
+
+
+
+
+
+ org.springframework
+ spring-core
+ provided
+
+
+ org.springframework
+ spring-expression
+ provided
+
+
+ org.springframework
+ spring-aop
+ provided
+
+
+ org.aspectj
+ aspectjweaver
+ provided
+
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+
+ org.springframework
+ spring-web
+ provided
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ provided
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-openfeign-core
+ provided
+
+
+
+
+ org.apache.skywalking
+ apm-toolkit-trace
+
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+ org.mapstruct
+ mapstruct
+
+
+ org.mapstruct
+ mapstruct-jdk8
+
+
+ org.mapstruct
+ mapstruct-processor
+
+
+
+ com.google.guava
+ guava
+ provided
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ provided
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ provided
+
+
+
+ org.slf4j
+ slf4j-api
+ provided
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ provided
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+ com.alibaba
+ transmittable-thread-local
+
+
+
+ com.fhs-opensource
+ easy-trans-anno
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/fhs/trans/service/AutoTransable.java b/msgpush-framework/msgpush-common/src/main/java/com/fhs/trans/service/AutoTransable.java
new file mode 100644
index 0000000..6561931
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/fhs/trans/service/AutoTransable.java
@@ -0,0 +1,59 @@
+package com.fhs.trans.service;
+
+import com.fhs.core.trans.vo.VO;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 只有实现了这个接口的才能自动翻译
+ *
+ * 为什么要赋值粘贴到 msgpush-common 包下?
+ * 因为 AutoTransable 属于 easy-trans-service 下,无法方便的在 msgpush-module-xxx-api 模块下使用
+ *
+ * @author hongawen
+ * @since 2020-05-19 10:26:15
+ */
+public interface AutoTransable {
+
+ /**
+ * 根据 ids 查询数据列表
+ *
+ * 改方法已过期啦,请使用 selectByIds
+ *
+ * @param ids 编号数组
+ * @return 数据列表
+ */
+ @Deprecated
+ default List findByIds(List extends Object> ids){
+ return new ArrayList<>();
+ }
+
+ /**
+ * 根据 ids 查询
+ *
+ * @param ids 编号数组
+ * @return 数据列表
+ */
+ default List selectByIds(List extends Object> ids){
+ return this.findByIds(ids);
+ }
+
+ /**
+ * 获取 db 中所有的数据
+ *
+ * @return db 中所有的数据
+ */
+ default List select(){
+ return new ArrayList<>();
+ }
+
+ /**
+ * 根据 id 获取 vo
+ *
+ * @param primaryValue id
+ * @return vo
+ */
+ V selectById(Object primaryValue);
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiAccessLogCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiAccessLogCommonApi.java
new file mode 100644
index 0000000..3acf1df
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiAccessLogCommonApi.java
@@ -0,0 +1,34 @@
+package com.njcn.msgpush.framework.common.biz.infra.logger;
+
+import com.njcn.msgpush.framework.common.biz.infra.logger.dto.ApiAccessLogCreateReqDTO;
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = RpcConstants.INFRA_NAME) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - API 访问日志")
+public interface ApiAccessLogCommonApi {
+
+ String PREFIX = RpcConstants.INFRA_PREFIX + "/api-access-log";
+
+ @PostMapping(PREFIX + "/create")
+ @Operation(summary = "创建 API 访问日志")
+ CommonResult createApiAccessLog(@Valid @RequestBody ApiAccessLogCreateReqDTO createDTO);
+
+ /**
+ * 【异步】创建 API 访问日志
+ *
+ * @param createDTO 访问日志 DTO
+ */
+ @Async
+ default void createApiAccessLogAsync(ApiAccessLogCreateReqDTO createDTO) {
+ createApiAccessLog(createDTO).checkError();
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiErrorLogCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiErrorLogCommonApi.java
new file mode 100644
index 0000000..742b0db
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/ApiErrorLogCommonApi.java
@@ -0,0 +1,34 @@
+package com.njcn.msgpush.framework.common.biz.infra.logger;
+
+import com.njcn.msgpush.framework.common.biz.infra.logger.dto.ApiErrorLogCreateReqDTO;
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = RpcConstants.INFRA_NAME) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - API 异常日志")
+public interface ApiErrorLogCommonApi {
+
+ String PREFIX = RpcConstants.INFRA_PREFIX + "/api-error-log";
+
+ @PostMapping(PREFIX + "/create")
+ @Operation(summary = "创建 API 异常日志")
+ CommonResult createApiErrorLog(@Valid @RequestBody ApiErrorLogCreateReqDTO createDTO);
+
+ /**
+ * 【异步】创建 API 异常日志
+ *
+ * @param createDTO 异常日志 DTO
+ */
+ @Async
+ default void createApiErrorLogAsync(ApiErrorLogCreateReqDTO createDTO) {
+ createApiErrorLog(createDTO).checkError();
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiAccessLogCreateReqDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiAccessLogCreateReqDTO.java
new file mode 100644
index 0000000..37511ed
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiAccessLogCreateReqDTO.java
@@ -0,0 +1,103 @@
+package com.njcn.msgpush.framework.common.biz.infra.logger.dto;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * API 访问日志
+ *
+ * @author hongawen
+ */
+@Data
+public class ApiAccessLogCreateReqDTO {
+
+ /**
+ * 链路追踪编号
+ */
+ private String traceId;
+ /**
+ * 用户编号
+ */
+ private Long userId;
+ /**
+ * 用户类型
+ */
+ private Integer userType;
+ /**
+ * 应用名
+ */
+ @NotNull(message = "应用名不能为空")
+ private String applicationName;
+
+ /**
+ * 请求方法名
+ */
+ @NotNull(message = "http 请求方法不能为空")
+ private String requestMethod;
+ /**
+ * 访问地址
+ */
+ @NotNull(message = "访问地址不能为空")
+ private String requestUrl;
+ /**
+ * 请求参数
+ */
+ private String requestParams;
+ /**
+ * 响应结果
+ */
+ private String responseBody;
+ /**
+ * 用户 IP
+ */
+ @NotNull(message = "ip 不能为空")
+ private String userIp;
+ /**
+ * 浏览器 UA
+ */
+ @NotNull(message = "User-Agent 不能为空")
+ private String userAgent;
+
+ /**
+ * 操作模块
+ */
+ private String operateModule;
+ /**
+ * 操作名
+ */
+ private String operateName;
+ /**
+ * 操作分类
+ *
+ * 枚举,参见 OperateTypeEnum 类
+ */
+ private Integer operateType;
+
+ /**
+ * 开始请求时间
+ */
+ @NotNull(message = "开始请求时间不能为空")
+ private LocalDateTime beginTime;
+ /**
+ * 结束请求时间
+ */
+ @NotNull(message = "结束请求时间不能为空")
+ private LocalDateTime endTime;
+ /**
+ * 执行时长,单位:毫秒
+ */
+ @NotNull(message = "执行时长不能为空")
+ private Integer duration;
+ /**
+ * 结果码
+ */
+ @NotNull(message = "错误码不能为空")
+ private Integer resultCode;
+ /**
+ * 结果提示
+ */
+ private String resultMsg;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiErrorLogCreateReqDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiErrorLogCreateReqDTO.java
new file mode 100644
index 0000000..5c45aea
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/logger/dto/ApiErrorLogCreateReqDTO.java
@@ -0,0 +1,68 @@
+package com.njcn.msgpush.framework.common.biz.infra.logger.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "RPC 服务 - API 错误日志创建 Request DTO")
+@Data
+public class ApiErrorLogCreateReqDTO {
+
+ @Schema(description = "链路追踪编号", example = "89aca178-a370-411c-ae02-3f0d672be4ab")
+ private String traceId;
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ private Long userId;
+ @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Integer userType;
+ @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "system-server")
+ @NotNull(message = "应用名不能为空")
+ private String applicationName;
+
+ @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
+ @NotNull(message = "http 请求方法不能为空")
+ private String requestMethod;
+ @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
+ @NotNull(message = "访问地址不能为空")
+ private String requestUrl;
+ @Schema(description = "请求参数", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "请求参数不能为空")
+ private String requestParams;
+ @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+ @NotNull(message = "ip 不能为空")
+ private String userIp;
+ @Schema(description = "浏览器 UserAgent", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
+ @NotNull(message = "User-Agent 不能为空")
+ private String userAgent;
+
+ @Schema(description = "异常时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常时间不能为空")
+ private LocalDateTime exceptionTime;
+ @Schema(description = "异常名", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常名不能为空")
+ private String exceptionName;
+ @Schema(description = "异常发生的类全名", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常发生的类全名不能为空")
+ private String exceptionClassName;
+ @Schema(description = "异常发生的类文件", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常发生的类文件不能为空")
+ private String exceptionFileName;
+ @Schema(description = "异常发生的方法名", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常发生的方法名不能为空")
+ private String exceptionMethodName;
+ @Schema(description = "异常发生的方法所在行", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常发生的方法所在行不能为空")
+ private Integer exceptionLineNumber;
+ @Schema(description = "异常的栈轨迹异常的栈轨迹", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常的栈轨迹不能为空")
+ private String exceptionStackTrace;
+ @Schema(description = "异常导致的根消息", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常导致的根消息不能为空")
+ private String exceptionRootCauseMessage;
+ @Schema(description = "异常导致的消息", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "异常导致的消息不能为空")
+ private String exceptionMessage;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/package-info.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/package-info.java
new file mode 100644
index 0000000..7652553
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/infra/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 针对 infra 模块的 api 包
+ */
+package com.njcn.msgpush.framework.common.biz.infra;
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/package-info.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/package-info.java
new file mode 100644
index 0000000..e0c9df6
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 特殊:用于 framework 下,starter 需要调用 biz 业务模块的接口定义!
+ */
+package com.njcn.msgpush.framework.common.biz;
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/DictDataCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/DictDataCommonApi.java
new file mode 100644
index 0000000..fcc61c8
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/DictDataCommonApi.java
@@ -0,0 +1,26 @@
+package com.njcn.msgpush.framework.common.biz.system.dict;
+
+import com.njcn.msgpush.framework.common.biz.system.dict.dto.DictDataRespDTO;
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME, primary = false) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - 字典数据")
+public interface DictDataCommonApi {
+
+ String PREFIX = RpcConstants.SYSTEM_PREFIX + "/dict-data";
+
+ @GetMapping(PREFIX + "/list")
+ @Operation(summary = "获得指定字典类型的字典数据列表")
+ @Parameter(name = "dictType", description = "字典类型", example = "SEX", required = true)
+ CommonResult> getDictDataList(@RequestParam("dictType") String dictType);
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/dto/DictDataRespDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/dto/DictDataRespDTO.java
new file mode 100644
index 0000000..e14a533
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/dict/dto/DictDataRespDTO.java
@@ -0,0 +1,22 @@
+package com.njcn.msgpush.framework.common.biz.system.dict.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "RPC 服务 - 字典数据 Response DTO")
+@Data
+public class DictDataRespDTO {
+
+ @Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "灿能")
+ private String label;
+
+ @Schema(description = "字典值", requiredMode = Schema.RequiredMode.REQUIRED, example = "iocoder")
+ private String value;
+
+ @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex")
+ private String dictType;
+
+ @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Integer status; // 参见 CommonStatusEnum 枚举
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/OperateLogCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/OperateLogCommonApi.java
new file mode 100644
index 0000000..e3321f5
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/OperateLogCommonApi.java
@@ -0,0 +1,34 @@
+package com.njcn.msgpush.framework.common.biz.system.logger;
+
+import com.njcn.msgpush.framework.common.biz.system.logger.dto.OperateLogCreateReqDTO;
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME, primary = false) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - 操作日志")
+public interface OperateLogCommonApi {
+
+ String PREFIX = RpcConstants.SYSTEM_PREFIX + "/operate-log";
+
+ @PostMapping(PREFIX + "/create")
+ @Operation(summary = "创建操作日志")
+ CommonResult createOperateLog(@Valid @RequestBody OperateLogCreateReqDTO createReqDTO);
+
+ /**
+ * 【异步】创建操作日志
+ *
+ * @param createReqDTO 请求
+ */
+ @Async
+ default void createOperateLogAsync(OperateLogCreateReqDTO createReqDTO) {
+ createOperateLog(createReqDTO).checkError();
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/dto/OperateLogCreateReqDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/dto/OperateLogCreateReqDTO.java
new file mode 100644
index 0000000..aab661d
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/logger/dto/OperateLogCreateReqDTO.java
@@ -0,0 +1,50 @@
+package com.njcn.msgpush.framework.common.biz.system.logger.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(name = "RPC 服务 - 系统操作日志 Create Request DTO")
+@Data
+public class OperateLogCreateReqDTO {
+
+ @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "89aca178-a370-411c-ae02-3f0d672be4ab")
+ private String traceId;
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
+ @NotNull(message = "用户编号不能为空")
+ private Long userId;
+ @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2" )
+ @NotNull(message = "用户类型不能为空")
+ private Integer userType;
+ @Schema(description = "操作模块类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "订单")
+ @NotEmpty(message = "操作模块类型不能为空")
+ private String type;
+ @Schema(description = "操作名", requiredMode = Schema.RequiredMode.REQUIRED, example = "创建订单")
+ @NotEmpty(message = "操作名不能为空")
+ private String subType;
+ @Schema(description = "操作模块业务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "188")
+ @NotNull(message = "操作模块业务编号不能为空")
+ private Long bizId;
+ @Schema(description = "操作内容", requiredMode = Schema.RequiredMode.REQUIRED,
+ example = "修改编号为 1 的用户信息,将性别从男改成女,将姓名从灿能改成源码")
+ @NotEmpty(message = "操作内容不能为空")
+ private String action;
+ @Schema(description = "拓展字段", example = "{\"orderId\": \"1\"}")
+ private String extra;
+
+ @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
+ @NotEmpty(message = "请求方法名不能为空")
+ private String requestMethod;
+ @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/order/get")
+ @NotEmpty(message = "请求地址不能为空")
+ private String requestUrl;
+ @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+ @NotEmpty(message = "用户 IP 不能为空")
+ private String userIp;
+ @Schema(description = "浏览器 UserAgent", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
+ @NotEmpty(message = "浏览器 UA 不能为空")
+ private String userAgent;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/OAuth2TokenCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/OAuth2TokenCommonApi.java
new file mode 100644
index 0000000..b50629d
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/OAuth2TokenCommonApi.java
@@ -0,0 +1,52 @@
+package com.njcn.msgpush.framework.common.biz.system.oauth2;
+
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import com.njcn.msgpush.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
+import com.njcn.msgpush.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
+import com.njcn.msgpush.framework.common.biz.system.oauth2.dto.OAuth2AccessTokenRespDTO;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.validation.Valid;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - OAuth2.0 令牌")
+public interface OAuth2TokenCommonApi {
+
+ String PREFIX = RpcConstants.SYSTEM_PREFIX + "/oauth2/token";
+
+ /**
+ * 校验 Token 的 URL 地址,主要是提供给 Gateway 使用
+ */
+ @SuppressWarnings("HttpUrlsUsage")
+ String URL_CHECK = "http://" + RpcConstants.SYSTEM_NAME + PREFIX + "/check";
+
+ @PostMapping(PREFIX + "/create")
+ @Operation(summary = "创建访问令牌")
+ CommonResult createAccessToken(@Valid @RequestBody OAuth2AccessTokenCreateReqDTO reqDTO);
+
+ @GetMapping(PREFIX + "/check")
+ @Operation(summary = "校验访问令牌")
+ @Parameter(name = "accessToken", description = "访问令牌", required = true, example = "tudou")
+ CommonResult checkAccessToken(@RequestParam("accessToken") String accessToken);
+
+ @DeleteMapping(PREFIX + "/remove")
+ @Operation(summary = "移除访问令牌")
+ @Parameter(name = "accessToken", description = "访问令牌", required = true, example = "tudou")
+ CommonResult removeAccessToken(@RequestParam("accessToken") String accessToken);
+
+ @PutMapping(PREFIX + "/refresh")
+ @Operation(summary = "刷新访问令牌")
+ @Parameters({
+ @Parameter(name = "refreshToken", description = "刷新令牌", required = true, example = "haha"),
+ @Parameter(name = "clientId", description = "客户端编号", required = true, example = "msgpushyuanma")
+ })
+ CommonResult refreshAccessToken(@RequestParam("refreshToken") String refreshToken,
+ @RequestParam("clientId") String clientId);
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java
new file mode 100644
index 0000000..43b1217
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCheckRespDTO.java
@@ -0,0 +1,33 @@
+package com.njcn.msgpush.framework.common.biz.system.oauth2.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+@Schema(description = "RPC 服务 - OAuth2 访问令牌的校验 Response DTO")
+@Data
+public class OAuth2AccessTokenCheckRespDTO implements Serializable {
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ private Long userId;
+
+ @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Integer userType;
+
+ @Schema(description = "用户信息", example = "{\"nickname\": \"灿能\"}")
+ private Map userInfo;
+
+ @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ private Long tenantId;
+
+ @Schema(description = "授权范围的数组", example = "user_info")
+ private List scopes;
+
+ @Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ private LocalDateTime expiresTime;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java
new file mode 100644
index 0000000..c2b790f
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenCreateReqDTO.java
@@ -0,0 +1,32 @@
+package com.njcn.msgpush.framework.common.biz.system.oauth2.dto;
+
+import com.njcn.msgpush.framework.common.enums.UserTypeEnum;
+import com.njcn.msgpush.framework.common.validation.InEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@Schema(description = "RPC 服务 - OAuth2 访问令牌创建 Request DTO")
+@Data
+public class OAuth2AccessTokenCreateReqDTO implements Serializable {
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ @NotNull(message = "用户编号不能为空")
+ private Long userId;
+
+ @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "用户类型不能为空")
+ @InEnum(value = UserTypeEnum.class, message = "用户类型必须是 {value}")
+ private Integer userType;
+
+ @Schema(description = "客户端编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "msgpushyuanma")
+ @NotNull(message = "客户端编号不能为空")
+ private String clientId;
+
+ @Schema(description = "授权范围的数组", example = "user_info")
+ private List scopes;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenRespDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenRespDTO.java
new file mode 100644
index 0000000..1d5a176
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/oauth2/dto/OAuth2AccessTokenRespDTO.java
@@ -0,0 +1,28 @@
+package com.njcn.msgpush.framework.common.biz.system.oauth2.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Schema(description = "RPC 服务 - OAuth2 访问令牌的信息 Response DTO")
+@Data
+public class OAuth2AccessTokenRespDTO implements Serializable {
+
+ @Schema(description = "访问令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "tudou")
+ private String accessToken;
+
+ @Schema(description = "刷新令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "haha")
+ private String refreshToken;
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ private Long userId;
+
+ @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1" )
+ private Integer userType;
+
+ @Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
+ private LocalDateTime expiresTime;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/package-info.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/package-info.java
new file mode 100644
index 0000000..403d164
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 针对 system 模块的 api 包
+ */
+package com.njcn.msgpush.framework.common.biz.system;
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/PermissionCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/PermissionCommonApi.java
new file mode 100644
index 0000000..2f01bb5
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/PermissionCommonApi.java
@@ -0,0 +1,43 @@
+package com.njcn.msgpush.framework.common.biz.system.permission;
+
+import com.njcn.msgpush.framework.common.biz.system.permission.dto.DeptDataPermissionRespDTO;
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME, primary = false) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - 权限")
+public interface PermissionCommonApi {
+
+ String PREFIX = RpcConstants.SYSTEM_PREFIX + "/permission";
+
+ @GetMapping(PREFIX + "/has-any-permissions")
+ @Operation(summary = "判断是否有权限,任一一个即可")
+ @Parameters({
+ @Parameter(name = "userId", description = "用户编号", example = "1", required = true),
+ @Parameter(name = "permissions", description = "权限", example = "read,write", required = true)
+ })
+ CommonResult hasAnyPermissions(@RequestParam("userId") Long userId,
+ @RequestParam("permissions") String... permissions);
+
+ @GetMapping(PREFIX + "/has-any-roles")
+ @Operation(summary = "判断是否有角色,任一一个即可")
+ @Parameters({
+ @Parameter(name = "userId", description = "用户编号", example = "1", required = true),
+ @Parameter(name = "roles", description = "角色数组", example = "2", required = true)
+ })
+ CommonResult hasAnyRoles(@RequestParam("userId") Long userId,
+ @RequestParam("roles") String... roles);
+
+ @GetMapping(PREFIX + "/get-dept-data-permission")
+ @Operation(summary = "获得登陆用户的部门数据权限")
+ @Parameter(name = "userId", description = "用户编号", example = "2", required = true)
+ CommonResult getDeptDataPermission(@RequestParam("userId") Long userId);
+
+}
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/dto/DeptDataPermissionRespDTO.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/dto/DeptDataPermissionRespDTO.java
new file mode 100644
index 0000000..d7cd3c1
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/permission/dto/DeptDataPermissionRespDTO.java
@@ -0,0 +1,28 @@
+package com.njcn.msgpush.framework.common.biz.system.permission.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Schema(description = "RPC 服务 - 部门的数据权限 Response DTO")
+@Data
+public class DeptDataPermissionRespDTO {
+
+ @Schema(description = "是否可查看全部数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
+ private Boolean all;
+
+ @Schema(description = "是否可查看自己的数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
+ private Boolean self;
+
+ @Schema(description = "可查看的部门编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1, 3]")
+ private Set deptIds;
+
+ public DeptDataPermissionRespDTO() {
+ this.all = false;
+ this.self = false;
+ this.deptIds = new HashSet<>();
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/tenant/TenantCommonApi.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/tenant/TenantCommonApi.java
new file mode 100644
index 0000000..b0379db
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/biz/system/tenant/TenantCommonApi.java
@@ -0,0 +1,29 @@
+package com.njcn.msgpush.framework.common.biz.system.tenant;
+
+import com.njcn.msgpush.framework.common.enums.RpcConstants;
+import com.njcn.msgpush.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME) // TODO 芋艿:fallbackFactory =
+@Tag(name = "RPC 服务 - 多租户")
+public interface TenantCommonApi {
+
+ String PREFIX = RpcConstants.SYSTEM_PREFIX + "/tenant";
+
+ @GetMapping(PREFIX + "/id-list")
+ @Operation(summary = "获得所有租户编号")
+ CommonResult> getTenantIdList();
+
+ @GetMapping(PREFIX + "/valid")
+ @Operation(summary = "校验租户是否合法")
+ @Parameter(name = "id", description = "租户编号", required = true, example = "1024")
+ CommonResult validTenant(@RequestParam("id") Long id);
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/ArrayValuable.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/ArrayValuable.java
new file mode 100644
index 0000000..f882b04
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/ArrayValuable.java
@@ -0,0 +1,15 @@
+package com.njcn.msgpush.framework.common.core;
+
+/**
+ * 可生成 T 数组的接口
+ *
+ * @author HUIHUI
+ */
+public interface ArrayValuable {
+
+ /**
+ * @return 数组
+ */
+ T[] array();
+
+}
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/KeyValue.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/KeyValue.java
new file mode 100644
index 0000000..82e8abe
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/core/KeyValue.java
@@ -0,0 +1,22 @@
+package com.njcn.msgpush.framework.common.core;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * Key Value 的键值对
+ *
+ * @author hongawen
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class KeyValue implements Serializable {
+
+ private K key;
+ private V value;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/CommonStatusEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/CommonStatusEnum.java
new file mode 100644
index 0000000..73de73f
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/CommonStatusEnum.java
@@ -0,0 +1,46 @@
+package com.njcn.msgpush.framework.common.enums;
+
+import cn.hutool.core.util.ObjUtil;
+import com.njcn.msgpush.framework.common.core.ArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 通用状态枚举
+ *
+ * @author hongawen
+ */
+@Getter
+@AllArgsConstructor
+public enum CommonStatusEnum implements ArrayValuable {
+
+ ENABLE(0, "开启"),
+ DISABLE(1, "关闭");
+
+ public static final Integer[] ARRAYS = Arrays.stream(values()).map(CommonStatusEnum::getStatus).toArray(Integer[]::new);
+
+ /**
+ * 状态值
+ */
+ private final Integer status;
+ /**
+ * 状态名
+ */
+ private final String name;
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+
+ public static boolean isEnable(Integer status) {
+ return ObjUtil.equal(ENABLE.status, status);
+ }
+
+ public static boolean isDisable(Integer status) {
+ return ObjUtil.equal(DISABLE.status, status);
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DateIntervalEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DateIntervalEnum.java
new file mode 100644
index 0000000..7eb0bb7
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DateIntervalEnum.java
@@ -0,0 +1,47 @@
+package com.njcn.msgpush.framework.common.enums;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.njcn.msgpush.framework.common.core.ArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 时间间隔的枚举
+ *
+ * @author dhb52
+ */
+@Getter
+@AllArgsConstructor
+public enum DateIntervalEnum implements ArrayValuable {
+
+ HOUR(0, "小时"), // 特殊:字典里,暂时不会有这个枚举!!!因为大多数情况下,用不到这个间隔
+ DAY(1, "天"),
+ WEEK(2, "周"),
+ MONTH(3, "月"),
+ QUARTER(4, "季度"),
+ YEAR(5, "年")
+ ;
+
+ public static final Integer[] ARRAYS = Arrays.stream(values()).map(DateIntervalEnum::getInterval).toArray(Integer[]::new);
+
+ /**
+ * 类型
+ */
+ private final Integer interval;
+ /**
+ * 名称
+ */
+ private final String name;
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+
+ public static DateIntervalEnum valueOf(Integer interval) {
+ return ArrayUtil.firstMatch(item -> item.getInterval().equals(interval), DateIntervalEnum.values());
+ }
+
+}
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DocumentEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DocumentEnum.java
new file mode 100644
index 0000000..f721ad0
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/DocumentEnum.java
@@ -0,0 +1,21 @@
+package com.njcn.msgpush.framework.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 文档地址
+ *
+ * @author hongawen
+ */
+@Getter
+@AllArgsConstructor
+public enum DocumentEnum {
+
+ REDIS_INSTALL("https://gitee.com/zhijiantianya/ruoyi-vue-pro/issues/I4VCSJ", "Redis 安装文档"),
+ TENANT("https://doc.iocoder.cn", "SaaS 多租户文档");
+
+ private final String url;
+ private final String memo;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/RpcConstants.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/RpcConstants.java
new file mode 100644
index 0000000..15ac114
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/RpcConstants.java
@@ -0,0 +1,40 @@
+package com.njcn.msgpush.framework.common.enums;
+
+/**
+ * RPC 相关的枚举
+ *
+ * 虽然放在 msgpush-spring-boot-starter-rpc 会相对合适,但是每个 API 模块需要使用到,所以暂时只好放在此处
+ *
+ * @author hongawen
+ */
+public interface RpcConstants {
+
+ /**
+ * RPC API 的前缀
+ */
+ String RPC_API_PREFIX = "/rpc-api";
+
+ /**
+ * system 服务名
+ *
+ * 注意,需要保证和 spring.application.name 保持一致
+ */
+ String SYSTEM_NAME = "system-server";
+
+ /**
+ * system 服务的前缀
+ */
+ String SYSTEM_PREFIX = RPC_API_PREFIX + "/system";
+
+ /**
+ * infra 服务名
+ *
+ * 注意,需要保证和 spring.application.name 保持一致
+ */
+ String INFRA_NAME = "infra-server";
+ /**
+ * infra 服务的前缀
+ */
+ String INFRA_PREFIX = RPC_API_PREFIX + "/infra";
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/TerminalEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/TerminalEnum.java
new file mode 100644
index 0000000..0a2d7b5
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/TerminalEnum.java
@@ -0,0 +1,40 @@
+package com.njcn.msgpush.framework.common.enums;
+
+import com.njcn.msgpush.framework.common.core.ArrayValuable;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.util.Arrays;
+
+/**
+ * 终端的枚举
+ *
+ * @author hongawen
+ */
+@RequiredArgsConstructor
+@Getter
+public enum TerminalEnum implements ArrayValuable {
+
+ UNKNOWN(0, "未知"), // 目的:在无法解析到 terminal 时,使用它
+ WECHAT_MINI_PROGRAM(10, "微信小程序"),
+ WECHAT_WAP(11, "微信公众号"),
+ H5(20, "H5 网页"),
+ APP(31, "手机 App"),
+ ;
+
+ public static final Integer[] ARRAYS = Arrays.stream(values()).map(TerminalEnum::getTerminal).toArray(Integer[]::new);
+
+ /**
+ * 终端
+ */
+ private final Integer terminal;
+ /**
+ * 终端名
+ */
+ private final String name;
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/UserTypeEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/UserTypeEnum.java
new file mode 100644
index 0000000..a055c78
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/UserTypeEnum.java
@@ -0,0 +1,39 @@
+package com.njcn.msgpush.framework.common.enums;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.njcn.msgpush.framework.common.core.ArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 全局用户类型枚举
+ */
+@AllArgsConstructor
+@Getter
+public enum UserTypeEnum implements ArrayValuable {
+
+ MEMBER(1, "会员"), // 面向 c 端,普通用户
+ ADMIN(2, "管理员"); // 面向 b 端,管理后台
+
+ public static final Integer[] ARRAYS = Arrays.stream(values()).map(UserTypeEnum::getValue).toArray(Integer[]::new);
+
+ /**
+ * 类型
+ */
+ private final Integer value;
+ /**
+ * 类型名
+ */
+ private final String name;
+
+ public static UserTypeEnum valueOf(Integer value) {
+ return ArrayUtil.firstMatch(userType -> userType.getValue().equals(value), UserTypeEnum.values());
+ }
+
+ @Override
+ public Integer[] array() {
+ return ARRAYS;
+ }
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/WebFilterOrderEnum.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/WebFilterOrderEnum.java
new file mode 100644
index 0000000..668d378
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/enums/WebFilterOrderEnum.java
@@ -0,0 +1,38 @@
+package com.njcn.msgpush.framework.common.enums;
+
+/**
+ * Web 过滤器顺序的枚举类,保证过滤器按照符合我们的预期
+ *
+ * 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 enum 包下
+ *
+ * @author hongawen
+ */
+public interface WebFilterOrderEnum {
+
+ int CORS_FILTER = Integer.MIN_VALUE;
+
+ int TRACE_FILTER = CORS_FILTER + 1;
+
+ int ENV_TAG_FILTER = TRACE_FILTER + 1;
+
+ int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500;
+
+ int API_ENCRYPT_FILTER = REQUEST_BODY_CACHE_FILTER + 1;
+
+ // OrderedRequestContextFilter 默认为 -105,用于国际化上下文等等
+
+ int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面
+
+ int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面
+
+ int XSS_FILTER = -102; // 需要保证在 RequestBodyCacheFilter 后面
+
+ // Spring Security Filter 默认为 -100,可见 org.springframework.boot.autoconfigure.security.SecurityProperties 配置属性类
+
+ int TENANT_SECURITY_FILTER = -99; // 需要保证在 Spring Security 过滤器后面
+
+ int FLOWABLE_FILTER = -98; // 需要保证在 Spring Security 过滤后面
+
+ int DEMO_FILTER = Integer.MAX_VALUE;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ErrorCode.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ErrorCode.java
new file mode 100644
index 0000000..bc04642
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ErrorCode.java
@@ -0,0 +1,32 @@
+package com.njcn.msgpush.framework.common.exception;
+
+import com.njcn.msgpush.framework.common.exception.enums.GlobalErrorCodeConstants;
+import com.njcn.msgpush.framework.common.exception.enums.ServiceErrorCodeRange;
+import lombok.Data;
+
+/**
+ * 错误码对象
+ *
+ * 全局错误码,占用 [0, 999], 参见 {@link GlobalErrorCodeConstants}
+ * 业务异常错误码,占用 [1 000 000 000, +∞),参见 {@link ServiceErrorCodeRange}
+ *
+ * TODO 错误码设计成对象的原因,为未来的 i18 国际化做准备
+ */
+@Data
+public class ErrorCode {
+
+ /**
+ * 错误码
+ */
+ private final Integer code;
+ /**
+ * 错误提示
+ */
+ private final String msg;
+
+ public ErrorCode(Integer code, String message) {
+ this.code = code;
+ this.msg = message;
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServerException.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServerException.java
new file mode 100644
index 0000000..0133455
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServerException.java
@@ -0,0 +1,60 @@
+package com.njcn.msgpush.framework.common.exception;
+
+import com.njcn.msgpush.framework.common.exception.enums.GlobalErrorCodeConstants;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 服务器异常 Exception
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public final class ServerException extends RuntimeException {
+
+ /**
+ * 全局错误码
+ *
+ * @see GlobalErrorCodeConstants
+ */
+ private Integer code;
+ /**
+ * 错误提示
+ */
+ private String message;
+
+ /**
+ * 空构造方法,避免反序列化问题
+ */
+ public ServerException() {
+ }
+
+ public ServerException(ErrorCode errorCode) {
+ this.code = errorCode.getCode();
+ this.message = errorCode.getMsg();
+ }
+
+ public ServerException(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public ServerException setCode(Integer code) {
+ this.code = code;
+ return this;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ public ServerException setMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServiceException.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServiceException.java
new file mode 100644
index 0000000..b5b88c9
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/ServiceException.java
@@ -0,0 +1,60 @@
+package com.njcn.msgpush.framework.common.exception;
+
+import com.njcn.msgpush.framework.common.exception.enums.ServiceErrorCodeRange;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 业务逻辑异常 Exception
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public final class ServiceException extends RuntimeException {
+
+ /**
+ * 业务错误码
+ *
+ * @see ServiceErrorCodeRange
+ */
+ private Integer code;
+ /**
+ * 错误提示
+ */
+ private String message;
+
+ /**
+ * 空构造方法,避免反序列化问题
+ */
+ public ServiceException() {
+ }
+
+ public ServiceException(ErrorCode errorCode) {
+ this.code = errorCode.getCode();
+ this.message = errorCode.getMsg();
+ }
+
+ public ServiceException(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public ServiceException setCode(Integer code) {
+ this.code = code;
+ return this;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ public ServiceException setMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/GlobalErrorCodeConstants.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/GlobalErrorCodeConstants.java
new file mode 100644
index 0000000..33d9ce7
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/GlobalErrorCodeConstants.java
@@ -0,0 +1,41 @@
+package com.njcn.msgpush.framework.common.exception.enums;
+
+import com.njcn.msgpush.framework.common.exception.ErrorCode;
+
+/**
+ * 全局错误码枚举
+ * 0-999 系统异常编码保留
+ *
+ * 一般情况下,使用 HTTP 响应状态码 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
+ * 虽然说,HTTP 响应状态码作为业务使用表达能力偏弱,但是使用在系统层面还是非常不错的
+ * 比较特殊的是,因为之前一直使用 0 作为成功,就不使用 200 啦。
+ *
+ * @author hongawen
+ */
+public interface GlobalErrorCodeConstants {
+
+ ErrorCode SUCCESS = new ErrorCode(0, "成功");
+
+ // ========== 客户端错误段 ==========
+
+ ErrorCode BAD_REQUEST = new ErrorCode(400, "请求参数不正确");
+ ErrorCode UNAUTHORIZED = new ErrorCode(401, "账号未登录");
+ ErrorCode FORBIDDEN = new ErrorCode(403, "没有该操作权限");
+ ErrorCode NOT_FOUND = new ErrorCode(404, "请求未找到");
+ ErrorCode METHOD_NOT_ALLOWED = new ErrorCode(405, "请求方法不正确");
+ ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许
+ ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试");
+
+ // ========== 服务端错误段 ==========
+
+ ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常");
+ ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");
+ ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项");
+
+ // ========== 自定义错误段 ==========
+ ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
+ ErrorCode DEMO_DENY = new ErrorCode(901, "演示模式,禁止写操作");
+
+ ErrorCode UNKNOWN = new ErrorCode(999, "未知错误");
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/ServiceErrorCodeRange.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/ServiceErrorCodeRange.java
new file mode 100644
index 0000000..75f1158
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/enums/ServiceErrorCodeRange.java
@@ -0,0 +1,48 @@
+package com.njcn.msgpush.framework.common.exception.enums;
+
+/**
+ * 业务异常的错误码区间,解决:解决各模块错误码定义,避免重复,在此只声明不做实际使用
+ *
+ * 一共 10 位,分成四段
+ *
+ * 第一段,1 位,类型
+ * 1 - 业务级别异常
+ * x - 预留
+ * 第二段,3 位,系统类型
+ * 001 - 用户系统
+ * 002 - 商品系统
+ * 003 - 订单系统
+ * 004 - 支付系统
+ * 005 - 优惠劵系统
+ * ... - ...
+ * 第三段,3 位,模块
+ * 不限制规则。
+ * 一般建议,每个系统里面,可能有多个模块,可以再去做分段。以用户系统为例子:
+ * 001 - OAuth2 模块
+ * 002 - User 模块
+ * 003 - MobileCode 模块
+ * 第四段,3 位,错误码
+ * 不限制规则。
+ * 一般建议,每个模块自增。
+ *
+ * @author hongawen
+ */
+public class ServiceErrorCodeRange {
+
+ // 模块 infra 错误码区间 [1-001-000-000 ~ 1-002-000-000)
+ // 模块 system 错误码区间 [1-002-000-000 ~ 1-003-000-000)
+ // 模块 report 错误码区间 [1-003-000-000 ~ 1-004-000-000)
+ // 模块 member 错误码区间 [1-004-000-000 ~ 1-005-000-000)
+ // 模块 mp 错误码区间 [1-006-000-000 ~ 1-007-000-000)
+ // 模块 pay 错误码区间 [1-007-000-000 ~ 1-008-000-000)
+ // 模块 bpm 错误码区间 [1-009-000-000 ~ 1-010-000-000)
+
+ // 模块 product 错误码区间 [1-008-000-000 ~ 1-009-000-000)
+ // 模块 trade 错误码区间 [1-011-000-000 ~ 1-012-000-000)
+ // 模块 promotion 错误码区间 [1-013-000-000 ~ 1-014-000-000)
+
+ // 模块 crm 错误码区间 [1-020-000-000 ~ 1-021-000-000)
+
+ // 模块 ai 错误码区间 [1-022-000-000 ~ 1-023-000-000)
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/util/ServiceExceptionUtil.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/util/ServiceExceptionUtil.java
new file mode 100644
index 0000000..c7ba620
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/exception/util/ServiceExceptionUtil.java
@@ -0,0 +1,77 @@
+package com.njcn.msgpush.framework.common.exception.util;
+
+import com.njcn.msgpush.framework.common.exception.ErrorCode;
+import com.njcn.msgpush.framework.common.exception.ServiceException;
+import com.njcn.msgpush.framework.common.exception.enums.GlobalErrorCodeConstants;
+import com.google.common.annotations.VisibleForTesting;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * {@link ServiceException} 工具类
+ *
+ * 目的在于,格式化异常信息提示。
+ * 考虑到 String.format 在参数不正确时会报错,因此使用 {} 作为占位符,并使用 {@link #doFormat(int, String, Object...)} 方法来格式化
+ *
+ */
+@Slf4j
+public class ServiceExceptionUtil {
+
+ // ========== 和 ServiceException 的集成 ==========
+
+ public static ServiceException exception(ErrorCode errorCode) {
+ return exception0(errorCode.getCode(), errorCode.getMsg());
+ }
+
+ public static ServiceException exception(ErrorCode errorCode, Object... params) {
+ return exception0(errorCode.getCode(), errorCode.getMsg(), params);
+ }
+
+ public static ServiceException exception0(Integer code, String messagePattern, Object... params) {
+ String message = doFormat(code, messagePattern, params);
+ return new ServiceException(code, message);
+ }
+
+ public static ServiceException invalidParamException(String messagePattern, Object... params) {
+ return exception0(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), messagePattern, params);
+ }
+
+ // ========== 格式化方法 ==========
+
+ /**
+ * 将错误编号对应的消息使用 params 进行格式化。
+ *
+ * @param code 错误编号
+ * @param messagePattern 消息模版
+ * @param params 参数
+ * @return 格式化后的提示
+ */
+ @VisibleForTesting
+ public static String doFormat(int code, String messagePattern, Object... params) {
+ StringBuilder sbuf = new StringBuilder(messagePattern.length() + 50);
+ int i = 0;
+ int j;
+ int l;
+ for (l = 0; l < params.length; l++) {
+ j = messagePattern.indexOf("{}", i);
+ if (j == -1) {
+ log.error("[doFormat][参数过多:错误码({})|错误内容({})|参数({})", code, messagePattern, params);
+ if (i == 0) {
+ return messagePattern;
+ } else {
+ sbuf.append(messagePattern.substring(i));
+ return sbuf.toString();
+ }
+ } else {
+ sbuf.append(messagePattern, i, j);
+ sbuf.append(params[l]);
+ i = j + 2;
+ }
+ }
+ if (messagePattern.indexOf("{}", i) != -1) {
+ log.error("[doFormat][参数过少:错误码({})|错误内容({})|参数({})", code, messagePattern, params);
+ }
+ sbuf.append(messagePattern.substring(i));
+ return sbuf.toString();
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/package-info.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/package-info.java
new file mode 100644
index 0000000..9c4b988
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * 基础的通用类,和框架无关
+ *
+ * 例如说,CommonResult 为通用返回
+ */
+package com.njcn.msgpush.framework.common;
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/CommonResult.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/CommonResult.java
new file mode 100644
index 0000000..d6ad866
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/CommonResult.java
@@ -0,0 +1,121 @@
+package com.njcn.msgpush.framework.common.pojo;
+
+import cn.hutool.core.lang.Assert;
+import com.njcn.msgpush.framework.common.exception.ErrorCode;
+import com.njcn.msgpush.framework.common.exception.ServiceException;
+import com.njcn.msgpush.framework.common.exception.enums.GlobalErrorCodeConstants;
+import com.njcn.msgpush.framework.common.exception.util.ServiceExceptionUtil;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * 通用返回
+ *
+ * @param 数据泛型
+ */
+@Data
+public class CommonResult implements Serializable {
+
+ /**
+ * 错误码
+ *
+ * @see ErrorCode#getCode()
+ */
+ private Integer code;
+ /**
+ * 错误提示,用户可阅读
+ *
+ * @see ErrorCode#getMsg() ()
+ */
+ private String msg;
+ /**
+ * 返回数据
+ */
+ private T data;
+
+ /**
+ * 将传入的 result 对象,转换成另外一个泛型结果的对象
+ *
+ * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。
+ *
+ * @param result 传入的 result 对象
+ * @param 返回的泛型
+ * @return 新的 CommonResult 对象
+ */
+ public static CommonResult error(CommonResult> result) {
+ return error(result.getCode(), result.getMsg());
+ }
+
+ public static CommonResult error(Integer code, String message) {
+ Assert.notEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), code, "code 必须是错误的!");
+ CommonResult result = new CommonResult<>();
+ result.code = code;
+ result.msg = message;
+ return result;
+ }
+
+ public static CommonResult error(ErrorCode errorCode, Object... params) {
+ Assert.notEquals(GlobalErrorCodeConstants.SUCCESS.getCode(), errorCode.getCode(), "code 必须是错误的!");
+ CommonResult result = new CommonResult<>();
+ result.code = errorCode.getCode();
+ result.msg = ServiceExceptionUtil.doFormat(errorCode.getCode(), errorCode.getMsg(), params);
+ return result;
+ }
+
+ public static CommonResult error(ErrorCode errorCode) {
+ return error(errorCode.getCode(), errorCode.getMsg());
+ }
+
+ public static CommonResult success(T data) {
+ CommonResult result = new CommonResult<>();
+ result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
+ result.data = data;
+ result.msg = "";
+ return result;
+ }
+
+ public static boolean isSuccess(Integer code) {
+ return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode());
+ }
+
+ @JsonIgnore // 避免 jackson 序列化
+ public boolean isSuccess() {
+ return isSuccess(code);
+ }
+
+ @JsonIgnore // 避免 jackson 序列化
+ public boolean isError() {
+ return !isSuccess();
+ }
+
+ // ========= 和 Exception 异常体系集成 =========
+
+ /**
+ * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常
+ */
+ public void checkError() throws ServiceException {
+ if (isSuccess()) {
+ return;
+ }
+ // 业务异常
+ throw new ServiceException(code, msg);
+ }
+
+ /**
+ * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常
+ * 如果没有,则返回 {@link #data} 数据
+ */
+ @JsonIgnore // 避免 jackson 序列化
+ public T getCheckedData() {
+ checkError();
+ return data;
+ }
+
+ public static CommonResult error(ServiceException serviceException) {
+ return error(serviceException.getCode(), serviceException.getMessage());
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageParam.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageParam.java
new file mode 100644
index 0000000..ea937af
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageParam.java
@@ -0,0 +1,36 @@
+package com.njcn.msgpush.framework.common.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Schema(description="分页参数")
+@Data
+public class PageParam implements Serializable {
+
+ private static final Integer PAGE_NO = 1;
+ private static final Integer PAGE_SIZE = 10;
+
+ /**
+ * 每页条数 - 不分页
+ *
+ * 例如说,导出接口,可以设置 {@link #pageSize} 为 -1 不分页,查询所有数据。
+ */
+ public static final Integer PAGE_SIZE_NONE = -1;
+
+ @Schema(description = "页码,从 1 开始", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")
+ @NotNull(message = "页码不能为空")
+ @Min(value = 1, message = "页码最小值为 1")
+ private Integer pageNo = PAGE_NO;
+
+ @Schema(description = "每页条数,最大值为 200", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ @NotNull(message = "每页条数不能为空")
+ @Min(value = 1, message = "每页条数最小值为 1")
+ @Max(value = 200, message = "每页条数最大值为 200")
+ private Integer pageSize = PAGE_SIZE;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageResult.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageResult.java
new file mode 100644
index 0000000..07003e1
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/PageResult.java
@@ -0,0 +1,41 @@
+package com.njcn.msgpush.framework.common.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Schema(description = "分页结果")
+@Data
+public final class PageResult implements Serializable {
+
+ @Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED)
+ private Long total;
+
+ @Schema(description = "数据", requiredMode = Schema.RequiredMode.REQUIRED)
+ private List list;
+
+ public PageResult() {
+ }
+
+ public PageResult(List list, Long total) {
+ this.list = list;
+ this.total = total;
+ }
+
+ public PageResult(Long total) {
+ this.list = new ArrayList<>();
+ this.total = total;
+ }
+
+ public static PageResult empty() {
+ return new PageResult<>(0L);
+ }
+
+ public static PageResult empty(Long total) {
+ return new PageResult<>(total);
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortablePageParam.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortablePageParam.java
new file mode 100644
index 0000000..14a27df
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortablePageParam.java
@@ -0,0 +1,19 @@
+package com.njcn.msgpush.framework.common.pojo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.List;
+
+@Schema(description = "可排序的分页参数")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SortablePageParam extends PageParam {
+
+ @Schema(description = "排序字段")
+ private List sortingFields;
+
+}
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortingField.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortingField.java
new file mode 100644
index 0000000..9dd1b20
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/pojo/SortingField.java
@@ -0,0 +1,37 @@
+package com.njcn.msgpush.framework.common.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 排序字段 DTO
+ *
+ * 类名加了 ing 的原因是,避免和 ES SortField 重名。
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SortingField implements Serializable {
+
+ /**
+ * 顺序 - 升序
+ */
+ public static final String ORDER_ASC = "asc";
+ /**
+ * 顺序 - 降序
+ */
+ public static final String ORDER_DESC = "desc";
+
+ /**
+ * 字段
+ */
+ private String field;
+ /**
+ * 顺序
+ */
+ private String order;
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/cache/CacheUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/cache/CacheUtils.java
new file mode 100644
index 0000000..016d692
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/cache/CacheUtils.java
@@ -0,0 +1,61 @@
+package com.njcn.msgpush.framework.common.util.cache;
+
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+
+import java.time.Duration;
+import java.util.concurrent.Executors;
+
+/**
+ * Cache 工具类
+ *
+ * @author hongawen
+ */
+public class CacheUtils {
+
+ /**
+ * 异步刷新的 LoadingCache 最大缓存数量
+ *
+ * @see 本地缓存 CacheUtils 工具类建议
+ */
+ private static final Integer CACHE_MAX_SIZE = 10000;
+
+ /**
+ * 构建异步刷新的 LoadingCache 对象
+ *
+ * 注意:如果你的缓存和 ThreadLocal 有关系,要么自己处理 ThreadLocal 的传递,要么使用 {@link #buildCache(Duration, CacheLoader)} 方法
+ *
+ * 或者简单理解:
+ * 1、和“人”相关的,使用 {@link #buildCache(Duration, CacheLoader)} 方法
+ * 2、和“全局”、“系统”相关的,使用当前缓存方法
+ *
+ * @param duration 过期时间
+ * @param loader CacheLoader 对象
+ * @return LoadingCache 对象
+ */
+ public static LoadingCache buildAsyncReloadingCache(Duration duration, CacheLoader loader) {
+ return CacheBuilder.newBuilder()
+ .maximumSize(CACHE_MAX_SIZE)
+ // 只阻塞当前数据加载线程,其他线程返回旧值
+ .refreshAfterWrite(duration)
+ // 通过 asyncReloading 实现全异步加载,包括 refreshAfterWrite 被阻塞的加载线程
+ .build(CacheLoader.asyncReloading(loader, Executors.newCachedThreadPool())); // TODO 芋艿:可能要思考下,未来要不要做成可配置
+ }
+
+ /**
+ * 构建同步刷新的 LoadingCache 对象
+ *
+ * @param duration 过期时间
+ * @param loader CacheLoader 对象
+ * @return LoadingCache 对象
+ */
+ public static LoadingCache buildCache(Duration duration, CacheLoader loader) {
+ return CacheBuilder.newBuilder()
+ .maximumSize(CACHE_MAX_SIZE)
+ // 只阻塞当前数据加载线程,其他线程返回旧值
+ .refreshAfterWrite(duration)
+ .build(loader);
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/ArrayUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/ArrayUtils.java
new file mode 100644
index 0000000..8c39cd8
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/ArrayUtils.java
@@ -0,0 +1,58 @@
+package com.njcn.msgpush.framework.common.util.collection;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.IterUtil;
+import cn.hutool.core.util.ArrayUtil;
+
+import java.util.Collection;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import static com.njcn.msgpush.framework.common.util.collection.CollectionUtils.convertList;
+
+/**
+ * Array 工具类
+ *
+ * @author hongawen
+ */
+public class ArrayUtils {
+
+ /**
+ * 将 object 和 newElements 合并成一个数组
+ *
+ * @param object 对象
+ * @param newElements 数组
+ * @param 泛型
+ * @return 结果数组
+ */
+ @SafeVarargs
+ public static Consumer[] append(Consumer object, Consumer... newElements) {
+ if (object == null) {
+ return newElements;
+ }
+ Consumer[] result = ArrayUtil.newArray(Consumer.class, 1 + newElements.length);
+ result[0] = object;
+ System.arraycopy(newElements, 0, result, 1, newElements.length);
+ return result;
+ }
+
+ public static V[] toArray(Collection from, Function mapper) {
+ return toArray(convertList(from, mapper));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static T[] toArray(Collection from) {
+ if (CollectionUtil.isEmpty(from)) {
+ return (T[]) (new Object[0]);
+ }
+ return ArrayUtil.toArray(from, (Class) IterUtil.getElementType(from.iterator()));
+ }
+
+ public static T get(T[] array, int index) {
+ if (null == array || index >= array.length) {
+ return null;
+ }
+ return array[index];
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/CollectionUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/CollectionUtils.java
new file mode 100644
index 0000000..8108dda
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/CollectionUtils.java
@@ -0,0 +1,352 @@
+package com.njcn.msgpush.framework.common.util.collection;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ArrayUtil;
+import com.njcn.msgpush.framework.common.pojo.PageResult;
+import com.google.common.collect.ImmutableMap;
+
+import java.util.*;
+import java.util.function.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static cn.hutool.core.convert.Convert.toCollection;
+import static java.util.Arrays.asList;
+
+/**
+ * Collection 工具类
+ *
+ * @author hongawen
+ */
+public class CollectionUtils {
+
+ public static boolean containsAny(Object source, Object... targets) {
+ return asList(targets).contains(source);
+ }
+
+ public static boolean isAnyEmpty(Collection>... collections) {
+ return Arrays.stream(collections).anyMatch(CollectionUtil::isEmpty);
+ }
+
+ public static boolean anyMatch(Collection from, Predicate predicate) {
+ return from.stream().anyMatch(predicate);
+ }
+
+ public static List filterList(Collection from, Predicate predicate) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return from.stream().filter(predicate).collect(Collectors.toList());
+ }
+
+ public static List distinct(Collection from, Function keyMapper) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return distinct(from, keyMapper, (t1, t2) -> t1);
+ }
+
+ public static List distinct(Collection from, Function keyMapper, BinaryOperator cover) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return new ArrayList<>(convertMap(from, keyMapper, Function.identity(), cover).values());
+ }
+
+ public static List convertList(T[] from, Function func) {
+ if (ArrayUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return convertList(Arrays.asList(from), func);
+ }
+
+ public static List convertList(Collection from, Function func) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return from.stream().map(func).filter(Objects::nonNull).collect(Collectors.toList());
+ }
+
+ public static List convertList(Collection from, Function func, Predicate filter) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return from.stream().filter(filter).map(func).filter(Objects::nonNull).collect(Collectors.toList());
+ }
+
+ public static PageResult convertPage(PageResult from, Function func) {
+ if (ArrayUtil.isEmpty(from)) {
+ return new PageResult<>(from.getTotal());
+ }
+ return new PageResult<>(convertList(from.getList(), func), from.getTotal());
+ }
+
+ public static List convertListByFlatMap(Collection from,
+ Function> func) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return from.stream().filter(Objects::nonNull).flatMap(func).filter(Objects::nonNull).collect(Collectors.toList());
+ }
+
+ public static List convertListByFlatMap(Collection from,
+ Function super T, ? extends U> mapper,
+ Function> func) {
+ if (CollUtil.isEmpty(from)) {
+ return new ArrayList<>();
+ }
+ return from.stream().map(mapper).filter(Objects::nonNull).flatMap(func).filter(Objects::nonNull).collect(Collectors.toList());
+ }
+
+ public static List mergeValuesFromMap(Map> map) {
+ return map.values()
+ .stream()
+ .flatMap(List::stream)
+ .collect(Collectors.toList());
+ }
+
+ public static Set convertSet(Collection from) {
+ return convertSet(from, v -> v);
+ }
+
+ public static Set convertSet(Collection from, Function func) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashSet<>();
+ }
+ return from.stream().map(func).filter(Objects::nonNull).collect(Collectors.toSet());
+ }
+
+ public static Set convertSet(Collection from, Function func, Predicate filter) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashSet<>();
+ }
+ return from.stream().filter(filter).map(func).filter(Objects::nonNull).collect(Collectors.toSet());
+ }
+
+ public static Map convertMapByFilter(Collection from, Predicate filter, Function keyFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return from.stream().filter(filter).collect(Collectors.toMap(keyFunc, v -> v));
+ }
+
+ public static Set convertSetByFlatMap(Collection from,
+ Function> func) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashSet<>();
+ }
+ return from.stream().filter(Objects::nonNull).flatMap(func).filter(Objects::nonNull).collect(Collectors.toSet());
+ }
+
+ public static Set convertSetByFlatMap(Collection from,
+ Function super T, ? extends U> mapper,
+ Function> func) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashSet<>();
+ }
+ return from.stream().map(mapper).filter(Objects::nonNull).flatMap(func).filter(Objects::nonNull).collect(Collectors.toSet());
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return convertMap(from, keyFunc, Function.identity());
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc, Supplier extends Map> supplier) {
+ if (CollUtil.isEmpty(from)) {
+ return supplier.get();
+ }
+ return convertMap(from, keyFunc, Function.identity(), supplier);
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return convertMap(from, keyFunc, valueFunc, (v1, v2) -> v1);
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc, Function valueFunc, BinaryOperator mergeFunction) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return convertMap(from, keyFunc, valueFunc, mergeFunction, HashMap::new);
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc, Function valueFunc, Supplier extends Map> supplier) {
+ if (CollUtil.isEmpty(from)) {
+ return supplier.get();
+ }
+ return convertMap(from, keyFunc, valueFunc, (v1, v2) -> v1, supplier);
+ }
+
+ public static Map convertMap(Collection from, Function keyFunc, Function valueFunc, BinaryOperator mergeFunction, Supplier extends Map> supplier) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return from.stream().collect(Collectors.toMap(keyFunc, valueFunc, mergeFunction, supplier));
+ }
+
+ public static Map> convertMultiMap(Collection from, Function keyFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(t -> t, Collectors.toList())));
+ }
+
+ public static Map> convertMultiMap(Collection from, Function keyFunc, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return from.stream()
+ .collect(Collectors.groupingBy(keyFunc, Collectors.mapping(valueFunc, Collectors.toList())));
+ }
+
+ // 暂时没想好名字,先以 2 结尾噶
+ public static Map> convertMultiMap2(Collection from, Function keyFunc, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return new HashMap<>();
+ }
+ return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(valueFunc, Collectors.toSet())));
+ }
+
+ public static Map convertImmutableMap(Collection from, Function keyFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return Collections.emptyMap();
+ }
+ ImmutableMap.Builder builder = ImmutableMap.builder();
+ from.forEach(item -> builder.put(keyFunc.apply(item), item));
+ return builder.build();
+ }
+
+ /**
+ * 对比老、新两个列表,找出新增、修改、删除的数据
+ *
+ * @param oldList 老列表
+ * @param newList 新列表
+ * @param sameFunc 对比函数,返回 true 表示相同,返回 false 表示不同
+ * 注意,same 是通过每个元素的“标识”,判断它们是不是同一个数据
+ * @return [新增列表、修改列表、删除列表]
+ */
+ public static List> diffList(Collection oldList, Collection newList,
+ BiFunction sameFunc) {
+ List createList = new LinkedList<>(newList); // 默认都认为是新增的,后续会进行移除
+ List updateList = new ArrayList<>();
+ List deleteList = new ArrayList<>();
+
+ // 通过以 oldList 为主遍历,找出 updateList 和 deleteList
+ for (T oldObj : oldList) {
+ // 1. 寻找是否有匹配的
+ T foundObj = null;
+ for (Iterator iterator = createList.iterator(); iterator.hasNext(); ) {
+ T newObj = iterator.next();
+ // 1.1 不匹配,则直接跳过
+ if (!sameFunc.apply(oldObj, newObj)) {
+ continue;
+ }
+ // 1.2 匹配,则移除,并结束寻找
+ iterator.remove();
+ foundObj = newObj;
+ break;
+ }
+ // 2. 匹配添加到 updateList;不匹配则添加到 deleteList 中
+ if (foundObj != null) {
+ updateList.add(foundObj);
+ } else {
+ deleteList.add(oldObj);
+ }
+ }
+ return asList(createList, updateList, deleteList);
+ }
+
+ public static boolean containsAny(Collection> source, Collection> candidates) {
+ return org.springframework.util.CollectionUtils.containsAny(source, candidates);
+ }
+
+ public static T getFirst(List from) {
+ return !CollectionUtil.isEmpty(from) ? from.get(0) : null;
+ }
+
+ public static T findFirst(Collection from, Predicate predicate) {
+ return findFirst(from, predicate, Function.identity());
+ }
+
+ public static U findFirst(Collection from, Predicate predicate, Function func) {
+ if (CollUtil.isEmpty(from)) {
+ return null;
+ }
+ return from.stream().filter(predicate).findFirst().map(func).orElse(null);
+ }
+
+ public static > V getMaxValue(Collection from, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return null;
+ }
+ assert !from.isEmpty(); // 断言,避免告警
+ T t = from.stream().max(Comparator.comparing(valueFunc)).get();
+ return valueFunc.apply(t);
+ }
+
+ public static > V getMinValue(List from, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return null;
+ }
+ assert from.size() > 0; // 断言,避免告警
+ T t = from.stream().min(Comparator.comparing(valueFunc)).get();
+ return valueFunc.apply(t);
+ }
+
+ public static > T getMinObject(List from, Function valueFunc) {
+ if (CollUtil.isEmpty(from)) {
+ return null;
+ }
+ assert from.size() > 0; // 断言,避免告警
+ return from.stream().min(Comparator.comparing(valueFunc)).get();
+ }
+
+ public static > V getSumValue(Collection from, Function valueFunc,
+ BinaryOperator accumulator) {
+ return getSumValue(from, valueFunc, accumulator, null);
+ }
+
+ public static > V getSumValue(Collection from, Function valueFunc,
+ BinaryOperator accumulator, V defaultValue) {
+ if (CollUtil.isEmpty(from)) {
+ return defaultValue;
+ }
+ assert !from.isEmpty(); // 断言,避免告警
+ return from.stream().map(valueFunc).filter(Objects::nonNull).reduce(accumulator).orElse(defaultValue);
+ }
+
+ public static void addIfNotNull(Collection coll, T item) {
+ if (item == null) {
+ return;
+ }
+ coll.add(item);
+ }
+
+ public static Collection singleton(T obj) {
+ return obj == null ? Collections.emptyList() : Collections.singleton(obj);
+ }
+
+ public static List newArrayList(List> list) {
+ return list.stream().filter(Objects::nonNull).flatMap(Collection::stream).collect(Collectors.toList());
+ }
+
+ /**
+ * 转换为 LinkedHashSet
+ *
+ * @param 元素类型
+ * @param elementType 集合中元素类型
+ * @param value 被转换的值
+ * @return {@link LinkedHashSet}
+ */
+ @SuppressWarnings("unchecked")
+ public static LinkedHashSet toLinkedHashSet(Class elementType, Object value) {
+ return (LinkedHashSet) toCollection(LinkedHashSet.class, elementType, value);
+ }
+
+}
\ No newline at end of file
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/MapUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/MapUtils.java
new file mode 100644
index 0000000..7a7c43b
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/MapUtils.java
@@ -0,0 +1,68 @@
+package com.njcn.msgpush.framework.common.util.collection;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjUtil;
+import com.njcn.msgpush.framework.common.core.KeyValue;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+
+/**
+ * Map 工具类
+ *
+ * @author hongawen
+ */
+public class MapUtils {
+
+ /**
+ * 从哈希表表中,获得 keys 对应的所有 value 数组
+ *
+ * @param multimap 哈希表
+ * @param keys keys
+ * @return value 数组
+ */
+ public static List getList(Multimap multimap, Collection keys) {
+ List result = new ArrayList<>();
+ keys.forEach(k -> {
+ Collection values = multimap.get(k);
+ if (CollectionUtil.isEmpty(values)) {
+ return;
+ }
+ result.addAll(values);
+ });
+ return result;
+ }
+
+ /**
+ * 从哈希表查找到 key 对应的 value,然后进一步处理
+ * key 为 null 时, 不处理
+ * 注意,如果查找到的 value 为 null 时,不进行处理
+ *
+ * @param map 哈希表
+ * @param key key
+ * @param consumer 进一步处理的逻辑
+ */
+ public static void findAndThen(Map map, K key, Consumer consumer) {
+ if (ObjUtil.isNull(key) || CollUtil.isEmpty(map)) {
+ return;
+ }
+ V value = map.get(key);
+ if (value == null) {
+ return;
+ }
+ consumer.accept(value);
+ }
+
+ public static Map convertMap(List> keyValues) {
+ Map map = Maps.newLinkedHashMapWithExpectedSize(keyValues.size());
+ keyValues.forEach(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
+ return map;
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/SetUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/SetUtils.java
new file mode 100644
index 0000000..954797f
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/collection/SetUtils.java
@@ -0,0 +1,19 @@
+package com.njcn.msgpush.framework.common.util.collection;
+
+import cn.hutool.core.collection.CollUtil;
+
+import java.util.Set;
+
+/**
+ * Set 工具类
+ *
+ * @author hongawen
+ */
+public class SetUtils {
+
+ @SafeVarargs
+ public static Set asSet(T... objs) {
+ return CollUtil.newHashSet(objs);
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/DateUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/DateUtils.java
new file mode 100644
index 0000000..1a5f3d2
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/DateUtils.java
@@ -0,0 +1,149 @@
+package com.njcn.msgpush.framework.common.util.date;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+
+import java.time.*;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 时间工具类
+ *
+ * @author hongawen
+ */
+public class DateUtils {
+
+ /**
+ * 时区 - 默认
+ */
+ public static final String TIME_ZONE_DEFAULT = "GMT+8";
+
+ /**
+ * 秒转换成毫秒
+ */
+ public static final long SECOND_MILLIS = 1000;
+
+ public static final String FORMAT_YEAR_MONTH_DAY = "yyyy-MM-dd";
+
+ public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
+
+ /**
+ * 将 LocalDateTime 转换成 Date
+ *
+ * @param date LocalDateTime
+ * @return LocalDateTime
+ */
+ public static Date of(LocalDateTime date) {
+ if (date == null) {
+ return null;
+ }
+ // 将此日期时间与时区相结合以创建 ZonedDateTime
+ ZonedDateTime zonedDateTime = date.atZone(ZoneId.systemDefault());
+ // 本地时间线 LocalDateTime 到即时时间线 Instant 时间戳
+ Instant instant = zonedDateTime.toInstant();
+ // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
+ return Date.from(instant);
+ }
+
+ /**
+ * 将 Date 转换成 LocalDateTime
+ *
+ * @param date Date
+ * @return LocalDateTime
+ */
+ public static LocalDateTime of(Date date) {
+ if (date == null) {
+ return null;
+ }
+ // 转为时间戳
+ Instant instant = date.toInstant();
+ // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
+ return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+ }
+
+ public static Date addTime(Duration duration) {
+ return new Date(System.currentTimeMillis() + duration.toMillis());
+ }
+
+ public static boolean isExpired(LocalDateTime time) {
+ LocalDateTime now = LocalDateTime.now();
+ return now.isAfter(time);
+ }
+
+ /**
+ * 创建指定时间
+ *
+ * @param year 年
+ * @param month 月
+ * @param day 日
+ * @return 指定时间
+ */
+ public static Date buildTime(int year, int month, int day) {
+ return buildTime(year, month, day, 0, 0, 0);
+ }
+
+ /**
+ * 创建指定时间
+ *
+ * @param year 年
+ * @param month 月
+ * @param day 日
+ * @param hour 小时
+ * @param minute 分钟
+ * @param second 秒
+ * @return 指定时间
+ */
+ public static Date buildTime(int year, int month, int day,
+ int hour, int minute, int second) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.YEAR, year);
+ calendar.set(Calendar.MONTH, month - 1);
+ calendar.set(Calendar.DAY_OF_MONTH, day);
+ calendar.set(Calendar.HOUR_OF_DAY, hour);
+ calendar.set(Calendar.MINUTE, minute);
+ calendar.set(Calendar.SECOND, second);
+ calendar.set(Calendar.MILLISECOND, 0); // 一般情况下,都是 0 毫秒
+ return calendar.getTime();
+ }
+
+ public static Date max(Date a, Date b) {
+ if (a == null) {
+ return b;
+ }
+ if (b == null) {
+ return a;
+ }
+ return a.compareTo(b) > 0 ? a : b;
+ }
+
+ public static LocalDateTime max(LocalDateTime a, LocalDateTime b) {
+ if (a == null) {
+ return b;
+ }
+ if (b == null) {
+ return a;
+ }
+ return a.isAfter(b) ? a : b;
+ }
+
+ /**
+ * 是否今天
+ *
+ * @param date 日期
+ * @return 是否
+ */
+ public static boolean isToday(LocalDateTime date) {
+ return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now());
+ }
+
+ /**
+ * 是否昨天
+ *
+ * @param date 日期
+ * @return 是否
+ */
+ public static boolean isYesterday(LocalDateTime date) {
+ return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now().minusDays(1));
+ }
+
+}
diff --git a/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/LocalDateTimeUtils.java b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/LocalDateTimeUtils.java
new file mode 100644
index 0000000..7f13756
--- /dev/null
+++ b/msgpush-framework/msgpush-common/src/main/java/com/njcn/msgpush/framework/common/util/date/LocalDateTimeUtils.java
@@ -0,0 +1,350 @@
+package com.njcn.msgpush.framework.common.util.date;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.date.TemporalAccessorUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.StrUtil;
+import com.njcn.msgpush.framework.common.enums.DateIntervalEnum;
+
+import java.sql.Timestamp;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
+import java.util.List;
+
+import static cn.hutool.core.date.DatePattern.*;
+
+/**
+ * 时间工具类,用于 {@link LocalDateTime}
+ *
+ * @author hongawen
+ */
+public class LocalDateTimeUtils {
+
+ /**
+ * 空的 LocalDateTime 对象,主要用于 DB 唯一索引的默认值
+ */
+ public static LocalDateTime EMPTY = buildTime(1970, 1, 1);
+
+ public static DateTimeFormatter UTC_MS_WITH_XXX_OFFSET_FORMATTER = createFormatter(UTC_MS_WITH_XXX_OFFSET_PATTERN);
+
+ /**
+ * 解析时间
+ *
+ * 相比 {@link LocalDateTimeUtil#parse(CharSequence)} 方法来说,会尽量去解析,直到成功
+ *
+ * @param time 时间
+ * @return 时间字符串
+ */
+ public static LocalDateTime parse(String time) {
+ try {
+ return LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN);
+ } catch (DateTimeParseException e) {
+ return LocalDateTimeUtil.parse(time);
+ }
+ }
+
+ public static LocalDateTime addTime(Duration duration) {
+ return LocalDateTime.now().plus(duration);
+ }
+
+ public static LocalDateTime minusTime(Duration duration) {
+ return LocalDateTime.now().minus(duration);
+ }
+
+ public static boolean beforeNow(LocalDateTime date) {
+ return date.isBefore(LocalDateTime.now());
+ }
+
+ public static boolean afterNow(LocalDateTime date) {
+ return date.isAfter(LocalDateTime.now());
+ }
+
+ /**
+ * 创建指定时间
+ *
+ * @param year 年
+ * @param month 月
+ * @param day 日
+ * @return 指定时间
+ */
+ public static LocalDateTime buildTime(int year, int month, int day) {
+ return LocalDateTime.of(year, month, day, 0, 0, 0);
+ }
+
+ public static LocalDateTime[] buildBetweenTime(int year1, int month1, int day1,
+ int year2, int month2, int day2) {
+ return new LocalDateTime[]{buildTime(year1, month1, day1), buildTime(year2, month2, day2)};
+ }
+
+ /**
+ * 判指定断时间,是否在该时间范围内
+ *
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @param time 指定时间
+ * @return 是否
+ */
+ public static boolean isBetween(LocalDateTime startTime, LocalDateTime endTime, Timestamp time) {
+ if (startTime == null || endTime == null || time == null) {
+ return false;
+ }
+ return LocalDateTimeUtil.isIn(LocalDateTimeUtil.of(time), startTime, endTime);
+ }
+
+ /**
+ * 判指定断时间,是否在该时间范围内
+ *
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @param time 指定时间
+ * @return 是否
+ */
+ public static boolean isBetween(LocalDateTime startTime, LocalDateTime endTime, String time) {
+ if (startTime == null || endTime == null || time == null) {
+ return false;
+ }
+ return LocalDateTimeUtil.isIn(parse(time), startTime, endTime);
+ }
+
+ /**
+ * 判断当前时间是否在该时间范围内
+ *
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @return 是否
+ */
+ public static boolean isBetween(LocalDateTime startTime, LocalDateTime endTime) {
+ if (startTime == null || endTime == null) {
+ return false;
+ }
+ return LocalDateTimeUtil.isIn(LocalDateTime.now(), startTime, endTime);
+ }
+
+ /**
+ * 判断当前时间是否在该时间范围内
+ *
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @return 是否
+ */
+ public static boolean isBetween(String startTime, String endTime) {
+ if (startTime == null || endTime == null) {
+ return false;
+ }
+ LocalDate nowDate = LocalDate.now();
+ return LocalDateTimeUtil.isIn(LocalDateTime.now(),
+ LocalDateTime.of(nowDate, LocalTime.parse(startTime)),
+ LocalDateTime.of(nowDate, LocalTime.parse(endTime)));
+ }
+
+ /**
+ * 判断时间段是否重叠
+ *
+ * @param startTime1 开始 time1
+ * @param endTime1 结束 time1
+ * @param startTime2 开始 time2
+ * @param endTime2 结束 time2
+ * @return 重叠:true 不重叠:false
+ */
+ public static boolean isOverlap(LocalTime startTime1, LocalTime endTime1, LocalTime startTime2, LocalTime endTime2) {
+ LocalDate nowDate = LocalDate.now();
+ return LocalDateTimeUtil.isOverlap(LocalDateTime.of(nowDate, startTime1), LocalDateTime.of(nowDate, endTime1),
+ LocalDateTime.of(nowDate, startTime2), LocalDateTime.of(nowDate, endTime2));
+ }
+
+ /**
+ * 获取指定日期所在的月份的开始时间
+ * 例如:2023-09-30 00:00:00,000
+ *
+ * @param date 日期
+ * @return 月份的开始时间
+ */
+ public static LocalDateTime beginOfMonth(LocalDateTime date) {
+ return date.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+ }
+
+ /**
+ * 获取指定日期所在的月份的最后时间
+ * 例如:2023-09-30 23:59:59,999
+ *
+ * @param date 日期
+ * @return 月份的结束时间
+ */
+ public static LocalDateTime endOfMonth(LocalDateTime date) {
+ return date.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
+ }
+
+ /**
+ * 获得指定日期所在季度
+ *
+ * @param date 日期
+ * @return 所在季度
+ */
+ public static int getQuarterOfYear(LocalDateTime date) {
+ return (date.getMonthValue() - 1) / 3 + 1;
+ }
+
+ /**
+ * 获取指定日期到现在过了几天,如果指定日期在当前日期之后,获取结果为负
+ *
+ * @param dateTime 日期
+ * @return 相差天数
+ */
+ public static Long between(LocalDateTime dateTime) {
+ return LocalDateTimeUtil.between(dateTime, LocalDateTime.now(), ChronoUnit.DAYS);
+ }
+
+ /**
+ * 获取今天的开始时间
+ *
+ * @return 今天
+ */
+ public static LocalDateTime getToday() {
+ return LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
+ }
+
+ /**
+ * 获取昨天的开始时间
+ *
+ * @return 昨天
+ */
+ public static LocalDateTime getYesterday() {
+ return LocalDateTimeUtil.beginOfDay(LocalDateTime.now().minusDays(1));
+ }
+
+ /**
+ * 获取本月的开始时间
+ *
+ * @return 本月
+ */
+ public static LocalDateTime getMonth() {
+ return beginOfMonth(LocalDateTime.now());
+ }
+
+ /**
+ * 获取本年的开始时间
+ *
+ * @return 本年
+ */
+ public static LocalDateTime getYear() {
+ return LocalDateTime.now().with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN);
+ }
+
+ public static List